diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/ar.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/ar.exe index f576803b7..addd96a1f 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/ar.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/ar.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/as.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/as.exe index 84c8f2b22..dc21a003f 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/as.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/as.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/ld.bfd.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/ld.bfd.exe index 429233403..54fbf832f 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/ld.bfd.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/ld.bfd.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/ld.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/ld.exe index 429233403..54fbf832f 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/ld.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/ld.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/nm.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/nm.exe index bed0883c0..99da56850 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/nm.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/nm.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/objcopy.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/objcopy.exe index e5d431d1c..93fa0f48e 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/objcopy.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/objcopy.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/objdump.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/objdump.exe index 902b8f74a..2fff2081d 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/objdump.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/objdump.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/ranlib.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/ranlib.exe index 1a496c61c..349b30506 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/ranlib.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/ranlib.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/readelf.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/readelf.exe index f9e5fc82d..73352c1f8 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/readelf.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/readelf.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/bin/strip.exe b/gcc-arm-none-eabi/arm-none-eabi/bin/strip.exe index 257f6a875..7583f8cb4 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/bin/strip.exe and b/gcc-arm-none-eabi/arm-none-eabi/bin/strip.exe differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/_newlib_version.h b/gcc-arm-none-eabi/arm-none-eabi/include/_newlib_version.h index 5250a84f4..47fe9a65d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/_newlib_version.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/_newlib_version.h @@ -3,9 +3,9 @@ #ifndef _NEWLIB_VERSION_H__ #define _NEWLIB_VERSION_H__ 1 -#define _NEWLIB_VERSION "3.0.0" +#define _NEWLIB_VERSION "3.1.0" #define __NEWLIB__ 3 -#define __NEWLIB_MINOR__ 0 +#define __NEWLIB_MINOR__ 1 #define __NEWLIB_PATCHLEVEL__ 0 #endif /* !_NEWLIB_VERSION_H__ */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/algorithm deleted file mode 100644 index 00ceabf48..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/algorithm +++ /dev/null @@ -1,68 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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/algorithm - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_ALGORITHM -#define _GLIBCXX_ALGORITHM 1 - -#pragma GCC system_header - -#include // UK-300. -#include -#include - -#ifdef _GLIBCXX_PARALLEL -# include -#endif - -#endif /* _GLIBCXX_ALGORITHM */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/any b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/any deleted file mode 100644 index 50daa80fc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/any +++ /dev/null @@ -1,632 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/any - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_ANY -#define _GLIBCXX_ANY 1 - -#pragma GCC system_header - -#if __cplusplus >= 201703L - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup utilities - * @{ - */ - - /** - * @brief Exception class thrown by a failed @c any_cast - * @ingroup exceptions - */ - class bad_any_cast : public bad_cast - { - public: - virtual const char* what() const noexcept { return "bad any_cast"; } - }; - - [[gnu::noreturn]] inline void __throw_bad_any_cast() - { -#if __cpp_exceptions - throw bad_any_cast{}; -#else - __builtin_abort(); -#endif - } - -#define __cpp_lib_any 201603 - - /** - * @brief A type-safe container of any type. - * - * An @c any object's state is either empty or it stores a contained object - * of CopyConstructible type. - */ - class any - { - // Holds either pointer to a heap object or the contained object itself. - union _Storage - { - constexpr _Storage() : _M_ptr{nullptr} {} - - // Prevent trivial copies of this type, buffer might hold a non-POD. - _Storage(const _Storage&) = delete; - _Storage& operator=(const _Storage&) = delete; - - void* _M_ptr; - aligned_storage::type _M_buffer; - }; - - template, - bool _Fits = (sizeof(_Tp) <= sizeof(_Storage)) - && (alignof(_Tp) <= alignof(_Storage))> - using _Internal = std::integral_constant; - - template - struct _Manager_internal; // uses small-object optimization - - template - struct _Manager_external; // creates contained object on the heap - - template - using _Manager = conditional_t<_Internal<_Tp>::value, - _Manager_internal<_Tp>, - _Manager_external<_Tp>>; - - template> - using _Decay = enable_if_t::value, _Decayed>; - - /// Emplace with an object created from @p __args as the contained object. - template > - void __do_emplace(_Args&&... __args) - { - reset(); - _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...); - _M_manager = &_Mgr::_S_manage; - } - - /// Emplace with an object created from @p __il and @p __args as - /// the contained object. - template > - void __do_emplace(initializer_list<_Up> __il, _Args&&... __args) - { - reset(); - _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...); - _M_manager = &_Mgr::_S_manage; - } - - public: - // construct/destruct - - /// Default constructor, creates an empty object. - constexpr any() noexcept : _M_manager(nullptr) { } - - /// Copy constructor, copies the state of @p __other - any(const any& __other) - { - if (!__other.has_value()) - _M_manager = nullptr; - else - { - _Arg __arg; - __arg._M_any = this; - __other._M_manager(_Op_clone, &__other, &__arg); - } - } - - /** - * @brief Move constructor, transfer the state from @p __other - * - * @post @c !__other.has_value() (this postcondition is a GNU extension) - */ - any(any&& __other) noexcept - { - if (!__other.has_value()) - _M_manager = nullptr; - else - { - _Arg __arg; - __arg._M_any = this; - __other._M_manager(_Op_xfer, &__other, &__arg); - } - } - - template - using __any_constructible = - enable_if<__and_, - is_constructible<_Tp, _Args...>>::value, - _Res>; - - template - using __any_constructible_t = - typename __any_constructible::type; - - /// Construct with a copy of @p __value as the contained object. - template , - typename _Mgr = _Manager<_Tp>, - __any_constructible_t<_Tp, _ValueType&&> = true, - enable_if_t::value, bool> = true> - any(_ValueType&& __value) - : _M_manager(&_Mgr::_S_manage) - { - _Mgr::_S_create(_M_storage, std::forward<_ValueType>(__value)); - } - - /// Construct with a copy of @p __value as the contained object. - template , - typename _Mgr = _Manager<_Tp>, - enable_if_t<__and_, - __not_>, - __not_<__is_in_place_type<_Tp>>>::value, - bool> = false> - any(_ValueType&& __value) - : _M_manager(&_Mgr::_S_manage) - { - _Mgr::_S_create(_M_storage, __value); - } - - /// Construct with an object created from @p __args as the contained object. - template , - typename _Mgr = _Manager<_Tp>, - __any_constructible_t<_Tp, _Args&&...> = false> - explicit - any(in_place_type_t<_ValueType>, _Args&&... __args) - : _M_manager(&_Mgr::_S_manage) - { - _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...); - } - - /// Construct with an object created from @p __il and @p __args as - /// the contained object. - template , - typename _Mgr = _Manager<_Tp>, - __any_constructible_t<_Tp, initializer_list<_Up>, - _Args&&...> = false> - explicit - any(in_place_type_t<_ValueType>, - initializer_list<_Up> __il, _Args&&... __args) - : _M_manager(&_Mgr::_S_manage) - { - _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...); - } - - /// Destructor, calls @c reset() - ~any() { reset(); } - - // assignments - - /// Copy the state of another object. - any& operator=(const any& __rhs) - { - *this = any(__rhs); - return *this; - } - - /** - * @brief Move assignment operator - * - * @post @c !__rhs.has_value() (not guaranteed for other implementations) - */ - any& operator=(any&& __rhs) noexcept - { - if (!__rhs.has_value()) - reset(); - else if (this != &__rhs) - { - reset(); - _Arg __arg; - __arg._M_any = this; - __rhs._M_manager(_Op_xfer, &__rhs, &__arg); - } - return *this; - } - - /// Store a copy of @p __rhs as the contained object. - template - enable_if_t>::value, any&> - operator=(_ValueType&& __rhs) - { - *this = any(std::forward<_ValueType>(__rhs)); - return *this; - } - - /// Emplace with an object created from @p __args as the contained object. - template - typename __any_constructible<_Decay<_ValueType>&, - _Decay<_ValueType>, _Args&&...>::type - emplace(_Args&&... __args) - { - __do_emplace<_Decay<_ValueType>>(std::forward<_Args>(__args)...); - any::_Arg __arg; - this->_M_manager(any::_Op_access, this, &__arg); - return *static_cast<_Decay<_ValueType>*>(__arg._M_obj); - } - - /// Emplace with an object created from @p __il and @p __args as - /// the contained object. - template - typename __any_constructible<_Decay<_ValueType>&, - _Decay<_ValueType>, - initializer_list<_Up>, - _Args&&...>::type - emplace(initializer_list<_Up> __il, _Args&&... __args) - { - __do_emplace<_Decay<_ValueType>, _Up>(__il, - std::forward<_Args>(__args)...); - any::_Arg __arg; - this->_M_manager(any::_Op_access, this, &__arg); - return *static_cast<_Decay<_ValueType>*>(__arg._M_obj); - } - - // modifiers - - /// If not empty, destroy the contained object. - void reset() noexcept - { - if (has_value()) - { - _M_manager(_Op_destroy, this, nullptr); - _M_manager = nullptr; - } - } - - /// Exchange state with another object. - void swap(any& __rhs) noexcept - { - if (!has_value() && !__rhs.has_value()) - return; - - if (has_value() && __rhs.has_value()) - { - if (this == &__rhs) - return; - - any __tmp; - _Arg __arg; - __arg._M_any = &__tmp; - __rhs._M_manager(_Op_xfer, &__rhs, &__arg); - __arg._M_any = &__rhs; - _M_manager(_Op_xfer, this, &__arg); - __arg._M_any = this; - __tmp._M_manager(_Op_xfer, &__tmp, &__arg); - } - else - { - any* __empty = !has_value() ? this : &__rhs; - any* __full = !has_value() ? &__rhs : this; - _Arg __arg; - __arg._M_any = __empty; - __full->_M_manager(_Op_xfer, __full, &__arg); - } - } - - // observers - - /// Reports whether there is a contained object or not. - bool has_value() const noexcept { return _M_manager != nullptr; } - -#if __cpp_rtti - /// The @c typeid of the contained object, or @c typeid(void) if empty. - const type_info& type() const noexcept - { - if (!has_value()) - return typeid(void); - _Arg __arg; - _M_manager(_Op_get_type_info, this, &__arg); - return *__arg._M_typeinfo; - } -#endif - - template - static constexpr bool __is_valid_cast() - { return __or_, is_copy_constructible<_Tp>>::value; } - - private: - enum _Op { - _Op_access, _Op_get_type_info, _Op_clone, _Op_destroy, _Op_xfer - }; - - union _Arg - { - void* _M_obj; - const std::type_info* _M_typeinfo; - any* _M_any; - }; - - void (*_M_manager)(_Op, const any*, _Arg*); - _Storage _M_storage; - - template - friend void* __any_caster(const any* __any); - - // Manage in-place contained object. - template - struct _Manager_internal - { - static void - _S_manage(_Op __which, const any* __anyp, _Arg* __arg); - - template - static void - _S_create(_Storage& __storage, _Up&& __value) - { - void* __addr = &__storage._M_buffer; - ::new (__addr) _Tp(std::forward<_Up>(__value)); - } - - template - static void - _S_create(_Storage& __storage, _Args&&... __args) - { - void* __addr = &__storage._M_buffer; - ::new (__addr) _Tp(std::forward<_Args>(__args)...); - } - }; - - // Manage external contained object. - template - struct _Manager_external - { - static void - _S_manage(_Op __which, const any* __anyp, _Arg* __arg); - - template - static void - _S_create(_Storage& __storage, _Up&& __value) - { - __storage._M_ptr = new _Tp(std::forward<_Up>(__value)); - } - template - static void - _S_create(_Storage& __storage, _Args&&... __args) - { - __storage._M_ptr = new _Tp(std::forward<_Args>(__args)...); - } - }; - }; - - /// Exchange the states of two @c any objects. - inline void swap(any& __x, any& __y) noexcept { __x.swap(__y); } - - /// Create an any holding a @c _Tp constructed from @c __args. - template - any make_any(_Args&&... __args) - { - return any(in_place_type<_Tp>, std::forward<_Args>(__args)...); - } - - /// Create an any holding a @c _Tp constructed from @c __il and @c __args. - template - any make_any(initializer_list<_Up> __il, _Args&&... __args) - { - return any(in_place_type<_Tp>, __il, std::forward<_Args>(__args)...); - } - - template - using _AnyCast = remove_cv_t>; - /** - * @brief Access the contained object. - * - * @tparam _ValueType A const-reference or CopyConstructible type. - * @param __any The object to access. - * @return The contained object. - * @throw bad_any_cast If - * __any.type() != typeid(remove_reference_t<_ValueType>) - * - */ - template - inline _ValueType any_cast(const any& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast<_AnyCast<_ValueType>>(&__any); - if (__p) - return static_cast<_ValueType>(*__p); - __throw_bad_any_cast(); - } - - /** - * @brief Access the contained object. - * - * @tparam _ValueType A reference or CopyConstructible type. - * @param __any The object to access. - * @return The contained object. - * @throw bad_any_cast If - * __any.type() != typeid(remove_reference_t<_ValueType>) - * - * - * @{ - */ - template - inline _ValueType any_cast(any& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast<_AnyCast<_ValueType>>(&__any); - if (__p) - return static_cast<_ValueType>(*__p); - __throw_bad_any_cast(); - } - - template::value - || is_lvalue_reference<_ValueType>::value, - bool>::type = true> - inline _ValueType any_cast(any&& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast<_AnyCast<_ValueType>>(&__any); - if (__p) - return static_cast<_ValueType>(*__p); - __throw_bad_any_cast(); - } - - template::value - && !is_lvalue_reference<_ValueType>::value, - bool>::type = false> - inline _ValueType any_cast(any&& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast<_AnyCast<_ValueType>>(&__any); - if (__p) - return static_cast<_ValueType>(std::move(*__p)); - __throw_bad_any_cast(); - } - // @} - - template - void* __any_caster(const any* __any) - { - if constexpr (is_copy_constructible_v>) - { - if (__any->_M_manager == &any::_Manager>::_S_manage) - { - any::_Arg __arg; - __any->_M_manager(any::_Op_access, __any, &__arg); - return __arg._M_obj; - } - } - return nullptr; - } - - /** - * @brief Access the contained object. - * - * @tparam _ValueType The type of the contained object. - * @param __any A pointer to the object to access. - * @return The address of the contained object if - * __any != nullptr && __any.type() == typeid(_ValueType) - * , otherwise a null pointer. - * - * @{ - */ - template - inline const _ValueType* any_cast(const any* __any) noexcept - { - if (__any) - return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); - return nullptr; - } - - template - inline _ValueType* any_cast(any* __any) noexcept - { - if (__any) - return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); - return nullptr; - } - // @} - - template - void - any::_Manager_internal<_Tp>:: - _S_manage(_Op __which, const any* __any, _Arg* __arg) - { - // The contained object is in _M_storage._M_buffer - auto __ptr = reinterpret_cast(&__any->_M_storage._M_buffer); - switch (__which) - { - case _Op_access: - __arg->_M_obj = const_cast<_Tp*>(__ptr); - break; - case _Op_get_type_info: -#if __cpp_rtti - __arg->_M_typeinfo = &typeid(_Tp); -#endif - break; - case _Op_clone: - ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp(*__ptr); - __arg->_M_any->_M_manager = __any->_M_manager; - break; - case _Op_destroy: - __ptr->~_Tp(); - break; - case _Op_xfer: - ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp - (std::move(*const_cast<_Tp*>(__ptr))); - __ptr->~_Tp(); - __arg->_M_any->_M_manager = __any->_M_manager; - const_cast(__any)->_M_manager = nullptr; - break; - } - } - - template - void - any::_Manager_external<_Tp>:: - _S_manage(_Op __which, const any* __any, _Arg* __arg) - { - // The contained object is *_M_storage._M_ptr - auto __ptr = static_cast(__any->_M_storage._M_ptr); - switch (__which) - { - case _Op_access: - __arg->_M_obj = const_cast<_Tp*>(__ptr); - break; - case _Op_get_type_info: -#if __cpp_rtti - __arg->_M_typeinfo = &typeid(_Tp); -#endif - break; - case _Op_clone: - __arg->_M_any->_M_storage._M_ptr = new _Tp(*__ptr); - __arg->_M_any->_M_manager = __any->_M_manager; - break; - case _Op_destroy: - delete __ptr; - break; - case _Op_xfer: - __arg->_M_any->_M_storage._M_ptr = __any->_M_storage._M_ptr; - __arg->_M_any->_M_manager = __any->_M_manager; - const_cast(__any)->_M_manager = nullptr; - break; - } - } - - /// @} - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_ANY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++config.h deleted file mode 100644 index f28d9fd57..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_WCHAR 1 - -/* Define if the compiler supports C++11 atomics. */ -/* #undef _GLIBCXX_ATOMIC_BUILTINS */ - -/* 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++config.h deleted file mode 100644 index f28d9fd57..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_WCHAR 1 - -/* Define if the compiler supports C++11 atomics. */ -/* #undef _GLIBCXX_ATOMIC_BUILTINS */ - -/* 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/hard/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++config.h deleted file mode 100644 index f28d9fd57..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_WCHAR 1 - -/* Define if the compiler supports C++11 atomics. */ -/* #undef _GLIBCXX_ATOMIC_BUILTINS */ - -/* 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++config.h deleted file mode 100644 index f28d9fd57..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_WCHAR 1 - -/* Define if the compiler supports C++11 atomics. */ -/* #undef _GLIBCXX_ATOMIC_BUILTINS */ - -/* 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v6-m/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/hard/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-ar/fpv3/softfp/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7-m/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/hard/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv4-sp/softfp/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/hard/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v7e-m/fpv5/softfp/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.base/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/hard/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5-sp/softfp/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/hard/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/atomic_word.h deleted file mode 100644 index 6d2110513..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/atomic_word.h +++ /dev/null @@ -1,40 +0,0 @@ -// Low-level type for atomic operations -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library 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 -// . - -/** @file atomic_word.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_ATOMIC_WORD_H -#define _GLIBCXX_ATOMIC_WORD_H 1 - -typedef int _Atomic_word; - - -// This is a memory order acquire fence. -#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) -// This is a memory order release fence. -#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/basic_file.h deleted file mode 100644 index f959ea534..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/basic_file.h +++ /dev/null @@ -1,130 +0,0 @@ -// Wrapper of C-language FILE struct -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 27.8 File-based streams -// - -/** @file bits/basic_file.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -#ifndef _GLIBCXX_BASIC_FILE_STDIO_H -#define _GLIBCXX_BASIC_FILE_STDIO_H 1 - -#pragma GCC system_header - -#include -#include // for __c_lock and __c_file -#include // for swap -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Generic declaration. - template - class __basic_file; - - // Specialization. - template<> - class __basic_file - { - // Underlying data source/sink. - __c_file* _M_cfile; - - // True iff we opened _M_cfile, and thus must close it ourselves. - bool _M_cfile_created; - - public: - __basic_file(__c_lock* __lock = 0) throw (); - -#if __cplusplus >= 201103L - __basic_file(__basic_file&& __rv, __c_lock* __lock = 0) noexcept - : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) - { - __rv._M_cfile = nullptr; - __rv._M_cfile_created = false; - } - - __basic_file& operator=(const __basic_file&) = delete; - __basic_file& operator=(__basic_file&&) = delete; - - void - swap(__basic_file& __f) noexcept - { - std::swap(_M_cfile, __f._M_cfile); - std::swap(_M_cfile_created, __f._M_cfile_created); - } -#endif - - __basic_file* - open(const char* __name, ios_base::openmode __mode, int __prot = 0664); - - __basic_file* - sys_open(__c_file* __file, ios_base::openmode); - - __basic_file* - sys_open(int __fd, ios_base::openmode __mode) throw (); - - __basic_file* - close(); - - _GLIBCXX_PURE bool - is_open() const throw (); - - _GLIBCXX_PURE int - fd() throw (); - - _GLIBCXX_PURE __c_file* - file() throw (); - - ~__basic_file(); - - streamsize - xsputn(const char* __s, streamsize __n); - - streamsize - xsputn_2(const char* __s1, streamsize __n1, - const char* __s2, streamsize __n2); - - streamsize - xsgetn(char* __s, streamsize __n); - - streamoff - seekoff(streamoff __off, ios_base::seekdir __way) throw (); - - int - sync(); - - streamsize - showmanyc(); - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++allocator.h deleted file mode 100644 index 3d2bb6788..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++allocator.h +++ /dev/null @@ -1,55 +0,0 @@ -// Base to std::allocator -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++allocator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _GLIBCXX_CXX_ALLOCATOR_H -#define _GLIBCXX_CXX_ALLOCATOR_H 1 - -#include - -#if __cplusplus >= 201103L -namespace std -{ - /** - * @brief An alias to the base class for std::allocator. - * @ingroup allocators - * - * Used to set the std::allocator base class to - * __gnu_cxx::new_allocator. - * - * @tparam _Tp Type of allocated object. - */ - template - using __allocator_base = __gnu_cxx::new_allocator<_Tp>; -} -#else -// Define new_allocator as the base class to std::allocator. -# define __allocator_base __gnu_cxx::new_allocator -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++config.h deleted file mode 100644 index 159856cb3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++config.h +++ /dev/null @@ -1,1956 +0,0 @@ -// Predefined symbols and macros -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _GLIBCXX_CXX_CONFIG_H -#define _GLIBCXX_CXX_CONFIG_H 1 - -// The major release number for the GCC release the C++ library belongs to. -#define _GLIBCXX_RELEASE 7 - -// The datestamp of the C++ library in compressed ISO date format. -#define __GLIBCXX__ 20180622 - -// Macros for various attributes. -// _GLIBCXX_PURE -// _GLIBCXX_CONST -// _GLIBCXX_NORETURN -// _GLIBCXX_NOTHROW -// _GLIBCXX_VISIBILITY -#ifndef _GLIBCXX_PURE -# define _GLIBCXX_PURE __attribute__ ((__pure__)) -#endif - -#ifndef _GLIBCXX_CONST -# define _GLIBCXX_CONST __attribute__ ((__const__)) -#endif - -#ifndef _GLIBCXX_NORETURN -# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) -#endif - -// See below for C++ -#ifndef _GLIBCXX_NOTHROW -# ifndef __cplusplus -# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) -# endif -#endif - -// Macros for visibility attributes. -// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -// _GLIBCXX_VISIBILITY -# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 - -#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY -# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) -#else -// 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 - -// Macros for deprecated attributes. -// _GLIBCXX_USE_DEPRECATED -// _GLIBCXX_DEPRECATED -#ifndef _GLIBCXX_USE_DEPRECATED -# define _GLIBCXX_USE_DEPRECATED 1 -#endif - -#if defined(__DEPRECATED) && (__cplusplus >= 201103L) -# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) -#else -# define _GLIBCXX_DEPRECATED -#endif - -// Macros for ABI tag attributes. -#ifndef _GLIBCXX_ABI_TAG_CXX11 -# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) -#endif - - -#if __cplusplus - -// Macro for constexpr, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_CONSTEXPR -# if __cplusplus >= 201103L -# define _GLIBCXX_CONSTEXPR constexpr -# define _GLIBCXX_USE_CONSTEXPR constexpr -# else -# define _GLIBCXX_CONSTEXPR -# define _GLIBCXX_USE_CONSTEXPR const -# endif -#endif - -#ifndef _GLIBCXX14_CONSTEXPR -# if __cplusplus >= 201402L -# define _GLIBCXX14_CONSTEXPR constexpr -# else -# define _GLIBCXX14_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_CONSTEXPR -# if __cplusplus > 201402L -# define _GLIBCXX17_CONSTEXPR constexpr -# else -# define _GLIBCXX17_CONSTEXPR -# endif -#endif - -#ifndef _GLIBCXX17_INLINE -# if __cplusplus > 201402L -# define _GLIBCXX17_INLINE inline -# else -# define _GLIBCXX17_INLINE -# endif -#endif - -// Macro for noexcept, to support in mixed 03/0x mode. -#ifndef _GLIBCXX_NOEXCEPT -# if __cplusplus >= 201103L -# define _GLIBCXX_NOEXCEPT noexcept -# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) -# define _GLIBCXX_USE_NOEXCEPT noexcept -# define _GLIBCXX_THROW(_EXC) -# else -# define _GLIBCXX_NOEXCEPT -# define _GLIBCXX_NOEXCEPT_IF(_COND) -# define _GLIBCXX_USE_NOEXCEPT throw() -# define _GLIBCXX_THROW(_EXC) throw(_EXC) -# endif -#endif - -#ifndef _GLIBCXX_NOTHROW -# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT -#endif - -#ifndef _GLIBCXX_THROW_OR_ABORT -# if __cpp_exceptions -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) -# else -# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) -# endif -#endif - -#if __cpp_noexcept_function_type -#define _GLIBCXX_NOEXCEPT_PARM , bool _NE -#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) -#else -#define _GLIBCXX_NOEXCEPT_PARM -#define _GLIBCXX_NOEXCEPT_QUAL -#endif - -// Macro for extern template, ie controlling template linkage via use -// of extern keyword on template declaration. As documented in the g++ -// manual, it inhibits all implicit instantiations and is used -// throughout the library to avoid multiple weak definitions for -// required types that are already explicitly instantiated in the -// library binary. This substantially reduces the binary size of -// resulting executables. -// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern -// templates only in basic_string, thus activating its debug-mode -// checks even at -O0. -# define _GLIBCXX_EXTERN_TEMPLATE 1 - -/* - Outline of libstdc++ namespaces. - - namespace std - { - namespace __debug { } - namespace __parallel { } - namespace __profile { } - namespace __cxx1998 { } - - namespace __detail { - namespace __variant { } // C++17 - } - - namespace rel_ops { } - - namespace tr1 - { - namespace placeholders { } - namespace regex_constants { } - namespace __detail { } - } - - namespace tr2 { } - - namespace decimal { } - - namespace chrono { } // C++11 - namespace placeholders { } // C++11 - namespace regex_constants { } // C++11 - namespace this_thread { } // C++11 - inline namespace literals { // C++14 - inline namespace chrono_literals { } // C++14 - inline namespace complex_literals { } // C++14 - inline namespace string_literals { } // C++14 - inline namespace string_view_literals { } // C++17 - } - } - - namespace abi { } - - namespace __gnu_cxx - { - namespace __detail { } - } - - For full details see: - http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html -*/ -namespace std -{ - typedef __SIZE_TYPE__ size_t; - typedef __PTRDIFF_TYPE__ ptrdiff_t; - -#if __cplusplus >= 201103L - typedef decltype(nullptr) nullptr_t; -#endif -} - -# define _GLIBCXX_USE_DUAL_ABI 1 - -#if ! _GLIBCXX_USE_DUAL_ABI -// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI -# undef _GLIBCXX_USE_CXX11_ABI -#endif - -#ifndef _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_USE_CXX11_ABI 1 -#endif - -#if _GLIBCXX_USE_CXX11_ABI -namespace std -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -namespace __gnu_cxx -{ - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -} -# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { -# define _GLIBCXX_END_NAMESPACE_CXX11 } -# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 -#else -# define _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_CXX11 -# define _GLIBCXX_DEFAULT_ABI_TAG -#endif - - -// Defined if inline namespaces are used for versioning. -# define _GLIBCXX_INLINE_VERSION 0 - -// Inline namespace for symbol versioning. -#if _GLIBCXX_INLINE_VERSION - -namespace std -{ - inline namespace __7 { } - - namespace rel_ops { inline namespace __7 { } } - - namespace tr1 - { - inline namespace __7 { } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } - } - - namespace tr2 - { inline namespace __7 { } } - - namespace decimal { inline namespace __7 { } } - -#if __cplusplus >= 201103L - namespace chrono { inline namespace __7 { } } - namespace placeholders { inline namespace __7 { } } - namespace regex_constants { inline namespace __7 { } } - namespace this_thread { inline namespace __7 { } } - -#if __cplusplus >= 201402L - inline namespace literals { - inline namespace chrono_literals { inline namespace __7 { } } - inline namespace complex_literals { inline namespace __7 { } } - inline namespace string_literals { inline namespace __7 { } } -#if __cplusplus > 201402L - inline namespace string_view_literals { inline namespace __7 { } } -#endif // C++17 - } -#endif // C++14 -#endif // C++11 - - namespace __detail { - inline namespace __7 { } -#if __cplusplus > 201402L - namespace __variant { inline namespace __7 { } } -#endif - } -} - -namespace __gnu_cxx -{ - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { -# define _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_VERSION -#endif - - -// Inline namespaces for special modes: debug, parallel, profile. -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ - || defined(_GLIBCXX_PROFILE) -namespace std -{ - // Non-inline namespace for components replaced by alternates in active mode. - namespace __cxx1998 - { -# if _GLIBCXX_INLINE_VERSION - inline namespace __7 { } -# endif - -# if _GLIBCXX_USE_CXX11_ABI - inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } -# endif - } - - // Inline namespace for debug mode. -# ifdef _GLIBCXX_DEBUG - inline namespace __debug { } -# endif - - // Inline namespaces for parallel mode. -# ifdef _GLIBCXX_PARALLEL - inline namespace __parallel { } -# endif - - // Inline namespaces for profile mode -# ifdef _GLIBCXX_PROFILE - inline namespace __profile { } -# endif -} - -// Check for invalid usage and unsupported mixed-mode use. -# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) -# error illegal use of multiple inlined namespaces -# endif -# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) -# error illegal use of multiple inlined namespaces -# endif - -// Check for invalid use due to lack for weak symbols. -# if __NO_INLINE__ && !__GXX_WEAK__ -# warning currently using inlined namespace mode which may fail \ - without inlining due to lack of weak symbols -# endif -#endif - -// Macros for namespace scope. Either namespace std:: or the name -// of some nested namespace within it corresponding to the active mode. -// _GLIBCXX_STD_A -// _GLIBCXX_STD_C -// -// Macros for opening/closing conditional namespaces. -// _GLIBCXX_BEGIN_NAMESPACE_ALGO -// _GLIBCXX_END_NAMESPACE_ALGO -// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER -// _GLIBCXX_END_NAMESPACE_CONTAINER -#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) -# define _GLIBCXX_STD_C __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ - namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_C std -# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION -#endif - -#ifdef _GLIBCXX_PARALLEL -# define _GLIBCXX_STD_A __cxx1998 -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ - namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO \ - _GLIBCXX_END_NAMESPACE_VERSION } -#else -# define _GLIBCXX_STD_A std -# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION -# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION -#endif - -// GLIBCXX_ABI Deprecated -// Define if compatibility should be provided for -mlong-double-64. -#undef _GLIBCXX_LONG_DOUBLE_COMPAT - -// Inline namespace for long double 128 mode. -#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ -namespace std -{ - inline namespace __gnu_cxx_ldbl128 { } -} -# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { -# define _GLIBCXX_END_NAMESPACE_LDBL } -#else -# define _GLIBCXX_NAMESPACE_LDBL -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL -# define _GLIBCXX_END_NAMESPACE_LDBL -#endif -#if _GLIBCXX_USE_CXX11_ABI -# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 -# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 -# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 -#else -# 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 - -// Debug Mode implies checking assertions. -#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) -# define _GLIBCXX_ASSERTIONS 1 -#endif - -// Disable std::string explicit instantiation declarations in order to assert. -#ifdef _GLIBCXX_ASSERTIONS -# undef _GLIBCXX_EXTERN_TEMPLATE -# define _GLIBCXX_EXTERN_TEMPLATE -1 -#endif - -// Assert. -#if defined(_GLIBCXX_ASSERTIONS) \ - || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) -namespace std -{ - // Avoid the use of assert, because we're trying to keep the - // include out of the mix. - inline void - __replacement_assert(const char* __file, int __line, - const char* __function, const char* __condition) - { - __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, - __function, __condition); - __builtin_abort(); - } -} -#define __glibcxx_assert_impl(_Condition) \ - do \ - { \ - if (! (_Condition)) \ - std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ - #_Condition); \ - } while (false) -#endif - -#if defined(_GLIBCXX_ASSERTIONS) -# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) -#else -# define __glibcxx_assert(_Condition) -#endif - -// 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 -#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER -# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) -#endif - -// 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 -# define _GLIBCXX_BEGIN_EXTERN_C -# define _GLIBCXX_END_EXTERN_C -#endif - - -// First includes. - -// Pick up any OS-specific definitions. -#include - -// Pick up any CPU-specific definitions. -#include - -// 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 - -// 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 - -// 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 - -// Conditionally enable annotations for the Transactional Memory TS on C++11. -// Most of the following conditions are due to limitations in the current -// implementation. -#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ - && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ - && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ - && _GLIBCXX_USE_ALLOCATOR_NEW -#define _GLIBCXX_TXN_SAFE transaction_safe -#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic -#else -#define _GLIBCXX_TXN_SAFE -#define _GLIBCXX_TXN_SAFE_DYN -#endif - -#if __cplusplus > 201402L -// In C++17 mathematical special functions are in namespace std. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 -// For C++11 and C++14 they are in namespace std when requested. -# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 -#endif - -// 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 -# define _GLIBCXX_FAST_MATH 0 -#endif - -// 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, is known to #define min and max as macros... -#undef min -#undef max - -// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally -// so they should be tested with #if not with #ifdef. -#if __cplusplus >= 201103L -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR -# endif -#else -# ifndef _GLIBCXX_USE_C99_MATH -# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH -# endif -# ifndef _GLIBCXX_USE_C99_COMPLEX -# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX -# endif -# ifndef _GLIBCXX_USE_C99_STDIO -# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO -# endif -# ifndef _GLIBCXX_USE_C99_STDLIB -# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB -# endif -# ifndef _GLIBCXX_USE_C99_WCHAR -# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR -# endif -#endif - -// 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. */ -/* #undef _GLIBCXX_HAVE_ACOSL */ - -/* Define to 1 if you have the `aligned_alloc' function. */ -/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ - -/* Define to 1 if you have the `asinf' function. */ -#define _GLIBCXX_HAVE_ASINF 1 - -/* Define to 1 if you have the `asinl' function. */ -/* #undef _GLIBCXX_HAVE_ASINL */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_ATAN2L */ - -/* Define to 1 if you have the `atanf' function. */ -#define _GLIBCXX_HAVE_ATANF 1 - -/* Define to 1 if you have the `atanl' function. */ -/* #undef _GLIBCXX_HAVE_ATANL */ - -/* Define to 1 if you have the `at_quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ - -/* 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. */ -/* #undef _GLIBCXX_HAVE_CEILL */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_COSHL */ - -/* Define to 1 if you have the `cosl' function. */ -/* #undef _GLIBCXX_HAVE_COSL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DIRENT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_DLFCN_H */ - -/* 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 header file. */ -/* #undef _GLIBCXX_HAVE_ENDIAN_H */ - -/* 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 */ -/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_EXECINFO_H */ - -/* Define to 1 if you have the `expf' function. */ -#define _GLIBCXX_HAVE_EXPF 1 - -/* Define to 1 if you have the `expl' function. */ -/* #undef _GLIBCXX_HAVE_EXPL */ - -/* Define to 1 if you have the `fabsf' function. */ -#define _GLIBCXX_HAVE_FABSF 1 - -/* Define to 1 if you have the `fabsl' function. */ -/* #undef _GLIBCXX_HAVE_FABSL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_FCNTL_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_FENV_H */ - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FLOORL */ - -/* Define to 1 if you have the `fmodf' function. */ -#define _GLIBCXX_HAVE_FMODF 1 - -/* 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 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. */ -/* #undef _GLIBCXX_HAVE_FREXPL */ - -/* Define if _Unwind_GetIPInfo is available. */ -#define _GLIBCXX_HAVE_GETIPINFO 1 - -/* Define if gets is available in 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. */ -/* #undef _GLIBCXX_HAVE_HYPOTF */ - -/* Define to 1 if you have the `hypotl' function. */ -/* #undef _GLIBCXX_HAVE_HYPOTL */ - -/* Define if you have the iconv() function. */ -#define _GLIBCXX_HAVE_ICONV 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_IEEEFP_H 1 - -/* Define if int64_t is available in . */ -#define _GLIBCXX_HAVE_INT64_T 1 - -/* Define if int64_t is a long. */ -/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ - -/* Define if int64_t is a long long. */ -#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 - -/* Define to 1 if you have the 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. */ -/* #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 */ - -/* Defined if iswblank exists. */ -#define _GLIBCXX_HAVE_ISWBLANK 1 - -/* Define if LC_MESSAGES is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_LDEXPL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_LIBINTL_H */ - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_AS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_DATA 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_RSS 0 - -/* Only used in build directory testsuite_hooks.h. */ -#define _GLIBCXX_HAVE_LIMIT_VMEM 0 - -/* Define if futex syscall is available. */ -/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_LOG10L */ - -/* Define to 1 if you have the `logf' function. */ -#define _GLIBCXX_HAVE_LOGF 1 - -/* Define to 1 if you have the `logl' function. */ -/* #undef _GLIBCXX_HAVE_LOGL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 - -/* 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 header file. */ -#define _GLIBCXX_HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `modf' function. */ -/* #undef _GLIBCXX_HAVE_MODF */ - -/* Define to 1 if you have the `modff' function. */ -#define _GLIBCXX_HAVE_MODFF 1 - -/* Define to 1 if you have the `modfl' function. */ -/* #undef _GLIBCXX_HAVE_MODFL */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_NAN_H */ - -/* Define if defines obsolete isinf function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ - -/* Define if defines obsolete isnan function. */ -/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ - -/* Define if poll is available in . */ -/* #undef _GLIBCXX_HAVE_POLL */ - -/* Define to 1 if you have the `posix_memalign' function. */ -/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ - -/* Define to 1 if you have the `powf' function. */ -#define _GLIBCXX_HAVE_POWF 1 - -/* 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 `quick_exit' function. */ -/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ - -/* Define to 1 if you have the `setenv' function. */ -/* #undef _GLIBCXX_HAVE_SETENV */ - -/* 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. */ -#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. */ -/* #undef _GLIBCXX_HAVE_SINHL */ - -/* Define to 1 if you have the `sinl' function. */ -/* #undef _GLIBCXX_HAVE_SINL */ - -/* Defined if sleep exists. */ -#define _GLIBCXX_HAVE_SLEEP 1 - -/* Define to 1 if you have the `sqrtf' function. */ -#define _GLIBCXX_HAVE_SQRTF 1 - -/* Define to 1 if you have the `sqrtl' function. */ -/* #undef _GLIBCXX_HAVE_SQRTL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDALIGN_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDBOOL_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STDLIB_H 1 - -/* Define if strerror_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRERROR_L */ - -/* Define if strerror_r is available in . */ -#define _GLIBCXX_HAVE_STRERROR_R 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_STRINGS_H 1 - -/* Define to 1 if you have the 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. */ -/* #undef _GLIBCXX_HAVE_STRTOLD */ - -/* Define to 1 if `d_type' is a member of `struct dirent'. */ -/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ - -/* Define if strxfrm_l is available in . */ -/* #undef _GLIBCXX_HAVE_STRXFRM_L */ - -/* Define to 1 if the target runtime linker supports binding the same symbol - to different versions. */ -/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_PARAM_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 - -/* Define to 1 if you have a suitable header file */ -/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ - -/* Define if S_IFREG is available in . */ -/* #undef _GLIBCXX_HAVE_S_IFREG */ - -/* Define if S_ISREG is available in . */ -#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. */ -/* #undef _GLIBCXX_HAVE_TANHL */ - -/* Define to 1 if you have the `tanl' function. */ -/* #undef _GLIBCXX_HAVE_TANL */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_TGMATH_H 1 - -/* Define to 1 if the target supports thread-local storage. */ -/* #undef _GLIBCXX_HAVE_TLS */ - -/* Define to 1 if you have the header file. */ -/* #undef _GLIBCXX_HAVE_UCHAR_H */ - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_UNISTD_H 1 - -/* Defined if usleep exists. */ -#define _GLIBCXX_HAVE_USLEEP 1 - -/* Define to 1 if you have the 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 header file. */ -#define _GLIBCXX_HAVE_WCHAR_H 1 - -/* Defined if wcstof exists. */ -#define _GLIBCXX_HAVE_WCSTOF 1 - -/* Define to 1 if you have the header file. */ -#define _GLIBCXX_HAVE_WCTYPE_H 1 - -/* Defined if Sleep exists. */ -/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ - -/* Define if writev is available in . */ -/* #undef _GLIBCXX_HAVE_WRITEV */ - -/* Define to 1 if you have the `_acosf' function. */ -/* #undef _GLIBCXX_HAVE__ACOSF */ - -/* Define to 1 if you have the `_acosl' function. */ -/* #undef _GLIBCXX_HAVE__ACOSL */ - -/* Define to 1 if you have the `_aligned_malloc' function. */ -/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ - -/* Define to 1 if you have the `_asinf' function. */ -/* #undef _GLIBCXX_HAVE__ASINF */ - -/* Define to 1 if you have the `_asinl' function. */ -/* #undef _GLIBCXX_HAVE__ASINL */ - -/* Define to 1 if you have the `_atan2f' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2F */ - -/* Define to 1 if you have the `_atan2l' function. */ -/* #undef _GLIBCXX_HAVE__ATAN2L */ - -/* Define to 1 if you have the `_atanf' function. */ -/* #undef _GLIBCXX_HAVE__ATANF */ - -/* Define to 1 if you have the `_atanl' function. */ -/* #undef _GLIBCXX_HAVE__ATANL */ - -/* Define to 1 if you have the `_ceilf' function. */ -/* #undef _GLIBCXX_HAVE__CEILF */ - -/* Define to 1 if you have the `_ceill' function. */ -/* #undef _GLIBCXX_HAVE__CEILL */ - -/* Define to 1 if you have the `_cosf' function. */ -/* #undef _GLIBCXX_HAVE__COSF */ - -/* Define to 1 if you have the `_coshf' function. */ -/* #undef _GLIBCXX_HAVE__COSHF */ - -/* Define to 1 if you have the `_coshl' function. */ -/* #undef _GLIBCXX_HAVE__COSHL */ - -/* Define to 1 if you have the `_cosl' function. */ -/* #undef _GLIBCXX_HAVE__COSL */ - -/* Define to 1 if you have the `_expf' function. */ -/* #undef _GLIBCXX_HAVE__EXPF */ - -/* Define to 1 if you have the `_expl' function. */ -/* #undef _GLIBCXX_HAVE__EXPL */ - -/* Define to 1 if you have the `_fabsf' function. */ -/* #undef _GLIBCXX_HAVE__FABSF */ - -/* Define to 1 if you have the `_fabsl' function. */ -/* #undef _GLIBCXX_HAVE__FABSL */ - -/* Define to 1 if you have the `_finite' function. */ -/* #undef _GLIBCXX_HAVE__FINITE */ - -/* Define to 1 if you have the `_finitef' function. */ -/* #undef _GLIBCXX_HAVE__FINITEF */ - -/* Define to 1 if you have the `_finitel' function. */ -/* #undef _GLIBCXX_HAVE__FINITEL */ - -/* Define to 1 if you have the `_floorf' function. */ -/* #undef _GLIBCXX_HAVE__FLOORF */ - -/* Define to 1 if you have the `_floorl' function. */ -/* #undef _GLIBCXX_HAVE__FLOORL */ - -/* Define to 1 if you have the `_fmodf' function. */ -/* #undef _GLIBCXX_HAVE__FMODF */ - -/* Define to 1 if you have the `_fmodl' function. */ -/* #undef _GLIBCXX_HAVE__FMODL */ - -/* Define to 1 if you have the `_fpclass' function. */ -/* #undef _GLIBCXX_HAVE__FPCLASS */ - -/* Define to 1 if you have the `_frexpf' function. */ -/* #undef _GLIBCXX_HAVE__FREXPF */ - -/* Define to 1 if you have the `_frexpl' function. */ -/* #undef _GLIBCXX_HAVE__FREXPL */ - -/* Define to 1 if you have the `_hypot' function. */ -/* #undef _GLIBCXX_HAVE__HYPOT */ - -/* Define to 1 if you have the `_hypotf' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTF */ - -/* Define to 1 if you have the `_hypotl' function. */ -/* #undef _GLIBCXX_HAVE__HYPOTL */ - -/* Define to 1 if you have the `_isinf' function. */ -/* #undef _GLIBCXX_HAVE__ISINF */ - -/* Define to 1 if you have the `_isinff' function. */ -/* #undef _GLIBCXX_HAVE__ISINFF */ - -/* Define to 1 if you have the `_isinfl' function. */ -/* #undef _GLIBCXX_HAVE__ISINFL */ - -/* Define to 1 if you have the `_isnan' function. */ -/* #undef _GLIBCXX_HAVE__ISNAN */ - -/* Define to 1 if you have the `_isnanf' function. */ -/* #undef _GLIBCXX_HAVE__ISNANF */ - -/* Define to 1 if you have the `_isnanl' function. */ -/* #undef _GLIBCXX_HAVE__ISNANL */ - -/* Define to 1 if you have the `_ldexpf' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPF */ - -/* Define to 1 if you have the `_ldexpl' function. */ -/* #undef _GLIBCXX_HAVE__LDEXPL */ - -/* Define to 1 if you have the `_log10f' function. */ -/* #undef _GLIBCXX_HAVE__LOG10F */ - -/* Define to 1 if you have the `_log10l' function. */ -/* #undef _GLIBCXX_HAVE__LOG10L */ - -/* Define to 1 if you have the `_logf' function. */ -/* #undef _GLIBCXX_HAVE__LOGF */ - -/* Define to 1 if you have the `_logl' function. */ -/* #undef _GLIBCXX_HAVE__LOGL */ - -/* Define to 1 if you have the `_modf' function. */ -/* #undef _GLIBCXX_HAVE__MODF */ - -/* Define to 1 if you have the `_modff' function. */ -/* #undef _GLIBCXX_HAVE__MODFF */ - -/* Define to 1 if you have the `_modfl' function. */ -/* #undef _GLIBCXX_HAVE__MODFL */ - -/* Define to 1 if you have the `_powf' function. */ -/* #undef _GLIBCXX_HAVE__POWF */ - -/* Define to 1 if you have the `_powl' function. */ -/* #undef _GLIBCXX_HAVE__POWL */ - -/* Define to 1 if you have the `_qfpclass' function. */ -/* #undef _GLIBCXX_HAVE__QFPCLASS */ - -/* Define to 1 if you have the `_sincos' function. */ -/* #undef _GLIBCXX_HAVE__SINCOS */ - -/* Define to 1 if you have the `_sincosf' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSF */ - -/* Define to 1 if you have the `_sincosl' function. */ -/* #undef _GLIBCXX_HAVE__SINCOSL */ - -/* Define to 1 if you have the `_sinf' function. */ -/* #undef _GLIBCXX_HAVE__SINF */ - -/* Define to 1 if you have the `_sinhf' function. */ -/* #undef _GLIBCXX_HAVE__SINHF */ - -/* Define to 1 if you have the `_sinhl' function. */ -/* #undef _GLIBCXX_HAVE__SINHL */ - -/* Define to 1 if you have the `_sinl' function. */ -/* #undef _GLIBCXX_HAVE__SINL */ - -/* Define to 1 if you have the `_sqrtf' function. */ -/* #undef _GLIBCXX_HAVE__SQRTF */ - -/* Define to 1 if you have the `_sqrtl' function. */ -/* #undef _GLIBCXX_HAVE__SQRTL */ - -/* Define to 1 if you have the `_tanf' function. */ -/* #undef _GLIBCXX_HAVE__TANF */ - -/* Define to 1 if you have the `_tanhf' function. */ -/* #undef _GLIBCXX_HAVE__TANHF */ - -/* Define to 1 if you have the `_tanhl' function. */ -/* #undef _GLIBCXX_HAVE__TANHL */ - -/* Define to 1 if you have the `_tanl' function. */ -/* #undef _GLIBCXX_HAVE__TANL */ - -/* Define to 1 if you have the `__cxa_thread_atexit' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ - -/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ -/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ - -/* Define as const if the declaration of iconv() needs const. */ -/* #undef _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 should be used in for - C++11. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX11_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++11. */ -#define _GLIBCXX11_USE_C99_WCHAR 1 - -/* Define if C99 functions in should be used in for - C++98. Using compiler builtins for these functions requires corresponding - C99 library functions to be present. */ -/* #undef _GLIBCXX98_USE_C99_COMPLEX */ - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_MATH 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDIO 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std for C++98. */ -#define _GLIBCXX98_USE_C99_STDLIB 1 - -/* Define if C99 functions or macros in should be imported in - 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. */ -/* #undef _GLIBCXX_HAS_GTHREADS */ - -/* 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 j - -/* Define if C99 llrint and llround functions are missing from . */ -/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ - -/* Define if ptrdiff_t is int. */ -#define _GLIBCXX_PTRDIFF_T_IS_INT 1 - -/* Define if using setrlimit to set resource limits during "make check" */ -/* #undef _GLIBCXX_RES_LIMITS */ - -/* Define if size_t is unsigned int. */ -#define _GLIBCXX_SIZE_T_IS_UINT 1 - -/* 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. */ -/* #undef _GLIBCXX_SYMVER */ - -/* Define to use darwin versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_DARWIN */ - -/* Define to use GNU versioning in the shared library. */ -/* #undef _GLIBCXX_SYMVER_GNU */ - -/* 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 should be imported into namespace std - in . */ -/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ - -/* Define if C99 functions or macros from , , , - , and can be used or exposed. */ -/* #undef _GLIBCXX_USE_C99 */ - -/* Define if C99 functions in should be used in . - Using compiler builtins for these functions requires corresponding C99 - library functions to be present. */ -/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -#define _GLIBCXX_USE_C99_CTYPE_TR1 1 - -/* Define if C99 functions in should be imported in in - namespace std::tr1. */ -/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ - -/* Define if C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 - -/* Define if wchar_t C99 functions in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 - -/* Define if C99 functions or macros in should be imported in - in namespace std::tr1. */ -#define _GLIBCXX_USE_C99_MATH_TR1 1 - -/* Define if C99 types in should be imported in 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. */ -/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ - -/* Defined if clock_gettime has realtime clock support. */ -/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ - -/* Define if ISO/IEC TR 24733 decimal floating point types are supported on - this host. */ -/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ - -/* Define if fchmod is available in . */ -#define _GLIBCXX_USE_FCHMOD 1 - -/* Define if fchmodat is available in . */ -#define _GLIBCXX_USE_FCHMODAT 1 - -/* Define if __float128 is supported on this host. */ -/* #undef _GLIBCXX_USE_FLOAT128 */ - -/* Defined if gettimeofday is available. */ -#define _GLIBCXX_USE_GETTIMEOFDAY 1 - -/* Define if get_nprocs is available in . */ -/* #undef _GLIBCXX_USE_GET_NPROCS */ - -/* Define if __int128 is supported on this host. */ -/* #undef _GLIBCXX_USE_INT128 */ - -/* Define if LFS support is available. */ -/* #undef _GLIBCXX_USE_LFS */ - -/* Define if code specialized for long long should be used. */ -#define _GLIBCXX_USE_LONG_LONG 1 - -/* Defined if nanosleep is available. */ -/* #undef _GLIBCXX_USE_NANOSLEEP */ - -/* Define if NLS translations are to be used. */ -/* #undef _GLIBCXX_USE_NLS */ - -/* Define if pthreads_num_processors_np is available in . */ -/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ - -/* Define if POSIX read/write locks are available in . */ -/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ - -/* Define if /dev/random and /dev/urandom are available for the random_device - of TR1 (Chapter 5.1). */ -/* #undef _GLIBCXX_USE_RANDOM_TR1 */ - -/* Define if usable realpath is available in . */ -/* #undef _GLIBCXX_USE_REALPATH */ - -/* Defined if sched_yield is available. */ -/* #undef _GLIBCXX_USE_SCHED_YIELD */ - -/* Define if _SC_NPROCESSORS_ONLN is available in . */ -#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 - -/* Define if _SC_NPROC_ONLN is available in . */ -/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ - -/* Define if sendfile is available in . */ -/* #undef _GLIBCXX_USE_SENDFILE */ - -/* Define if struct stat has timespec members. */ -/* #undef _GLIBCXX_USE_ST_MTIM */ - -/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ -/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ - -/* Define if obsolescent tmpnam is available in . */ -#define _GLIBCXX_USE_TMPNAM 1 - -/* Define if utimensat and UTIME_OMIT are available in and - AT_FDCWD in . */ -/* #undef _GLIBCXX_USE_UTIMENSAT */ - -/* 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. */ -/* #undef _GLIBCXX_X86_RDRAND */ - -/* 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 . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ -#endif - -/* Define if all C++11 integral type overloads are available in . */ -#if __cplusplus >= 201103L -/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ -#endif - -#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) -# define _GLIBCXX_HAVE_ACOSF 1 -# define acosf _acosf -#endif - -#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) -# define _GLIBCXX_HAVE_ACOSL 1 -# define acosl _acosl -#endif - -#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) -# define _GLIBCXX_HAVE_ASINF 1 -# define asinf _asinf -#endif - -#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) -# define _GLIBCXX_HAVE_ASINL 1 -# define asinl _asinl -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) -# define _GLIBCXX_HAVE_ATAN2F 1 -# define atan2f _atan2f -#endif - -#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) -# define _GLIBCXX_HAVE_ATAN2L 1 -# define atan2l _atan2l -#endif - -#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) -# define _GLIBCXX_HAVE_ATANF 1 -# define atanf _atanf -#endif - -#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) -# define _GLIBCXX_HAVE_ATANL 1 -# define atanl _atanl -#endif - -#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) -# define _GLIBCXX_HAVE_CEILF 1 -# define ceilf _ceilf -#endif - -#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) -# define _GLIBCXX_HAVE_CEILL 1 -# define ceill _ceill -#endif - -#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) -# define _GLIBCXX_HAVE_COSF 1 -# define cosf _cosf -#endif - -#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) -# define _GLIBCXX_HAVE_COSHF 1 -# define coshf _coshf -#endif - -#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) -# define _GLIBCXX_HAVE_COSHL 1 -# define coshl _coshl -#endif - -#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) -# define _GLIBCXX_HAVE_COSL 1 -# define cosl _cosl -#endif - -#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) -# define _GLIBCXX_HAVE_EXPF 1 -# define expf _expf -#endif - -#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) -# define _GLIBCXX_HAVE_EXPL 1 -# define expl _expl -#endif - -#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) -# define _GLIBCXX_HAVE_FABSF 1 -# define fabsf _fabsf -#endif - -#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) -# define _GLIBCXX_HAVE_FABSL 1 -# define fabsl _fabsl -#endif - -#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) -# define _GLIBCXX_HAVE_FINITE 1 -# define finite _finite -#endif - -#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) -# define _GLIBCXX_HAVE_FINITEF 1 -# define finitef _finitef -#endif - -#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) -# define _GLIBCXX_HAVE_FINITEL 1 -# define finitel _finitel -#endif - -#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) -# define _GLIBCXX_HAVE_FLOORF 1 -# define floorf _floorf -#endif - -#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) -# define _GLIBCXX_HAVE_FLOORL 1 -# define floorl _floorl -#endif - -#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) -# define _GLIBCXX_HAVE_FMODF 1 -# define fmodf _fmodf -#endif - -#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) -# define _GLIBCXX_HAVE_FMODL 1 -# define fmodl _fmodl -#endif - -#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) -# define _GLIBCXX_HAVE_FPCLASS 1 -# define fpclass _fpclass -#endif - -#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) -# define _GLIBCXX_HAVE_FREXPF 1 -# define frexpf _frexpf -#endif - -#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) -# define _GLIBCXX_HAVE_FREXPL 1 -# define frexpl _frexpl -#endif - -#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) -# define _GLIBCXX_HAVE_HYPOT 1 -# define hypot _hypot -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) -# define _GLIBCXX_HAVE_HYPOTF 1 -# define hypotf _hypotf -#endif - -#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) -# define _GLIBCXX_HAVE_HYPOTL 1 -# define hypotl _hypotl -#endif - -#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) -# define _GLIBCXX_HAVE_ISINF 1 -# define isinf _isinf -#endif - -#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) -# define _GLIBCXX_HAVE_ISINFF 1 -# define isinff _isinff -#endif - -#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) -# define _GLIBCXX_HAVE_ISINFL 1 -# define isinfl _isinfl -#endif - -#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) -# define _GLIBCXX_HAVE_ISNAN 1 -# define isnan _isnan -#endif - -#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) -# define _GLIBCXX_HAVE_ISNANF 1 -# define isnanf _isnanf -#endif - -#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) -# define _GLIBCXX_HAVE_ISNANL 1 -# define isnanl _isnanl -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) -# define _GLIBCXX_HAVE_LDEXPF 1 -# define ldexpf _ldexpf -#endif - -#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) -# define _GLIBCXX_HAVE_LDEXPL 1 -# define ldexpl _ldexpl -#endif - -#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) -# define _GLIBCXX_HAVE_LOG10F 1 -# define log10f _log10f -#endif - -#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) -# define _GLIBCXX_HAVE_LOG10L 1 -# define log10l _log10l -#endif - -#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) -# define _GLIBCXX_HAVE_LOGF 1 -# define logf _logf -#endif - -#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) -# define _GLIBCXX_HAVE_LOGL 1 -# define logl _logl -#endif - -#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) -# define _GLIBCXX_HAVE_MODF 1 -# define modf _modf -#endif - -#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) -# define _GLIBCXX_HAVE_MODFF 1 -# define modff _modff -#endif - -#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) -# define _GLIBCXX_HAVE_MODFL 1 -# define modfl _modfl -#endif - -#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) -# define _GLIBCXX_HAVE_POWF 1 -# define powf _powf -#endif - -#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) -# define _GLIBCXX_HAVE_POWL 1 -# define powl _powl -#endif - -#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) -# define _GLIBCXX_HAVE_QFPCLASS 1 -# define qfpclass _qfpclass -#endif - -#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) -# define _GLIBCXX_HAVE_SINCOS 1 -# define sincos _sincos -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) -# define _GLIBCXX_HAVE_SINCOSF 1 -# define sincosf _sincosf -#endif - -#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) -# define _GLIBCXX_HAVE_SINCOSL 1 -# define sincosl _sincosl -#endif - -#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) -# define _GLIBCXX_HAVE_SINF 1 -# define sinf _sinf -#endif - -#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) -# define _GLIBCXX_HAVE_SINHF 1 -# define sinhf _sinhf -#endif - -#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) -# define _GLIBCXX_HAVE_SINHL 1 -# define sinhl _sinhl -#endif - -#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) -# define _GLIBCXX_HAVE_SINL 1 -# define sinl _sinl -#endif - -#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) -# define _GLIBCXX_HAVE_SQRTF 1 -# define sqrtf _sqrtf -#endif - -#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) -# define _GLIBCXX_HAVE_SQRTL 1 -# define sqrtl _sqrtl -#endif - -#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) -# define _GLIBCXX_HAVE_STRTOF 1 -# define strtof _strtof -#endif - -#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) -# define _GLIBCXX_HAVE_STRTOLD 1 -# define strtold _strtold -#endif - -#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) -# define _GLIBCXX_HAVE_TANF 1 -# define tanf _tanf -#endif - -#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) -# define _GLIBCXX_HAVE_TANHF 1 -# define tanhf _tanhf -#endif - -#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) -# define _GLIBCXX_HAVE_TANHL 1 -# define tanhl _tanhl -#endif - -#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) -# define _GLIBCXX_HAVE_TANL 1 -# define tanl _tanl -#endif - -#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++io.h deleted file mode 100644 index 124e71505..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++io.h +++ /dev/null @@ -1,50 +0,0 @@ -// Underlying io library details -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++io.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ios} - */ - -// c_io_stdio.h - Defines for using "C" stdio.h - -#ifndef _GLIBCXX_CXX_IO_H -#define _GLIBCXX_CXX_IO_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef __gthread_mutex_t __c_lock; - - // for basic_file.h - typedef FILE __c_file; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++locale.h deleted file mode 100644 index ce9fbb80d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/c++locale.h +++ /dev/null @@ -1,92 +0,0 @@ -// Wrapper for underlying C-language localization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++locale.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.8 Standard locale categories. -// - -// Written by Benjamin Kosnik - -#ifndef _GLIBCXX_CXX_LOCALE_H -#define _GLIBCXX_CXX_LOCALE_H 1 - -#pragma GCC system_header - -#include - -#define _GLIBCXX_NUM_CATEGORIES 0 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - typedef int* __c_locale; - - // Convert numeric value of type double and long double to string and - // return length of string. If vsnprintf is available use it, otherwise - // fall back to the unsafe vsprintf which, in general, can be dangerous - // and should be avoided. - inline int - __convert_from_v(const __c_locale&, char* __out, - const int __size __attribute__((__unused__)), - const char* __fmt, ...) - { - char* __old = std::setlocale(LC_NUMERIC, 0); - char* __sav = 0; - if (__builtin_strcmp(__old, "C")) - { - const size_t __len = __builtin_strlen(__old) + 1; - __sav = new char[__len]; - __builtin_memcpy(__sav, __old, __len); - std::setlocale(LC_NUMERIC, "C"); - } - - __builtin_va_list __args; - __builtin_va_start(__args, __fmt); - -#if _GLIBCXX_USE_C99_STDIO - const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); -#else - const int __ret = __builtin_vsprintf(__out, __fmt, __args); -#endif - - __builtin_va_end(__args); - - if (__sav) - { - std::setlocale(LC_NUMERIC, __sav); - delete [] __sav; - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/cpu_defines.h deleted file mode 100644 index 121ece2f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/cpu_defines.h +++ /dev/null @@ -1,40 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 - -// Integer divide instructions don't trap on ARM. -#ifdef __ARM_ARCH_EXT_IDIV__ -#define __glibcxx_integral_traps false -#else -#define __glibcxx_integral_traps true -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/ctype_base.h deleted file mode 100644 index 6a8cce7bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/ctype_base.h +++ /dev/null @@ -1,61 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// -// ISO C++ 14882: 22.1 Locales -// - -// Information as gleaned from /usr/include/ctype.h - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// @brief Base class for ctype. - struct ctype_base - { - // Non-standard typedefs. - typedef const int* __to_type; - - // NB: Offsets into ctype::_M_table force a particular size - // on the mask type. Because of this, we don't use an enum. - typedef char mask; - static const mask upper = _U; - static const mask lower = _L; - static const mask alpha = _U | _L; - static const mask digit = _N; - static const mask xdigit = _X | _N; - static const mask space = _S; - static const mask print = _P | _U | _L | _N | _B; - static const mask graph = _P | _U | _L | _N; - static const mask cntrl = _C; - static const mask punct = _P; - static const mask alnum = _U | _L | _N; -#if __cplusplus >= 201103L - static const mask blank = space; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/ctype_inline.h deleted file mode 100644 index cbb33392d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/ctype_inline.h +++ /dev/null @@ -1,74 +0,0 @@ -// Locale support -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/ctype_inline.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.1 Locales -// - -// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -// functions go in ctype.cc - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - bool - ctype:: - is(mask __m, char __c) const - { return _M_table[static_cast(__c)] & __m; } - - const char* - ctype:: - is(const char* __low, const char* __high, mask* __vec) const - { - while (__low < __high) - *__vec++ = _M_table[static_cast(*__low++)]; - return __high; - } - - const char* - ctype:: - scan_is(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && !this->is(__m, *__low)) - ++__low; - return __low; - } - - const char* - ctype:: - scan_not(mask __m, const char* __low, const char* __high) const - { - while (__low < __high && this->is(__m, *__low) != 0) - ++__low; - return __low; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/cxxabi_tweaks.h deleted file mode 100644 index 6f37a4fdf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/cxxabi_tweaks.h +++ /dev/null @@ -1,82 +0,0 @@ -// Control various target specific ABI tweaks. ARM version. - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/cxxabi_tweaks.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{cxxabi.h} - */ - -#ifndef _CXXABI_TWEAKS_H -#define _CXXABI_TWEAKS_H 1 - -#ifdef __cplusplus -namespace __cxxabiv1 -{ - extern "C" - { -#endif - -#ifdef __ARM_EABI__ - // The ARM EABI uses the least significant bit of a 32-bit - // guard variable. */ -#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) -#define _GLIBCXX_GUARD_SET(x) *(x) = 1 -#define _GLIBCXX_GUARD_BIT 1 -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - typedef int __guard; - - // We also want the element size in array cookies. -#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 - - // __cxa_vec_ctor should return a pointer to the array. - typedef void * __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x - // Constructors and destructors return the "this" pointer. - typedef void * __cxa_cdtor_return_type; - -#else // __ARM_EABI__ - - // The generic ABI uses the first byte of a 64-bit guard variable. -#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) -#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 -#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) -#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) -#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) - __extension__ typedef int __guard __attribute__((mode (__DI__))); - - // __cxa_vec_ctor has void return type. - typedef void __cxa_vec_ctor_return_type; -#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return - // Constructors and destructors do not return a value. - typedef void __cxa_cdtor_return_type; - -#endif //!__ARM_EABI__ - -#ifdef __cplusplus - } -} // namespace __cxxabiv1 -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/error_constants.h deleted file mode 100644 index 3f5c92e7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/error_constants.h +++ /dev/null @@ -1,178 +0,0 @@ -// Specific definitions for generic platforms -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/error_constants.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{system_error} - */ - -#ifndef _GLIBCXX_ERROR_CONSTANTS -#define _GLIBCXX_ERROR_CONSTANTS 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - enum class errc - { - address_family_not_supported = EAFNOSUPPORT, - address_in_use = EADDRINUSE, - address_not_available = EADDRNOTAVAIL, - already_connected = EISCONN, - argument_list_too_long = E2BIG, - argument_out_of_domain = EDOM, - bad_address = EFAULT, - bad_file_descriptor = EBADF, - -#ifdef _GLIBCXX_HAVE_EBADMSG - bad_message = EBADMSG, -#endif - - broken_pipe = EPIPE, - connection_aborted = ECONNABORTED, - connection_already_in_progress = EALREADY, - connection_refused = ECONNREFUSED, - connection_reset = ECONNRESET, - cross_device_link = EXDEV, - destination_address_required = EDESTADDRREQ, - device_or_resource_busy = EBUSY, - directory_not_empty = ENOTEMPTY, - executable_format_error = ENOEXEC, - file_exists = EEXIST, - file_too_large = EFBIG, - filename_too_long = ENAMETOOLONG, - function_not_supported = ENOSYS, - host_unreachable = EHOSTUNREACH, - -#ifdef _GLIBCXX_HAVE_EIDRM - identifier_removed = EIDRM, -#endif - - illegal_byte_sequence = EILSEQ, - inappropriate_io_control_operation = ENOTTY, - interrupted = EINTR, - invalid_argument = EINVAL, - invalid_seek = ESPIPE, - io_error = EIO, - is_a_directory = EISDIR, - message_size = EMSGSIZE, - network_down = ENETDOWN, - network_reset = ENETRESET, - network_unreachable = ENETUNREACH, - no_buffer_space = ENOBUFS, - no_child_process = ECHILD, - -#ifdef _GLIBCXX_HAVE_ENOLINK - no_link = ENOLINK, -#endif - - no_lock_available = ENOLCK, - -#ifdef _GLIBCXX_HAVE_ENODATA - no_message_available = ENODATA, -#endif - - no_message = ENOMSG, - no_protocol_option = ENOPROTOOPT, - no_space_on_device = ENOSPC, - -#ifdef _GLIBCXX_HAVE_ENOSR - no_stream_resources = ENOSR, -#endif - - no_such_device_or_address = ENXIO, - no_such_device = ENODEV, - no_such_file_or_directory = ENOENT, - no_such_process = ESRCH, - not_a_directory = ENOTDIR, - not_a_socket = ENOTSOCK, - -#ifdef _GLIBCXX_HAVE_ENOSTR - not_a_stream = ENOSTR, -#endif - - not_connected = ENOTCONN, - not_enough_memory = ENOMEM, - -#ifdef _GLIBCXX_HAVE_ENOTSUP - not_supported = ENOTSUP, -#endif - -#ifdef _GLIBCXX_HAVE_ECANCELED - operation_canceled = ECANCELED, -#endif - - operation_in_progress = EINPROGRESS, - operation_not_permitted = EPERM, - operation_not_supported = EOPNOTSUPP, - operation_would_block = EWOULDBLOCK, - -#ifdef _GLIBCXX_HAVE_EOWNERDEAD - owner_dead = EOWNERDEAD, -#endif - - permission_denied = EACCES, - -#ifdef _GLIBCXX_HAVE_EPROTO - protocol_error = EPROTO, -#endif - - protocol_not_supported = EPROTONOSUPPORT, - read_only_file_system = EROFS, - resource_deadlock_would_occur = EDEADLK, - resource_unavailable_try_again = EAGAIN, - result_out_of_range = ERANGE, - -#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE - state_not_recoverable = ENOTRECOVERABLE, -#endif - -#ifdef _GLIBCXX_HAVE_ETIME - stream_timeout = ETIME, -#endif - -#ifdef _GLIBCXX_HAVE_ETXTBSY - text_file_busy = ETXTBSY, -#endif - - timed_out = ETIMEDOUT, - too_many_files_open_in_system = ENFILE, - too_many_files_open = EMFILE, - too_many_links = EMLINK, - too_many_symbolic_link_levels = ELOOP, - -#ifdef _GLIBCXX_HAVE_EOVERFLOW - value_too_large = EOVERFLOW, -#endif - - wrong_protocol_type = EPROTOTYPE - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/extc++.h deleted file mode 100644 index 68c1681a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/extc++.h +++ /dev/null @@ -1,84 +0,0 @@ -// C++ includes used for precompiling extensions -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file extc++.h - * This is an implementation file for a precompiled header. - */ - -#if __cplusplus < 201103L -#include -#else -#include -#endif - -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if __cplusplus >= 201103L -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_HAVE_ICONV - #include - #include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-default.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-default.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-posix.h deleted file mode 100644 index 2f844b247..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-posix.h +++ /dev/null @@ -1,889 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_POSIX_H -#define _GLIBCXX_GCC_GTHR_POSIX_H - -/* POSIX threads specific definitions. - Easy, since the interface is just one-to-one mapping. */ - -#define __GTHREADS 1 -#define __GTHREADS_CXX0X 1 - -#include - -#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ - || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) -# include -# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 -# else -# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 -# endif -#endif - -typedef pthread_t __gthread_t; -typedef pthread_key_t __gthread_key_t; -typedef pthread_once_t __gthread_once_t; -typedef pthread_mutex_t __gthread_mutex_t; -typedef pthread_mutex_t __gthread_recursive_mutex_t; -typedef pthread_cond_t __gthread_cond_t; -typedef struct timespec __gthread_time_t; - -/* POSIX like conditional variables are supported. Please look at comments - in gthr.h for details. */ -#define __GTHREAD_HAS_COND 1 - -#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER -#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function -#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT -#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER -#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) -#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP -#else -#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER -#define __GTHREAD_TIME_INIT {0,0} - -#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC -# undef __GTHREAD_MUTEX_INIT -#endif -#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC -# undef __GTHREAD_RECURSIVE_MUTEX_INIT -# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION -# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function -#endif -#ifdef _GTHREAD_USE_COND_INIT_FUNC -# undef __GTHREAD_COND_INIT -# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function -#endif - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK -# ifndef __gthrw_pragma -# define __gthrw_pragma(pragma) -# endif -# define __gthrw2(name,name2,type) \ - static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ - __gthrw_pragma(weak type) -# define __gthrw_(name) __gthrw_ ## name -#else -# define __gthrw2(name,name2,type) -# define __gthrw_(name) name -#endif - -/* Typically, __gthrw_foo is a weak reference to symbol foo. */ -#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) - -__gthrw(pthread_once) -__gthrw(pthread_getspecific) -__gthrw(pthread_setspecific) - -__gthrw(pthread_create) -__gthrw(pthread_join) -__gthrw(pthread_equal) -__gthrw(pthread_self) -__gthrw(pthread_detach) -#ifndef __BIONIC__ -__gthrw(pthread_cancel) -#endif -__gthrw(sched_yield) - -__gthrw(pthread_mutex_lock) -__gthrw(pthread_mutex_trylock) -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -__gthrw(pthread_mutex_timedlock) -#endif -__gthrw(pthread_mutex_unlock) -__gthrw(pthread_mutex_init) -__gthrw(pthread_mutex_destroy) - -__gthrw(pthread_cond_init) -__gthrw(pthread_cond_broadcast) -__gthrw(pthread_cond_signal) -__gthrw(pthread_cond_wait) -__gthrw(pthread_cond_timedwait) -__gthrw(pthread_cond_destroy) - -__gthrw(pthread_key_create) -__gthrw(pthread_key_delete) -__gthrw(pthread_mutexattr_init) -__gthrw(pthread_mutexattr_settype) -__gthrw(pthread_mutexattr_destroy) - - -#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) -/* Objective-C. */ -__gthrw(pthread_exit) -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(sched_get_priority_max) -__gthrw(sched_get_priority_min) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ -__gthrw(pthread_attr_destroy) -__gthrw(pthread_attr_init) -__gthrw(pthread_attr_setdetachstate) -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING -__gthrw(pthread_getschedparam) -__gthrw(pthread_setschedparam) -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _LIBOBJC || _LIBOBJC_WEAK */ - -#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK - -/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if - -pthreads is not specified. The functions are dummies and most return an - error value. However pthread_once returns 0 without invoking the routine - it is passed so we cannot pretend that the interface is active if -pthreads - is not specified. On Solaris 2.5.1, the interface is not exposed at all so - we need to play the usual game with weak symbols. On Solaris 10 and up, a - working interface is always exposed. On FreeBSD 6 and later, libc also - exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up - to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, - which means the alternate __gthread_active_p below cannot be used there. */ - -#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) - -static volatile int __gthread_active = -1; - -static void -__gthread_trigger (void) -{ - __gthread_active = 1; -} - -static inline int -__gthread_active_p (void) -{ - static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; - static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; - - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - - /* This test is not protected to avoid taking a lock on the main code - path so every update of __gthread_active in a threaded program must - be atomic with regard to the result of the test. */ - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - if (__gthrw_(pthread_once)) - { - /* If this really is a threaded program, then we must ensure that - __gthread_active has been set to 1 before exiting this block. */ - __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); - __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); - __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); - } - - /* Make sure we'll never enter this block again. */ - if (__gthread_active < 0) - __gthread_active = 0; - - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* neither FreeBSD nor Solaris */ - -/* For a program to be multi-threaded the only thing that it certainly must - be using is pthread_create. However, there may be other libraries that - intercept pthread_create with their own definitions to wrap pthreads - functionality for some purpose. In those cases, pthread_create being - defined might not necessarily mean that libpthread is actually linked - in. - - For the GNU C library, we can use a known internal name. This is always - available in the ABI, but no other library would define it. That is - ideal, since any public pthread function might be intercepted just as - pthread_create might be. __pthread_key_create is an "internal" - implementation symbol, but it is part of the public exported ABI. Also, - it's among the symbols that the static libpthread.a always links in - whenever pthread_create is used, so there is no danger of a false - negative result in any statically-linked, multi-threaded program. - - For others, we choose pthread_cancel as a function that seems unlikely - to be redefined by an interceptor library. The bionic (Android) C - library does not provide pthread_cancel, so we do use pthread_create - there (and interceptor libraries lose). */ - -#ifdef __GLIBC__ -__gthrw2(__gthrw_(__pthread_key_create), - __pthread_key_create, - pthread_key_create) -# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) -#elif defined (__BIONIC__) -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) -#else -# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) -#endif - -static inline int -__gthread_active_p (void) -{ - static void *const __gthread_active_ptr - = __extension__ (void *) >HR_ACTIVE_PROXY; - return __gthread_active_ptr != 0; -} - -#endif /* FreeBSD or Solaris */ - -#else /* not __GXX_WEAK__ */ - -/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread - calls in shared flavors of the HP-UX C library. Most of the stubs - have no functionality. The details are described in the "libc cumulative - patch" for each subversion of HP-UX 11. There are two special interfaces - provided for checking whether an application is linked to a shared pthread - library or not. However, these interfaces aren't available in early - libpthread libraries. We also need a test that works for archive - libraries. We can't use pthread_once as some libc versions call the - init function. We also can't use pthread_create or pthread_attr_init - as these create a thread and thereby prevent changing the default stack - size. The function pthread_default_stacksize_np is available in both - the archive and shared versions of libpthread. It can be used to - determine the default pthread stack size. There is a stub in some - shared libc versions which returns a zero size if pthreads are not - active. We provide an equivalent stub to handle cases where libc - doesn't provide one. */ - -#if defined(__hppa__) && defined(__hpux__) - -static volatile int __gthread_active = -1; - -static inline int -__gthread_active_p (void) -{ - /* Avoid reading __gthread_active twice on the main code path. */ - int __gthread_active_latest_value = __gthread_active; - size_t __s; - - if (__builtin_expect (__gthread_active_latest_value < 0, 0)) - { - pthread_default_stacksize_np (0, &__s); - __gthread_active = __s ? 1 : 0; - __gthread_active_latest_value = __gthread_active; - } - - return __gthread_active_latest_value != 0; -} - -#else /* not hppa-hpux */ - -static inline int -__gthread_active_p (void) -{ - return 1; -} - -#endif /* hppa-hpux */ - -#endif /* __GXX_WEAK__ */ - -#ifdef _LIBOBJC - -/* This is the config.h file in libobjc/ */ -#include - -#ifdef HAVE_SCHED_H -# include -#endif - -/* Key structure for maintaining thread specific storage */ -static pthread_key_t _objc_thread_storage; -static pthread_attr_t _objc_thread_attribs; - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - if (__gthread_active_p ()) - { - /* Initialize the thread storage key. */ - if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) - { - /* The normal default detach state for threads is - * PTHREAD_CREATE_JOINABLE which causes threads to not die - * when you think they should. */ - if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 - && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, - PTHREAD_CREATE_DETACHED) == 0) - return 0; - } - } - - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - if (__gthread_active_p () - && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 - && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) - return 0; - - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (*func)(void *), void *arg) -{ - objc_thread_t thread_id; - pthread_t new_thread_handle; - - if (!__gthread_active_p ()) - return NULL; - - if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, - (void *) func, arg))) - thread_id = (objc_thread_t) new_thread_handle; - else - thread_id = NULL; - - return thread_id; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority) -{ - if (!__gthread_active_p ()) - return -1; - else - { -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - pthread_t thread_id = __gthrw_(pthread_self) (); - int policy; - struct sched_param params; - int priority_min, priority_max; - - if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) - { - if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) - return -1; - - if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) - return -1; - - if (priority > priority_max) - priority = priority_max; - else if (priority < priority_min) - priority = priority_min; - params.sched_priority = priority; - - /* - * The solaris 7 and several other man pages incorrectly state that - * this should be a pointer to policy but pthread.h is universally - * at odds with this. - */ - if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) - return 0; - } -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return -1; - } -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ -#ifdef _POSIX_PRIORITY_SCHEDULING -#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING - if (__gthread_active_p ()) - { - int policy; - struct sched_param params; - - if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) - return params.sched_priority; - else - return -1; - } - else -#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ -#endif /* _POSIX_PRIORITY_SCHEDULING */ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - if (__gthread_active_p ()) - __gthrw_(sched_yield) (); -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - if (__gthread_active_p ()) - /* exit the thread */ - __gthrw_(pthread_exit) (&__objc_thread_exit_status); - - /* Failed if we reached here */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - if (__gthread_active_p ()) - return (objc_thread_t) __gthrw_(pthread_self) (); - else - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); - else - { - thread_local_storage = value; - return 0; - } -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_getspecific) (_objc_thread_storage); - else - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); - - if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) - { - objc_free (mutex->backend); - mutex->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - { - int count; - - /* - * Posix Threads specifically require that the thread be unlocked - * for __gthrw_(pthread_mutex_destroy) to work. - */ - - do - { - count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); - if (count < 0) - return -1; - } - while (count); - - if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) - return -1; - - objc_free (mutex->backend); - mutex->backend = NULL; - } - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex) -{ - if (__gthread_active_p () - && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) - { - return -1; - } - - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - condition->backend = objc_malloc (sizeof (pthread_cond_t)); - - if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) - { - objc_free (condition->backend); - condition->backend = NULL; - return -1; - } - } - - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition) -{ - if (__gthread_active_p ()) - { - if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) - return -1; - - objc_free (condition->backend); - condition->backend = NULL; - } - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, - (pthread_mutex_t *) mutex->backend); - else - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); - else - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), - void *__args) -{ - return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); -} - -static inline int -__gthread_join (__gthread_t __threadid, void **__value_ptr) -{ - return __gthrw_(pthread_join) (__threadid, __value_ptr); -} - -static inline int -__gthread_detach (__gthread_t __threadid) -{ - return __gthrw_(pthread_detach) (__threadid); -} - -static inline int -__gthread_equal (__gthread_t __t1, __gthread_t __t2) -{ - return __gthrw_(pthread_equal) (__t1, __t2); -} - -static inline __gthread_t -__gthread_self (void) -{ - return __gthrw_(pthread_self) (); -} - -static inline int -__gthread_yield (void) -{ - return __gthrw_(sched_yield) (); -} - -static inline int -__gthread_once (__gthread_once_t *__once, void (*__func) (void)) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_once) (__once, __func); - else - return -1; -} - -static inline int -__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) -{ - return __gthrw_(pthread_key_create) (__key, __dtor); -} - -static inline int -__gthread_key_delete (__gthread_key_t __key) -{ - return __gthrw_(pthread_key_delete) (__key); -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key) -{ - return __gthrw_(pthread_getspecific) (__key); -} - -static inline int -__gthread_setspecific (__gthread_key_t __key, const void *__ptr) -{ - return __gthrw_(pthread_setspecific) (__key, __ptr); -} - -static inline void -__gthread_mutex_init_function (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_mutex_init) (__mutex, NULL); -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_destroy) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_lock) (__mutex); - else - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_trylock) (__mutex); - else - return 0; -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); - else - return 0; -} -#endif - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - return __gthrw_(pthread_mutex_unlock) (__mutex); - else - return 0; -} - -#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ - || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) -static inline int -__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) -{ - if (__gthread_active_p ()) - { - pthread_mutexattr_t __attr; - int __r; - - __r = __gthrw_(pthread_mutexattr_init) (&__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_settype) (&__attr, - PTHREAD_MUTEX_RECURSIVE); - if (!__r) - __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); - if (!__r) - __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); - return __r; - } - return 0; -} -#endif - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -#if _GTHREAD_USE_MUTEX_TIMEDLOCK -static inline int -__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthread_mutex_timedlock (__mutex, __abs_timeout); -} -#endif - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#ifdef _GTHREAD_USE_COND_INIT_FUNC -static inline void -__gthread_cond_init_function (__gthread_cond_t *__cond) -{ - if (__gthread_active_p ()) - __gthrw_(pthread_cond_init) (__cond, NULL); -} -#endif - -static inline int -__gthread_cond_broadcast (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_broadcast) (__cond); -} - -static inline int -__gthread_cond_signal (__gthread_cond_t *__cond) -{ - return __gthrw_(pthread_cond_signal) (__cond); -} - -static inline int -__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) -{ - return __gthrw_(pthread_cond_wait) (__cond, __mutex); -} - -static inline int -__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, - const __gthread_time_t *__abs_timeout) -{ - return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); -} - -static inline int -__gthread_cond_wait_recursive (__gthread_cond_t *__cond, - __gthread_recursive_mutex_t *__mutex) -{ - return __gthread_cond_wait (__cond, __mutex); -} - -static inline int -__gthread_cond_destroy (__gthread_cond_t* __cond) -{ - return __gthrw_(pthread_cond_destroy) (__cond); -} - -#endif /* _LIBOBJC */ - -#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-single.h deleted file mode 100644 index 165711401..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr-single.h +++ /dev/null @@ -1,298 +0,0 @@ -/* Threads compatibility routines for libgcc2 and libobjc. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H -#define _GLIBCXX_GCC_GTHR_SINGLE_H - -/* Just provide compatibility for mutex handling. */ - -typedef int __gthread_key_t; -typedef int __gthread_once_t; -typedef int __gthread_mutex_t; -typedef int __gthread_recursive_mutex_t; - -#define __GTHREAD_ONCE_INIT 0 -#define __GTHREAD_MUTEX_INIT 0 -#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) -#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 - -#define _GLIBCXX_UNUSED __attribute__((__unused__)) - -#ifdef _LIBOBJC - -/* Thread local storage for a single thread */ -static void *thread_local_storage = NULL; - -/* Backend initialization functions */ - -/* Initialize the threads subsystem. */ -static inline int -__gthread_objc_init_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Close the threads subsystem. */ -static inline int -__gthread_objc_close_thread_system (void) -{ - /* No thread support available */ - return -1; -} - -/* Backend thread functions */ - -/* Create a new thread of execution. */ -static inline objc_thread_t -__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return NULL; -} - -/* Set the current thread's priority. */ -static inline int -__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) -{ - /* No thread support available */ - return -1; -} - -/* Return the current thread's priority. */ -static inline int -__gthread_objc_thread_get_priority (void) -{ - return OBJC_THREAD_INTERACTIVE_PRIORITY; -} - -/* Yield our process time to another thread. */ -static inline void -__gthread_objc_thread_yield (void) -{ - return; -} - -/* Terminate the current thread. */ -static inline int -__gthread_objc_thread_exit (void) -{ - /* No thread support available */ - /* Should we really exit the program */ - /* exit (&__objc_thread_exit_status); */ - return -1; -} - -/* Returns an integer value which uniquely describes a thread. */ -static inline objc_thread_t -__gthread_objc_thread_id (void) -{ - /* No thread support, use 1. */ - return (objc_thread_t) 1; -} - -/* Sets the thread's local storage pointer. */ -static inline int -__gthread_objc_thread_set_data (void *value) -{ - thread_local_storage = value; - return 0; -} - -/* Returns the thread's local storage pointer. */ -static inline void * -__gthread_objc_thread_get_data (void) -{ - return thread_local_storage; -} - -/* Backend mutex functions */ - -/* Allocate a mutex. */ -static inline int -__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a mutex. */ -static inline int -__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Try to grab a lock on a mutex. */ -static inline int -__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - /* There can only be one thread, so we always get the lock */ - return 0; -} - -/* Unlock the mutex */ -static inline int -__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Backend condition mutex functions */ - -/* Allocate a condition. */ -static inline int -__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Deallocate a condition. */ -static inline int -__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wait on the condition */ -static inline int -__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, - objc_mutex_t mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up all threads waiting on this condition. */ -static inline int -__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -/* Wake up one thread waiting on this condition. */ -static inline int -__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) -{ - return 0; -} - -#else /* _LIBOBJC */ - -static inline int -__gthread_active_p (void) -{ - return 0; -} - -static inline int -__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int _GLIBCXX_UNUSED -__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) -{ - return 0; -} - -static int _GLIBCXX_UNUSED -__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline void * -__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) -{ - return 0; -} - -static inline int -__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_lock (__mutex); -} - -static inline int -__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_trylock (__mutex); -} - -static inline int -__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_unlock (__mutex); -} - -static inline int -__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) -{ - return __gthread_mutex_destroy (__mutex); -} - -#endif /* _LIBOBJC */ - -#undef _GLIBCXX_UNUSED - -#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr.h deleted file mode 100644 index 5889966e6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/gthr.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Threads compatibility routines for libgcc2. */ -/* Compile this one with gcc. */ -/* Copyright (C) 1997-2017 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -. */ - -#ifndef _GLIBCXX_GCC_GTHR_H -#define _GLIBCXX_GCC_GTHR_H - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility push(default) -#endif - -/* If this file is compiled with threads support, it must - #define __GTHREADS 1 - to indicate that threads support is present. Also it has define - function - int __gthread_active_p () - that returns 1 if thread system is active, 0 if not. - - The threads interface must define the following types: - __gthread_key_t - __gthread_once_t - __gthread_mutex_t - __gthread_recursive_mutex_t - - The threads interface must define the following macros: - - __GTHREAD_ONCE_INIT - to initialize __gthread_once_t - __GTHREAD_MUTEX_INIT - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - __GTHREAD_MUTEX_INIT_FUNCTION - to initialize __gthread_mutex_t to get a fast - non-recursive mutex. - Define this to a function which looks like this: - void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) - Some systems can't initialize a mutex without a - function call. Don't define __GTHREAD_MUTEX_INIT in this case. - __GTHREAD_RECURSIVE_MUTEX_INIT - __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION - as above, but for a recursive mutex. - - The threads interface must define the following static functions: - - int __gthread_once (__gthread_once_t *once, void (*func) ()) - - int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) - int __gthread_key_delete (__gthread_key_t key) - - void *__gthread_getspecific (__gthread_key_t key) - int __gthread_setspecific (__gthread_key_t key, const void *ptr) - - int __gthread_mutex_destroy (__gthread_mutex_t *mutex); - int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); - - int __gthread_mutex_lock (__gthread_mutex_t *mutex); - int __gthread_mutex_trylock (__gthread_mutex_t *mutex); - int __gthread_mutex_unlock (__gthread_mutex_t *mutex); - - int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); - int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); - - The following are supported in POSIX threads only. They are required to - fix a deadlock in static initialization inside libsupc++. The header file - gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra - features are supported. - - Types: - __gthread_cond_t - - Macros: - __GTHREAD_COND_INIT - __GTHREAD_COND_INIT_FUNCTION - - Interface: - int __gthread_cond_broadcast (__gthread_cond_t *cond); - int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); - int __gthread_cond_wait_recursive (__gthread_cond_t *cond, - __gthread_recursive_mutex_t *mutex); - - All functions returning int should return zero on success or the error - number. If the operation is not supported, -1 is returned. - - If the following are also defined, you should - #define __GTHREADS_CXX0X 1 - to enable the c++0x thread library. - - Types: - __gthread_t - __gthread_time_t - - Interface: - int __gthread_create (__gthread_t *thread, void *(*func) (void*), - void *args); - int __gthread_join (__gthread_t thread, void **value_ptr); - int __gthread_detach (__gthread_t thread); - int __gthread_equal (__gthread_t t1, __gthread_t t2); - __gthread_t __gthread_self (void); - int __gthread_yield (void); - - int __gthread_mutex_timedlock (__gthread_mutex_t *m, - const __gthread_time_t *abs_timeout); - int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, - const __gthread_time_t *abs_time); - - int __gthread_cond_signal (__gthread_cond_t *cond); - int __gthread_cond_timedwait (__gthread_cond_t *cond, - __gthread_mutex_t *mutex, - const __gthread_time_t *abs_timeout); - -*/ - -#if __GXX_WEAK__ -/* The pe-coff weak support isn't fully compatible to ELF's weak. - For static libraries it might would work, but as we need to deal - with shared versions too, we disable it for mingw-targets. */ -#ifdef __MINGW32__ -#undef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 0 -#endif - -#ifndef _GLIBCXX_GTHREAD_USE_WEAK -#define _GLIBCXX_GTHREAD_USE_WEAK 1 -#endif -#endif -#include - -#ifndef _GLIBCXX_HIDE_EXPORTS -#pragma GCC visibility pop -#endif - -#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/messages_members.h deleted file mode 100644 index 7baec1c5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/messages_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::messages implementation details, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/messages_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Non-virtual member functions. - template - messages<_CharT>::messages(size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - messages<_CharT>::messages(__c_locale, const char*, size_t __refs) - : facet(__refs) - { _M_c_locale_messages = _S_get_c_locale(); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::open(const basic_string& __s, const locale& __loc, - const char*) const - { return this->do_open(__s, __loc); } - - // Virtual member functions. - template - messages<_CharT>::~messages() - { _S_destroy_c_locale(_M_c_locale_messages); } - - template - typename messages<_CharT>::catalog - messages<_CharT>::do_open(const basic_string&, const locale&) const - { return 0; } - - template - typename messages<_CharT>::string_type - messages<_CharT>::do_get(catalog, int, int, - const string_type& __dfault) const - { return __dfault; } - - template - void - messages<_CharT>::do_close(catalog) const - { } - - // messages_byname - template - messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) - : messages<_CharT>(__refs) - { - if (__builtin_strcmp(__s, "C") != 0 - && __builtin_strcmp(__s, "POSIX") != 0) - { - this->_S_destroy_c_locale(this->_M_c_locale_messages); - this->_S_create_c_locale(this->_M_c_locale_messages, __s); - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/opt_random.h deleted file mode 100644 index 5e2b7b103..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number handling, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _BITS_OPT_RANDOM_H -#define _BITS_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/os_defines.h deleted file mode 100644 index a54dd98f9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/os_defines.h +++ /dev/null @@ -1,61 +0,0 @@ -// Specific definitions for newlib -*- C++ -*- - -// Copyright (C) 2000-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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. - -#ifdef __CYGWIN__ -#define _GLIBCXX_GTHREAD_USE_WEAK 0 - -#if defined (_GLIBCXX_DLL) -#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) -#else -#define _GLIBCXX_PSEUDO_VISIBILITY_default -#endif -#define _GLIBCXX_PSEUDO_VISIBILITY_hidden - -#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V - -// See libstdc++/20806. -#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 - -// Enable use of GetModuleHandleEx (requires Windows XP/2003) in -// __cxa_thread_atexit to prevent modules from being unloaded before -// their dtors are called -#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 - -// See libstdc++/69506 -#define _GLIBCXX_USE_WEAK_REF 0 - -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/stdc++.h deleted file mode 100644 index 262743a3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/stdc++.h +++ /dev/null @@ -1,123 +0,0 @@ -// C++ includes used for precompiling -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdc++.h - * This is an implementation file for a precompiled header. - */ - -// 17.4.1.2 Headers - -// C -#ifndef _GLIBCXX_NO_ASSERT -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -// C++ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#endif - -#if __cplusplus >= 201402L -#include -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/stdtr1c++.h deleted file mode 100644 index 9e6a5c230..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/stdtr1c++.h +++ /dev/null @@ -1,53 +0,0 @@ -// C++ includes used for precompiling TR1 -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdtr1c++.h - * This is an implementation file for a precompiled header. - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/time_members.h deleted file mode 100644 index c77c4685b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/bits/time_members.h +++ /dev/null @@ -1,92 +0,0 @@ -// std::time_get, std::time_put implementation, generic version -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/time_members.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{locale} - */ - -// -// ISO C++ 14882: 22.2.5.1.2 - time_get functions -// ISO C++ 14882: 22.2.5.3.2 - time_put functions -// - -// Written by Benjamin Kosnik - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - __timepunct<_CharT>::__timepunct(size_t __refs) - : facet(__refs), _M_data(0) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) - : facet(__refs), _M_data(__cache) - { - _M_name_timepunct = _S_get_c_name(); - _M_initialize_timepunct(); - } - - template - __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, - size_t __refs) - : facet(__refs), _M_data(0) - { - if (__builtin_strcmp(__s, _S_get_c_name()) != 0) - { - const size_t __len = __builtin_strlen(__s) + 1; - char* __tmp = new char[__len]; - __builtin_memcpy(__tmp, __s, __len); - _M_name_timepunct = __tmp; - } - else - _M_name_timepunct = _S_get_c_name(); - - __try - { _M_initialize_timepunct(__cloc); } - __catch(...) - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - __throw_exception_again; - } - } - - template - __timepunct<_CharT>::~__timepunct() - { - if (_M_name_timepunct != _S_get_c_name()) - delete [] _M_name_timepunct; - delete _M_data; - _S_destroy_c_locale(_M_c_locale_timepunct); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/ext/opt_random.h deleted file mode 100644 index 2150f5826..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/arm-none-eabi/thumb/v8-m.main/fpv5/softfp/ext/opt_random.h +++ /dev/null @@ -1,38 +0,0 @@ -// Optimizations for random number extensions, generic version -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/opt_random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_OPT_RANDOM_H -#define _EXT_OPT_RANDOM_H 1 - -#pragma GCC system_header - - - - -#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/array deleted file mode 100644 index 1c7d6dc4a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/array +++ /dev/null @@ -1,378 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/array - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_ARRAY -#define _GLIBCXX_ARRAY 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - template - struct __array_traits - { - typedef _Tp _Type[_Nm]; - typedef __is_swappable<_Tp> _Is_swappable; - typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; - - static constexpr _Tp& - _S_ref(const _Type& __t, std::size_t __n) noexcept - { return const_cast<_Tp&>(__t[__n]); } - - static constexpr _Tp* - _S_ptr(const _Type& __t) noexcept - { return const_cast<_Tp*>(__t); } - }; - - template - struct __array_traits<_Tp, 0> - { - struct _Type { }; - typedef true_type _Is_swappable; - typedef true_type _Is_nothrow_swappable; - - static constexpr _Tp& - _S_ref(const _Type&, std::size_t) noexcept - { return *static_cast<_Tp*>(nullptr); } - - static constexpr _Tp* - _S_ptr(const _Type&) noexcept - { return nullptr; } - }; - - /** - * @brief A standard container for storing a fixed size sequence of elements. - * - * @ingroup sequences - * - * Meets the requirements of a container, a - * reversible container, and a - * sequence. - * - * Sets support random access iterators. - * - * @tparam Tp Type of element. Required to be a complete type. - * @tparam N Number of elements. - */ - template - struct array - { - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // Support for zero-sized arrays mandatory. - typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; - typename _AT_Type::_Type _M_elems; - - // No explicit construct/copy/destroy for aggregate type. - - // DR 776. - void - fill(const value_type& __u) - { std::fill_n(begin(), size(), __u); } - - void - swap(array& __other) - noexcept(_AT_Type::_Is_nothrow_swappable::value) - { std::swap_ranges(begin(), end(), __other.begin()); } - - // Iterators. - _GLIBCXX17_CONSTEXPR iterator - begin() noexcept - { return iterator(data()); } - - _GLIBCXX17_CONSTEXPR const_iterator - begin() const noexcept - { return const_iterator(data()); } - - _GLIBCXX17_CONSTEXPR iterator - end() noexcept - { return iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR const_iterator - end() const noexcept - { return const_iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR reverse_iterator - rbegin() noexcept - { return reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - rbegin() const noexcept - { return const_reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR reverse_iterator - rend() noexcept - { return reverse_iterator(begin()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - rend() const noexcept - { return const_reverse_iterator(begin()); } - - _GLIBCXX17_CONSTEXPR const_iterator - cbegin() const noexcept - { return const_iterator(data()); } - - _GLIBCXX17_CONSTEXPR const_iterator - cend() const noexcept - { return const_iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } - - // Capacity. - constexpr size_type - size() const noexcept { return _Nm; } - - constexpr size_type - max_size() const noexcept { return _Nm; } - - constexpr bool - empty() const noexcept { return size() == 0; } - - // Element access. - _GLIBCXX17_CONSTEXPR reference - operator[](size_type __n) noexcept - { return _AT_Type::_S_ref(_M_elems, __n); } - - constexpr const_reference - operator[](size_type __n) const noexcept - { return _AT_Type::_S_ref(_M_elems, __n); } - - _GLIBCXX17_CONSTEXPR reference - at(size_type __n) - { - if (__n >= _Nm) - std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " - ">= _Nm (which is %zu)"), - __n, _Nm); - return _AT_Type::_S_ref(_M_elems, __n); - } - - constexpr const_reference - at(size_type __n) const - { - // Result of conditional expression must be an lvalue so use - // boolean ? lvalue : (throw-expr, lvalue) - return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) - : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " - ">= _Nm (which is %zu)"), - __n, _Nm), - _AT_Type::_S_ref(_M_elems, 0)); - } - - _GLIBCXX17_CONSTEXPR reference - front() noexcept - { return *begin(); } - - constexpr const_reference - front() const noexcept - { return _AT_Type::_S_ref(_M_elems, 0); } - - _GLIBCXX17_CONSTEXPR reference - back() noexcept - { return _Nm ? *(end() - 1) : *end(); } - - constexpr const_reference - back() const noexcept - { - return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) - : _AT_Type::_S_ref(_M_elems, 0); - } - - _GLIBCXX17_CONSTEXPR pointer - data() noexcept - { return _AT_Type::_S_ptr(_M_elems); } - - _GLIBCXX17_CONSTEXPR const_pointer - data() const noexcept - { return _AT_Type::_S_ptr(_M_elems); } - }; - -#if __cpp_deduction_guides >= 201606 - template - array(_Tp, _Up...) - -> array && ...), _Tp>, - 1 + sizeof...(_Up)>; -#endif - - // Array comparisons. - template - inline bool - operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return std::equal(__one.begin(), __one.end(), __two.begin()); } - - template - inline bool - operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one == __two); } - - template - inline bool - operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) - { - return std::lexicographical_compare(__a.begin(), __a.end(), - __b.begin(), __b.end()); - } - - template - inline bool - operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return __two < __one; } - - template - inline bool - operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one > __two); } - - template - inline bool - operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one < __two); } - - // Specialized algorithms. - template - inline -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 - // Constrained free swap overload, see p0185r1 - typename enable_if< - _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value - >::type -#else - void -#endif - swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) - noexcept(noexcept(__one.swap(__two))) - { __one.swap(__two); } - -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 - template - typename enable_if< - !_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type - swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; -#endif - - template - constexpr _Tp& - get(array<_Tp, _Nm>& __arr) noexcept - { - static_assert(_Int < _Nm, "array index is within bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); - } - - template - constexpr _Tp&& - get(array<_Tp, _Nm>&& __arr) noexcept - { - static_assert(_Int < _Nm, "array index is within bounds"); - return std::move(_GLIBCXX_STD_C::get<_Int>(__arr)); - } - - template - constexpr const _Tp& - get(const array<_Tp, _Nm>& __arr) noexcept - { - static_assert(_Int < _Nm, "array index is within bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); - } - -_GLIBCXX_END_NAMESPACE_CONTAINER -} // namespace std - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Tuple interface to class template array. - - /// tuple_size - template - class tuple_size; - - /// Partial specialization for std::array - template - struct tuple_size<_GLIBCXX_STD_C::array<_Tp, _Nm>> - : public integral_constant { }; - - /// tuple_element - template - class tuple_element; - - /// Partial specialization for std::array - template - struct tuple_element<_Int, _GLIBCXX_STD_C::array<_Tp, _Nm>> - { - static_assert(_Int < _Nm, "index is out of bounds"); - typedef _Tp type; - }; - - template - struct __is_tuple_like_impl<_GLIBCXX_STD_C::array<_Tp, _Nm>> : true_type - { }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif // C++11 - -#endif // _GLIBCXX_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_map deleted file mode 100644 index dcd0b71cc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_map +++ /dev/null @@ -1,599 +0,0 @@ -// Hashing map implementation -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 1996 - * 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. - * - * - * 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. - * - */ - -/** @file backward/hash_map - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _BACKWARD_HASH_MAP -#define _BACKWARD_HASH_MAP 1 - -#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH -#include "backward_warning.h" -#endif - -#include -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::equal_to; - using std::allocator; - using std::pair; - using std::_Select1st; - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > - class hash_map - { - private: - typedef hashtable,_Key, _HashFn, - _Select1st >, - _EqualKey, _Alloc> _Ht; - - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_map() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_map(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_map(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_map(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_map& __hs) - { _M_ht.swap(__hs._M_ht); } - - template - friend bool - operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&, - const hash_map<_K1, _T1, _HF, _EqK, _Al>&); - - iterator - begin() - { return _M_ht.begin(); } - - iterator - end() - { return _M_ht.end(); } - - const_iterator - begin() const - { return _M_ht.begin(); } - - const_iterator - end() const - { return _M_ht.end(); } - - pair - insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f, __l); } - - pair - insert_noresize(const value_type& __obj) - { return _M_ht.insert_unique_noresize(__obj); } - - iterator - find(const key_type& __key) - { return _M_ht.find(__key); } - - const_iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - _Tp& - operator[](const key_type& __key) - { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - {return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { return __hm1._M_ht == __hm2._M_ht; } - - template - inline bool - operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { return !(__hm1 == __hm2); } - - template - inline void - swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { __hm1.swap(__hm2); } - - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Key>, - class _Alloc = allocator<_Tp> > - class hash_multimap - { - // concept requirements - __glibcxx_class_requires(_Key, _SGIAssignableConcept) - __glibcxx_class_requires(_Tp, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) - - private: - typedef hashtable, _Key, _HashFn, - _Select1st >, _EqualKey, _Alloc> - _Ht; - - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_multimap() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_multimap(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_multimap(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_multimap(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_multimap& __hs) - { _M_ht.swap(__hs._M_ht); } - - template - friend bool - operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&, - const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&); - - iterator - begin() - { return _M_ht.begin(); } - - iterator - end() - { return _M_ht.end(); } - - const_iterator - begin() const - { return _M_ht.begin(); } - - const_iterator - end() const - { return _M_ht.end(); } - - iterator - insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_equal(__f,__l); } - - iterator - insert_noresize(const value_type& __obj) - { return _M_ht.insert_equal_noresize(__obj); } - - iterator - find(const key_type& __key) - { return _M_ht.find(__key); } - - const_iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - { return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, - const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) - { return __hm1._M_ht == __hm2._M_ht; } - - template - inline bool - operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, - const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) - { return !(__hm1 == __hm2); } - - template - inline void - swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { __hm1.swap(__hm2); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Specialization of insert_iterator so that it will work for hash_map - // and hash_multimap. - template - class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, - _EqKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> - _Container; - _Container* container; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() { return *this; } - - insert_iterator<_Container>& - operator++(int) - { return *this; } - }; - - template - class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, - _EqKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> - _Container; - _Container* container; - typename _Container::iterator iter; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() - { return *this; } - - insert_iterator<_Container>& - operator++(int) - { return *this; } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_set deleted file mode 100644 index 242cca194..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_set +++ /dev/null @@ -1,567 +0,0 @@ -// Hashing set implementation -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 1996 - * 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. - * - * - * 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. - * - */ - -/** @file backward/hash_set - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _BACKWARD_HASH_SET -#define _BACKWARD_HASH_SET 1 - -#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH -#include "backward_warning.h" -#endif - -#include -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::equal_to; - using std::allocator; - using std::pair; - using std::_Identity; - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Value>, - class _Alloc = allocator<_Value> > - class hash_set - { - // concept requirements - __glibcxx_class_requires(_Value, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) - - private: - typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, - _EqualKey, _Alloc> _Ht; - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Alloc::pointer pointer; - typedef typename _Alloc::const_pointer const_pointer; - typedef typename _Alloc::reference reference; - typedef typename _Alloc::const_reference const_reference; - - typedef typename _Ht::const_iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_set() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_set(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_set(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_set(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_set& __hs) - { _M_ht.swap(__hs._M_ht); } - - template - friend bool - operator==(const hash_set<_Val, _HF, _EqK, _Al>&, - const hash_set<_Val, _HF, _EqK, _Al>&); - - iterator - begin() const - { return _M_ht.begin(); } - - iterator - end() const - { return _M_ht.end(); } - - pair - insert(const value_type& __obj) - { - pair __p = _M_ht.insert_unique(__obj); - return pair(__p.first, __p.second); - } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f, __l); } - - pair - insert_noresize(const value_type& __obj) - { - pair __p - = _M_ht.insert_unique_noresize(__obj); - return pair(__p.first, __p.second); - } - - iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - {return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return __hs1._M_ht == __hs2._M_ht; } - - template - inline bool - operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return !(__hs1 == __hs2); } - - template - inline void - swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { __hs1.swap(__hs2); } - - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Value>, - class _Alloc = allocator<_Value> > - class hash_multiset - { - // concept requirements - __glibcxx_class_requires(_Value, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) - - private: - typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, - _EqualKey, _Alloc> _Ht; - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Alloc::pointer pointer; - typedef typename _Alloc::const_pointer const_pointer; - typedef typename _Alloc::reference reference; - typedef typename _Alloc::const_reference const_reference; - - typedef typename _Ht::const_iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_multiset() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_multiset(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_multiset(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_multiset(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_multiset& hs) - { _M_ht.swap(hs._M_ht); } - - template - friend bool - operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&, - const hash_multiset<_Val, _HF, _EqK, _Al>&); - - iterator - begin() const - { return _M_ht.begin(); } - - iterator - end() const - { return _M_ht.end(); } - - iterator - insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_equal(__f,__l); } - - iterator - insert_noresize(const value_type& __obj) - { return _M_ht.insert_equal_noresize(__obj); } - - iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - { return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return __hs1._M_ht == __hs2._M_ht; } - - template - inline bool - operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return !(__hs1 == __hs2); } - - template - inline void - swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { __hs1.swap(__hs2); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Specialization of insert_iterator so that it will work for hash_set - // and hash_multiset. - template - class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn, - _EqualKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> - _Container; - _Container* container; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() - { return *this; } - - insert_iterator<_Container>& - operator++(int) - { return *this; } - }; - - template - class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn, - _EqualKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> - _Container; - _Container* container; - typename _Container::iterator iter; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() - { return *this; } - - insert_iterator<_Container>& - operator++(int) { return *this; } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hashtable.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hashtable.h deleted file mode 100644 index 956fe5e17..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hashtable.h +++ /dev/null @@ -1,1167 +0,0 @@ -// Hashtable implementation used by containers -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * 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. - * - * - * 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. - * - */ - -/** @file backward/hashtable.h - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _BACKWARD_HASHTABLE_H -#define _BACKWARD_HASHTABLE_H 1 - -// Hashtable class, used to implement the hashed associative containers -// hash_set, hash_map, hash_multiset, and hash_multimap. - -#include -#include -#include -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::size_t; - using std::ptrdiff_t; - using std::forward_iterator_tag; - using std::input_iterator_tag; - using std::_Construct; - using std::_Destroy; - using std::distance; - using std::vector; - using std::pair; - using std::__iterator_category; - - template - struct _Hashtable_node - { - _Hashtable_node* _M_next; - _Val _M_val; - }; - - template > - class hashtable; - - template - struct _Hashtable_iterator; - - template - struct _Hashtable_const_iterator; - - template - struct _Hashtable_iterator - { - typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc> - _Hashtable; - typedef _Hashtable_iterator<_Val, _Key, _HashFcn, - _ExtractKey, _EqualKey, _Alloc> - iterator; - typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, - _ExtractKey, _EqualKey, _Alloc> - const_iterator; - typedef _Hashtable_node<_Val> _Node; - typedef forward_iterator_tag iterator_category; - typedef _Val value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef _Val& reference; - typedef _Val* pointer; - - _Node* _M_cur; - _Hashtable* _M_ht; - - _Hashtable_iterator(_Node* __n, _Hashtable* __tab) - : _M_cur(__n), _M_ht(__tab) { } - - _Hashtable_iterator() { } - - reference - operator*() const - { return _M_cur->_M_val; } - - pointer - operator->() const - { return &(operator*()); } - - iterator& - operator++(); - - iterator - operator++(int); - - bool - operator==(const iterator& __it) const - { return _M_cur == __it._M_cur; } - - bool - operator!=(const iterator& __it) const - { return _M_cur != __it._M_cur; } - }; - - template - struct _Hashtable_const_iterator - { - typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc> - _Hashtable; - typedef _Hashtable_iterator<_Val,_Key,_HashFcn, - _ExtractKey,_EqualKey,_Alloc> - iterator; - typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, - _ExtractKey, _EqualKey, _Alloc> - const_iterator; - typedef _Hashtable_node<_Val> _Node; - - typedef forward_iterator_tag iterator_category; - typedef _Val value_type; - typedef ptrdiff_t difference_type; - typedef size_t size_type; - typedef const _Val& reference; - typedef const _Val* pointer; - - const _Node* _M_cur; - const _Hashtable* _M_ht; - - _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab) - : _M_cur(__n), _M_ht(__tab) { } - - _Hashtable_const_iterator() { } - - _Hashtable_const_iterator(const iterator& __it) - : _M_cur(__it._M_cur), _M_ht(__it._M_ht) { } - - reference - operator*() const - { return _M_cur->_M_val; } - - pointer - operator->() const - { return &(operator*()); } - - const_iterator& - operator++(); - - const_iterator - operator++(int); - - bool - operator==(const const_iterator& __it) const - { return _M_cur == __it._M_cur; } - - bool - operator!=(const const_iterator& __it) const - { return _M_cur != __it._M_cur; } - }; - - // Note: assumes long is at least 32 bits. - enum { _S_num_primes = 29 }; - - template - struct _Hashtable_prime_list - { - static const _PrimeType __stl_prime_list[_S_num_primes]; - - static const _PrimeType* - _S_get_prime_list(); - }; - - template const _PrimeType - _Hashtable_prime_list<_PrimeType>::__stl_prime_list[_S_num_primes] = - { - 5ul, 53ul, 97ul, 193ul, 389ul, - 769ul, 1543ul, 3079ul, 6151ul, 12289ul, - 24593ul, 49157ul, 98317ul, 196613ul, 393241ul, - 786433ul, 1572869ul, 3145739ul, 6291469ul, 12582917ul, - 25165843ul, 50331653ul, 100663319ul, 201326611ul, 402653189ul, - 805306457ul, 1610612741ul, 3221225473ul, 4294967291ul - }; - - template inline const _PrimeType* - _Hashtable_prime_list<_PrimeType>::_S_get_prime_list() - { - return __stl_prime_list; - } - - inline unsigned long - __stl_next_prime(unsigned long __n) - { - const unsigned long* __first = _Hashtable_prime_list::_S_get_prime_list(); - const unsigned long* __last = __first + (int)_S_num_primes; - const unsigned long* pos = std::lower_bound(__first, __last, __n); - return pos == __last ? *(__last - 1) : *pos; - } - - // Forward declaration of operator==. - template - class hashtable; - - template - bool - operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, - const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2); - - // Hashtables handle allocators a bit differently than other - // containers do. If we're using standard-conforming allocators, then - // a hashtable unconditionally has a member variable to hold its - // allocator, even if it so happens that all instances of the - // allocator type are identical. This is because, for hashtables, - // this extra storage is negligible. Additionally, a base class - // wouldn't serve any other purposes; it wouldn't, for example, - // simplify the exception-handling code. - template - class hashtable - { - public: - typedef _Key key_type; - typedef _Val value_type; - typedef _HashFcn hasher; - typedef _EqualKey key_equal; - - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - - hasher - hash_funct() const - { return _M_hash; } - - key_equal - key_eq() const - { return _M_equals; } - - private: - typedef _Hashtable_node<_Val> _Node; - - public: - typedef typename _Alloc::template rebind::other allocator_type; - allocator_type - get_allocator() const - { return _M_node_allocator; } - - private: - typedef typename _Alloc::template rebind<_Node>::other _Node_Alloc; - typedef typename _Alloc::template rebind<_Node*>::other _Nodeptr_Alloc; - typedef vector<_Node*, _Nodeptr_Alloc> _Vector_type; - - _Node_Alloc _M_node_allocator; - - _Node* - _M_get_node() - { return _M_node_allocator.allocate(1); } - - void - _M_put_node(_Node* __p) - { _M_node_allocator.deallocate(__p, 1); } - - private: - hasher _M_hash; - key_equal _M_equals; - _ExtractKey _M_get_key; - _Vector_type _M_buckets; - size_type _M_num_elements; - - public: - typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, - _EqualKey, _Alloc> - iterator; - typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey, - _EqualKey, _Alloc> - const_iterator; - - friend struct - _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>; - - friend struct - _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey, - _EqualKey, _Alloc>; - - public: - hashtable(size_type __n, const _HashFcn& __hf, - const _EqualKey& __eql, const _ExtractKey& __ext, - const allocator_type& __a = allocator_type()) - : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql), - _M_get_key(__ext), _M_buckets(__a), _M_num_elements(0) - { _M_initialize_buckets(__n); } - - hashtable(size_type __n, const _HashFcn& __hf, - const _EqualKey& __eql, - const allocator_type& __a = allocator_type()) - : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql), - _M_get_key(_ExtractKey()), _M_buckets(__a), _M_num_elements(0) - { _M_initialize_buckets(__n); } - - hashtable(const hashtable& __ht) - : _M_node_allocator(__ht.get_allocator()), _M_hash(__ht._M_hash), - _M_equals(__ht._M_equals), _M_get_key(__ht._M_get_key), - _M_buckets(__ht.get_allocator()), _M_num_elements(0) - { _M_copy_from(__ht); } - - hashtable& - operator= (const hashtable& __ht) - { - if (&__ht != this) - { - clear(); - _M_hash = __ht._M_hash; - _M_equals = __ht._M_equals; - _M_get_key = __ht._M_get_key; - _M_copy_from(__ht); - } - return *this; - } - - ~hashtable() - { clear(); } - - size_type - size() const - { return _M_num_elements; } - - size_type - max_size() const - { return size_type(-1); } - - bool - empty() const - { return size() == 0; } - - void - swap(hashtable& __ht) - { - std::swap(_M_hash, __ht._M_hash); - std::swap(_M_equals, __ht._M_equals); - std::swap(_M_get_key, __ht._M_get_key); - _M_buckets.swap(__ht._M_buckets); - std::swap(_M_num_elements, __ht._M_num_elements); - } - - iterator - begin() - { - for (size_type __n = 0; __n < _M_buckets.size(); ++__n) - if (_M_buckets[__n]) - return iterator(_M_buckets[__n], this); - return end(); - } - - iterator - end() - { return iterator(0, this); } - - const_iterator - begin() const - { - for (size_type __n = 0; __n < _M_buckets.size(); ++__n) - if (_M_buckets[__n]) - return const_iterator(_M_buckets[__n], this); - return end(); - } - - const_iterator - end() const - { return const_iterator(0, this); } - - template - friend bool - operator==(const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&, - const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&); - - public: - size_type - bucket_count() const - { return _M_buckets.size(); } - - size_type - max_bucket_count() const - { return _Hashtable_prime_list:: - _S_get_prime_list()[(int)_S_num_primes - 1]; - } - - size_type - elems_in_bucket(size_type __bucket) const - { - size_type __result = 0; - for (_Node* __n = _M_buckets[__bucket]; __n; __n = __n->_M_next) - __result += 1; - return __result; - } - - pair - insert_unique(const value_type& __obj) - { - resize(_M_num_elements + 1); - return insert_unique_noresize(__obj); - } - - iterator - insert_equal(const value_type& __obj) - { - resize(_M_num_elements + 1); - return insert_equal_noresize(__obj); - } - - pair - insert_unique_noresize(const value_type& __obj); - - iterator - insert_equal_noresize(const value_type& __obj); - - template - void - insert_unique(_InputIterator __f, _InputIterator __l) - { insert_unique(__f, __l, __iterator_category(__f)); } - - template - void - insert_equal(_InputIterator __f, _InputIterator __l) - { insert_equal(__f, __l, __iterator_category(__f)); } - - template - void - insert_unique(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_unique(*__f); - } - - template - void - insert_equal(_InputIterator __f, _InputIterator __l, - input_iterator_tag) - { - for ( ; __f != __l; ++__f) - insert_equal(*__f); - } - - template - void - insert_unique(_ForwardIterator __f, _ForwardIterator __l, - forward_iterator_tag) - { - size_type __n = distance(__f, __l); - resize(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_unique_noresize(*__f); - } - - template - void - insert_equal(_ForwardIterator __f, _ForwardIterator __l, - forward_iterator_tag) - { - size_type __n = distance(__f, __l); - resize(_M_num_elements + __n); - for ( ; __n > 0; --__n, ++__f) - insert_equal_noresize(*__f); - } - - reference - find_or_insert(const value_type& __obj); - - iterator - find(const key_type& __key) - { - size_type __n = _M_bkt_num_key(__key); - _Node* __first; - for (__first = _M_buckets[__n]; - __first && !_M_equals(_M_get_key(__first->_M_val), __key); - __first = __first->_M_next) - { } - return iterator(__first, this); - } - - const_iterator - find(const key_type& __key) const - { - size_type __n = _M_bkt_num_key(__key); - const _Node* __first; - for (__first = _M_buckets[__n]; - __first && !_M_equals(_M_get_key(__first->_M_val), __key); - __first = __first->_M_next) - { } - return const_iterator(__first, this); - } - - size_type - count(const key_type& __key) const - { - const size_type __n = _M_bkt_num_key(__key); - size_type __result = 0; - - for (const _Node* __cur = _M_buckets[__n]; __cur; - __cur = __cur->_M_next) - if (_M_equals(_M_get_key(__cur->_M_val), __key)) - ++__result; - return __result; - } - - pair - equal_range(const key_type& __key); - - pair - equal_range(const key_type& __key) const; - - size_type - erase(const key_type& __key); - - void - erase(const iterator& __it); - - void - erase(iterator __first, iterator __last); - - void - erase(const const_iterator& __it); - - void - erase(const_iterator __first, const_iterator __last); - - void - resize(size_type __num_elements_hint); - - void - clear(); - - private: - size_type - _M_next_size(size_type __n) const - { return __stl_next_prime(__n); } - - void - _M_initialize_buckets(size_type __n) - { - const size_type __n_buckets = _M_next_size(__n); - _M_buckets.reserve(__n_buckets); - _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0); - _M_num_elements = 0; - } - - size_type - _M_bkt_num_key(const key_type& __key) const - { return _M_bkt_num_key(__key, _M_buckets.size()); } - - size_type - _M_bkt_num(const value_type& __obj) const - { return _M_bkt_num_key(_M_get_key(__obj)); } - - size_type - _M_bkt_num_key(const key_type& __key, size_t __n) const - { return _M_hash(__key) % __n; } - - size_type - _M_bkt_num(const value_type& __obj, size_t __n) const - { return _M_bkt_num_key(_M_get_key(__obj), __n); } - - _Node* - _M_new_node(const value_type& __obj) - { - _Node* __n = _M_get_node(); - __n->_M_next = 0; - __try - { - this->get_allocator().construct(&__n->_M_val, __obj); - return __n; - } - __catch(...) - { - _M_put_node(__n); - __throw_exception_again; - } - } - - void - _M_delete_node(_Node* __n) - { - this->get_allocator().destroy(&__n->_M_val); - _M_put_node(__n); - } - - void - _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last); - - void - _M_erase_bucket(const size_type __n, _Node* __last); - - void - _M_copy_from(const hashtable& __ht); - }; - - template - _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>& - _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: - operator++() - { - const _Node* __old = _M_cur; - _M_cur = _M_cur->_M_next; - if (!_M_cur) - { - size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val); - while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size()) - _M_cur = _M_ht->_M_buckets[__bucket]; - } - return *this; - } - - template - inline _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All> - _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: - operator++(int) - { - iterator __tmp = *this; - ++*this; - return __tmp; - } - - template - _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>& - _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: - operator++() - { - const _Node* __old = _M_cur; - _M_cur = _M_cur->_M_next; - if (!_M_cur) - { - size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val); - while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size()) - _M_cur = _M_ht->_M_buckets[__bucket]; - } - return *this; - } - - template - inline _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All> - _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: - operator++(int) - { - const_iterator __tmp = *this; - ++*this; - return __tmp; - } - - template - bool - operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, - const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2) - { - typedef typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_Node _Node; - - if (__ht1._M_buckets.size() != __ht2._M_buckets.size()) - return false; - - for (size_t __n = 0; __n < __ht1._M_buckets.size(); ++__n) - { - _Node* __cur1 = __ht1._M_buckets[__n]; - _Node* __cur2 = __ht2._M_buckets[__n]; - // Check same length of lists - for (; __cur1 && __cur2; - __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next) - { } - if (__cur1 || __cur2) - return false; - // Now check one's elements are in the other - for (__cur1 = __ht1._M_buckets[__n] ; __cur1; - __cur1 = __cur1->_M_next) - { - bool _found__cur1 = false; - for (__cur2 = __ht2._M_buckets[__n]; - __cur2; __cur2 = __cur2->_M_next) - { - if (__cur1->_M_val == __cur2->_M_val) - { - _found__cur1 = true; - break; - } - } - if (!_found__cur1) - return false; - } - } - return true; - } - - template - inline bool - operator!=(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, - const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2) - { return !(__ht1 == __ht2); } - - template - inline void - swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1, - hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) - { __ht1.swap(__ht2); } - - template - pair::iterator, bool> - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - insert_unique_noresize(const value_type& __obj) - { - const size_type __n = _M_bkt_num(__obj); - _Node* __first = _M_buckets[__n]; - - for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) - if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) - return pair(iterator(__cur, this), false); - - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __first; - _M_buckets[__n] = __tmp; - ++_M_num_elements; - return pair(iterator(__tmp, this), true); - } - - template - typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - insert_equal_noresize(const value_type& __obj) - { - const size_type __n = _M_bkt_num(__obj); - _Node* __first = _M_buckets[__n]; - - for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) - if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) - { - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __cur->_M_next; - __cur->_M_next = __tmp; - ++_M_num_elements; - return iterator(__tmp, this); - } - - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __first; - _M_buckets[__n] = __tmp; - ++_M_num_elements; - return iterator(__tmp, this); - } - - template - typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::reference - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - find_or_insert(const value_type& __obj) - { - resize(_M_num_elements + 1); - - size_type __n = _M_bkt_num(__obj); - _Node* __first = _M_buckets[__n]; - - for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) - if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) - return __cur->_M_val; - - _Node* __tmp = _M_new_node(__obj); - __tmp->_M_next = __first; - _M_buckets[__n] = __tmp; - ++_M_num_elements; - return __tmp->_M_val; - } - - template - pair::iterator, - typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator> - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - equal_range(const key_type& __key) - { - typedef pair _Pii; - const size_type __n = _M_bkt_num_key(__key); - - for (_Node* __first = _M_buckets[__n]; __first; - __first = __first->_M_next) - if (_M_equals(_M_get_key(__first->_M_val), __key)) - { - for (_Node* __cur = __first->_M_next; __cur; - __cur = __cur->_M_next) - if (!_M_equals(_M_get_key(__cur->_M_val), __key)) - return _Pii(iterator(__first, this), iterator(__cur, this)); - for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m) - if (_M_buckets[__m]) - return _Pii(iterator(__first, this), - iterator(_M_buckets[__m], this)); - return _Pii(iterator(__first, this), end()); - } - return _Pii(end(), end()); - } - - template - pair::const_iterator, - typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator> - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - equal_range(const key_type& __key) const - { - typedef pair _Pii; - const size_type __n = _M_bkt_num_key(__key); - - for (const _Node* __first = _M_buckets[__n]; __first; - __first = __first->_M_next) - { - if (_M_equals(_M_get_key(__first->_M_val), __key)) - { - for (const _Node* __cur = __first->_M_next; __cur; - __cur = __cur->_M_next) - if (!_M_equals(_M_get_key(__cur->_M_val), __key)) - return _Pii(const_iterator(__first, this), - const_iterator(__cur, this)); - for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m) - if (_M_buckets[__m]) - return _Pii(const_iterator(__first, this), - const_iterator(_M_buckets[__m], this)); - return _Pii(const_iterator(__first, this), end()); - } - } - return _Pii(end(), end()); - } - - template - typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::size_type - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - erase(const key_type& __key) - { - const size_type __n = _M_bkt_num_key(__key); - _Node* __first = _M_buckets[__n]; - _Node* __saved_slot = 0; - size_type __erased = 0; - - if (__first) - { - _Node* __cur = __first; - _Node* __next = __cur->_M_next; - while (__next) - { - if (_M_equals(_M_get_key(__next->_M_val), __key)) - { - if (&_M_get_key(__next->_M_val) != &__key) - { - __cur->_M_next = __next->_M_next; - _M_delete_node(__next); - __next = __cur->_M_next; - ++__erased; - --_M_num_elements; - } - else - { - __saved_slot = __cur; - __cur = __next; - __next = __cur->_M_next; - } - } - else - { - __cur = __next; - __next = __cur->_M_next; - } - } - bool __delete_first = _M_equals(_M_get_key(__first->_M_val), __key); - if (__saved_slot) - { - __next = __saved_slot->_M_next; - __saved_slot->_M_next = __next->_M_next; - _M_delete_node(__next); - ++__erased; - --_M_num_elements; - } - if (__delete_first) - { - _M_buckets[__n] = __first->_M_next; - _M_delete_node(__first); - ++__erased; - --_M_num_elements; - } - } - return __erased; - } - - template - void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - erase(const iterator& __it) - { - _Node* __p = __it._M_cur; - if (__p) - { - const size_type __n = _M_bkt_num(__p->_M_val); - _Node* __cur = _M_buckets[__n]; - - if (__cur == __p) - { - _M_buckets[__n] = __cur->_M_next; - _M_delete_node(__cur); - --_M_num_elements; - } - else - { - _Node* __next = __cur->_M_next; - while (__next) - { - if (__next == __p) - { - __cur->_M_next = __next->_M_next; - _M_delete_node(__next); - --_M_num_elements; - break; - } - else - { - __cur = __next; - __next = __cur->_M_next; - } - } - } - } - } - - template - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - erase(iterator __first, iterator __last) - { - size_type __f_bucket = __first._M_cur ? _M_bkt_num(__first._M_cur->_M_val) - : _M_buckets.size(); - - size_type __l_bucket = __last._M_cur ? _M_bkt_num(__last._M_cur->_M_val) - : _M_buckets.size(); - - if (__first._M_cur == __last._M_cur) - return; - else if (__f_bucket == __l_bucket) - _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur); - else - { - _M_erase_bucket(__f_bucket, __first._M_cur, 0); - for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n) - _M_erase_bucket(__n, 0); - if (__l_bucket != _M_buckets.size()) - _M_erase_bucket(__l_bucket, __last._M_cur); - } - } - - template - inline void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - erase(const_iterator __first, const_iterator __last) - { - erase(iterator(const_cast<_Node*>(__first._M_cur), - const_cast(__first._M_ht)), - iterator(const_cast<_Node*>(__last._M_cur), - const_cast(__last._M_ht))); - } - - template - inline void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - erase(const const_iterator& __it) - { erase(iterator(const_cast<_Node*>(__it._M_cur), - const_cast(__it._M_ht))); } - - template - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - resize(size_type __num_elements_hint) - { - const size_type __old_n = _M_buckets.size(); - if (__num_elements_hint > __old_n) - { - const size_type __n = _M_next_size(__num_elements_hint); - if (__n > __old_n) - { - _Vector_type __tmp(__n, (_Node*)(0), _M_buckets.get_allocator()); - __try - { - for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) - { - _Node* __first = _M_buckets[__bucket]; - while (__first) - { - size_type __new_bucket = _M_bkt_num(__first->_M_val, - __n); - _M_buckets[__bucket] = __first->_M_next; - __first->_M_next = __tmp[__new_bucket]; - __tmp[__new_bucket] = __first; - __first = _M_buckets[__bucket]; - } - } - _M_buckets.swap(__tmp); - } - __catch(...) - { - for (size_type __bucket = 0; __bucket < __tmp.size(); - ++__bucket) - { - while (__tmp[__bucket]) - { - _Node* __next = __tmp[__bucket]->_M_next; - _M_delete_node(__tmp[__bucket]); - __tmp[__bucket] = __next; - } - } - __throw_exception_again; - } - } - } - } - - template - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last) - { - _Node* __cur = _M_buckets[__n]; - if (__cur == __first) - _M_erase_bucket(__n, __last); - else - { - _Node* __next; - for (__next = __cur->_M_next; - __next != __first; - __cur = __next, __next = __cur->_M_next) - ; - while (__next != __last) - { - __cur->_M_next = __next->_M_next; - _M_delete_node(__next); - __next = __cur->_M_next; - --_M_num_elements; - } - } - } - - template - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - _M_erase_bucket(const size_type __n, _Node* __last) - { - _Node* __cur = _M_buckets[__n]; - while (__cur != __last) - { - _Node* __next = __cur->_M_next; - _M_delete_node(__cur); - __cur = __next; - _M_buckets[__n] = __cur; - --_M_num_elements; - } - } - - template - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - clear() - { - if (_M_num_elements == 0) - return; - - for (size_type __i = 0; __i < _M_buckets.size(); ++__i) - { - _Node* __cur = _M_buckets[__i]; - while (__cur != 0) - { - _Node* __next = __cur->_M_next; - _M_delete_node(__cur); - __cur = __next; - } - _M_buckets[__i] = 0; - } - _M_num_elements = 0; - } - - template - void - hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: - _M_copy_from(const hashtable& __ht) - { - _M_buckets.clear(); - _M_buckets.reserve(__ht._M_buckets.size()); - _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0); - __try - { - for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) { - const _Node* __cur = __ht._M_buckets[__i]; - if (__cur) - { - _Node* __local_copy = _M_new_node(__cur->_M_val); - _M_buckets[__i] = __local_copy; - - for (_Node* __next = __cur->_M_next; - __next; - __cur = __next, __next = __cur->_M_next) - { - __local_copy->_M_next = _M_new_node(__next->_M_val); - __local_copy = __local_copy->_M_next; - } - } - } - _M_num_elements = __ht._M_num_elements; - } - __catch(...) - { - clear(); - __throw_exception_again; - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/algorithmfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/algorithmfwd.h deleted file mode 100644 index 3ff4ff712..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/algorithmfwd.h +++ /dev/null @@ -1,855 +0,0 @@ -// Forward declarations -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/algorithmfwd.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{algorithm} - */ - -#ifndef _GLIBCXX_ALGORITHMFWD_H -#define _GLIBCXX_ALGORITHMFWD_H 1 - -#pragma GCC system_header - -#include -#include -#include -#if __cplusplus >= 201103L -#include -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /* - adjacent_find - all_of (C++11) - any_of (C++11) - binary_search - clamp (C++17) - copy - copy_backward - copy_if (C++11) - copy_n (C++11) - count - count_if - equal - equal_range - fill - fill_n - find - find_end - find_first_of - find_if - find_if_not (C++11) - for_each - generate - generate_n - includes - inplace_merge - is_heap (C++11) - is_heap_until (C++11) - is_partitioned (C++11) - is_sorted (C++11) - is_sorted_until (C++11) - iter_swap - lexicographical_compare - lower_bound - make_heap - max - max_element - merge - min - min_element - minmax (C++11) - minmax_element (C++11) - mismatch - next_permutation - none_of (C++11) - nth_element - partial_sort - partial_sort_copy - partition - partition_copy (C++11) - partition_point (C++11) - pop_heap - prev_permutation - push_heap - random_shuffle - remove - remove_copy - remove_copy_if - remove_if - replace - replace_copy - replace_copy_if - replace_if - reverse - reverse_copy - rotate - rotate_copy - search - search_n - set_difference - set_intersection - set_symmetric_difference - set_union - shuffle (C++11) - sort - sort_heap - stable_partition - stable_sort - swap - swap_ranges - transform - unique - unique_copy - upper_bound - */ - - /** - * @defgroup algorithms Algorithms - * - * Components for performing algorithmic operations. Includes - * non-modifying sequence, modifying (mutating) sequence, sorting, - * searching, merge, partition, heap, set, minima, maxima, and - * permutation operations. - */ - - /** - * @defgroup mutating_algorithms Mutating - * @ingroup algorithms - */ - - /** - * @defgroup non_mutating_algorithms Non-Mutating - * @ingroup algorithms - */ - - /** - * @defgroup sorting_algorithms Sorting - * @ingroup algorithms - */ - - /** - * @defgroup set_algorithms Set Operation - * @ingroup sorting_algorithms - * - * These algorithms are common set operations performed on sequences - * that are already sorted. The number of comparisons will be - * linear. - */ - - /** - * @defgroup binary_search_algorithms Binary Search - * @ingroup sorting_algorithms - * - * These algorithms are variations of a classic binary search, and - * all assume that the sequence being searched is already sorted. - * - * The number of comparisons will be logarithmic (and as few as - * possible). The number of steps through the sequence will be - * logarithmic for random-access iterators (e.g., pointers), and - * linear otherwise. - * - * The LWG has passed Defect Report 270, which notes: The - * proposed resolution reinterprets binary search. Instead of - * thinking about searching for a value in a sorted range, we view - * that as an important special case of a more general algorithm: - * searching for the partition point in a partitioned range. We - * also add a guarantee that the old wording did not: we ensure that - * the upper bound is no earlier than the lower bound, that the pair - * returned by equal_range is a valid range, and that the first part - * of that pair is the lower bound. - * - * The actual effect of the first sentence is that a comparison - * functor passed by the user doesn't necessarily need to induce a - * strict weak ordering relation. Rather, it partitions the range. - */ - - // adjacent_find - -#if __cplusplus >= 201103L - template - bool - all_of(_IIter, _IIter, _Predicate); - - template - bool - any_of(_IIter, _IIter, _Predicate); -#endif - - template - bool - binary_search(_FIter, _FIter, const _Tp&); - - template - bool - binary_search(_FIter, _FIter, const _Tp&, _Compare); - -#if __cplusplus > 201402L - template - _GLIBCXX14_CONSTEXPR - const _Tp& - clamp(const _Tp&, const _Tp&, const _Tp&); - - template - _GLIBCXX14_CONSTEXPR - const _Tp& - clamp(const _Tp&, const _Tp&, const _Tp&, _Compare); -#endif - - template - _OIter - copy(_IIter, _IIter, _OIter); - - template - _BIter2 - copy_backward(_BIter1, _BIter1, _BIter2); - -#if __cplusplus >= 201103L - template - _OIter - copy_if(_IIter, _IIter, _OIter, _Predicate); - - template - _OIter - copy_n(_IIter, _Size, _OIter); -#endif - - // count - // count_if - - template - pair<_FIter, _FIter> - equal_range(_FIter, _FIter, const _Tp&); - - template - pair<_FIter, _FIter> - equal_range(_FIter, _FIter, const _Tp&, _Compare); - - template - void - fill(_FIter, _FIter, const _Tp&); - - template - _OIter - fill_n(_OIter, _Size, const _Tp&); - - // find - - template - _FIter1 - find_end(_FIter1, _FIter1, _FIter2, _FIter2); - - template - _FIter1 - find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); - - // find_first_of - // find_if - -#if __cplusplus >= 201103L - template - _IIter - find_if_not(_IIter, _IIter, _Predicate); -#endif - - // for_each - // generate - // generate_n - - template - bool - includes(_IIter1, _IIter1, _IIter2, _IIter2); - - template - bool - includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); - - template - void - inplace_merge(_BIter, _BIter, _BIter); - - template - void - inplace_merge(_BIter, _BIter, _BIter, _Compare); - -#if __cplusplus >= 201103L - template - bool - is_heap(_RAIter, _RAIter); - - template - bool - is_heap(_RAIter, _RAIter, _Compare); - - template - _RAIter - is_heap_until(_RAIter, _RAIter); - - template - _RAIter - is_heap_until(_RAIter, _RAIter, _Compare); - - template - bool - is_partitioned(_IIter, _IIter, _Predicate); - - template - bool - is_permutation(_FIter1, _FIter1, _FIter2); - - template - bool - is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); - - template - bool - is_sorted(_FIter, _FIter); - - template - bool - is_sorted(_FIter, _FIter, _Compare); - - template - _FIter - is_sorted_until(_FIter, _FIter); - - template - _FIter - is_sorted_until(_FIter, _FIter, _Compare); -#endif - - template - void - iter_swap(_FIter1, _FIter2); - - template - _FIter - lower_bound(_FIter, _FIter, const _Tp&); - - template - _FIter - lower_bound(_FIter, _FIter, const _Tp&, _Compare); - - template - void - make_heap(_RAIter, _RAIter); - - template - void - make_heap(_RAIter, _RAIter, _Compare); - - template - _GLIBCXX14_CONSTEXPR - const _Tp& - max(const _Tp&, const _Tp&); - - template - _GLIBCXX14_CONSTEXPR - const _Tp& - max(const _Tp&, const _Tp&, _Compare); - - // max_element - // merge - - template - _GLIBCXX14_CONSTEXPR - const _Tp& - min(const _Tp&, const _Tp&); - - template - _GLIBCXX14_CONSTEXPR - const _Tp& - min(const _Tp&, const _Tp&, _Compare); - - // min_element - -#if __cplusplus >= 201103L - template - _GLIBCXX14_CONSTEXPR - pair - minmax(const _Tp&, const _Tp&); - - template - _GLIBCXX14_CONSTEXPR - pair - minmax(const _Tp&, const _Tp&, _Compare); - - template - _GLIBCXX14_CONSTEXPR - pair<_FIter, _FIter> - minmax_element(_FIter, _FIter); - - template - _GLIBCXX14_CONSTEXPR - pair<_FIter, _FIter> - minmax_element(_FIter, _FIter, _Compare); - - template - _GLIBCXX14_CONSTEXPR - _Tp - min(initializer_list<_Tp>); - - template - _GLIBCXX14_CONSTEXPR - _Tp - min(initializer_list<_Tp>, _Compare); - - template - _GLIBCXX14_CONSTEXPR - _Tp - max(initializer_list<_Tp>); - - template - _GLIBCXX14_CONSTEXPR - _Tp - max(initializer_list<_Tp>, _Compare); - - template - _GLIBCXX14_CONSTEXPR - pair<_Tp, _Tp> - minmax(initializer_list<_Tp>); - - template - _GLIBCXX14_CONSTEXPR - pair<_Tp, _Tp> - minmax(initializer_list<_Tp>, _Compare); -#endif - - // mismatch - - template - bool - next_permutation(_BIter, _BIter); - - template - bool - next_permutation(_BIter, _BIter, _Compare); - -#if __cplusplus >= 201103L - template - bool - none_of(_IIter, _IIter, _Predicate); -#endif - - // nth_element - // partial_sort - - template - _RAIter - partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); - - template - _RAIter - partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); - - // partition - -#if __cplusplus >= 201103L - template - pair<_OIter1, _OIter2> - partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); - - template - _FIter - partition_point(_FIter, _FIter, _Predicate); -#endif - - template - void - pop_heap(_RAIter, _RAIter); - - template - void - pop_heap(_RAIter, _RAIter, _Compare); - - template - bool - prev_permutation(_BIter, _BIter); - - template - bool - prev_permutation(_BIter, _BIter, _Compare); - - template - void - push_heap(_RAIter, _RAIter); - - template - void - push_heap(_RAIter, _RAIter, _Compare); - - // random_shuffle - - template - _FIter - remove(_FIter, _FIter, const _Tp&); - - template - _FIter - remove_if(_FIter, _FIter, _Predicate); - - template - _OIter - remove_copy(_IIter, _IIter, _OIter, const _Tp&); - - template - _OIter - remove_copy_if(_IIter, _IIter, _OIter, _Predicate); - - // replace - - template - _OIter - replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); - - template - _OIter - replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); - - // replace_if - - template - void - reverse(_BIter, _BIter); - - template - _OIter - reverse_copy(_BIter, _BIter, _OIter); - - inline namespace _V2 - { - template - _FIter - rotate(_FIter, _FIter, _FIter); - } - - template - _OIter - rotate_copy(_FIter, _FIter, _FIter, _OIter); - - // search - // search_n - // set_difference - // set_intersection - // set_symmetric_difference - // set_union - -#if (__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99_STDINT_TR1) - template - void - shuffle(_RAIter, _RAIter, _UGenerator&&); -#endif - - template - void - sort_heap(_RAIter, _RAIter); - - template - void - sort_heap(_RAIter, _RAIter, _Compare); - - template - _BIter - stable_partition(_BIter, _BIter, _Predicate); - -#if __cplusplus < 201103L - // For C++11 swap() is declared in . - - template - inline void - swap(_Tp& __a, _Tp& __b); - - template - inline void - swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]); -#endif - - template - _FIter2 - swap_ranges(_FIter1, _FIter1, _FIter2); - - // transform - - template - _FIter - unique(_FIter, _FIter); - - template - _FIter - unique(_FIter, _FIter, _BinaryPredicate); - - // unique_copy - - template - _FIter - upper_bound(_FIter, _FIter, const _Tp&); - - template - _FIter - upper_bound(_FIter, _FIter, const _Tp&, _Compare); - -_GLIBCXX_END_NAMESPACE_VERSION - -_GLIBCXX_BEGIN_NAMESPACE_ALGO - - template - _FIter - adjacent_find(_FIter, _FIter); - - template - _FIter - adjacent_find(_FIter, _FIter, _BinaryPredicate); - - template - typename iterator_traits<_IIter>::difference_type - count(_IIter, _IIter, const _Tp&); - - template - typename iterator_traits<_IIter>::difference_type - count_if(_IIter, _IIter, _Predicate); - - template - bool - equal(_IIter1, _IIter1, _IIter2); - - template - bool - equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); - - template - _IIter - find(_IIter, _IIter, const _Tp&); - - template - _FIter1 - find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); - - template - _FIter1 - find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); - - template - _IIter - find_if(_IIter, _IIter, _Predicate); - - template - _Funct - for_each(_IIter, _IIter, _Funct); - - template - void - generate(_FIter, _FIter, _Generator); - - template - _OIter - generate_n(_OIter, _Size, _Generator); - - template - bool - lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); - - template - bool - lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); - - template - _GLIBCXX14_CONSTEXPR - _FIter - max_element(_FIter, _FIter); - - template - _GLIBCXX14_CONSTEXPR - _FIter - max_element(_FIter, _FIter, _Compare); - - template - _OIter - merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); - - template - _GLIBCXX14_CONSTEXPR - _FIter - min_element(_FIter, _FIter); - - template - _GLIBCXX14_CONSTEXPR - _FIter - min_element(_FIter, _FIter, _Compare); - - template - pair<_IIter1, _IIter2> - mismatch(_IIter1, _IIter1, _IIter2); - - template - pair<_IIter1, _IIter2> - mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); - - template - void - nth_element(_RAIter, _RAIter, _RAIter); - - template - void - nth_element(_RAIter, _RAIter, _RAIter, _Compare); - - template - void - partial_sort(_RAIter, _RAIter, _RAIter); - - template - void - partial_sort(_RAIter, _RAIter, _RAIter, _Compare); - - template - _BIter - partition(_BIter, _BIter, _Predicate); - - template - void - random_shuffle(_RAIter, _RAIter); - - template - void - random_shuffle(_RAIter, _RAIter, -#if __cplusplus >= 201103L - _Generator&&); -#else - _Generator&); -#endif - - template - void - replace(_FIter, _FIter, const _Tp&, const _Tp&); - - template - void - replace_if(_FIter, _FIter, _Predicate, const _Tp&); - - template - _FIter1 - search(_FIter1, _FIter1, _FIter2, _FIter2); - - template - _FIter1 - search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); - - template - _FIter - search_n(_FIter, _FIter, _Size, const _Tp&); - - template - _FIter - search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); - - template - _OIter - set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); - - template - _OIter - set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); - - template - _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, - _OIter, _Compare); - - template - _OIter - set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); - - template - void - sort(_RAIter, _RAIter); - - template - void - sort(_RAIter, _RAIter, _Compare); - - template - void - stable_sort(_RAIter, _RAIter); - - template - void - stable_sort(_RAIter, _RAIter, _Compare); - - template - _OIter - transform(_IIter, _IIter, _OIter, _UnaryOperation); - - template - _OIter - transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); - - template - _OIter - unique_copy(_IIter, _IIter, _OIter); - - template - _OIter - unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); - -_GLIBCXX_END_NAMESPACE_ALGO -} // namespace std - -#ifdef _GLIBCXX_PARALLEL -# include -#endif - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/alloc_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/alloc_traits.h deleted file mode 100644 index 4d1e489b0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/alloc_traits.h +++ /dev/null @@ -1,605 +0,0 @@ -// Allocator traits -*- C++ -*- - -// Copyright (C) 2011-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/alloc_traits.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _ALLOC_TRAITS_H -#define _ALLOC_TRAITS_H 1 - -#if __cplusplus >= 201103L - -#include -#include -#include - -#define __cpp_lib_allocator_traits_is_always_equal 201411 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - struct __allocator_traits_base - { - template - struct __rebind : __replace_first_arg<_Tp, _Up> { }; - - template - struct __rebind<_Tp, _Up, - __void_t::other>> - { using type = typename _Tp::template rebind<_Up>::other; }; - - protected: - template - using __pointer = typename _Tp::pointer; - template - using __c_pointer = typename _Tp::const_pointer; - template - using __v_pointer = typename _Tp::void_pointer; - template - using __cv_pointer = typename _Tp::const_void_pointer; - template - using __pocca = typename _Tp::propagate_on_container_copy_assignment; - template - using __pocma = typename _Tp::propagate_on_container_move_assignment; - template - using __pocs = typename _Tp::propagate_on_container_swap; - template - using __equal = typename _Tp::is_always_equal; - }; - - template - using __alloc_rebind - = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; - - /** - * @brief Uniform interface to all allocator types. - * @ingroup allocators - */ - template - struct allocator_traits : __allocator_traits_base - { - /// The allocator type - typedef _Alloc allocator_type; - /// The allocated type - typedef typename _Alloc::value_type value_type; - - /** - * @brief The allocator's pointer type. - * - * @c Alloc::pointer if that type exists, otherwise @c value_type* - */ - using pointer = __detected_or_t; - - private: - // Select _Func<_Alloc> or pointer_traits::rebind<_Tp> - template class _Func, typename _Tp, typename = void> - struct _Ptr - { - using type = typename pointer_traits::template rebind<_Tp>; - }; - - template class _Func, typename _Tp> - struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> - { - using type = _Func<_Alloc>; - }; - - // Select _A2::difference_type or pointer_traits<_Ptr>::difference_type - template - struct _Diff - { using type = typename pointer_traits<_PtrT>::difference_type; }; - - template - struct _Diff<_A2, _PtrT, __void_t> - { using type = typename _A2::difference_type; }; - - // Select _A2::size_type or make_unsigned<_DiffT>::type - template - struct _Size : make_unsigned<_DiffT> { }; - - template - struct _Size<_A2, _DiffT, __void_t> - { using type = typename _A2::size_type; }; - - public: - /** - * @brief The allocator's const pointer type. - * - * @c Alloc::const_pointer if that type exists, otherwise - * pointer_traits::rebind - */ - using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; - - /** - * @brief The allocator's void pointer type. - * - * @c Alloc::void_pointer if that type exists, otherwise - * pointer_traits::rebind - */ - using void_pointer = typename _Ptr<__v_pointer, void>::type; - - /** - * @brief The allocator's const void pointer type. - * - * @c Alloc::const_void_pointer if that type exists, otherwise - * pointer_traits::rebind - */ - using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; - - /** - * @brief The allocator's difference type - * - * @c Alloc::difference_type if that type exists, otherwise - * pointer_traits::difference_type - */ - using difference_type = typename _Diff<_Alloc, pointer>::type; - - /** - * @brief The allocator's size type - * - * @c Alloc::size_type if that type exists, otherwise - * make_unsigned::type - */ - using size_type = typename _Size<_Alloc, difference_type>::type; - - /** - * @brief How the allocator is propagated on copy assignment - * - * @c Alloc::propagate_on_container_copy_assignment if that type exists, - * otherwise @c false_type - */ - using propagate_on_container_copy_assignment - = __detected_or_t; - - /** - * @brief How the allocator is propagated on move assignment - * - * @c Alloc::propagate_on_container_move_assignment if that type exists, - * otherwise @c false_type - */ - using propagate_on_container_move_assignment - = __detected_or_t; - - /** - * @brief How the allocator is propagated on swap - * - * @c Alloc::propagate_on_container_swap if that type exists, - * otherwise @c false_type - */ - using propagate_on_container_swap - = __detected_or_t; - - /** - * @brief Whether all instances of the allocator type compare equal. - * - * @c Alloc::is_always_equal if that type exists, - * otherwise @c is_empty::type - */ - using is_always_equal - = __detected_or_t::type, __equal, _Alloc>; - - template - using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; - template - using rebind_traits = allocator_traits>; - - private: - template - static auto - _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) - -> decltype(__a.allocate(__n, __hint)) - { return __a.allocate(__n, __hint); } - - template - static pointer - _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) - { return __a.allocate(__n); } - - template - struct __construct_helper - { - template()->construct( - std::declval<_Tp*>(), std::declval<_Args>()...))> - static true_type __test(int); - - template - static false_type __test(...); - - using type = decltype(__test<_Alloc>(0)); - }; - - template - using __has_construct - = typename __construct_helper<_Tp, _Args...>::type; - - template - static _Require<__has_construct<_Tp, _Args...>> - _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) - { __a.construct(__p, std::forward<_Args>(__args)...); } - - template - static - _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, - is_constructible<_Tp, _Args...>>> - _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) - { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); } - - template - static auto - _S_destroy(_Alloc2& __a, _Tp* __p, int) - -> decltype(__a.destroy(__p)) - { __a.destroy(__p); } - - template - static void - _S_destroy(_Alloc2&, _Tp* __p, ...) - { __p->~_Tp(); } - - template - static auto - _S_max_size(_Alloc2& __a, int) - -> decltype(__a.max_size()) - { return __a.max_size(); } - - template - static size_type - _S_max_size(_Alloc2&, ...) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2466. allocator_traits::max_size() default behavior is incorrect - return __gnu_cxx::__numeric_traits::__max - / sizeof(value_type); - } - - template - static auto - _S_select(_Alloc2& __a, int) - -> decltype(__a.select_on_container_copy_construction()) - { return __a.select_on_container_copy_construction(); } - - template - static _Alloc2 - _S_select(_Alloc2& __a, ...) - { return __a; } - - public: - - /** - * @brief Allocate memory. - * @param __a An allocator. - * @param __n The number of objects to allocate space for. - * - * Calls @c a.allocate(n) - */ - static pointer - allocate(_Alloc& __a, size_type __n) - { return __a.allocate(__n); } - - /** - * @brief Allocate memory. - * @param __a An allocator. - * @param __n The number of objects to allocate space for. - * @param __hint Aid to locality. - * @return Memory of suitable size and alignment for @a n objects - * of type @c value_type - * - * Returns a.allocate(n, hint) if that expression is - * well-formed, otherwise returns @c a.allocate(n) - */ - static pointer - allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) - { return _S_allocate(__a, __n, __hint, 0); } - - /** - * @brief Deallocate memory. - * @param __a An allocator. - * @param __p Pointer to the memory to deallocate. - * @param __n The number of objects space was allocated for. - * - * Calls a.deallocate(p, n) - */ - static void - deallocate(_Alloc& __a, pointer __p, size_type __n) - { __a.deallocate(__p, __n); } - - /** - * @brief Construct an object of type @a _Tp - * @param __a An allocator. - * @param __p Pointer to memory of suitable size and alignment for Tp - * @param __args Constructor arguments. - * - * Calls __a.construct(__p, std::forward(__args)...) - * if that expression is well-formed, otherwise uses placement-new - * to construct an object of type @a _Tp at location @a __p from the - * arguments @a __args... - */ - template - static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) - -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) - { _S_construct(__a, __p, std::forward<_Args>(__args)...); } - - /** - * @brief Destroy an object of type @a _Tp - * @param __a An allocator. - * @param __p Pointer to the object to destroy - * - * Calls @c __a.destroy(__p) if that expression is well-formed, - * otherwise calls @c __p->~_Tp() - */ - template - static void destroy(_Alloc& __a, _Tp* __p) - { _S_destroy(__a, __p, 0); } - - /** - * @brief The maximum supported allocation size - * @param __a An allocator. - * @return @c __a.max_size() or @c numeric_limits::max() - * - * Returns @c __a.max_size() if that expression is well-formed, - * otherwise returns @c numeric_limits::max() - */ - static size_type max_size(const _Alloc& __a) noexcept - { return _S_max_size(__a, 0); } - - /** - * @brief Obtain an allocator to use when copying a container. - * @param __rhs An allocator. - * @return @c __rhs.select_on_container_copy_construction() or @a __rhs - * - * Returns @c __rhs.select_on_container_copy_construction() if that - * expression is well-formed, otherwise returns @a __rhs - */ - static _Alloc - select_on_container_copy_construction(const _Alloc& __rhs) - { return _S_select(__rhs, 0); } - }; - - /// Partial specialization for std::allocator. - template - struct allocator_traits> - { - /// The allocator type - using allocator_type = allocator<_Tp>; - /// The allocated type - using value_type = _Tp; - - /// The allocator's pointer type. - using pointer = _Tp*; - - /// The allocator's const pointer type. - using const_pointer = const _Tp*; - - /// The allocator's void pointer type. - using void_pointer = void*; - - /// The allocator's const void pointer type. - using const_void_pointer = const void*; - - /// The allocator's difference type - using difference_type = std::ptrdiff_t; - - /// The allocator's size type - using size_type = std::size_t; - - /// How the allocator is propagated on copy assignment - using propagate_on_container_copy_assignment = false_type; - - /// How the allocator is propagated on move assignment - using propagate_on_container_move_assignment = true_type; - - /// How the allocator is propagated on swap - using propagate_on_container_swap = false_type; - - /// Whether all instances of the allocator type compare equal. - using is_always_equal = true_type; - - template - using rebind_alloc = allocator<_Up>; - - template - using rebind_traits = allocator_traits>; - - /** - * @brief Allocate memory. - * @param __a An allocator. - * @param __n The number of objects to allocate space for. - * - * Calls @c a.allocate(n) - */ - static pointer - allocate(allocator_type& __a, size_type __n) - { return __a.allocate(__n); } - - /** - * @brief Allocate memory. - * @param __a An allocator. - * @param __n The number of objects to allocate space for. - * @param __hint Aid to locality. - * @return Memory of suitable size and alignment for @a n objects - * of type @c value_type - * - * Returns a.allocate(n, hint) - */ - static pointer - allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) - { return __a.allocate(__n, __hint); } - - /** - * @brief Deallocate memory. - * @param __a An allocator. - * @param __p Pointer to the memory to deallocate. - * @param __n The number of objects space was allocated for. - * - * Calls a.deallocate(p, n) - */ - static void - deallocate(allocator_type& __a, pointer __p, size_type __n) - { __a.deallocate(__p, __n); } - - /** - * @brief Construct an object of type @a _Up - * @param __a An allocator. - * @param __p Pointer to memory of suitable size and alignment for Tp - * @param __args Constructor arguments. - * - * Calls __a.construct(__p, std::forward(__args)...) - */ - template - static void - construct(allocator_type& __a, _Up* __p, _Args&&... __args) - { __a.construct(__p, std::forward<_Args>(__args)...); } - - /** - * @brief Destroy an object of type @a _Up - * @param __a An allocator. - * @param __p Pointer to the object to destroy - * - * Calls @c __a.destroy(__p). - */ - template - static void - destroy(allocator_type& __a, _Up* __p) - { __a.destroy(__p); } - - /** - * @brief The maximum supported allocation size - * @param __a An allocator. - * @return @c __a.max_size() - */ - static size_type - max_size(const allocator_type& __a) noexcept - { return __a.max_size(); } - - /** - * @brief Obtain an allocator to use when copying a container. - * @param __rhs An allocator. - * @return @c __rhs - */ - static allocator_type - select_on_container_copy_construction(const allocator_type& __rhs) - { return __rhs; } - }; - - - template - inline void - __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) - { __one = __two; } - - template - inline void - __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) - { } - - template - inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two) - { - typedef allocator_traits<_Alloc> __traits; - typedef typename __traits::propagate_on_container_copy_assignment __pocca; - __do_alloc_on_copy(__one, __two, __pocca()); - } - - template - inline _Alloc __alloc_on_copy(const _Alloc& __a) - { - typedef allocator_traits<_Alloc> __traits; - return __traits::select_on_container_copy_construction(__a); - } - - template - inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) - { __one = std::move(__two); } - - template - inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) - { } - - template - inline void __alloc_on_move(_Alloc& __one, _Alloc& __two) - { - typedef allocator_traits<_Alloc> __traits; - typedef typename __traits::propagate_on_container_move_assignment __pocma; - __do_alloc_on_move(__one, __two, __pocma()); - } - - template - inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) - { - using std::swap; - swap(__one, __two); - } - - template - inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) - { } - - template - inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two) - { - typedef allocator_traits<_Alloc> __traits; - typedef typename __traits::propagate_on_container_swap __pocs; - __do_alloc_on_swap(__one, __two, __pocs()); - } - - template - class __is_copy_insertable_impl - { - typedef allocator_traits<_Alloc> _Traits; - - template(), - std::declval<_Up*>(), - std::declval()))> - static true_type - _M_select(int); - - template - static false_type - _M_select(...); - - public: - typedef decltype(_M_select(0)) type; - }; - - // true if _Alloc::value_type is CopyInsertable into containers using _Alloc - template - struct __is_copy_insertable - : __is_copy_insertable_impl<_Alloc>::type - { }; - - // std::allocator<_Tp> just requires CopyConstructible - template - struct __is_copy_insertable> - : is_copy_constructible<_Tp> - { }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/c++14_warning.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/c++14_warning.h deleted file mode 100644 index 5ead9c6b1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/c++14_warning.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/c++14_warning.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iosfwd} - */ - -#ifndef _CXX14_WARNING_H -#define _CXX14_WARNING_H 1 - -#if __cplusplus <= 201103L -#error This file requires compiler and library support \ -for the ISO C++ 2014 standard. This support must be enabled \ -with the -std=c++14 or -std=gnu++14 compiler options. -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/forward_list.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/forward_list.tcc deleted file mode 100644 index b823b09e1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/forward_list.tcc +++ /dev/null @@ -1,499 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2008-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/forward_list.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{forward_list} - */ - -#ifndef _FORWARD_LIST_TCC -#define _FORWARD_LIST_TCC 1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - template - _Fwd_list_base<_Tp, _Alloc>:: - _Fwd_list_base(_Fwd_list_base&& __lst, _Node_alloc_type&& __a) - : _M_impl(std::move(__a)) - { - if (__lst._M_get_Node_allocator() == _M_get_Node_allocator()) - { - this->_M_impl._M_head._M_next = __lst._M_impl._M_head._M_next; - __lst._M_impl._M_head._M_next = 0; - } - else - this->_M_impl._M_head._M_next = 0; - } - - template - template - _Fwd_list_node_base* - _Fwd_list_base<_Tp, _Alloc>:: - _M_insert_after(const_iterator __pos, _Args&&... __args) - { - _Fwd_list_node_base* __to - = const_cast<_Fwd_list_node_base*>(__pos._M_node); - _Node* __thing = _M_create_node(std::forward<_Args>(__args)...); - __thing->_M_next = __to->_M_next; - __to->_M_next = __thing; - return __to->_M_next; - } - - template - _Fwd_list_node_base* - _Fwd_list_base<_Tp, _Alloc>:: - _M_erase_after(_Fwd_list_node_base* __pos) - { - _Node* __curr = static_cast<_Node*>(__pos->_M_next); - __pos->_M_next = __curr->_M_next; - _Tp_alloc_type __a(_M_get_Node_allocator()); - allocator_traits<_Tp_alloc_type>::destroy(__a, __curr->_M_valptr()); - __curr->~_Node(); - _M_put_node(__curr); - return __pos->_M_next; - } - - template - _Fwd_list_node_base* - _Fwd_list_base<_Tp, _Alloc>:: - _M_erase_after(_Fwd_list_node_base* __pos, - _Fwd_list_node_base* __last) - { - _Node* __curr = static_cast<_Node*>(__pos->_M_next); - while (__curr != __last) - { - _Node* __temp = __curr; - __curr = static_cast<_Node*>(__curr->_M_next); - _Tp_alloc_type __a(_M_get_Node_allocator()); - allocator_traits<_Tp_alloc_type>::destroy(__a, __temp->_M_valptr()); - __temp->~_Node(); - _M_put_node(__temp); - } - __pos->_M_next = __last; - return __last; - } - - // Called by the range constructor to implement [23.3.4.2]/9 - template - template - void - forward_list<_Tp, _Alloc>:: - _M_range_initialize(_InputIterator __first, _InputIterator __last) - { - _Node_base* __to = &this->_M_impl._M_head; - for (; __first != __last; ++__first) - { - __to->_M_next = this->_M_create_node(*__first); - __to = __to->_M_next; - } - } - - // Called by forward_list(n,v,a). - template - void - forward_list<_Tp, _Alloc>:: - _M_fill_initialize(size_type __n, const value_type& __value) - { - _Node_base* __to = &this->_M_impl._M_head; - for (; __n; --__n) - { - __to->_M_next = this->_M_create_node(__value); - __to = __to->_M_next; - } - } - - template - void - forward_list<_Tp, _Alloc>:: - _M_default_initialize(size_type __n) - { - _Node_base* __to = &this->_M_impl._M_head; - for (; __n; --__n) - { - __to->_M_next = this->_M_create_node(); - __to = __to->_M_next; - } - } - - template - forward_list<_Tp, _Alloc>& - forward_list<_Tp, _Alloc>:: - operator=(const forward_list& __list) - { - if (std::__addressof(__list) != this) - { - if (_Node_alloc_traits::_S_propagate_on_copy_assign()) - { - auto& __this_alloc = this->_M_get_Node_allocator(); - auto& __that_alloc = __list._M_get_Node_allocator(); - if (!_Node_alloc_traits::_S_always_equal() - && __this_alloc != __that_alloc) - { - // replacement allocator cannot free existing storage - clear(); - } - std::__alloc_on_copy(__this_alloc, __that_alloc); - } - assign(__list.cbegin(), __list.cend()); - } - return *this; - } - - template - void - forward_list<_Tp, _Alloc>:: - _M_default_insert_after(const_iterator __pos, size_type __n) - { - const_iterator __saved_pos = __pos; - __try - { - for (; __n; --__n) - __pos = emplace_after(__pos); - } - __catch(...) - { - erase_after(__saved_pos, ++__pos); - __throw_exception_again; - } - } - - template - void - forward_list<_Tp, _Alloc>:: - resize(size_type __sz) - { - iterator __k = before_begin(); - - size_type __len = 0; - while (__k._M_next() != end() && __len < __sz) - { - ++__k; - ++__len; - } - if (__len == __sz) - erase_after(__k, end()); - else - _M_default_insert_after(__k, __sz - __len); - } - - template - void - forward_list<_Tp, _Alloc>:: - resize(size_type __sz, const value_type& __val) - { - iterator __k = before_begin(); - - size_type __len = 0; - while (__k._M_next() != end() && __len < __sz) - { - ++__k; - ++__len; - } - if (__len == __sz) - erase_after(__k, end()); - else - insert_after(__k, __sz - __len, __val); - } - - template - typename forward_list<_Tp, _Alloc>::iterator - forward_list<_Tp, _Alloc>:: - _M_splice_after(const_iterator __pos, - const_iterator __before, const_iterator __last) - { - _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); - _Node_base* __b = const_cast<_Node_base*>(__before._M_node); - _Node_base* __end = __b; - - while (__end && __end->_M_next != __last._M_node) - __end = __end->_M_next; - - if (__b != __end) - return iterator(__tmp->_M_transfer_after(__b, __end)); - else - return iterator(__tmp); - } - - template - void - forward_list<_Tp, _Alloc>:: - splice_after(const_iterator __pos, forward_list&&, - const_iterator __i) noexcept - { - const_iterator __j = __i; - ++__j; - - if (__pos == __i || __pos == __j) - return; - - _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); - __tmp->_M_transfer_after(const_cast<_Node_base*>(__i._M_node), - const_cast<_Node_base*>(__j._M_node)); - } - - template - typename forward_list<_Tp, _Alloc>::iterator - forward_list<_Tp, _Alloc>:: - insert_after(const_iterator __pos, size_type __n, const _Tp& __val) - { - if (__n) - { - forward_list __tmp(__n, __val, get_allocator()); - return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); - } - else - return iterator(const_cast<_Node_base*>(__pos._M_node)); - } - - template - template - typename forward_list<_Tp, _Alloc>::iterator - forward_list<_Tp, _Alloc>:: - insert_after(const_iterator __pos, - _InputIterator __first, _InputIterator __last) - { - forward_list __tmp(__first, __last, get_allocator()); - if (!__tmp.empty()) - return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); - else - return iterator(const_cast<_Node_base*>(__pos._M_node)); - } - - template - void - forward_list<_Tp, _Alloc>:: - remove(const _Tp& __val) - { - _Node_base* __curr = &this->_M_impl._M_head; - _Node_base* __extra = nullptr; - - while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next)) - { - if (*__tmp->_M_valptr() == __val) - { - if (__tmp->_M_valptr() != std::__addressof(__val)) - { - this->_M_erase_after(__curr); - continue; - } - else - __extra = __curr; - } - __curr = __curr->_M_next; - } - - if (__extra) - this->_M_erase_after(__extra); - } - - template - template - void - forward_list<_Tp, _Alloc>:: - remove_if(_Pred __pred) - { - _Node_base* __curr = &this->_M_impl._M_head; - while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next)) - { - if (__pred(*__tmp->_M_valptr())) - this->_M_erase_after(__curr); - else - __curr = __curr->_M_next; - } - } - - template - template - void - forward_list<_Tp, _Alloc>:: - unique(_BinPred __binary_pred) - { - iterator __first = begin(); - iterator __last = end(); - if (__first == __last) - return; - iterator __next = __first; - while (++__next != __last) - { - if (__binary_pred(*__first, *__next)) - erase_after(__first); - else - __first = __next; - __next = __first; - } - } - - template - template - void - forward_list<_Tp, _Alloc>:: - merge(forward_list&& __list, _Comp __comp) - { - _Node_base* __node = &this->_M_impl._M_head; - while (__node->_M_next && __list._M_impl._M_head._M_next) - { - if (__comp(*static_cast<_Node*> - (__list._M_impl._M_head._M_next)->_M_valptr(), - *static_cast<_Node*> - (__node->_M_next)->_M_valptr())) - __node->_M_transfer_after(&__list._M_impl._M_head, - __list._M_impl._M_head._M_next); - __node = __node->_M_next; - } - if (__list._M_impl._M_head._M_next) - { - __node->_M_next = __list._M_impl._M_head._M_next; - __list._M_impl._M_head._M_next = 0; - } - } - - template - bool - operator==(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { - // We don't have size() so we need to walk through both lists - // making sure both iterators are valid. - auto __ix = __lx.cbegin(); - auto __iy = __ly.cbegin(); - while (__ix != __lx.cend() && __iy != __ly.cend()) - { - if (*__ix != *__iy) - return false; - ++__ix; - ++__iy; - } - if (__ix == __lx.cend() && __iy == __ly.cend()) - return true; - else - return false; - } - - template - template - void - forward_list<_Tp, _Alloc>:: - sort(_Comp __comp) - { - // If `next' is 0, return immediately. - _Node* __list = static_cast<_Node*>(this->_M_impl._M_head._M_next); - if (!__list) - return; - - unsigned long __insize = 1; - - while (1) - { - _Node* __p = __list; - __list = 0; - _Node* __tail = 0; - - // Count number of merges we do in this pass. - unsigned long __nmerges = 0; - - while (__p) - { - ++__nmerges; - // There exists a merge to be done. - // Step `insize' places along from p. - _Node* __q = __p; - unsigned long __psize = 0; - for (unsigned long __i = 0; __i < __insize; ++__i) - { - ++__psize; - __q = static_cast<_Node*>(__q->_M_next); - if (!__q) - break; - } - - // If q hasn't fallen off end, we have two lists to merge. - unsigned long __qsize = __insize; - - // Now we have two lists; merge them. - while (__psize > 0 || (__qsize > 0 && __q)) - { - // Decide whether next node of merge comes from p or q. - _Node* __e; - if (__psize == 0) - { - // p is empty; e must come from q. - __e = __q; - __q = static_cast<_Node*>(__q->_M_next); - --__qsize; - } - else if (__qsize == 0 || !__q) - { - // q is empty; e must come from p. - __e = __p; - __p = static_cast<_Node*>(__p->_M_next); - --__psize; - } - else if (__comp(*__p->_M_valptr(), *__q->_M_valptr())) - { - // First node of p is lower; e must come from p. - __e = __p; - __p = static_cast<_Node*>(__p->_M_next); - --__psize; - } - else - { - // First node of q is lower; e must come from q. - __e = __q; - __q = static_cast<_Node*>(__q->_M_next); - --__qsize; - } - - // Add the next node to the merged list. - if (__tail) - __tail->_M_next = __e; - else - __list = __e; - __tail = __e; - } - - // Now p has stepped `insize' places along, and q has too. - __p = __q; - } - __tail->_M_next = 0; - - // If we have done only one merge, we're finished. - // Allow for nmerges == 0, the empty list case. - if (__nmerges <= 1) - { - this->_M_impl._M_head._M_next = __list; - return; - } - - // Otherwise repeat, merging lists twice the size. - __insize *= 2; - } - } - -_GLIBCXX_END_NAMESPACE_CONTAINER -} // namespace std - -#endif /* _FORWARD_LIST_TCC */ - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/functional_hash.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/functional_hash.h deleted file mode 100644 index 38be1724d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/functional_hash.h +++ /dev/null @@ -1,274 +0,0 @@ -// functional_hash.h header -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/functional_hash.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{functional} - */ - -#ifndef _FUNCTIONAL_HASH_H -#define _FUNCTIONAL_HASH_H 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** @defgroup hashes Hashes - * @ingroup functors - * - * Hashing functors taking a variable type and returning a @c std::size_t. - * - * @{ - */ - - template - struct __hash_base - { - typedef _Result result_type; - typedef _Arg argument_type; - }; - - /// Primary class template hash. - template - struct hash; - - template - struct __poison_hash - { - static constexpr bool __enable_hash_call = false; - private: - // Private rather than deleted to be non-trivially-copyable. - __poison_hash(__poison_hash&&); - ~__poison_hash(); - }; - - template - struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> - { - static constexpr bool __enable_hash_call = true; - }; - - // Helper struct for SFINAE-poisoning non-enum types. - template::value> - struct __hash_enum - { - private: - // Private rather than deleted to be non-trivially-copyable. - __hash_enum(__hash_enum&&); - ~__hash_enum(); - }; - - // Helper struct for hash with enum types. - template - struct __hash_enum<_Tp, true> : public __hash_base - { - size_t - operator()(_Tp __val) const noexcept - { - using __type = typename underlying_type<_Tp>::type; - return hash<__type>{}(static_cast<__type>(__val)); - } - }; - - /// Primary class template hash, usable for enum types only. - // Use with non-enum types still SFINAES. - template - struct hash : __hash_enum<_Tp> - { }; - - /// Partial specializations for pointer types. - template - struct hash<_Tp*> : public __hash_base - { - size_t - operator()(_Tp* __p) const noexcept - { return reinterpret_cast(__p); } - }; - - // Explicit specializations for integer types. -#define _Cxx_hashtable_define_trivial_hash(_Tp) \ - template<> \ - struct hash<_Tp> : public __hash_base \ - { \ - size_t \ - operator()(_Tp __val) const noexcept \ - { return static_cast(__val); } \ - }; - - /// Explicit specialization for bool. - _Cxx_hashtable_define_trivial_hash(bool) - - /// Explicit specialization for char. - _Cxx_hashtable_define_trivial_hash(char) - - /// Explicit specialization for signed char. - _Cxx_hashtable_define_trivial_hash(signed char) - - /// Explicit specialization for unsigned char. - _Cxx_hashtable_define_trivial_hash(unsigned char) - - /// Explicit specialization for wchar_t. - _Cxx_hashtable_define_trivial_hash(wchar_t) - - /// Explicit specialization for char16_t. - _Cxx_hashtable_define_trivial_hash(char16_t) - - /// Explicit specialization for char32_t. - _Cxx_hashtable_define_trivial_hash(char32_t) - - /// Explicit specialization for short. - _Cxx_hashtable_define_trivial_hash(short) - - /// Explicit specialization for int. - _Cxx_hashtable_define_trivial_hash(int) - - /// Explicit specialization for long. - _Cxx_hashtable_define_trivial_hash(long) - - /// Explicit specialization for long long. - _Cxx_hashtable_define_trivial_hash(long long) - - /// Explicit specialization for unsigned short. - _Cxx_hashtable_define_trivial_hash(unsigned short) - - /// Explicit specialization for unsigned int. - _Cxx_hashtable_define_trivial_hash(unsigned int) - - /// Explicit specialization for unsigned long. - _Cxx_hashtable_define_trivial_hash(unsigned long) - - /// Explicit specialization for unsigned long long. - _Cxx_hashtable_define_trivial_hash(unsigned long long) - -#ifdef __GLIBCXX_TYPE_INT_N_0 - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0) - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0 unsigned) -#endif -#ifdef __GLIBCXX_TYPE_INT_N_1 - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_1) - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_1 unsigned) -#endif -#ifdef __GLIBCXX_TYPE_INT_N_2 - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_2) - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_2 unsigned) -#endif -#ifdef __GLIBCXX_TYPE_INT_N_3 - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3) - _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3 unsigned) -#endif - -#undef _Cxx_hashtable_define_trivial_hash - - struct _Hash_impl - { - static size_t - hash(const void* __ptr, size_t __clength, - size_t __seed = static_cast(0xc70f6907UL)) - { return _Hash_bytes(__ptr, __clength, __seed); } - - template - static size_t - hash(const _Tp& __val) - { return hash(&__val, sizeof(__val)); } - - template - static size_t - __hash_combine(const _Tp& __val, size_t __hash) - { return hash(&__val, sizeof(__val), __hash); } - }; - - // A hash function similar to FNV-1a (see PR59406 for how it differs). - struct _Fnv_hash_impl - { - static size_t - hash(const void* __ptr, size_t __clength, - size_t __seed = static_cast(2166136261UL)) - { return _Fnv_hash_bytes(__ptr, __clength, __seed); } - - template - static size_t - hash(const _Tp& __val) - { return hash(&__val, sizeof(__val)); } - - template - static size_t - __hash_combine(const _Tp& __val, size_t __hash) - { return hash(&__val, sizeof(__val), __hash); } - }; - - /// Specialization for float. - template<> - struct hash : public __hash_base - { - size_t - operator()(float __val) const noexcept - { - // 0 and -0 both hash to zero. - return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; - } - }; - - /// Specialization for double. - template<> - struct hash : public __hash_base - { - size_t - operator()(double __val) const noexcept - { - // 0 and -0 both hash to zero. - return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; - } - }; - - /// Specialization for long double. - template<> - struct hash - : public __hash_base - { - _GLIBCXX_PURE size_t - operator()(long double __val) const noexcept; - }; - - // @} group hashes - - // Hint about performance of hash functor. If not fast the hash-based - // containers will cache the hash code. - // Default behavior is to consider that hashers are fast unless specified - // otherwise. - template - struct __is_fast_hash : public std::true_type - { }; - - template<> - struct __is_fast_hash> : public std::false_type - { }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif // _FUNCTIONAL_HASH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hashtable.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hashtable.h deleted file mode 100644 index e0806dc93..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hashtable.h +++ /dev/null @@ -1,2216 +0,0 @@ -// hashtable.h header -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/hashtable.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{unordered_map, unordered_set} - */ - -#ifndef _HASHTABLE_H -#define _HASHTABLE_H 1 - -#pragma GCC system_header - -#include -#if __cplusplus > 201402L -# include -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - using __cache_default - = __not_<__and_, - // Mandatory to have erase not throwing. - __detail::__is_noexcept_hash<_Tp, _Hash>>>; - - /** - * Primary class template _Hashtable. - * - * @ingroup hashtable-detail - * - * @tparam _Value CopyConstructible type. - * - * @tparam _Key CopyConstructible type. - * - * @tparam _Alloc An allocator type - * ([lib.allocator.requirements]) whose _Alloc::value_type is - * _Value. As a conforming extension, we allow for - * _Alloc::value_type != _Value. - * - * @tparam _ExtractKey Function object that takes an object of type - * _Value and returns a value of type _Key. - * - * @tparam _Equal Function object that takes two objects of type k - * and returns a bool-like value that is true if the two objects - * are considered equal. - * - * @tparam _H1 The hash function. A unary function object with - * argument type _Key and result type size_t. Return values should - * be distributed over the entire range [0, numeric_limits:::max()]. - * - * @tparam _H2 The range-hashing function (in the terminology of - * Tavori and Dreizin). A binary function object whose argument - * types and result type are all size_t. Given arguments r and N, - * the return value is in the range [0, N). - * - * @tparam _Hash The ranged hash function (Tavori and Dreizin). A - * binary function whose argument types are _Key and size_t and - * whose result type is size_t. Given arguments k and N, the - * return value is in the range [0, N). Default: hash(k, N) = - * h2(h1(k), N). If _Hash is anything other than the default, _H1 - * and _H2 are ignored. - * - * @tparam _RehashPolicy Policy class with three members, all of - * which govern the bucket count. _M_next_bkt(n) returns a bucket - * count no smaller than n. _M_bkt_for_elements(n) returns a - * bucket count appropriate for an element count of n. - * _M_need_rehash(n_bkt, n_elt, n_ins) determines whether, if the - * current bucket count is n_bkt and the current element count is - * n_elt, we need to increase the bucket count. If so, returns - * make_pair(true, n), where n is the new bucket count. If not, - * returns make_pair(false, ) - * - * @tparam _Traits Compile-time class with three boolean - * std::integral_constant members: __cache_hash_code, __constant_iterators, - * __unique_keys. - * - * Each _Hashtable data structure has: - * - * - _Bucket[] _M_buckets - * - _Hash_node_base _M_before_begin - * - size_type _M_bucket_count - * - size_type _M_element_count - * - * with _Bucket being _Hash_node* and _Hash_node containing: - * - * - _Hash_node* _M_next - * - Tp _M_value - * - size_t _M_hash_code if cache_hash_code is true - * - * In terms of Standard containers the hashtable is like the aggregation of: - * - * - std::forward_list<_Node> containing the elements - * - std::vector::iterator> representing the buckets - * - * The non-empty buckets contain the node before the first node in the - * bucket. This design makes it possible to implement something like a - * std::forward_list::insert_after on container insertion and - * std::forward_list::erase_after on container erase - * calls. _M_before_begin is equivalent to - * std::forward_list::before_begin. Empty buckets contain - * nullptr. Note that one of the non-empty buckets contains - * &_M_before_begin which is not a dereferenceable node so the - * node pointer in a bucket shall never be dereferenced, only its - * next node can be. - * - * Walking through a bucket's nodes requires a check on the hash code to - * see if each node is still in the bucket. Such a design assumes a - * quite efficient hash functor and is one of the reasons it is - * highly advisable to set __cache_hash_code to true. - * - * The container iterators are simply built from nodes. This way - * incrementing the iterator is perfectly efficient independent of - * how many empty buckets there are in the container. - * - * On insert we compute the element's hash code and use it to find the - * bucket index. If the element must be inserted in an empty bucket - * we add it at the beginning of the singly linked list and make the - * bucket point to _M_before_begin. The bucket that used to point to - * _M_before_begin, if any, is updated to point to its new before - * begin node. - * - * On erase, the simple iterator design requires using the hash - * functor to get the index of the bucket to update. For this - * reason, when __cache_hash_code is set to false the hash functor must - * not throw and this is enforced by a static assertion. - * - * Functionality is implemented by decomposition into base classes, - * where the derived _Hashtable class is used in _Map_base, - * _Insert, _Rehash_base, and _Equality base classes to access the - * "this" pointer. _Hashtable_base is used in the base classes as a - * non-recursive, fully-completed-type so that detailed nested type - * information, such as iterator type and node type, can be - * used. This is similar to the "Curiously Recurring Template - * Pattern" (CRTP) technique, but uses a reconstructed, not - * explicitly passed, template pattern. - * - * Base class templates are: - * - __detail::_Hashtable_base - * - __detail::_Map_base - * - __detail::_Insert - * - __detail::_Rehash_base - * - __detail::_Equality - */ - template - class _Hashtable - : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, - _H1, _H2, _Hash, _Traits>, - public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>, - public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>, - public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>, - public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>, - private __detail::_Hashtable_alloc< - __alloc_rebind<_Alloc, - __detail::_Hash_node<_Value, - _Traits::__hash_cached::value>>> - { - using __traits_type = _Traits; - using __hash_cached = typename __traits_type::__hash_cached; - using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; - using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; - - using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; - - using __value_alloc_traits = - typename __hashtable_alloc::__value_alloc_traits; - using __node_alloc_traits = - typename __hashtable_alloc::__node_alloc_traits; - using __node_base = typename __hashtable_alloc::__node_base; - using __bucket_type = typename __hashtable_alloc::__bucket_type; - - public: - typedef _Key key_type; - typedef _Value value_type; - typedef _Alloc allocator_type; - typedef _Equal key_equal; - - // mapped_type, if present, comes from _Map_base. - // hasher, if present, comes from _Hash_code_base/_Hashtable_base. - typedef typename __value_alloc_traits::pointer pointer; - typedef typename __value_alloc_traits::const_pointer const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - - private: - using __rehash_type = _RehashPolicy; - using __rehash_state = typename __rehash_type::_State; - - using __constant_iterators = typename __traits_type::__constant_iterators; - using __unique_keys = typename __traits_type::__unique_keys; - - using __key_extract = typename std::conditional< - __constant_iterators::value, - __detail::_Identity, - __detail::_Select1st>::type; - - using __hashtable_base = __detail:: - _Hashtable_base<_Key, _Value, _ExtractKey, - _Equal, _H1, _H2, _Hash, _Traits>; - - using __hash_code_base = typename __hashtable_base::__hash_code_base; - using __hash_code = typename __hashtable_base::__hash_code; - using __ireturn_type = typename __hashtable_base::__ireturn_type; - - using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - - using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, - _ExtractKey, _Equal, - _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - - using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - - using __reuse_or_alloc_node_type = - __detail::_ReuseOrAllocNode<__node_alloc_type>; - - // Metaprogramming for picking apart hash caching. - template - using __if_hash_cached = __or_<__not_<__hash_cached>, _Cond>; - - template - using __if_hash_not_cached = __or_<__hash_cached, _Cond>; - - // Compile-time diagnostics. - - // _Hash_code_base has everything protected, so use this derived type to - // access it. - struct __hash_code_base_access : __hash_code_base - { using __hash_code_base::_M_bucket_index; }; - - // Getting a bucket index from a node shall not throw because it is used - // in methods (erase, swap...) that shall not throw. - static_assert(noexcept(declval() - ._M_bucket_index((const __node_type*)nullptr, - (std::size_t)0)), - "Cache the hash code or qualify your functors involved" - " in hash code and bucket index computation with noexcept"); - - // Following two static assertions are necessary to guarantee - // that local_iterator will be default constructible. - - // When hash codes are cached local iterator inherits from H2 functor - // which must then be default constructible. - static_assert(__if_hash_cached>::value, - "Functor used to map hash code to bucket index" - " must be default constructible"); - - template - friend struct __detail::_Map_base; - - template - friend struct __detail::_Insert_base; - - template - friend struct __detail::_Insert; - - public: - using size_type = typename __hashtable_base::size_type; - using difference_type = typename __hashtable_base::difference_type; - - using iterator = typename __hashtable_base::iterator; - using const_iterator = typename __hashtable_base::const_iterator; - - using local_iterator = typename __hashtable_base::local_iterator; - using const_local_iterator = typename __hashtable_base:: - const_local_iterator; - -#if __cplusplus > 201402L - using node_type = _Node_handle<_Key, _Value, __node_alloc_type>; - using insert_return_type = _Node_insert_return; -#endif - - private: - __bucket_type* _M_buckets = &_M_single_bucket; - size_type _M_bucket_count = 1; - __node_base _M_before_begin; - size_type _M_element_count = 0; - _RehashPolicy _M_rehash_policy; - - // A single bucket used when only need for 1 bucket. Especially - // interesting in move semantic to leave hashtable with only 1 buckets - // which is not allocated so that we can have those operations noexcept - // qualified. - // Note that we can't leave hashtable with 0 bucket without adding - // numerous checks in the code to avoid 0 modulus. - __bucket_type _M_single_bucket = nullptr; - - bool - _M_uses_single_bucket(__bucket_type* __bkts) const - { return __builtin_expect(__bkts == &_M_single_bucket, false); } - - bool - _M_uses_single_bucket() const - { return _M_uses_single_bucket(_M_buckets); } - - __hashtable_alloc& - _M_base_alloc() { return *this; } - - __bucket_type* - _M_allocate_buckets(size_type __n) - { - if (__builtin_expect(__n == 1, false)) - { - _M_single_bucket = nullptr; - return &_M_single_bucket; - } - - return __hashtable_alloc::_M_allocate_buckets(__n); - } - - void - _M_deallocate_buckets(__bucket_type* __bkts, size_type __n) - { - if (_M_uses_single_bucket(__bkts)) - return; - - __hashtable_alloc::_M_deallocate_buckets(__bkts, __n); - } - - void - _M_deallocate_buckets() - { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } - - // Gets bucket begin, deals with the fact that non-empty buckets contain - // their before begin node. - __node_type* - _M_bucket_begin(size_type __bkt) const; - - __node_type* - _M_begin() const - { return static_cast<__node_type*>(_M_before_begin._M_nxt); } - - template - void - _M_assign(const _Hashtable&, const _NodeGenerator&); - - void - _M_move_assign(_Hashtable&&, std::true_type); - - void - _M_move_assign(_Hashtable&&, std::false_type); - - void - _M_reset() noexcept; - - _Hashtable(const _H1& __h1, const _H2& __h2, const _Hash& __h, - const _Equal& __eq, const _ExtractKey& __exk, - const allocator_type& __a) - : __hashtable_base(__exk, __h1, __h2, __h, __eq), - __hashtable_alloc(__node_alloc_type(__a)) - { } - - public: - // Constructor, destructor, assignment, swap - _Hashtable() = default; - _Hashtable(size_type __bucket_hint, - const _H1&, const _H2&, const _Hash&, - const _Equal&, const _ExtractKey&, - const allocator_type&); - - template - _Hashtable(_InputIterator __first, _InputIterator __last, - size_type __bucket_hint, - const _H1&, const _H2&, const _Hash&, - const _Equal&, const _ExtractKey&, - const allocator_type&); - - _Hashtable(const _Hashtable&); - - _Hashtable(_Hashtable&&) noexcept; - - _Hashtable(const _Hashtable&, const allocator_type&); - - _Hashtable(_Hashtable&&, const allocator_type&); - - // Use delegating constructors. - explicit - _Hashtable(const allocator_type& __a) - : __hashtable_alloc(__node_alloc_type(__a)) - { } - - explicit - _Hashtable(size_type __n, - const _H1& __hf = _H1(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Hashtable(__n, __hf, _H2(), _Hash(), __eql, - __key_extract(), __a) - { } - - template - _Hashtable(_InputIterator __f, _InputIterator __l, - size_type __n = 0, - const _H1& __hf = _H1(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Hashtable(__f, __l, __n, __hf, _H2(), _Hash(), __eql, - __key_extract(), __a) - { } - - _Hashtable(initializer_list __l, - size_type __n = 0, - const _H1& __hf = _H1(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Hashtable(__l.begin(), __l.end(), __n, __hf, _H2(), _Hash(), __eql, - __key_extract(), __a) - { } - - _Hashtable& - operator=(const _Hashtable& __ht); - - _Hashtable& - operator=(_Hashtable&& __ht) - noexcept(__node_alloc_traits::_S_nothrow_move() - && is_nothrow_move_assignable<_H1>::value - && is_nothrow_move_assignable<_Equal>::value) - { - constexpr bool __move_storage = - __node_alloc_traits::_S_propagate_on_move_assign() - || __node_alloc_traits::_S_always_equal(); - _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); - return *this; - } - - _Hashtable& - operator=(initializer_list __l) - { - __reuse_or_alloc_node_type __roan(_M_begin(), *this); - _M_before_begin._M_nxt = nullptr; - clear(); - this->_M_insert_range(__l.begin(), __l.end(), __roan); - return *this; - } - - ~_Hashtable() noexcept; - - void - swap(_Hashtable&) - noexcept(__and_<__is_nothrow_swappable<_H1>, - __is_nothrow_swappable<_Equal>>::value); - - // Basic container operations - iterator - begin() noexcept - { return iterator(_M_begin()); } - - const_iterator - begin() const noexcept - { return const_iterator(_M_begin()); } - - iterator - end() noexcept - { return iterator(nullptr); } - - const_iterator - end() const noexcept - { return const_iterator(nullptr); } - - const_iterator - cbegin() const noexcept - { return const_iterator(_M_begin()); } - - const_iterator - cend() const noexcept - { return const_iterator(nullptr); } - - size_type - size() const noexcept - { return _M_element_count; } - - bool - empty() const noexcept - { return size() == 0; } - - allocator_type - get_allocator() const noexcept - { return allocator_type(this->_M_node_allocator()); } - - size_type - max_size() const noexcept - { return __node_alloc_traits::max_size(this->_M_node_allocator()); } - - // Observers - key_equal - key_eq() const - { return this->_M_eq(); } - - // hash_function, if present, comes from _Hash_code_base. - - // Bucket operations - size_type - bucket_count() const noexcept - { return _M_bucket_count; } - - size_type - max_bucket_count() const noexcept - { return max_size(); } - - size_type - bucket_size(size_type __n) const - { return std::distance(begin(__n), end(__n)); } - - size_type - bucket(const key_type& __k) const - { return _M_bucket_index(__k, this->_M_hash_code(__k)); } - - local_iterator - begin(size_type __n) - { - return local_iterator(*this, _M_bucket_begin(__n), - __n, _M_bucket_count); - } - - local_iterator - end(size_type __n) - { return local_iterator(*this, nullptr, __n, _M_bucket_count); } - - const_local_iterator - begin(size_type __n) const - { - return const_local_iterator(*this, _M_bucket_begin(__n), - __n, _M_bucket_count); - } - - const_local_iterator - end(size_type __n) const - { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } - - // DR 691. - const_local_iterator - cbegin(size_type __n) const - { - return const_local_iterator(*this, _M_bucket_begin(__n), - __n, _M_bucket_count); - } - - const_local_iterator - cend(size_type __n) const - { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } - - float - load_factor() const noexcept - { - return static_cast(size()) / static_cast(bucket_count()); - } - - // max_load_factor, if present, comes from _Rehash_base. - - // Generalization of max_load_factor. Extension, not found in - // TR1. Only useful if _RehashPolicy is something other than - // the default. - const _RehashPolicy& - __rehash_policy() const - { return _M_rehash_policy; } - - void - __rehash_policy(const _RehashPolicy& __pol) - { _M_rehash_policy = __pol; } - - // Lookup. - iterator - find(const key_type& __k); - - const_iterator - find(const key_type& __k) const; - - size_type - count(const key_type& __k) const; - - std::pair - equal_range(const key_type& __k); - - std::pair - equal_range(const key_type& __k) const; - - protected: - // Bucket index computation helpers. - size_type - _M_bucket_index(__node_type* __n) const noexcept - { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } - - size_type - _M_bucket_index(const key_type& __k, __hash_code __c) const - { return __hash_code_base::_M_bucket_index(__k, __c, _M_bucket_count); } - - // Find and insert helper functions and types - // Find the node before the one matching the criteria. - __node_base* - _M_find_before_node(size_type, const key_type&, __hash_code) const; - - __node_type* - _M_find_node(size_type __bkt, const key_type& __key, - __hash_code __c) const - { - __node_base* __before_n = _M_find_before_node(__bkt, __key, __c); - if (__before_n) - return static_cast<__node_type*>(__before_n->_M_nxt); - return nullptr; - } - - // Insert a node at the beginning of a bucket. - void - _M_insert_bucket_begin(size_type, __node_type*); - - // Remove the bucket first node - void - _M_remove_bucket_begin(size_type __bkt, __node_type* __next_n, - size_type __next_bkt); - - // Get the node before __n in the bucket __bkt - __node_base* - _M_get_previous_node(size_type __bkt, __node_base* __n); - - // Insert node with hash code __code, in bucket bkt if no rehash (assumes - // no element with its key already present). Take ownership of the node, - // deallocate it on exception. - iterator - _M_insert_unique_node(size_type __bkt, __hash_code __code, - __node_type* __n); - - // Insert node with hash code __code. Take ownership of the node, - // deallocate it on exception. - iterator - _M_insert_multi_node(__node_type* __hint, - __hash_code __code, __node_type* __n); - - template - std::pair - _M_emplace(std::true_type, _Args&&... __args); - - template - iterator - _M_emplace(std::false_type __uk, _Args&&... __args) - { return _M_emplace(cend(), __uk, std::forward<_Args>(__args)...); } - - // Emplace with hint, useless when keys are unique. - template - iterator - _M_emplace(const_iterator, std::true_type __uk, _Args&&... __args) - { return _M_emplace(__uk, std::forward<_Args>(__args)...).first; } - - template - iterator - _M_emplace(const_iterator, std::false_type, _Args&&... __args); - - template - std::pair - _M_insert(_Arg&&, const _NodeGenerator&, std::true_type); - - template - iterator - _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, - std::false_type __uk) - { - return _M_insert(cend(), std::forward<_Arg>(__arg), __node_gen, - __uk); - } - - // Insert with hint, not used when keys are unique. - template - iterator - _M_insert(const_iterator, _Arg&& __arg, - const _NodeGenerator& __node_gen, std::true_type __uk) - { - return - _M_insert(std::forward<_Arg>(__arg), __node_gen, __uk).first; - } - - // Insert with hint when keys are not unique. - template - iterator - _M_insert(const_iterator, _Arg&&, - const _NodeGenerator&, std::false_type); - - size_type - _M_erase(std::true_type, const key_type&); - - size_type - _M_erase(std::false_type, const key_type&); - - iterator - _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n); - - public: - // Emplace - template - __ireturn_type - emplace(_Args&&... __args) - { return _M_emplace(__unique_keys(), std::forward<_Args>(__args)...); } - - template - iterator - emplace_hint(const_iterator __hint, _Args&&... __args) - { - return _M_emplace(__hint, __unique_keys(), - std::forward<_Args>(__args)...); - } - - // Insert member functions via inheritance. - - // Erase - iterator - erase(const_iterator); - - // LWG 2059. - iterator - erase(iterator __it) - { return erase(const_iterator(__it)); } - - size_type - erase(const key_type& __k) - { return _M_erase(__unique_keys(), __k); } - - iterator - erase(const_iterator, const_iterator); - - void - clear() noexcept; - - // Set number of buckets to be appropriate for container of n element. - void rehash(size_type __n); - - // DR 1189. - // reserve, if present, comes from _Rehash_base. - -#if __cplusplus > 201402L - /// Re-insert an extracted node into a container with unique keys. - insert_return_type - _M_reinsert_node(node_type&& __nh) - { - insert_return_type __ret; - if (__nh.empty()) - __ret.position = end(); - else - { - __glibcxx_assert(get_allocator() == __nh.get_allocator()); - - const key_type& __k = __nh._M_key(); - __hash_code __code = this->_M_hash_code(__k); - size_type __bkt = _M_bucket_index(__k, __code); - if (__node_type* __n = _M_find_node(__bkt, __k, __code)) - { - __ret.node = std::move(__nh); - __ret.position = iterator(__n); - __ret.inserted = false; - } - else - { - __ret.position - = _M_insert_unique_node(__bkt, __code, __nh._M_ptr); - __nh._M_ptr = nullptr; - __ret.inserted = true; - } - } - return __ret; - } - - /// Re-insert an extracted node into a container with equivalent keys. - iterator - _M_reinsert_node_multi(const_iterator __hint, node_type&& __nh) - { - iterator __ret; - if (__nh.empty()) - __ret = end(); - else - { - __glibcxx_assert(get_allocator() == __nh.get_allocator()); - - auto __code = this->_M_hash_code(__nh._M_key()); - auto __node = std::exchange(__nh._M_ptr, nullptr); - // FIXME: this deallocates the node on exception. - __ret = _M_insert_multi_node(__hint._M_cur, __code, __node); - } - return __ret; - } - - /// Extract a node. - node_type - extract(const_iterator __pos) - { - __node_type* __n = __pos._M_cur; - size_t __bkt = _M_bucket_index(__n); - - // Look for previous node to unlink it from the erased one, this - // is why we need buckets to contain the before begin to make - // this search fast. - __node_base* __prev_n = _M_get_previous_node(__bkt, __n); - - if (__prev_n == _M_buckets[__bkt]) - _M_remove_bucket_begin(__bkt, __n->_M_next(), - __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); - else if (__n->_M_nxt) - { - size_type __next_bkt = _M_bucket_index(__n->_M_next()); - if (__next_bkt != __bkt) - _M_buckets[__next_bkt] = __prev_n; - } - - __prev_n->_M_nxt = __n->_M_nxt; - __n->_M_nxt = nullptr; - --_M_element_count; - return { __n, this->_M_node_allocator() }; - } - - /// Extract a node. - node_type - extract(const _Key& __k) - { - node_type __nh; - auto __pos = find(__k); - if (__pos != end()) - __nh = extract(const_iterator(__pos)); - return __nh; - } - - /// Merge from a compatible container into one with unique keys. - template - void - _M_merge_unique(_Compatible_Hashtable& __src) noexcept - { - static_assert(is_same_v, "Node types are compatible"); - __glibcxx_assert(get_allocator() == __src.get_allocator()); - - for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) - { - auto __pos = __i++; - const key_type& __k = this->_M_extract()(__pos._M_cur->_M_v()); - __hash_code __code = this->_M_hash_code(__k); - size_type __bkt = _M_bucket_index(__k, __code); - if (_M_find_node(__bkt, __k, __code) == nullptr) - { - auto __nh = __src.extract(__pos); - _M_insert_unique_node(__bkt, __code, __nh._M_ptr); - __nh._M_ptr = nullptr; - } - } - } - - /// Merge from a compatible container into one with equivalent keys. - template - void - _M_merge_multi(_Compatible_Hashtable& __src) noexcept - { - static_assert(is_same_v, "Node types are compatible"); - __glibcxx_assert(get_allocator() == __src.get_allocator()); - - this->reserve(size() + __src.size()); - for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) - _M_reinsert_node_multi(cend(), __src.extract(__i++)); - } -#endif // C++17 - - private: - // Helper rehash method used when keys are unique. - void _M_rehash_aux(size_type __n, std::true_type); - - // Helper rehash method used when keys can be non-unique. - void _M_rehash_aux(size_type __n, std::false_type); - - // Unconditionally change size of bucket array to n, restore - // hash policy state to __state on exception. - void _M_rehash(size_type __n, const __rehash_state& __state); - }; - - - // Definitions of class template _Hashtable's out-of-line member functions. - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_bucket_begin(size_type __bkt) const - -> __node_type* - { - __node_base* __n = _M_buckets[__bkt]; - return __n ? static_cast<__node_type*>(__n->_M_nxt) : nullptr; - } - - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _Hashtable(size_type __bucket_hint, - const _H1& __h1, const _H2& __h2, const _Hash& __h, - const _Equal& __eq, const _ExtractKey& __exk, - const allocator_type& __a) - : _Hashtable(__h1, __h2, __h, __eq, __exk, __a) - { - auto __bkt = _M_rehash_policy._M_next_bkt(__bucket_hint); - if (__bkt > _M_bucket_count) - { - _M_buckets = _M_allocate_buckets(__bkt); - _M_bucket_count = __bkt; - } - } - - template - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _Hashtable(_InputIterator __f, _InputIterator __l, - size_type __bucket_hint, - const _H1& __h1, const _H2& __h2, const _Hash& __h, - const _Equal& __eq, const _ExtractKey& __exk, - const allocator_type& __a) - : _Hashtable(__h1, __h2, __h, __eq, __exk, __a) - { - auto __nb_elems = __detail::__distance_fw(__f, __l); - auto __bkt_count = - _M_rehash_policy._M_next_bkt( - std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), - __bucket_hint)); - - if (__bkt_count > _M_bucket_count) - { - _M_buckets = _M_allocate_buckets(__bkt_count); - _M_bucket_count = __bkt_count; - } - - for (; __f != __l; ++__f) - this->insert(*__f); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - operator=(const _Hashtable& __ht) - -> _Hashtable& - { - if (&__ht == this) - return *this; - - if (__node_alloc_traits::_S_propagate_on_copy_assign()) - { - auto& __this_alloc = this->_M_node_allocator(); - auto& __that_alloc = __ht._M_node_allocator(); - if (!__node_alloc_traits::_S_always_equal() - && __this_alloc != __that_alloc) - { - // Replacement allocator cannot free existing storage. - this->_M_deallocate_nodes(_M_begin()); - _M_before_begin._M_nxt = nullptr; - _M_deallocate_buckets(); - _M_buckets = nullptr; - std::__alloc_on_copy(__this_alloc, __that_alloc); - __hashtable_base::operator=(__ht); - _M_bucket_count = __ht._M_bucket_count; - _M_element_count = __ht._M_element_count; - _M_rehash_policy = __ht._M_rehash_policy; - __try - { - _M_assign(__ht, - [this](const __node_type* __n) - { return this->_M_allocate_node(__n->_M_v()); }); - } - __catch(...) - { - // _M_assign took care of deallocating all memory. Now we - // must make sure this instance remains in a usable state. - _M_reset(); - __throw_exception_again; - } - return *this; - } - std::__alloc_on_copy(__this_alloc, __that_alloc); - } - - // Reuse allocated buckets and nodes. - __bucket_type* __former_buckets = nullptr; - std::size_t __former_bucket_count = _M_bucket_count; - const __rehash_state& __former_state = _M_rehash_policy._M_state(); - - if (_M_bucket_count != __ht._M_bucket_count) - { - __former_buckets = _M_buckets; - _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); - _M_bucket_count = __ht._M_bucket_count; - } - else - __builtin_memset(_M_buckets, 0, - _M_bucket_count * sizeof(__bucket_type)); - - __try - { - __hashtable_base::operator=(__ht); - _M_element_count = __ht._M_element_count; - _M_rehash_policy = __ht._M_rehash_policy; - __reuse_or_alloc_node_type __roan(_M_begin(), *this); - _M_before_begin._M_nxt = nullptr; - _M_assign(__ht, - [&__roan](const __node_type* __n) - { return __roan(__n->_M_v()); }); - if (__former_buckets) - _M_deallocate_buckets(__former_buckets, __former_bucket_count); - } - __catch(...) - { - if (__former_buckets) - { - // Restore previous buckets. - _M_deallocate_buckets(); - _M_rehash_policy._M_reset(__former_state); - _M_buckets = __former_buckets; - _M_bucket_count = __former_bucket_count; - } - __builtin_memset(_M_buckets, 0, - _M_bucket_count * sizeof(__bucket_type)); - __throw_exception_again; - } - return *this; - } - - template - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_assign(const _Hashtable& __ht, const _NodeGenerator& __node_gen) - { - __bucket_type* __buckets = nullptr; - if (!_M_buckets) - _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count); - - __try - { - if (!__ht._M_before_begin._M_nxt) - return; - - // First deal with the special first node pointed to by - // _M_before_begin. - __node_type* __ht_n = __ht._M_begin(); - __node_type* __this_n = __node_gen(__ht_n); - this->_M_copy_code(__this_n, __ht_n); - _M_before_begin._M_nxt = __this_n; - _M_buckets[_M_bucket_index(__this_n)] = &_M_before_begin; - - // Then deal with other nodes. - __node_base* __prev_n = __this_n; - for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) - { - __this_n = __node_gen(__ht_n); - __prev_n->_M_nxt = __this_n; - this->_M_copy_code(__this_n, __ht_n); - size_type __bkt = _M_bucket_index(__this_n); - if (!_M_buckets[__bkt]) - _M_buckets[__bkt] = __prev_n; - __prev_n = __this_n; - } - } - __catch(...) - { - clear(); - if (__buckets) - _M_deallocate_buckets(); - __throw_exception_again; - } - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_reset() noexcept - { - _M_rehash_policy._M_reset(); - _M_bucket_count = 1; - _M_single_bucket = nullptr; - _M_buckets = &_M_single_bucket; - _M_before_begin._M_nxt = nullptr; - _M_element_count = 0; - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_move_assign(_Hashtable&& __ht, std::true_type) - { - this->_M_deallocate_nodes(_M_begin()); - _M_deallocate_buckets(); - __hashtable_base::operator=(std::move(__ht)); - _M_rehash_policy = __ht._M_rehash_policy; - if (!__ht._M_uses_single_bucket()) - _M_buckets = __ht._M_buckets; - else - { - _M_buckets = &_M_single_bucket; - _M_single_bucket = __ht._M_single_bucket; - } - _M_bucket_count = __ht._M_bucket_count; - _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; - _M_element_count = __ht._M_element_count; - std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); - - // Fix buckets containing the _M_before_begin pointers that can't be - // moved. - if (_M_begin()) - _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; - __ht._M_reset(); - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_move_assign(_Hashtable&& __ht, std::false_type) - { - if (__ht._M_node_allocator() == this->_M_node_allocator()) - _M_move_assign(std::move(__ht), std::true_type()); - else - { - // Can't move memory, move elements then. - __bucket_type* __former_buckets = nullptr; - size_type __former_bucket_count = _M_bucket_count; - const __rehash_state& __former_state = _M_rehash_policy._M_state(); - - if (_M_bucket_count != __ht._M_bucket_count) - { - __former_buckets = _M_buckets; - _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); - _M_bucket_count = __ht._M_bucket_count; - } - else - __builtin_memset(_M_buckets, 0, - _M_bucket_count * sizeof(__bucket_type)); - - __try - { - __hashtable_base::operator=(std::move(__ht)); - _M_element_count = __ht._M_element_count; - _M_rehash_policy = __ht._M_rehash_policy; - __reuse_or_alloc_node_type __roan(_M_begin(), *this); - _M_before_begin._M_nxt = nullptr; - _M_assign(__ht, - [&__roan](__node_type* __n) - { return __roan(std::move_if_noexcept(__n->_M_v())); }); - __ht.clear(); - } - __catch(...) - { - if (__former_buckets) - { - _M_deallocate_buckets(); - _M_rehash_policy._M_reset(__former_state); - _M_buckets = __former_buckets; - _M_bucket_count = __former_bucket_count; - } - __builtin_memset(_M_buckets, 0, - _M_bucket_count * sizeof(__bucket_type)); - __throw_exception_again; - } - } - } - - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _Hashtable(const _Hashtable& __ht) - : __hashtable_base(__ht), - __map_base(__ht), - __rehash_base(__ht), - __hashtable_alloc( - __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), - _M_buckets(nullptr), - _M_bucket_count(__ht._M_bucket_count), - _M_element_count(__ht._M_element_count), - _M_rehash_policy(__ht._M_rehash_policy) - { - _M_assign(__ht, - [this](const __node_type* __n) - { return this->_M_allocate_node(__n->_M_v()); }); - } - - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _Hashtable(_Hashtable&& __ht) noexcept - : __hashtable_base(__ht), - __map_base(__ht), - __rehash_base(__ht), - __hashtable_alloc(std::move(__ht._M_base_alloc())), - _M_buckets(__ht._M_buckets), - _M_bucket_count(__ht._M_bucket_count), - _M_before_begin(__ht._M_before_begin._M_nxt), - _M_element_count(__ht._M_element_count), - _M_rehash_policy(__ht._M_rehash_policy) - { - // Update, if necessary, buckets if __ht is using its single bucket. - if (__ht._M_uses_single_bucket()) - { - _M_buckets = &_M_single_bucket; - _M_single_bucket = __ht._M_single_bucket; - } - - // Update, if necessary, bucket pointing to before begin that hasn't - // moved. - if (_M_begin()) - _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; - - __ht._M_reset(); - } - - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _Hashtable(const _Hashtable& __ht, const allocator_type& __a) - : __hashtable_base(__ht), - __map_base(__ht), - __rehash_base(__ht), - __hashtable_alloc(__node_alloc_type(__a)), - _M_buckets(), - _M_bucket_count(__ht._M_bucket_count), - _M_element_count(__ht._M_element_count), - _M_rehash_policy(__ht._M_rehash_policy) - { - _M_assign(__ht, - [this](const __node_type* __n) - { return this->_M_allocate_node(__n->_M_v()); }); - } - - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _Hashtable(_Hashtable&& __ht, const allocator_type& __a) - : __hashtable_base(__ht), - __map_base(__ht), - __rehash_base(__ht), - __hashtable_alloc(__node_alloc_type(__a)), - _M_buckets(nullptr), - _M_bucket_count(__ht._M_bucket_count), - _M_element_count(__ht._M_element_count), - _M_rehash_policy(__ht._M_rehash_policy) - { - if (__ht._M_node_allocator() == this->_M_node_allocator()) - { - if (__ht._M_uses_single_bucket()) - { - _M_buckets = &_M_single_bucket; - _M_single_bucket = __ht._M_single_bucket; - } - else - _M_buckets = __ht._M_buckets; - - _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; - // Update, if necessary, bucket pointing to before begin that hasn't - // moved. - if (_M_begin()) - _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; - __ht._M_reset(); - } - else - { - _M_assign(__ht, - [this](__node_type* __n) - { - return this->_M_allocate_node( - std::move_if_noexcept(__n->_M_v())); - }); - __ht.clear(); - } - } - - template - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - ~_Hashtable() noexcept - { - clear(); - _M_deallocate_buckets(); - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - swap(_Hashtable& __x) - noexcept(__and_<__is_nothrow_swappable<_H1>, - __is_nothrow_swappable<_Equal>>::value) - { - // The only base class with member variables is hash_code_base. - // We define _Hash_code_base::_M_swap because different - // specializations have different members. - this->_M_swap(__x); - - std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator()); - std::swap(_M_rehash_policy, __x._M_rehash_policy); - - // Deal properly with potentially moved instances. - if (this->_M_uses_single_bucket()) - { - if (!__x._M_uses_single_bucket()) - { - _M_buckets = __x._M_buckets; - __x._M_buckets = &__x._M_single_bucket; - } - } - else if (__x._M_uses_single_bucket()) - { - __x._M_buckets = _M_buckets; - _M_buckets = &_M_single_bucket; - } - else - std::swap(_M_buckets, __x._M_buckets); - - std::swap(_M_bucket_count, __x._M_bucket_count); - std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); - std::swap(_M_element_count, __x._M_element_count); - std::swap(_M_single_bucket, __x._M_single_bucket); - - // Fix buckets containing the _M_before_begin pointers that can't be - // swapped. - if (_M_begin()) - _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; - - if (__x._M_begin()) - __x._M_buckets[__x._M_bucket_index(__x._M_begin())] - = &__x._M_before_begin; - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - find(const key_type& __k) - -> iterator - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __n = _M_bucket_index(__k, __code); - __node_type* __p = _M_find_node(__n, __k, __code); - return __p ? iterator(__p) : end(); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - find(const key_type& __k) const - -> const_iterator - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __n = _M_bucket_index(__k, __code); - __node_type* __p = _M_find_node(__n, __k, __code); - return __p ? const_iterator(__p) : end(); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - count(const key_type& __k) const - -> size_type - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __n = _M_bucket_index(__k, __code); - __node_type* __p = _M_bucket_begin(__n); - if (!__p) - return 0; - - std::size_t __result = 0; - for (;; __p = __p->_M_next()) - { - if (this->_M_equals(__k, __code, __p)) - ++__result; - else if (__result) - // All equivalent values are next to each other, if we - // found a non-equivalent value after an equivalent one it - // means that we won't find any new equivalent value. - break; - if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) - break; - } - return __result; - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - equal_range(const key_type& __k) - -> pair - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __n = _M_bucket_index(__k, __code); - __node_type* __p = _M_find_node(__n, __k, __code); - - if (__p) - { - __node_type* __p1 = __p->_M_next(); - while (__p1 && _M_bucket_index(__p1) == __n - && this->_M_equals(__k, __code, __p1)) - __p1 = __p1->_M_next(); - - return std::make_pair(iterator(__p), iterator(__p1)); - } - else - return std::make_pair(end(), end()); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - equal_range(const key_type& __k) const - -> pair - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __n = _M_bucket_index(__k, __code); - __node_type* __p = _M_find_node(__n, __k, __code); - - if (__p) - { - __node_type* __p1 = __p->_M_next(); - while (__p1 && _M_bucket_index(__p1) == __n - && this->_M_equals(__k, __code, __p1)) - __p1 = __p1->_M_next(); - - return std::make_pair(const_iterator(__p), const_iterator(__p1)); - } - else - return std::make_pair(end(), end()); - } - - // Find the node whose key compares equal to k in the bucket n. - // Return nullptr if no node is found. - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_find_before_node(size_type __n, const key_type& __k, - __hash_code __code) const - -> __node_base* - { - __node_base* __prev_p = _M_buckets[__n]; - if (!__prev_p) - return nullptr; - - for (__node_type* __p = static_cast<__node_type*>(__prev_p->_M_nxt);; - __p = __p->_M_next()) - { - if (this->_M_equals(__k, __code, __p)) - return __prev_p; - - if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) - break; - __prev_p = __p; - } - return nullptr; - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_insert_bucket_begin(size_type __bkt, __node_type* __node) - { - if (_M_buckets[__bkt]) - { - // Bucket is not empty, we just need to insert the new node - // after the bucket before begin. - __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; - _M_buckets[__bkt]->_M_nxt = __node; - } - else - { - // The bucket is empty, the new node is inserted at the - // beginning of the singly-linked list and the bucket will - // contain _M_before_begin pointer. - __node->_M_nxt = _M_before_begin._M_nxt; - _M_before_begin._M_nxt = __node; - if (__node->_M_nxt) - // We must update former begin bucket that is pointing to - // _M_before_begin. - _M_buckets[_M_bucket_index(__node->_M_next())] = __node; - _M_buckets[__bkt] = &_M_before_begin; - } - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_remove_bucket_begin(size_type __bkt, __node_type* __next, - size_type __next_bkt) - { - if (!__next || __next_bkt != __bkt) - { - // Bucket is now empty - // First update next bucket if any - if (__next) - _M_buckets[__next_bkt] = _M_buckets[__bkt]; - - // Second update before begin node if necessary - if (&_M_before_begin == _M_buckets[__bkt]) - _M_before_begin._M_nxt = __next; - _M_buckets[__bkt] = nullptr; - } - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_get_previous_node(size_type __bkt, __node_base* __n) - -> __node_base* - { - __node_base* __prev_n = _M_buckets[__bkt]; - while (__prev_n->_M_nxt != __n) - __prev_n = __prev_n->_M_nxt; - return __prev_n; - } - - template - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_emplace(std::true_type, _Args&&... __args) - -> pair - { - // First build the node to get access to the hash code - __node_type* __node = this->_M_allocate_node(std::forward<_Args>(__args)...); - const key_type& __k = this->_M_extract()(__node->_M_v()); - __hash_code __code; - __try - { - __code = this->_M_hash_code(__k); - } - __catch(...) - { - this->_M_deallocate_node(__node); - __throw_exception_again; - } - - size_type __bkt = _M_bucket_index(__k, __code); - if (__node_type* __p = _M_find_node(__bkt, __k, __code)) - { - // There is already an equivalent node, no insertion - this->_M_deallocate_node(__node); - return std::make_pair(iterator(__p), false); - } - - // Insert the node - return std::make_pair(_M_insert_unique_node(__bkt, __code, __node), - true); - } - - template - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_emplace(const_iterator __hint, std::false_type, _Args&&... __args) - -> iterator - { - // First build the node to get its hash code. - __node_type* __node = - this->_M_allocate_node(std::forward<_Args>(__args)...); - - __hash_code __code; - __try - { - __code = this->_M_hash_code(this->_M_extract()(__node->_M_v())); - } - __catch(...) - { - this->_M_deallocate_node(__node); - __throw_exception_again; - } - - return _M_insert_multi_node(__hint._M_cur, __code, __node); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_insert_unique_node(size_type __bkt, __hash_code __code, - __node_type* __node) - -> iterator - { - const __rehash_state& __saved_state = _M_rehash_policy._M_state(); - std::pair __do_rehash - = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); - - __try - { - if (__do_rehash.first) - { - _M_rehash(__do_rehash.second, __saved_state); - __bkt = _M_bucket_index(this->_M_extract()(__node->_M_v()), __code); - } - - this->_M_store_code(__node, __code); - - // Always insert at the beginning of the bucket. - _M_insert_bucket_begin(__bkt, __node); - ++_M_element_count; - return iterator(__node); - } - __catch(...) - { - this->_M_deallocate_node(__node); - __throw_exception_again; - } - } - - // Insert node, in bucket bkt if no rehash (assumes no element with its key - // already present). Take ownership of the node, deallocate it on exception. - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_insert_multi_node(__node_type* __hint, __hash_code __code, - __node_type* __node) - -> iterator - { - const __rehash_state& __saved_state = _M_rehash_policy._M_state(); - std::pair __do_rehash - = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); - - __try - { - if (__do_rehash.first) - _M_rehash(__do_rehash.second, __saved_state); - - this->_M_store_code(__node, __code); - const key_type& __k = this->_M_extract()(__node->_M_v()); - size_type __bkt = _M_bucket_index(__k, __code); - - // Find the node before an equivalent one or use hint if it exists and - // if it is equivalent. - __node_base* __prev - = __builtin_expect(__hint != nullptr, false) - && this->_M_equals(__k, __code, __hint) - ? __hint - : _M_find_before_node(__bkt, __k, __code); - if (__prev) - { - // Insert after the node before the equivalent one. - __node->_M_nxt = __prev->_M_nxt; - __prev->_M_nxt = __node; - if (__builtin_expect(__prev == __hint, false)) - // hint might be the last bucket node, in this case we need to - // update next bucket. - if (__node->_M_nxt - && !this->_M_equals(__k, __code, __node->_M_next())) - { - size_type __next_bkt = _M_bucket_index(__node->_M_next()); - if (__next_bkt != __bkt) - _M_buckets[__next_bkt] = __node; - } - } - else - // The inserted node has no equivalent in the - // hashtable. We must insert the new node at the - // beginning of the bucket to preserve equivalent - // elements' relative positions. - _M_insert_bucket_begin(__bkt, __node); - ++_M_element_count; - return iterator(__node); - } - __catch(...) - { - this->_M_deallocate_node(__node); - __throw_exception_again; - } - } - - // Insert v if no element with its key is already present. - template - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_insert(_Arg&& __v, const _NodeGenerator& __node_gen, std::true_type) - -> pair - { - const key_type& __k = this->_M_extract()(__v); - __hash_code __code = this->_M_hash_code(__k); - size_type __bkt = _M_bucket_index(__k, __code); - - __node_type* __n = _M_find_node(__bkt, __k, __code); - if (__n) - return std::make_pair(iterator(__n), false); - - __n = __node_gen(std::forward<_Arg>(__v)); - return std::make_pair(_M_insert_unique_node(__bkt, __code, __n), true); - } - - // Insert v unconditionally. - template - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_insert(const_iterator __hint, _Arg&& __v, - const _NodeGenerator& __node_gen, std::false_type) - -> iterator - { - // First compute the hash code so that we don't do anything if it - // throws. - __hash_code __code = this->_M_hash_code(this->_M_extract()(__v)); - - // Second allocate new node so that we don't rehash if it throws. - __node_type* __node = __node_gen(std::forward<_Arg>(__v)); - - return _M_insert_multi_node(__hint._M_cur, __code, __node); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - erase(const_iterator __it) - -> iterator - { - __node_type* __n = __it._M_cur; - std::size_t __bkt = _M_bucket_index(__n); - - // Look for previous node to unlink it from the erased one, this - // is why we need buckets to contain the before begin to make - // this search fast. - __node_base* __prev_n = _M_get_previous_node(__bkt, __n); - return _M_erase(__bkt, __prev_n, __n); - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n) - -> iterator - { - if (__prev_n == _M_buckets[__bkt]) - _M_remove_bucket_begin(__bkt, __n->_M_next(), - __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); - else if (__n->_M_nxt) - { - size_type __next_bkt = _M_bucket_index(__n->_M_next()); - if (__next_bkt != __bkt) - _M_buckets[__next_bkt] = __prev_n; - } - - __prev_n->_M_nxt = __n->_M_nxt; - iterator __result(__n->_M_next()); - this->_M_deallocate_node(__n); - --_M_element_count; - - return __result; - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_erase(std::true_type, const key_type& __k) - -> size_type - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __bkt = _M_bucket_index(__k, __code); - - // Look for the node before the first matching node. - __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); - if (!__prev_n) - return 0; - - // We found a matching node, erase it. - __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); - _M_erase(__bkt, __prev_n, __n); - return 1; - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_erase(std::false_type, const key_type& __k) - -> size_type - { - __hash_code __code = this->_M_hash_code(__k); - std::size_t __bkt = _M_bucket_index(__k, __code); - - // Look for the node before the first matching node. - __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); - if (!__prev_n) - return 0; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 526. Is it undefined if a function in the standard changes - // in parameters? - // We use one loop to find all matching nodes and another to deallocate - // them so that the key stays valid during the first loop. It might be - // invalidated indirectly when destroying nodes. - __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); - __node_type* __n_last = __n; - std::size_t __n_last_bkt = __bkt; - do - { - __n_last = __n_last->_M_next(); - if (!__n_last) - break; - __n_last_bkt = _M_bucket_index(__n_last); - } - while (__n_last_bkt == __bkt && this->_M_equals(__k, __code, __n_last)); - - // Deallocate nodes. - size_type __result = 0; - do - { - __node_type* __p = __n->_M_next(); - this->_M_deallocate_node(__n); - __n = __p; - ++__result; - --_M_element_count; - } - while (__n != __n_last); - - if (__prev_n == _M_buckets[__bkt]) - _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); - else if (__n_last && __n_last_bkt != __bkt) - _M_buckets[__n_last_bkt] = __prev_n; - __prev_n->_M_nxt = __n_last; - return __result; - } - - template - auto - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - erase(const_iterator __first, const_iterator __last) - -> iterator - { - __node_type* __n = __first._M_cur; - __node_type* __last_n = __last._M_cur; - if (__n == __last_n) - return iterator(__n); - - std::size_t __bkt = _M_bucket_index(__n); - - __node_base* __prev_n = _M_get_previous_node(__bkt, __n); - bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); - std::size_t __n_bkt = __bkt; - for (;;) - { - do - { - __node_type* __tmp = __n; - __n = __n->_M_next(); - this->_M_deallocate_node(__tmp); - --_M_element_count; - if (!__n) - break; - __n_bkt = _M_bucket_index(__n); - } - while (__n != __last_n && __n_bkt == __bkt); - if (__is_bucket_begin) - _M_remove_bucket_begin(__bkt, __n, __n_bkt); - if (__n == __last_n) - break; - __is_bucket_begin = true; - __bkt = __n_bkt; - } - - if (__n && (__n_bkt != __bkt || __is_bucket_begin)) - _M_buckets[__n_bkt] = __prev_n; - __prev_n->_M_nxt = __n; - return iterator(__n); - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - clear() noexcept - { - this->_M_deallocate_nodes(_M_begin()); - __builtin_memset(_M_buckets, 0, _M_bucket_count * sizeof(__bucket_type)); - _M_element_count = 0; - _M_before_begin._M_nxt = nullptr; - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - rehash(size_type __n) - { - const __rehash_state& __saved_state = _M_rehash_policy._M_state(); - std::size_t __buckets - = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), - __n); - __buckets = _M_rehash_policy._M_next_bkt(__buckets); - - if (__buckets != _M_bucket_count) - _M_rehash(__buckets, __saved_state); - else - // No rehash, restore previous state to keep a consistent state. - _M_rehash_policy._M_reset(__saved_state); - } - - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_rehash(size_type __n, const __rehash_state& __state) - { - __try - { - _M_rehash_aux(__n, __unique_keys()); - } - __catch(...) - { - // A failure here means that buckets allocation failed. We only - // have to restore hash policy previous state. - _M_rehash_policy._M_reset(__state); - __throw_exception_again; - } - } - - // Rehash when there is no equivalent elements. - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_rehash_aux(size_type __n, std::true_type) - { - __bucket_type* __new_buckets = _M_allocate_buckets(__n); - __node_type* __p = _M_begin(); - _M_before_begin._M_nxt = nullptr; - std::size_t __bbegin_bkt = 0; - while (__p) - { - __node_type* __next = __p->_M_next(); - std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); - if (!__new_buckets[__bkt]) - { - __p->_M_nxt = _M_before_begin._M_nxt; - _M_before_begin._M_nxt = __p; - __new_buckets[__bkt] = &_M_before_begin; - if (__p->_M_nxt) - __new_buckets[__bbegin_bkt] = __p; - __bbegin_bkt = __bkt; - } - else - { - __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; - __new_buckets[__bkt]->_M_nxt = __p; - } - __p = __next; - } - - _M_deallocate_buckets(); - _M_bucket_count = __n; - _M_buckets = __new_buckets; - } - - // Rehash when there can be equivalent elements, preserve their relative - // order. - template - void - _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>:: - _M_rehash_aux(size_type __n, std::false_type) - { - __bucket_type* __new_buckets = _M_allocate_buckets(__n); - - __node_type* __p = _M_begin(); - _M_before_begin._M_nxt = nullptr; - std::size_t __bbegin_bkt = 0; - std::size_t __prev_bkt = 0; - __node_type* __prev_p = nullptr; - bool __check_bucket = false; - - while (__p) - { - __node_type* __next = __p->_M_next(); - std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); - - if (__prev_p && __prev_bkt == __bkt) - { - // Previous insert was already in this bucket, we insert after - // the previously inserted one to preserve equivalent elements - // relative order. - __p->_M_nxt = __prev_p->_M_nxt; - __prev_p->_M_nxt = __p; - - // Inserting after a node in a bucket require to check that we - // haven't change the bucket last node, in this case next - // bucket containing its before begin node must be updated. We - // schedule a check as soon as we move out of the sequence of - // equivalent nodes to limit the number of checks. - __check_bucket = true; - } - else - { - if (__check_bucket) - { - // Check if we shall update the next bucket because of - // insertions into __prev_bkt bucket. - if (__prev_p->_M_nxt) - { - std::size_t __next_bkt - = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), - __n); - if (__next_bkt != __prev_bkt) - __new_buckets[__next_bkt] = __prev_p; - } - __check_bucket = false; - } - - if (!__new_buckets[__bkt]) - { - __p->_M_nxt = _M_before_begin._M_nxt; - _M_before_begin._M_nxt = __p; - __new_buckets[__bkt] = &_M_before_begin; - if (__p->_M_nxt) - __new_buckets[__bbegin_bkt] = __p; - __bbegin_bkt = __bkt; - } - else - { - __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; - __new_buckets[__bkt]->_M_nxt = __p; - } - } - __prev_p = __p; - __prev_bkt = __bkt; - __p = __next; - } - - if (__check_bucket && __prev_p->_M_nxt) - { - std::size_t __next_bkt - = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), __n); - if (__next_bkt != __prev_bkt) - __new_buckets[__next_bkt] = __prev_p; - } - - _M_deallocate_buckets(); - _M_bucket_count = __n; - _M_buckets = __new_buckets; - } - -#if __cplusplus > 201402L - template class _Hash_merge_helper { }; -#endif // C++17 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // _HASHTABLE_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hashtable_policy.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hashtable_policy.h deleted file mode 100644 index 8af8c498d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hashtable_policy.h +++ /dev/null @@ -1,2129 +0,0 @@ -// Internal policy header for unordered_set and unordered_map -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/hashtable_policy.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. - * @headername{unordered_map,unordered_set} - */ - -#ifndef _HASHTABLE_POLICY_H -#define _HASHTABLE_POLICY_H 1 - -#include // for std::min. - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - class _Hashtable; - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace __detail -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup hashtable-detail Base and Implementation Classes - * @ingroup unordered_associative_containers - * @{ - */ - template - struct _Hashtable_base; - - // Helper function: return distance(first, last) for forward - // iterators, or 0 for input iterators. - template - inline typename std::iterator_traits<_Iterator>::difference_type - __distance_fw(_Iterator __first, _Iterator __last, - std::input_iterator_tag) - { return 0; } - - template - inline typename std::iterator_traits<_Iterator>::difference_type - __distance_fw(_Iterator __first, _Iterator __last, - std::forward_iterator_tag) - { return std::distance(__first, __last); } - - template - inline typename std::iterator_traits<_Iterator>::difference_type - __distance_fw(_Iterator __first, _Iterator __last) - { - typedef typename std::iterator_traits<_Iterator>::iterator_category _Tag; - return __distance_fw(__first, __last, _Tag()); - } - - // Helper type used to detect whether the hash functor is noexcept. - template - struct __is_noexcept_hash : std::__bool_constant< - noexcept(declval()(declval()))> - { }; - - struct _Identity - { - template - _Tp&& - operator()(_Tp&& __x) const - { return std::forward<_Tp>(__x); } - }; - - struct _Select1st - { - template - auto - operator()(_Tp&& __x) const - -> decltype(std::get<0>(std::forward<_Tp>(__x))) - { return std::get<0>(std::forward<_Tp>(__x)); } - }; - - template - struct _Hashtable_alloc; - - // Functor recycling a pool of nodes and using allocation once the pool is - // empty. - template - struct _ReuseOrAllocNode - { - private: - using __node_alloc_type = _NodeAlloc; - using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; - using __value_alloc_type = typename __hashtable_alloc::__value_alloc_type; - using __value_alloc_traits = - typename __hashtable_alloc::__value_alloc_traits; - using __node_alloc_traits = - typename __hashtable_alloc::__node_alloc_traits; - using __node_type = typename __hashtable_alloc::__node_type; - - public: - _ReuseOrAllocNode(__node_type* __nodes, __hashtable_alloc& __h) - : _M_nodes(__nodes), _M_h(__h) { } - _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; - - ~_ReuseOrAllocNode() - { _M_h._M_deallocate_nodes(_M_nodes); } - - template - __node_type* - operator()(_Arg&& __arg) const - { - if (_M_nodes) - { - __node_type* __node = _M_nodes; - _M_nodes = _M_nodes->_M_next(); - __node->_M_nxt = nullptr; - __value_alloc_type __a(_M_h._M_node_allocator()); - __value_alloc_traits::destroy(__a, __node->_M_valptr()); - __try - { - __value_alloc_traits::construct(__a, __node->_M_valptr(), - std::forward<_Arg>(__arg)); - } - __catch(...) - { - __node->~__node_type(); - __node_alloc_traits::deallocate(_M_h._M_node_allocator(), - __node, 1); - __throw_exception_again; - } - return __node; - } - return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); - } - - private: - mutable __node_type* _M_nodes; - __hashtable_alloc& _M_h; - }; - - // Functor similar to the previous one but without any pool of nodes to - // recycle. - template - struct _AllocNode - { - private: - using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; - using __node_type = typename __hashtable_alloc::__node_type; - - public: - _AllocNode(__hashtable_alloc& __h) - : _M_h(__h) { } - - template - __node_type* - operator()(_Arg&& __arg) const - { return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); } - - private: - __hashtable_alloc& _M_h; - }; - - // Auxiliary types used for all instantiations of _Hashtable nodes - // and iterators. - - /** - * struct _Hashtable_traits - * - * Important traits for hash tables. - * - * @tparam _Cache_hash_code Boolean value. True if the value of - * the hash function is stored along with the value. This is a - * time-space tradeoff. Storing it may improve lookup speed by - * reducing the number of times we need to call the _Equal - * function. - * - * @tparam _Constant_iterators Boolean value. True if iterator and - * const_iterator are both constant iterator types. This is true - * for unordered_set and unordered_multiset, false for - * unordered_map and unordered_multimap. - * - * @tparam _Unique_keys Boolean value. True if the return value - * of _Hashtable::count(k) is always at most one, false if it may - * be an arbitrary number. This is true for unordered_set and - * unordered_map, false for unordered_multiset and - * unordered_multimap. - */ - template - struct _Hashtable_traits - { - using __hash_cached = __bool_constant<_Cache_hash_code>; - using __constant_iterators = __bool_constant<_Constant_iterators>; - using __unique_keys = __bool_constant<_Unique_keys>; - }; - - /** - * struct _Hash_node_base - * - * Nodes, used to wrap elements stored in the hash table. A policy - * template parameter of class template _Hashtable controls whether - * nodes also store a hash code. In some cases (e.g. strings) this - * may be a performance win. - */ - struct _Hash_node_base - { - _Hash_node_base* _M_nxt; - - _Hash_node_base() noexcept : _M_nxt() { } - - _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } - }; - - /** - * struct _Hash_node_value_base - * - * Node type with the value to store. - */ - template - struct _Hash_node_value_base : _Hash_node_base - { - typedef _Value value_type; - - __gnu_cxx::__aligned_buffer<_Value> _M_storage; - - _Value* - _M_valptr() noexcept - { return _M_storage._M_ptr(); } - - const _Value* - _M_valptr() const noexcept - { return _M_storage._M_ptr(); } - - _Value& - _M_v() noexcept - { return *_M_valptr(); } - - const _Value& - _M_v() const noexcept - { return *_M_valptr(); } - }; - - /** - * Primary template struct _Hash_node. - */ - template - struct _Hash_node; - - /** - * Specialization for nodes with caches, struct _Hash_node. - * - * Base class is __detail::_Hash_node_value_base. - */ - template - struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value> - { - std::size_t _M_hash_code; - - _Hash_node* - _M_next() const noexcept - { return static_cast<_Hash_node*>(this->_M_nxt); } - }; - - /** - * Specialization for nodes without caches, struct _Hash_node. - * - * Base class is __detail::_Hash_node_value_base. - */ - template - struct _Hash_node<_Value, false> : _Hash_node_value_base<_Value> - { - _Hash_node* - _M_next() const noexcept - { return static_cast<_Hash_node*>(this->_M_nxt); } - }; - - /// Base class for node iterators. - template - struct _Node_iterator_base - { - using __node_type = _Hash_node<_Value, _Cache_hash_code>; - - __node_type* _M_cur; - - _Node_iterator_base(__node_type* __p) noexcept - : _M_cur(__p) { } - - void - _M_incr() noexcept - { _M_cur = _M_cur->_M_next(); } - }; - - template - inline bool - operator==(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, - const _Node_iterator_base<_Value, _Cache_hash_code >& __y) - noexcept - { return __x._M_cur == __y._M_cur; } - - template - inline bool - operator!=(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, - const _Node_iterator_base<_Value, _Cache_hash_code>& __y) - noexcept - { return __x._M_cur != __y._M_cur; } - - /// Node iterators, used to iterate through all the hashtable. - template - struct _Node_iterator - : public _Node_iterator_base<_Value, __cache> - { - private: - using __base_type = _Node_iterator_base<_Value, __cache>; - using __node_type = typename __base_type::__node_type; - - public: - typedef _Value value_type; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - using pointer = typename std::conditional<__constant_iterators, - const _Value*, _Value*>::type; - - using reference = typename std::conditional<__constant_iterators, - const _Value&, _Value&>::type; - - _Node_iterator() noexcept - : __base_type(0) { } - - explicit - _Node_iterator(__node_type* __p) noexcept - : __base_type(__p) { } - - reference - operator*() const noexcept - { return this->_M_cur->_M_v(); } - - pointer - operator->() const noexcept - { return this->_M_cur->_M_valptr(); } - - _Node_iterator& - operator++() noexcept - { - this->_M_incr(); - return *this; - } - - _Node_iterator - operator++(int) noexcept - { - _Node_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - /// Node const_iterators, used to iterate through all the hashtable. - template - struct _Node_const_iterator - : public _Node_iterator_base<_Value, __cache> - { - private: - using __base_type = _Node_iterator_base<_Value, __cache>; - using __node_type = typename __base_type::__node_type; - - public: - typedef _Value value_type; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - typedef const _Value* pointer; - typedef const _Value& reference; - - _Node_const_iterator() noexcept - : __base_type(0) { } - - explicit - _Node_const_iterator(__node_type* __p) noexcept - : __base_type(__p) { } - - _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, - __cache>& __x) noexcept - : __base_type(__x._M_cur) { } - - reference - operator*() const noexcept - { return this->_M_cur->_M_v(); } - - pointer - operator->() const noexcept - { return this->_M_cur->_M_valptr(); } - - _Node_const_iterator& - operator++() noexcept - { - this->_M_incr(); - return *this; - } - - _Node_const_iterator - operator++(int) noexcept - { - _Node_const_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - // Many of class template _Hashtable's template parameters are policy - // classes. These are defaults for the policies. - - /// Default range hashing function: use division to fold a large number - /// into the range [0, N). - struct _Mod_range_hashing - { - typedef std::size_t first_argument_type; - typedef std::size_t second_argument_type; - typedef std::size_t result_type; - - result_type - operator()(first_argument_type __num, - second_argument_type __den) const noexcept - { return __num % __den; } - }; - - /// Default ranged hash function H. In principle it should be a - /// function object composed from objects of type H1 and H2 such that - /// h(k, N) = h2(h1(k), N), but that would mean making extra copies of - /// h1 and h2. So instead we'll just use a tag to tell class template - /// hashtable to do that composition. - struct _Default_ranged_hash { }; - - /// Default value for rehash policy. Bucket size is (usually) the - /// smallest prime that keeps the load factor small enough. - struct _Prime_rehash_policy - { - using __has_load_factor = std::true_type; - - _Prime_rehash_policy(float __z = 1.0) noexcept - : _M_max_load_factor(__z), _M_next_resize(0) { } - - float - max_load_factor() const noexcept - { return _M_max_load_factor; } - - // Return a bucket size no smaller than n. - std::size_t - _M_next_bkt(std::size_t __n) const; - - // Return a bucket count appropriate for n elements - std::size_t - _M_bkt_for_elements(std::size_t __n) const - { return __builtin_ceil(__n / (long double)_M_max_load_factor); } - - // __n_bkt is current bucket count, __n_elt is current element count, - // and __n_ins is number of elements to be inserted. Do we need to - // increase bucket count? If so, return make_pair(true, n), where n - // is the new bucket count. If not, return make_pair(false, 0). - std::pair - _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, - std::size_t __n_ins) const; - - typedef std::size_t _State; - - _State - _M_state() const - { return _M_next_resize; } - - void - _M_reset() noexcept - { _M_next_resize = 0; } - - void - _M_reset(_State __state) - { _M_next_resize = __state; } - - static const std::size_t _S_growth_factor = 2; - - float _M_max_load_factor; - mutable std::size_t _M_next_resize; - }; - - /// Range hashing function assuming that second arg is a power of 2. - struct _Mask_range_hashing - { - typedef std::size_t first_argument_type; - typedef std::size_t second_argument_type; - typedef std::size_t result_type; - - result_type - operator()(first_argument_type __num, - second_argument_type __den) const noexcept - { return __num & (__den - 1); } - }; - - /// Compute closest power of 2. - _GLIBCXX14_CONSTEXPR - inline std::size_t - __clp2(std::size_t __n) noexcept - { -#if __SIZEOF_SIZE_T__ >= 8 - std::uint_fast64_t __x = __n; -#else - std::uint_fast32_t __x = __n; -#endif - // Algorithm from Hacker's Delight, Figure 3-3. - __x = __x - 1; - __x = __x | (__x >> 1); - __x = __x | (__x >> 2); - __x = __x | (__x >> 4); - __x = __x | (__x >> 8); - __x = __x | (__x >>16); -#if __SIZEOF_SIZE_T__ >= 8 - __x = __x | (__x >>32); -#endif - return __x + 1; - } - - /// Rehash policy providing power of 2 bucket numbers. Avoids modulo - /// operations. - struct _Power2_rehash_policy - { - using __has_load_factor = std::true_type; - - _Power2_rehash_policy(float __z = 1.0) noexcept - : _M_max_load_factor(__z), _M_next_resize(0) { } - - float - max_load_factor() const noexcept - { return _M_max_load_factor; } - - // Return a bucket size no smaller than n (as long as n is not above the - // highest power of 2). - std::size_t - _M_next_bkt(std::size_t __n) noexcept - { - const auto __max_width = std::min(sizeof(size_t), 8); - const auto __max_bkt = size_t(1) << (__max_width * __CHAR_BIT__ - 1); - std::size_t __res = __clp2(__n); - - if (__res == __n) - __res <<= 1; - - if (__res == 0) - __res = __max_bkt; - - if (__res == __max_bkt) - // Set next resize to the max value so that we never try to rehash again - // as we already reach the biggest possible bucket number. - // Note that it might result in max_load_factor not being respected. - _M_next_resize = std::size_t(-1); - else - _M_next_resize - = __builtin_ceil(__res * (long double)_M_max_load_factor); - - return __res; - } - - // Return a bucket count appropriate for n elements - std::size_t - _M_bkt_for_elements(std::size_t __n) const noexcept - { return __builtin_ceil(__n / (long double)_M_max_load_factor); } - - // __n_bkt is current bucket count, __n_elt is current element count, - // and __n_ins is number of elements to be inserted. Do we need to - // increase bucket count? If so, return make_pair(true, n), where n - // is the new bucket count. If not, return make_pair(false, 0). - std::pair - _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, - std::size_t __n_ins) noexcept - { - if (__n_elt + __n_ins >= _M_next_resize) - { - long double __min_bkts = (__n_elt + __n_ins) - / (long double)_M_max_load_factor; - if (__min_bkts >= __n_bkt) - return std::make_pair(true, - _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, - __n_bkt * _S_growth_factor))); - - _M_next_resize - = __builtin_floor(__n_bkt * (long double)_M_max_load_factor); - return std::make_pair(false, 0); - } - else - return std::make_pair(false, 0); - } - - typedef std::size_t _State; - - _State - _M_state() const noexcept - { return _M_next_resize; } - - void - _M_reset() noexcept - { _M_next_resize = 0; } - - void - _M_reset(_State __state) noexcept - { _M_next_resize = __state; } - - static const std::size_t _S_growth_factor = 2; - - float _M_max_load_factor; - std::size_t _M_next_resize; - }; - - // Base classes for std::_Hashtable. We define these base classes - // because in some cases we want to do different things depending on - // the value of a policy class. In some cases the policy class - // affects which member functions and nested typedefs are defined; - // we handle that by specializing base class templates. Several of - // the base class templates need to access other members of class - // template _Hashtable, so we use a variant of the "Curiously - // Recurring Template Pattern" (CRTP) technique. - - /** - * Primary class template _Map_base. - * - * If the hashtable has a value type of the form pair and a - * key extraction policy (_ExtractKey) that returns the first part - * of the pair, the hashtable gets a mapped_type typedef. If it - * satisfies those criteria and also has unique keys, then it also - * gets an operator[]. - */ - template - struct _Map_base { }; - - /// Partial specialization, __unique_keys set to false. - template - struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, false> - { - using mapped_type = typename std::tuple_element<1, _Pair>::type; - }; - - /// Partial specialization, __unique_keys set to true. - template - struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true> - { - private: - using __hashtable_base = __detail::_Hashtable_base<_Key, _Pair, - _Select1st, - _Equal, _H1, _H2, _Hash, - _Traits>; - - using __hashtable = _Hashtable<_Key, _Pair, _Alloc, - _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>; - - using __hash_code = typename __hashtable_base::__hash_code; - using __node_type = typename __hashtable_base::__node_type; - - public: - using key_type = typename __hashtable_base::key_type; - using iterator = typename __hashtable_base::iterator; - using mapped_type = typename std::tuple_element<1, _Pair>::type; - - mapped_type& - operator[](const key_type& __k); - - mapped_type& - operator[](key_type&& __k); - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 761. unordered_map needs an at() member function. - mapped_type& - at(const key_type& __k); - - const mapped_type& - at(const key_type& __k) const; - }; - - template - auto - _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: - operator[](const key_type& __k) - -> mapped_type& - { - __hashtable* __h = static_cast<__hashtable*>(this); - __hash_code __code = __h->_M_hash_code(__k); - std::size_t __n = __h->_M_bucket_index(__k, __code); - __node_type* __p = __h->_M_find_node(__n, __k, __code); - - if (!__p) - { - __p = __h->_M_allocate_node(std::piecewise_construct, - std::tuple(__k), - std::tuple<>()); - return __h->_M_insert_unique_node(__n, __code, __p)->second; - } - - return __p->_M_v().second; - } - - template - auto - _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: - operator[](key_type&& __k) - -> mapped_type& - { - __hashtable* __h = static_cast<__hashtable*>(this); - __hash_code __code = __h->_M_hash_code(__k); - std::size_t __n = __h->_M_bucket_index(__k, __code); - __node_type* __p = __h->_M_find_node(__n, __k, __code); - - if (!__p) - { - __p = __h->_M_allocate_node(std::piecewise_construct, - std::forward_as_tuple(std::move(__k)), - std::tuple<>()); - return __h->_M_insert_unique_node(__n, __code, __p)->second; - } - - return __p->_M_v().second; - } - - template - auto - _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: - at(const key_type& __k) - -> mapped_type& - { - __hashtable* __h = static_cast<__hashtable*>(this); - __hash_code __code = __h->_M_hash_code(__k); - std::size_t __n = __h->_M_bucket_index(__k, __code); - __node_type* __p = __h->_M_find_node(__n, __k, __code); - - if (!__p) - __throw_out_of_range(__N("_Map_base::at")); - return __p->_M_v().second; - } - - template - auto - _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: - at(const key_type& __k) const - -> const mapped_type& - { - const __hashtable* __h = static_cast(this); - __hash_code __code = __h->_M_hash_code(__k); - std::size_t __n = __h->_M_bucket_index(__k, __code); - __node_type* __p = __h->_M_find_node(__n, __k, __code); - - if (!__p) - __throw_out_of_range(__N("_Map_base::at")); - return __p->_M_v().second; - } - - /** - * Primary class template _Insert_base. - * - * Defines @c insert member functions appropriate to all _Hashtables. - */ - template - struct _Insert_base - { - protected: - using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - - using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _Traits>; - - using value_type = typename __hashtable_base::value_type; - using iterator = typename __hashtable_base::iterator; - using const_iterator = typename __hashtable_base::const_iterator; - using size_type = typename __hashtable_base::size_type; - - using __unique_keys = typename __hashtable_base::__unique_keys; - using __ireturn_type = typename __hashtable_base::__ireturn_type; - using __node_type = _Hash_node<_Value, _Traits::__hash_cached::value>; - using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; - using __node_gen_type = _AllocNode<__node_alloc_type>; - - __hashtable& - _M_conjure_hashtable() - { return *(static_cast<__hashtable*>(this)); } - - template - void - _M_insert_range(_InputIterator __first, _InputIterator __last, - const _NodeGetter&); - - public: - __ireturn_type - insert(const value_type& __v) - { - __hashtable& __h = _M_conjure_hashtable(); - __node_gen_type __node_gen(__h); - return __h._M_insert(__v, __node_gen, __unique_keys()); - } - - iterator - insert(const_iterator __hint, const value_type& __v) - { - __hashtable& __h = _M_conjure_hashtable(); - __node_gen_type __node_gen(__h); - return __h._M_insert(__hint, __v, __node_gen, __unique_keys()); - } - - void - insert(initializer_list __l) - { this->insert(__l.begin(), __l.end()); } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - __hashtable& __h = _M_conjure_hashtable(); - __node_gen_type __node_gen(__h); - return _M_insert_range(__first, __last, __node_gen); - } - }; - - template - template - void - _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>:: - _M_insert_range(_InputIterator __first, _InputIterator __last, - const _NodeGetter& __node_gen) - { - using __rehash_type = typename __hashtable::__rehash_type; - using __rehash_state = typename __hashtable::__rehash_state; - using pair_type = std::pair; - - size_type __n_elt = __detail::__distance_fw(__first, __last); - - __hashtable& __h = _M_conjure_hashtable(); - __rehash_type& __rehash = __h._M_rehash_policy; - const __rehash_state& __saved_state = __rehash._M_state(); - pair_type __do_rehash = __rehash._M_need_rehash(__h._M_bucket_count, - __h._M_element_count, - __n_elt); - - if (__do_rehash.first) - __h._M_rehash(__do_rehash.second, __saved_state); - - for (; __first != __last; ++__first) - __h._M_insert(*__first, __node_gen, __unique_keys()); - } - - /** - * Primary class template _Insert. - * - * Defines @c insert member functions that depend on _Hashtable policies, - * via partial specializations. - */ - template - struct _Insert; - - /// Specialization. - template - struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits, true> - : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits> - { - using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - - using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _Traits>; - - using value_type = typename __base_type::value_type; - using iterator = typename __base_type::iterator; - using const_iterator = typename __base_type::const_iterator; - - using __unique_keys = typename __base_type::__unique_keys; - using __ireturn_type = typename __hashtable_base::__ireturn_type; - using __hashtable = typename __base_type::__hashtable; - using __node_gen_type = typename __base_type::__node_gen_type; - - using __base_type::insert; - - __ireturn_type - insert(value_type&& __v) - { - __hashtable& __h = this->_M_conjure_hashtable(); - __node_gen_type __node_gen(__h); - return __h._M_insert(std::move(__v), __node_gen, __unique_keys()); - } - - iterator - insert(const_iterator __hint, value_type&& __v) - { - __hashtable& __h = this->_M_conjure_hashtable(); - __node_gen_type __node_gen(__h); - return __h._M_insert(__hint, std::move(__v), __node_gen, - __unique_keys()); - } - }; - - /// Specialization. - template - struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits, false> - : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits> - { - using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - using value_type = typename __base_type::value_type; - using iterator = typename __base_type::iterator; - using const_iterator = typename __base_type::const_iterator; - - using __unique_keys = typename __base_type::__unique_keys; - using __hashtable = typename __base_type::__hashtable; - using __ireturn_type = typename __base_type::__ireturn_type; - - using __base_type::insert; - - template - using __is_cons = std::is_constructible; - - template - using _IFcons = std::enable_if<__is_cons<_Pair>::value>; - - template - using _IFconsp = typename _IFcons<_Pair>::type; - - template> - __ireturn_type - insert(_Pair&& __v) - { - __hashtable& __h = this->_M_conjure_hashtable(); - return __h._M_emplace(__unique_keys(), std::forward<_Pair>(__v)); - } - - template> - iterator - insert(const_iterator __hint, _Pair&& __v) - { - __hashtable& __h = this->_M_conjure_hashtable(); - return __h._M_emplace(__hint, __unique_keys(), - std::forward<_Pair>(__v)); - } - }; - - template - using __has_load_factor = typename _Policy::__has_load_factor; - - /** - * Primary class template _Rehash_base. - * - * Give hashtable the max_load_factor functions and reserve iff the - * rehash policy supports it. - */ - template> - struct _Rehash_base; - - /// Specialization when rehash policy doesn't provide load factor management. - template - struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, - std::false_type> - { - }; - - /// Specialization when rehash policy provide load factor management. - template - struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, - std::true_type> - { - using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, _Traits>; - - float - max_load_factor() const noexcept - { - const __hashtable* __this = static_cast(this); - return __this->__rehash_policy().max_load_factor(); - } - - void - max_load_factor(float __z) - { - __hashtable* __this = static_cast<__hashtable*>(this); - __this->__rehash_policy(_RehashPolicy(__z)); - } - - void - reserve(std::size_t __n) - { - __hashtable* __this = static_cast<__hashtable*>(this); - __this->rehash(__builtin_ceil(__n / max_load_factor())); - } - }; - - /** - * Primary class template _Hashtable_ebo_helper. - * - * Helper class using EBO when it is not forbidden (the type is not - * final) and when it is worth it (the type is empty.) - */ - template - struct _Hashtable_ebo_helper; - - /// Specialization using EBO. - template - struct _Hashtable_ebo_helper<_Nm, _Tp, true> - : private _Tp - { - _Hashtable_ebo_helper() = default; - - template - _Hashtable_ebo_helper(_OtherTp&& __tp) - : _Tp(std::forward<_OtherTp>(__tp)) - { } - - static const _Tp& - _S_cget(const _Hashtable_ebo_helper& __eboh) - { return static_cast(__eboh); } - - static _Tp& - _S_get(_Hashtable_ebo_helper& __eboh) - { return static_cast<_Tp&>(__eboh); } - }; - - /// Specialization not using EBO. - template - struct _Hashtable_ebo_helper<_Nm, _Tp, false> - { - _Hashtable_ebo_helper() = default; - - template - _Hashtable_ebo_helper(_OtherTp&& __tp) - : _M_tp(std::forward<_OtherTp>(__tp)) - { } - - static const _Tp& - _S_cget(const _Hashtable_ebo_helper& __eboh) - { return __eboh._M_tp; } - - static _Tp& - _S_get(_Hashtable_ebo_helper& __eboh) - { return __eboh._M_tp; } - - private: - _Tp _M_tp; - }; - - /** - * Primary class template _Local_iterator_base. - * - * Base class for local iterators, used to iterate within a bucket - * but not between buckets. - */ - template - struct _Local_iterator_base; - - /** - * Primary class template _Hash_code_base. - * - * Encapsulates two policy issues that aren't quite orthogonal. - * (1) the difference between using a ranged hash function and using - * the combination of a hash function and a range-hashing function. - * In the former case we don't have such things as hash codes, so - * we have a dummy type as placeholder. - * (2) Whether or not we cache hash codes. Caching hash codes is - * meaningless if we have a ranged hash function. - * - * We also put the key extraction objects here, for convenience. - * Each specialization derives from one or more of the template - * parameters to benefit from Ebo. This is important as this type - * is inherited in some cases by the _Local_iterator_base type used - * to implement local_iterator and const_local_iterator. As with - * any iterator type we prefer to make it as small as possible. - * - * Primary template is unused except as a hook for specializations. - */ - template - struct _Hash_code_base; - - /// Specialization: ranged hash function, no caching hash codes. H1 - /// and H2 are provided but ignored. We define a dummy hash code type. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false> - : private _Hashtable_ebo_helper<0, _ExtractKey>, - private _Hashtable_ebo_helper<1, _Hash> - { - private: - using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; - using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; - - protected: - typedef void* __hash_code; - typedef _Hash_node<_Value, false> __node_type; - - // We need the default constructor for the local iterators and _Hashtable - // default constructor. - _Hash_code_base() = default; - - _Hash_code_base(const _ExtractKey& __ex, const _H1&, const _H2&, - const _Hash& __h) - : __ebo_extract_key(__ex), __ebo_hash(__h) { } - - __hash_code - _M_hash_code(const _Key& __key) const - { return 0; } - - std::size_t - _M_bucket_index(const _Key& __k, __hash_code, std::size_t __n) const - { return _M_ranged_hash()(__k, __n); } - - std::size_t - _M_bucket_index(const __node_type* __p, std::size_t __n) const - noexcept( noexcept(declval()(declval(), - (std::size_t)0)) ) - { return _M_ranged_hash()(_M_extract()(__p->_M_v()), __n); } - - void - _M_store_code(__node_type*, __hash_code) const - { } - - void - _M_copy_code(__node_type*, const __node_type*) const - { } - - void - _M_swap(_Hash_code_base& __x) - { - std::swap(_M_extract(), __x._M_extract()); - std::swap(_M_ranged_hash(), __x._M_ranged_hash()); - } - - const _ExtractKey& - _M_extract() const { return __ebo_extract_key::_S_cget(*this); } - - _ExtractKey& - _M_extract() { return __ebo_extract_key::_S_get(*this); } - - const _Hash& - _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); } - - _Hash& - _M_ranged_hash() { return __ebo_hash::_S_get(*this); } - }; - - // No specialization for ranged hash function while caching hash codes. - // That combination is meaningless, and trying to do it is an error. - - /// Specialization: ranged hash function, cache hash codes. This - /// combination is meaningless, so we provide only a declaration - /// and no definition. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>; - - /// Specialization: hash function and range-hashing function, no - /// caching of hash codes. - /// Provides typedef and accessor required by C++ 11. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, - _Default_ranged_hash, false> - : private _Hashtable_ebo_helper<0, _ExtractKey>, - private _Hashtable_ebo_helper<1, _H1>, - private _Hashtable_ebo_helper<2, _H2> - { - private: - using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; - using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; - using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; - - // Gives the local iterator implementation access to _M_bucket_index(). - friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, - _Default_ranged_hash, false>; - - public: - typedef _H1 hasher; - - hasher - hash_function() const - { return _M_h1(); } - - protected: - typedef std::size_t __hash_code; - typedef _Hash_node<_Value, false> __node_type; - - // We need the default constructor for the local iterators and _Hashtable - // default constructor. - _Hash_code_base() = default; - - _Hash_code_base(const _ExtractKey& __ex, - const _H1& __h1, const _H2& __h2, - const _Default_ranged_hash&) - : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } - - __hash_code - _M_hash_code(const _Key& __k) const - { return _M_h1()(__k); } - - std::size_t - _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const - { return _M_h2()(__c, __n); } - - std::size_t - _M_bucket_index(const __node_type* __p, std::size_t __n) const - noexcept( noexcept(declval()(declval())) - && noexcept(declval()((__hash_code)0, - (std::size_t)0)) ) - { return _M_h2()(_M_h1()(_M_extract()(__p->_M_v())), __n); } - - void - _M_store_code(__node_type*, __hash_code) const - { } - - void - _M_copy_code(__node_type*, const __node_type*) const - { } - - void - _M_swap(_Hash_code_base& __x) - { - std::swap(_M_extract(), __x._M_extract()); - std::swap(_M_h1(), __x._M_h1()); - std::swap(_M_h2(), __x._M_h2()); - } - - const _ExtractKey& - _M_extract() const { return __ebo_extract_key::_S_cget(*this); } - - _ExtractKey& - _M_extract() { return __ebo_extract_key::_S_get(*this); } - - const _H1& - _M_h1() const { return __ebo_h1::_S_cget(*this); } - - _H1& - _M_h1() { return __ebo_h1::_S_get(*this); } - - const _H2& - _M_h2() const { return __ebo_h2::_S_cget(*this); } - - _H2& - _M_h2() { return __ebo_h2::_S_get(*this); } - }; - - /// Specialization: hash function and range-hashing function, - /// caching hash codes. H is provided but ignored. Provides - /// typedef and accessor required by C++ 11. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, - _Default_ranged_hash, true> - : private _Hashtable_ebo_helper<0, _ExtractKey>, - private _Hashtable_ebo_helper<1, _H1>, - private _Hashtable_ebo_helper<2, _H2> - { - private: - // Gives the local iterator implementation access to _M_h2(). - friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, - _Default_ranged_hash, true>; - - using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; - using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; - using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; - - public: - typedef _H1 hasher; - - hasher - hash_function() const - { return _M_h1(); } - - protected: - typedef std::size_t __hash_code; - typedef _Hash_node<_Value, true> __node_type; - - // We need the default constructor for _Hashtable default constructor. - _Hash_code_base() = default; - _Hash_code_base(const _ExtractKey& __ex, - const _H1& __h1, const _H2& __h2, - const _Default_ranged_hash&) - : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } - - __hash_code - _M_hash_code(const _Key& __k) const - { return _M_h1()(__k); } - - std::size_t - _M_bucket_index(const _Key&, __hash_code __c, - std::size_t __n) const - { return _M_h2()(__c, __n); } - - std::size_t - _M_bucket_index(const __node_type* __p, std::size_t __n) const - noexcept( noexcept(declval()((__hash_code)0, - (std::size_t)0)) ) - { return _M_h2()(__p->_M_hash_code, __n); } - - void - _M_store_code(__node_type* __n, __hash_code __c) const - { __n->_M_hash_code = __c; } - - void - _M_copy_code(__node_type* __to, const __node_type* __from) const - { __to->_M_hash_code = __from->_M_hash_code; } - - void - _M_swap(_Hash_code_base& __x) - { - std::swap(_M_extract(), __x._M_extract()); - std::swap(_M_h1(), __x._M_h1()); - std::swap(_M_h2(), __x._M_h2()); - } - - const _ExtractKey& - _M_extract() const { return __ebo_extract_key::_S_cget(*this); } - - _ExtractKey& - _M_extract() { return __ebo_extract_key::_S_get(*this); } - - const _H1& - _M_h1() const { return __ebo_h1::_S_cget(*this); } - - _H1& - _M_h1() { return __ebo_h1::_S_get(*this); } - - const _H2& - _M_h2() const { return __ebo_h2::_S_cget(*this); } - - _H2& - _M_h2() { return __ebo_h2::_S_get(*this); } - }; - - /** - * Primary class template _Equal_helper. - * - */ - template - struct _Equal_helper; - - /// Specialization. - template - struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, true> - { - static bool - _S_equals(const _Equal& __eq, const _ExtractKey& __extract, - const _Key& __k, _HashCodeType __c, _Hash_node<_Value, true>* __n) - { return __c == __n->_M_hash_code && __eq(__k, __extract(__n->_M_v())); } - }; - - /// Specialization. - template - struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, false> - { - static bool - _S_equals(const _Equal& __eq, const _ExtractKey& __extract, - const _Key& __k, _HashCodeType, _Hash_node<_Value, false>* __n) - { return __eq(__k, __extract(__n->_M_v())); } - }; - - - /// Partial specialization used when nodes contain a cached hash code. - template - struct _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, true> - : private _Hashtable_ebo_helper<0, _H2> - { - protected: - using __base_type = _Hashtable_ebo_helper<0, _H2>; - using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, true>; - - _Local_iterator_base() = default; - _Local_iterator_base(const __hash_code_base& __base, - _Hash_node<_Value, true>* __p, - std::size_t __bkt, std::size_t __bkt_count) - : __base_type(__base._M_h2()), - _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) { } - - void - _M_incr() - { - _M_cur = _M_cur->_M_next(); - if (_M_cur) - { - std::size_t __bkt - = __base_type::_S_get(*this)(_M_cur->_M_hash_code, - _M_bucket_count); - if (__bkt != _M_bucket) - _M_cur = nullptr; - } - } - - _Hash_node<_Value, true>* _M_cur; - std::size_t _M_bucket; - std::size_t _M_bucket_count; - - public: - const void* - _M_curr() const { return _M_cur; } // for equality ops - - std::size_t - _M_get_bucket() const { return _M_bucket; } // for debug mode - }; - - // Uninitialized storage for a _Hash_code_base. - // This type is DefaultConstructible and Assignable even if the - // _Hash_code_base type isn't, so that _Local_iterator_base<..., false> - // can be DefaultConstructible and Assignable. - template::value> - struct _Hash_code_storage - { - __gnu_cxx::__aligned_buffer<_Tp> _M_storage; - - _Tp* - _M_h() { return _M_storage._M_ptr(); } - - const _Tp* - _M_h() const { return _M_storage._M_ptr(); } - }; - - // Empty partial specialization for empty _Hash_code_base types. - template - struct _Hash_code_storage<_Tp, true> - { - static_assert( std::is_empty<_Tp>::value, "Type must be empty" ); - - // As _Tp is an empty type there will be no bytes written/read through - // the cast pointer, so no strict-aliasing violation. - _Tp* - _M_h() { return reinterpret_cast<_Tp*>(this); } - - const _Tp* - _M_h() const { return reinterpret_cast(this); } - }; - - template - using __hash_code_for_local_iter - = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, false>>; - - // Partial specialization used when hash codes are not cached - template - struct _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, false> - : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _H1, _H2, _Hash> - { - protected: - using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, false>; - - _Local_iterator_base() : _M_bucket_count(-1) { } - - _Local_iterator_base(const __hash_code_base& __base, - _Hash_node<_Value, false>* __p, - std::size_t __bkt, std::size_t __bkt_count) - : _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) - { _M_init(__base); } - - ~_Local_iterator_base() - { - if (_M_bucket_count != -1) - _M_destroy(); - } - - _Local_iterator_base(const _Local_iterator_base& __iter) - : _M_cur(__iter._M_cur), _M_bucket(__iter._M_bucket), - _M_bucket_count(__iter._M_bucket_count) - { - if (_M_bucket_count != -1) - _M_init(*__iter._M_h()); - } - - _Local_iterator_base& - operator=(const _Local_iterator_base& __iter) - { - if (_M_bucket_count != -1) - _M_destroy(); - _M_cur = __iter._M_cur; - _M_bucket = __iter._M_bucket; - _M_bucket_count = __iter._M_bucket_count; - if (_M_bucket_count != -1) - _M_init(*__iter._M_h()); - return *this; - } - - void - _M_incr() - { - _M_cur = _M_cur->_M_next(); - if (_M_cur) - { - std::size_t __bkt = this->_M_h()->_M_bucket_index(_M_cur, - _M_bucket_count); - if (__bkt != _M_bucket) - _M_cur = nullptr; - } - } - - _Hash_node<_Value, false>* _M_cur; - std::size_t _M_bucket; - std::size_t _M_bucket_count; - - void - _M_init(const __hash_code_base& __base) - { ::new(this->_M_h()) __hash_code_base(__base); } - - void - _M_destroy() { this->_M_h()->~__hash_code_base(); } - - public: - const void* - _M_curr() const { return _M_cur; } // for equality ops and debug mode - - std::size_t - _M_get_bucket() const { return _M_bucket; } // for debug mode - }; - - template - inline bool - operator==(const _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache>& __x, - const _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache>& __y) - { return __x._M_curr() == __y._M_curr(); } - - template - inline bool - operator!=(const _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache>& __x, - const _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache>& __y) - { return __x._M_curr() != __y._M_curr(); } - - /// local iterators - template - struct _Local_iterator - : public _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache> - { - private: - using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache>; - using __hash_code_base = typename __base_type::__hash_code_base; - public: - typedef _Value value_type; - typedef typename std::conditional<__constant_iterators, - const _Value*, _Value*>::type - pointer; - typedef typename std::conditional<__constant_iterators, - const _Value&, _Value&>::type - reference; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - _Local_iterator() = default; - - _Local_iterator(const __hash_code_base& __base, - _Hash_node<_Value, __cache>* __p, - std::size_t __bkt, std::size_t __bkt_count) - : __base_type(__base, __p, __bkt, __bkt_count) - { } - - reference - operator*() const - { return this->_M_cur->_M_v(); } - - pointer - operator->() const - { return this->_M_cur->_M_valptr(); } - - _Local_iterator& - operator++() - { - this->_M_incr(); - return *this; - } - - _Local_iterator - operator++(int) - { - _Local_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - /// local const_iterators - template - struct _Local_const_iterator - : public _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache> - { - private: - using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, __cache>; - using __hash_code_base = typename __base_type::__hash_code_base; - - public: - typedef _Value value_type; - typedef const _Value* pointer; - typedef const _Value& reference; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - _Local_const_iterator() = default; - - _Local_const_iterator(const __hash_code_base& __base, - _Hash_node<_Value, __cache>* __p, - std::size_t __bkt, std::size_t __bkt_count) - : __base_type(__base, __p, __bkt, __bkt_count) - { } - - _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, - __constant_iterators, - __cache>& __x) - : __base_type(__x) - { } - - reference - operator*() const - { return this->_M_cur->_M_v(); } - - pointer - operator->() const - { return this->_M_cur->_M_valptr(); } - - _Local_const_iterator& - operator++() - { - this->_M_incr(); - return *this; - } - - _Local_const_iterator - operator++(int) - { - _Local_const_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - /** - * Primary class template _Hashtable_base. - * - * Helper class adding management of _Equal functor to - * _Hash_code_base type. - * - * Base class templates are: - * - __detail::_Hash_code_base - * - __detail::_Hashtable_ebo_helper - */ - template - struct _Hashtable_base - : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, - _Traits::__hash_cached::value>, - private _Hashtable_ebo_helper<0, _Equal> - { - public: - typedef _Key key_type; - typedef _Value value_type; - typedef _Equal key_equal; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - - using __traits_type = _Traits; - using __hash_cached = typename __traits_type::__hash_cached; - using __constant_iterators = typename __traits_type::__constant_iterators; - using __unique_keys = typename __traits_type::__unique_keys; - - using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, - _H1, _H2, _Hash, - __hash_cached::value>; - - using __hash_code = typename __hash_code_base::__hash_code; - using __node_type = typename __hash_code_base::__node_type; - - using iterator = __detail::_Node_iterator; - - using const_iterator = __detail::_Node_const_iterator; - - using local_iterator = __detail::_Local_iterator; - - using const_local_iterator = __detail::_Local_const_iterator; - - using __ireturn_type = typename std::conditional<__unique_keys::value, - std::pair, - iterator>::type; - private: - using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>; - using _EqualHelper = _Equal_helper<_Key, _Value, _ExtractKey, _Equal, - __hash_code, __hash_cached::value>; - - protected: - _Hashtable_base() = default; - _Hashtable_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2, - const _Hash& __hash, const _Equal& __eq) - : __hash_code_base(__ex, __h1, __h2, __hash), _EqualEBO(__eq) - { } - - bool - _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const - { - return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(), - __k, __c, __n); - } - - void - _M_swap(_Hashtable_base& __x) - { - __hash_code_base::_M_swap(__x); - std::swap(_M_eq(), __x._M_eq()); - } - - const _Equal& - _M_eq() const { return _EqualEBO::_S_cget(*this); } - - _Equal& - _M_eq() { return _EqualEBO::_S_get(*this); } - }; - - /** - * struct _Equality_base. - * - * Common types and functions for class _Equality. - */ - struct _Equality_base - { - protected: - template - static bool - _S_is_permutation(_Uiterator, _Uiterator, _Uiterator); - }; - - // See std::is_permutation in N3068. - template - bool - _Equality_base:: - _S_is_permutation(_Uiterator __first1, _Uiterator __last1, - _Uiterator __first2) - { - for (; __first1 != __last1; ++__first1, ++__first2) - if (!(*__first1 == *__first2)) - break; - - if (__first1 == __last1) - return true; - - _Uiterator __last2 = __first2; - std::advance(__last2, std::distance(__first1, __last1)); - - for (_Uiterator __it1 = __first1; __it1 != __last1; ++__it1) - { - _Uiterator __tmp = __first1; - while (__tmp != __it1 && !bool(*__tmp == *__it1)) - ++__tmp; - - // We've seen this one before. - if (__tmp != __it1) - continue; - - std::ptrdiff_t __n2 = 0; - for (__tmp = __first2; __tmp != __last2; ++__tmp) - if (*__tmp == *__it1) - ++__n2; - - if (!__n2) - return false; - - std::ptrdiff_t __n1 = 0; - for (__tmp = __it1; __tmp != __last1; ++__tmp) - if (*__tmp == *__it1) - ++__n1; - - if (__n1 != __n2) - return false; - } - return true; - } - - /** - * Primary class template _Equality. - * - * This is for implementing equality comparison for unordered - * containers, per N3068, by John Lakos and Pablo Halpern. - * Algorithmically, we follow closely the reference implementations - * therein. - */ - template - struct _Equality; - - /// Specialization. - template - struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true> - { - using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>; - - bool - _M_equal(const __hashtable&) const; - }; - - template - bool - _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: - _M_equal(const __hashtable& __other) const - { - const __hashtable* __this = static_cast(this); - - if (__this->size() != __other.size()) - return false; - - for (auto __itx = __this->begin(); __itx != __this->end(); ++__itx) - { - const auto __ity = __other.find(_ExtractKey()(*__itx)); - if (__ity == __other.end() || !bool(*__ity == *__itx)) - return false; - } - return true; - } - - /// Specialization. - template - struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, false> - : public _Equality_base - { - using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits>; - - bool - _M_equal(const __hashtable&) const; - }; - - template - bool - _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, _Traits, false>:: - _M_equal(const __hashtable& __other) const - { - const __hashtable* __this = static_cast(this); - - if (__this->size() != __other.size()) - return false; - - for (auto __itx = __this->begin(); __itx != __this->end();) - { - const auto __xrange = __this->equal_range(_ExtractKey()(*__itx)); - const auto __yrange = __other.equal_range(_ExtractKey()(*__itx)); - - if (std::distance(__xrange.first, __xrange.second) - != std::distance(__yrange.first, __yrange.second)) - return false; - - if (!_S_is_permutation(__xrange.first, __xrange.second, - __yrange.first)) - return false; - - __itx = __xrange.second; - } - return true; - } - - /** - * This type deals with all allocation and keeps an allocator instance through - * inheritance to benefit from EBO when possible. - */ - template - struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc> - { - private: - using __ebo_node_alloc = _Hashtable_ebo_helper<0, _NodeAlloc>; - public: - using __node_type = typename _NodeAlloc::value_type; - using __node_alloc_type = _NodeAlloc; - // Use __gnu_cxx to benefit from _S_always_equal and al. - using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; - - using __value_type = typename __node_type::value_type; - using __value_alloc_type = - __alloc_rebind<__node_alloc_type, __value_type>; - using __value_alloc_traits = std::allocator_traits<__value_alloc_type>; - - using __node_base = __detail::_Hash_node_base; - using __bucket_type = __node_base*; - using __bucket_alloc_type = - __alloc_rebind<__node_alloc_type, __bucket_type>; - using __bucket_alloc_traits = std::allocator_traits<__bucket_alloc_type>; - - _Hashtable_alloc() = default; - _Hashtable_alloc(const _Hashtable_alloc&) = default; - _Hashtable_alloc(_Hashtable_alloc&&) = default; - - template - _Hashtable_alloc(_Alloc&& __a) - : __ebo_node_alloc(std::forward<_Alloc>(__a)) - { } - - __node_alloc_type& - _M_node_allocator() - { return __ebo_node_alloc::_S_get(*this); } - - const __node_alloc_type& - _M_node_allocator() const - { return __ebo_node_alloc::_S_cget(*this); } - - template - __node_type* - _M_allocate_node(_Args&&... __args); - - void - _M_deallocate_node(__node_type* __n); - - // Deallocate the linked list of nodes pointed to by __n - void - _M_deallocate_nodes(__node_type* __n); - - __bucket_type* - _M_allocate_buckets(std::size_t __n); - - void - _M_deallocate_buckets(__bucket_type*, std::size_t __n); - }; - - // Definitions of class template _Hashtable_alloc's out-of-line member - // functions. - template - template - typename _Hashtable_alloc<_NodeAlloc>::__node_type* - _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) - { - auto __nptr = __node_alloc_traits::allocate(_M_node_allocator(), 1); - __node_type* __n = std::__addressof(*__nptr); - __try - { - __value_alloc_type __a(_M_node_allocator()); - ::new ((void*)__n) __node_type; - __value_alloc_traits::construct(__a, __n->_M_valptr(), - std::forward<_Args>(__args)...); - return __n; - } - __catch(...) - { - __node_alloc_traits::deallocate(_M_node_allocator(), __nptr, 1); - __throw_exception_again; - } - } - - template - void - _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type* __n) - { - typedef typename __node_alloc_traits::pointer _Ptr; - auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); - __value_alloc_type __a(_M_node_allocator()); - __value_alloc_traits::destroy(__a, __n->_M_valptr()); - __n->~__node_type(); - __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); - } - - template - void - _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_type* __n) - { - while (__n) - { - __node_type* __tmp = __n; - __n = __n->_M_next(); - _M_deallocate_node(__tmp); - } - } - - template - typename _Hashtable_alloc<_NodeAlloc>::__bucket_type* - _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __n) - { - __bucket_alloc_type __alloc(_M_node_allocator()); - - auto __ptr = __bucket_alloc_traits::allocate(__alloc, __n); - __bucket_type* __p = std::__addressof(*__ptr); - __builtin_memset(__p, 0, __n * sizeof(__bucket_type)); - return __p; - } - - template - void - _Hashtable_alloc<_NodeAlloc>::_M_deallocate_buckets(__bucket_type* __bkts, - std::size_t __n) - { - typedef typename __bucket_alloc_traits::pointer _Ptr; - auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); - __bucket_alloc_type __alloc(_M_node_allocator()); - __bucket_alloc_traits::deallocate(__alloc, __ptr, __n); - } - - //@} hashtable-detail -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __detail -} // namespace std - -#endif // _HASHTABLE_POLICY_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/random.h deleted file mode 100644 index c3fbb0fff..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/random.h +++ /dev/null @@ -1,6005 +0,0 @@ -// random number generation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** - * @file bits/random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _RANDOM_H -#define _RANDOM_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // [26.4] Random number generation - - /** - * @defgroup random Random Number Generation - * @ingroup numerics - * - * A facility for generating random numbers on selected distributions. - * @{ - */ - - /** - * @brief A function template for converting the output of a (integral) - * uniform random number generator to a floatng point result in the range - * [0-1). - */ - template - _RealType - generate_canonical(_UniformRandomNumberGenerator& __g); - -_GLIBCXX_END_NAMESPACE_VERSION - - /* - * Implementation-space details. - */ - namespace __detail - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - (std::numeric_limits<_UIntType>::digits)> - struct _Shift - { static const _UIntType __value = 0; }; - - template - struct _Shift<_UIntType, __w, true> - { static const _UIntType __value = _UIntType(1) << __w; }; - - template - struct _Select_uint_least_t - { - static_assert(__which < 0, /* needs to be dependent */ - "sorry, would be too much trouble for a slow result"); - }; - - template - struct _Select_uint_least_t<__s, 4> - { typedef unsigned int type; }; - - template - struct _Select_uint_least_t<__s, 3> - { typedef unsigned long type; }; - - template - struct _Select_uint_least_t<__s, 2> - { typedef unsigned long long type; }; - -#ifdef _GLIBCXX_USE_INT128 - template - struct _Select_uint_least_t<__s, 1> - { typedef unsigned __int128 type; }; -#endif - - // Assume a != 0, a < m, c < m, x < m. - template= __m - 1), - bool __schrage_ok = __m % __a < __m / __a> - struct _Mod - { - typedef typename _Select_uint_least_t::type _Tp2; - static _Tp - __calc(_Tp __x) - { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); } - }; - - // Schrage. - template - struct _Mod<_Tp, __m, __a, __c, false, true> - { - static _Tp - __calc(_Tp __x); - }; - - // Special cases: - // - for m == 2^n or m == 0, unsigned integer overflow is safe. - // - a * (m - 1) + c fits in _Tp, there is no overflow. - template - struct _Mod<_Tp, __m, __a, __c, true, __s> - { - static _Tp - __calc(_Tp __x) - { - _Tp __res = __a * __x + __c; - if (__m) - __res %= __m; - return __res; - } - }; - - template - inline _Tp - __mod(_Tp __x) - { return _Mod<_Tp, __m, __a, __c>::__calc(__x); } - - /* - * An adaptor class for converting the output of any Generator into - * the input for a specific Distribution. - */ - template - struct _Adaptor - { - static_assert(std::is_floating_point<_DInputType>::value, - "template argument must be a floating point type"); - - public: - _Adaptor(_Engine& __g) - : _M_g(__g) { } - - _DInputType - min() const - { return _DInputType(0); } - - _DInputType - max() const - { return _DInputType(1); } - - /* - * Converts a value generated by the adapted random number generator - * into a value in the input domain for the dependent random number - * distribution. - */ - _DInputType - operator()() - { - return std::generate_canonical<_DInputType, - std::numeric_limits<_DInputType>::digits, - _Engine>(_M_g); - } - - private: - _Engine& _M_g; - }; - - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace __detail - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup random_generators Random Number Generators - * @ingroup random - * - * These classes define objects which provide random or pseudorandom - * numbers, either from a discrete or a continuous interval. The - * random number generator supplied as a part of this library are - * all uniform random number generators which provide a sequence of - * random number uniformly distributed over their range. - * - * A number generator is a function object with an operator() that - * takes zero arguments and returns a number. - * - * A compliant random number generator must satisfy the following - * requirements. - * - *
Random Number Generator Requirements
To be documented.
- * - * @{ - */ - - /** - * @brief A model of a linear congruential random number generator. - * - * A random number generator that produces pseudorandom numbers via - * linear function: - * @f[ - * x_{i+1}\leftarrow(ax_{i} + c) \bmod m - * @f] - * - * The template parameter @p _UIntType must be an unsigned integral type - * large enough to store values up to (__m-1). If the template parameter - * @p __m is 0, the modulus @p __m used is - * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template - * parameters @p __a and @p __c must be less than @p __m. - * - * The size of the state is @f$1@f$. - */ - template - class linear_congruential_engine - { - static_assert(std::is_unsigned<_UIntType>::value, - "result_type must be an unsigned integral type"); - static_assert(__m == 0u || (__a < __m && __c < __m), - "template argument substituting __m out of bounds"); - - public: - /** The type of the generated random value. */ - typedef _UIntType result_type; - - /** The multiplier. */ - static constexpr result_type multiplier = __a; - /** An increment. */ - static constexpr result_type increment = __c; - /** The modulus. */ - static constexpr result_type modulus = __m; - static constexpr result_type default_seed = 1u; - - /** - * @brief Constructs a %linear_congruential_engine random number - * generator engine with seed @p __s. The default seed value - * is 1. - * - * @param __s The initial seed value. - */ - explicit - linear_congruential_engine(result_type __s = default_seed) - { seed(__s); } - - /** - * @brief Constructs a %linear_congruential_engine random number - * generator engine seeded from the seed sequence @p __q. - * - * @param __q the seed sequence. - */ - template::value> - ::type> - explicit - linear_congruential_engine(_Sseq& __q) - { seed(__q); } - - /** - * @brief Reseeds the %linear_congruential_engine random number generator - * engine sequence to the seed @p __s. - * - * @param __s The new seed. - */ - void - seed(result_type __s = default_seed); - - /** - * @brief Reseeds the %linear_congruential_engine random number generator - * engine - * sequence using values from the seed sequence @p __q. - * - * @param __q the seed sequence. - */ - template - typename std::enable_if::value>::type - seed(_Sseq& __q); - - /** - * @brief Gets the smallest possible value in the output range. - * - * The minimum depends on the @p __c parameter: if it is zero, the - * minimum generated must be > 0, otherwise 0 is allowed. - */ - static constexpr result_type - min() - { return __c == 0u ? 1u : 0u; } - - /** - * @brief Gets the largest possible value in the output range. - */ - static constexpr result_type - max() - { return __m - 1u; } - - /** - * @brief Discard a sequence of random numbers. - */ - void - discard(unsigned long long __z) - { - for (; __z != 0ULL; --__z) - (*this)(); - } - - /** - * @brief Gets the next random number in the sequence. - */ - result_type - operator()() - { - _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); - return _M_x; - } - - /** - * @brief Compares two linear congruential random number generator - * objects of the same type for equality. - * - * @param __lhs A linear congruential random number generator object. - * @param __rhs Another linear congruential random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be equal, false otherwise. - */ - friend bool - operator==(const linear_congruential_engine& __lhs, - const linear_congruential_engine& __rhs) - { return __lhs._M_x == __rhs._M_x; } - - /** - * @brief Writes the textual representation of the state x(i) of x to - * @p __os. - * - * @param __os The output stream. - * @param __lcr A % linear_congruential_engine random number generator. - * @returns __os. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::linear_congruential_engine<_UIntType1, - __a1, __c1, __m1>& __lcr); - - /** - * @brief Sets the state of the engine by reading its textual - * representation from @p __is. - * - * The textual representation must have been previously written using - * an output stream whose imbued locale and whose type's template - * specialization arguments _CharT and _Traits were the same as those - * of @p __is. - * - * @param __is The input stream. - * @param __lcr A % linear_congruential_engine random number generator. - * @returns __is. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::linear_congruential_engine<_UIntType1, __a1, - __c1, __m1>& __lcr); - - private: - _UIntType _M_x; - }; - - /** - * @brief Compares two linear congruential random number generator - * objects of the same type for inequality. - * - * @param __lhs A linear congruential random number generator object. - * @param __rhs Another linear congruential random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be different, false otherwise. - */ - template - inline bool - operator!=(const std::linear_congruential_engine<_UIntType, __a, - __c, __m>& __lhs, - const std::linear_congruential_engine<_UIntType, __a, - __c, __m>& __rhs) - { return !(__lhs == __rhs); } - - - /** - * A generalized feedback shift register discrete random number generator. - * - * This algorithm avoids multiplication and division and is designed to be - * friendly to a pipelined architecture. If the parameters are chosen - * correctly, this generator will produce numbers with a very long period and - * fairly good apparent entropy, although still not cryptographically strong. - * - * The best way to use this generator is with the predefined mt19937 class. - * - * This algorithm was originally invented by Makoto Matsumoto and - * Takuji Nishimura. - * - * @tparam __w Word size, the number of bits in each element of - * the state vector. - * @tparam __n The degree of recursion. - * @tparam __m The period parameter. - * @tparam __r The separation point bit index. - * @tparam __a The last row of the twist matrix. - * @tparam __u The first right-shift tempering matrix parameter. - * @tparam __d The first right-shift tempering matrix mask. - * @tparam __s The first left-shift tempering matrix parameter. - * @tparam __b The first left-shift tempering matrix mask. - * @tparam __t The second left-shift tempering matrix parameter. - * @tparam __c The second left-shift tempering matrix mask. - * @tparam __l The second right-shift tempering matrix parameter. - * @tparam __f Initialization multiplier. - */ - template - class mersenne_twister_engine - { - static_assert(std::is_unsigned<_UIntType>::value, - "result_type must be an unsigned integral type"); - static_assert(1u <= __m && __m <= __n, - "template argument substituting __m out of bounds"); - static_assert(__r <= __w, "template argument substituting " - "__r out of bound"); - static_assert(__u <= __w, "template argument substituting " - "__u out of bound"); - static_assert(__s <= __w, "template argument substituting " - "__s out of bound"); - static_assert(__t <= __w, "template argument substituting " - "__t out of bound"); - static_assert(__l <= __w, "template argument substituting " - "__l out of bound"); - static_assert(__w <= std::numeric_limits<_UIntType>::digits, - "template argument substituting __w out of bound"); - static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1), - "template argument substituting __a out of bound"); - static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1), - "template argument substituting __b out of bound"); - static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1), - "template argument substituting __c out of bound"); - static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1), - "template argument substituting __d out of bound"); - static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1), - "template argument substituting __f out of bound"); - - public: - /** The type of the generated random value. */ - typedef _UIntType result_type; - - // parameter values - static constexpr size_t word_size = __w; - static constexpr size_t state_size = __n; - static constexpr size_t shift_size = __m; - static constexpr size_t mask_bits = __r; - static constexpr result_type xor_mask = __a; - static constexpr size_t tempering_u = __u; - static constexpr result_type tempering_d = __d; - static constexpr size_t tempering_s = __s; - static constexpr result_type tempering_b = __b; - static constexpr size_t tempering_t = __t; - static constexpr result_type tempering_c = __c; - static constexpr size_t tempering_l = __l; - static constexpr result_type initialization_multiplier = __f; - static constexpr result_type default_seed = 5489u; - - // constructors and member function - explicit - mersenne_twister_engine(result_type __sd = default_seed) - { seed(__sd); } - - /** - * @brief Constructs a %mersenne_twister_engine random number generator - * engine seeded from the seed sequence @p __q. - * - * @param __q the seed sequence. - */ - template::value> - ::type> - explicit - mersenne_twister_engine(_Sseq& __q) - { seed(__q); } - - void - seed(result_type __sd = default_seed); - - template - typename std::enable_if::value>::type - seed(_Sseq& __q); - - /** - * @brief Gets the smallest possible value in the output range. - */ - static constexpr result_type - min() - { return 0; }; - - /** - * @brief Gets the largest possible value in the output range. - */ - static constexpr result_type - max() - { return __detail::_Shift<_UIntType, __w>::__value - 1; } - - /** - * @brief Discard a sequence of random numbers. - */ - void - discard(unsigned long long __z); - - result_type - operator()(); - - /** - * @brief Compares two % mersenne_twister_engine random number generator - * objects of the same type for equality. - * - * @param __lhs A % mersenne_twister_engine random number generator - * object. - * @param __rhs Another % mersenne_twister_engine random number - * generator object. - * - * @returns true if the infinite sequences of generated values - * would be equal, false otherwise. - */ - friend bool - operator==(const mersenne_twister_engine& __lhs, - const mersenne_twister_engine& __rhs) - { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) - && __lhs._M_p == __rhs._M_p); } - - /** - * @brief Inserts the current state of a % mersenne_twister_engine - * random number generator engine @p __x into the output stream - * @p __os. - * - * @param __os An output stream. - * @param __x A % mersenne_twister_engine random number generator - * engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::mersenne_twister_engine<_UIntType1, __w1, __n1, - __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, - __l1, __f1>& __x); - - /** - * @brief Extracts the current state of a % mersenne_twister_engine - * random number generator engine @p __x from the input stream - * @p __is. - * - * @param __is An input stream. - * @param __x A % mersenne_twister_engine random number generator - * engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, - __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, - __l1, __f1>& __x); - - private: - void _M_gen_rand(); - - _UIntType _M_x[state_size]; - size_t _M_p; - }; - - /** - * @brief Compares two % mersenne_twister_engine random number generator - * objects of the same type for inequality. - * - * @param __lhs A % mersenne_twister_engine random number generator - * object. - * @param __rhs Another % mersenne_twister_engine random number - * generator object. - * - * @returns true if the infinite sequences of generated values - * would be different, false otherwise. - */ - template - inline bool - operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, - __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, - const std::mersenne_twister_engine<_UIntType, __w, __n, __m, - __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) - { return !(__lhs == __rhs); } - - - /** - * @brief The Marsaglia-Zaman generator. - * - * This is a model of a Generalized Fibonacci discrete random number - * generator, sometimes referred to as the SWC generator. - * - * A discrete random number generator that produces pseudorandom - * numbers using: - * @f[ - * x_{i}\leftarrow(x_{i - s} - x_{i - r} - carry_{i-1}) \bmod m - * @f] - * - * The size of the state is @f$r@f$ - * and the maximum period of the generator is @f$(m^r - m^s - 1)@f$. - */ - template - class subtract_with_carry_engine - { - static_assert(std::is_unsigned<_UIntType>::value, - "result_type must be an unsigned integral type"); - static_assert(0u < __s && __s < __r, - "0 < s < r"); - static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, - "template argument substituting __w out of bounds"); - - public: - /** The type of the generated random value. */ - typedef _UIntType result_type; - - // parameter values - static constexpr size_t word_size = __w; - static constexpr size_t short_lag = __s; - static constexpr size_t long_lag = __r; - static constexpr result_type default_seed = 19780503u; - - /** - * @brief Constructs an explicitly seeded % subtract_with_carry_engine - * random number generator. - */ - explicit - subtract_with_carry_engine(result_type __sd = default_seed) - { seed(__sd); } - - /** - * @brief Constructs a %subtract_with_carry_engine random number engine - * seeded from the seed sequence @p __q. - * - * @param __q the seed sequence. - */ - template::value> - ::type> - explicit - subtract_with_carry_engine(_Sseq& __q) - { seed(__q); } - - /** - * @brief Seeds the initial state @f$x_0@f$ of the random number - * generator. - * - * N1688[4.19] modifies this as follows. If @p __value == 0, - * sets value to 19780503. In any case, with a linear - * congruential generator lcg(i) having parameters @f$ m_{lcg} = - * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value - * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m - * \dots lcg(r) \bmod m @f$ respectively. If @f$ x_{-1} = 0 @f$ - * set carry to 1, otherwise sets carry to 0. - */ - void - seed(result_type __sd = default_seed); - - /** - * @brief Seeds the initial state @f$x_0@f$ of the - * % subtract_with_carry_engine random number generator. - */ - template - typename std::enable_if::value>::type - seed(_Sseq& __q); - - /** - * @brief Gets the inclusive minimum value of the range of random - * integers returned by this generator. - */ - static constexpr result_type - min() - { return 0; } - - /** - * @brief Gets the inclusive maximum value of the range of random - * integers returned by this generator. - */ - static constexpr result_type - max() - { return __detail::_Shift<_UIntType, __w>::__value - 1; } - - /** - * @brief Discard a sequence of random numbers. - */ - void - discard(unsigned long long __z) - { - for (; __z != 0ULL; --__z) - (*this)(); - } - - /** - * @brief Gets the next random number in the sequence. - */ - result_type - operator()(); - - /** - * @brief Compares two % subtract_with_carry_engine random number - * generator objects of the same type for equality. - * - * @param __lhs A % subtract_with_carry_engine random number generator - * object. - * @param __rhs Another % subtract_with_carry_engine random number - * generator object. - * - * @returns true if the infinite sequences of generated values - * would be equal, false otherwise. - */ - friend bool - operator==(const subtract_with_carry_engine& __lhs, - const subtract_with_carry_engine& __rhs) - { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) - && __lhs._M_carry == __rhs._M_carry - && __lhs._M_p == __rhs._M_p); } - - /** - * @brief Inserts the current state of a % subtract_with_carry_engine - * random number generator engine @p __x into the output stream - * @p __os. - * - * @param __os An output stream. - * @param __x A % subtract_with_carry_engine random number generator - * engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::subtract_with_carry_engine<_UIntType1, __w1, - __s1, __r1>& __x); - - /** - * @brief Extracts the current state of a % subtract_with_carry_engine - * random number generator engine @p __x from the input stream - * @p __is. - * - * @param __is An input stream. - * @param __x A % subtract_with_carry_engine random number generator - * engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::subtract_with_carry_engine<_UIntType1, __w1, - __s1, __r1>& __x); - - private: - /// The state of the generator. This is a ring buffer. - _UIntType _M_x[long_lag]; - _UIntType _M_carry; ///< The carry - size_t _M_p; ///< Current index of x(i - r). - }; - - /** - * @brief Compares two % subtract_with_carry_engine random number - * generator objects of the same type for inequality. - * - * @param __lhs A % subtract_with_carry_engine random number generator - * object. - * @param __rhs Another % subtract_with_carry_engine random number - * generator object. - * - * @returns true if the infinite sequences of generated values - * would be different, false otherwise. - */ - template - inline bool - operator!=(const std::subtract_with_carry_engine<_UIntType, __w, - __s, __r>& __lhs, - const std::subtract_with_carry_engine<_UIntType, __w, - __s, __r>& __rhs) - { return !(__lhs == __rhs); } - - - /** - * Produces random numbers from some base engine by discarding blocks of - * data. - * - * 0 <= @p __r <= @p __p - */ - template - class discard_block_engine - { - static_assert(1 <= __r && __r <= __p, - "template argument substituting __r out of bounds"); - - public: - /** The type of the generated random value. */ - typedef typename _RandomNumberEngine::result_type result_type; - - // parameter values - static constexpr size_t block_size = __p; - static constexpr size_t used_block = __r; - - /** - * @brief Constructs a default %discard_block_engine engine. - * - * The underlying engine is default constructed as well. - */ - discard_block_engine() - : _M_b(), _M_n(0) { } - - /** - * @brief Copy constructs a %discard_block_engine engine. - * - * Copies an existing base class random number generator. - * @param __rng An existing (base class) engine object. - */ - explicit - discard_block_engine(const _RandomNumberEngine& __rng) - : _M_b(__rng), _M_n(0) { } - - /** - * @brief Move constructs a %discard_block_engine engine. - * - * Copies an existing base class random number generator. - * @param __rng An existing (base class) engine object. - */ - explicit - discard_block_engine(_RandomNumberEngine&& __rng) - : _M_b(std::move(__rng)), _M_n(0) { } - - /** - * @brief Seed constructs a %discard_block_engine engine. - * - * Constructs the underlying generator engine seeded with @p __s. - * @param __s A seed value for the base class engine. - */ - explicit - discard_block_engine(result_type __s) - : _M_b(__s), _M_n(0) { } - - /** - * @brief Generator construct a %discard_block_engine engine. - * - * @param __q A seed sequence. - */ - template::value - && !std::is_same<_Sseq, _RandomNumberEngine>::value> - ::type> - explicit - discard_block_engine(_Sseq& __q) - : _M_b(__q), _M_n(0) - { } - - /** - * @brief Reseeds the %discard_block_engine object with the default - * seed for the underlying base class generator engine. - */ - void - seed() - { - _M_b.seed(); - _M_n = 0; - } - - /** - * @brief Reseeds the %discard_block_engine object with the default - * seed for the underlying base class generator engine. - */ - void - seed(result_type __s) - { - _M_b.seed(__s); - _M_n = 0; - } - - /** - * @brief Reseeds the %discard_block_engine object with the given seed - * sequence. - * @param __q A seed generator function. - */ - template - void - seed(_Sseq& __q) - { - _M_b.seed(__q); - _M_n = 0; - } - - /** - * @brief Gets a const reference to the underlying generator engine - * object. - */ - const _RandomNumberEngine& - base() const noexcept - { return _M_b; } - - /** - * @brief Gets the minimum value in the generated random number range. - */ - static constexpr result_type - min() - { return _RandomNumberEngine::min(); } - - /** - * @brief Gets the maximum value in the generated random number range. - */ - static constexpr result_type - max() - { return _RandomNumberEngine::max(); } - - /** - * @brief Discard a sequence of random numbers. - */ - void - discard(unsigned long long __z) - { - for (; __z != 0ULL; --__z) - (*this)(); - } - - /** - * @brief Gets the next value in the generated random number sequence. - */ - result_type - operator()(); - - /** - * @brief Compares two %discard_block_engine random number generator - * objects of the same type for equality. - * - * @param __lhs A %discard_block_engine random number generator object. - * @param __rhs Another %discard_block_engine random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be equal, false otherwise. - */ - friend bool - operator==(const discard_block_engine& __lhs, - const discard_block_engine& __rhs) - { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; } - - /** - * @brief Inserts the current state of a %discard_block_engine random - * number generator engine @p __x into the output stream - * @p __os. - * - * @param __os An output stream. - * @param __x A %discard_block_engine random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::discard_block_engine<_RandomNumberEngine1, - __p1, __r1>& __x); - - /** - * @brief Extracts the current state of a % subtract_with_carry_engine - * random number generator engine @p __x from the input stream - * @p __is. - * - * @param __is An input stream. - * @param __x A %discard_block_engine random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::discard_block_engine<_RandomNumberEngine1, - __p1, __r1>& __x); - - private: - _RandomNumberEngine _M_b; - size_t _M_n; - }; - - /** - * @brief Compares two %discard_block_engine random number generator - * objects of the same type for inequality. - * - * @param __lhs A %discard_block_engine random number generator object. - * @param __rhs Another %discard_block_engine random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be different, false otherwise. - */ - template - inline bool - operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, - __r>& __lhs, - const std::discard_block_engine<_RandomNumberEngine, __p, - __r>& __rhs) - { return !(__lhs == __rhs); } - - - /** - * Produces random numbers by combining random numbers from some base - * engine to produce random numbers with a specifies number of bits @p __w. - */ - template - class independent_bits_engine - { - static_assert(std::is_unsigned<_UIntType>::value, - "result_type must be an unsigned integral type"); - static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, - "template argument substituting __w out of bounds"); - - public: - /** The type of the generated random value. */ - typedef _UIntType result_type; - - /** - * @brief Constructs a default %independent_bits_engine engine. - * - * The underlying engine is default constructed as well. - */ - independent_bits_engine() - : _M_b() { } - - /** - * @brief Copy constructs a %independent_bits_engine engine. - * - * Copies an existing base class random number generator. - * @param __rng An existing (base class) engine object. - */ - explicit - independent_bits_engine(const _RandomNumberEngine& __rng) - : _M_b(__rng) { } - - /** - * @brief Move constructs a %independent_bits_engine engine. - * - * Copies an existing base class random number generator. - * @param __rng An existing (base class) engine object. - */ - explicit - independent_bits_engine(_RandomNumberEngine&& __rng) - : _M_b(std::move(__rng)) { } - - /** - * @brief Seed constructs a %independent_bits_engine engine. - * - * Constructs the underlying generator engine seeded with @p __s. - * @param __s A seed value for the base class engine. - */ - explicit - independent_bits_engine(result_type __s) - : _M_b(__s) { } - - /** - * @brief Generator construct a %independent_bits_engine engine. - * - * @param __q A seed sequence. - */ - template::value - && !std::is_same<_Sseq, _RandomNumberEngine>::value> - ::type> - explicit - independent_bits_engine(_Sseq& __q) - : _M_b(__q) - { } - - /** - * @brief Reseeds the %independent_bits_engine object with the default - * seed for the underlying base class generator engine. - */ - void - seed() - { _M_b.seed(); } - - /** - * @brief Reseeds the %independent_bits_engine object with the default - * seed for the underlying base class generator engine. - */ - void - seed(result_type __s) - { _M_b.seed(__s); } - - /** - * @brief Reseeds the %independent_bits_engine object with the given - * seed sequence. - * @param __q A seed generator function. - */ - template - void - seed(_Sseq& __q) - { _M_b.seed(__q); } - - /** - * @brief Gets a const reference to the underlying generator engine - * object. - */ - const _RandomNumberEngine& - base() const noexcept - { return _M_b; } - - /** - * @brief Gets the minimum value in the generated random number range. - */ - static constexpr result_type - min() - { return 0U; } - - /** - * @brief Gets the maximum value in the generated random number range. - */ - static constexpr result_type - max() - { return __detail::_Shift<_UIntType, __w>::__value - 1; } - - /** - * @brief Discard a sequence of random numbers. - */ - void - discard(unsigned long long __z) - { - for (; __z != 0ULL; --__z) - (*this)(); - } - - /** - * @brief Gets the next value in the generated random number sequence. - */ - result_type - operator()(); - - /** - * @brief Compares two %independent_bits_engine random number generator - * objects of the same type for equality. - * - * @param __lhs A %independent_bits_engine random number generator - * object. - * @param __rhs Another %independent_bits_engine random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be equal, false otherwise. - */ - friend bool - operator==(const independent_bits_engine& __lhs, - const independent_bits_engine& __rhs) - { return __lhs._M_b == __rhs._M_b; } - - /** - * @brief Extracts the current state of a % subtract_with_carry_engine - * random number generator engine @p __x from the input stream - * @p __is. - * - * @param __is An input stream. - * @param __x A %independent_bits_engine random number generator - * engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::independent_bits_engine<_RandomNumberEngine, - __w, _UIntType>& __x) - { - __is >> __x._M_b; - return __is; - } - - private: - _RandomNumberEngine _M_b; - }; - - /** - * @brief Compares two %independent_bits_engine random number generator - * objects of the same type for inequality. - * - * @param __lhs A %independent_bits_engine random number generator - * object. - * @param __rhs Another %independent_bits_engine random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be different, false otherwise. - */ - template - inline bool - operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, - _UIntType>& __lhs, - const std::independent_bits_engine<_RandomNumberEngine, __w, - _UIntType>& __rhs) - { return !(__lhs == __rhs); } - - /** - * @brief Inserts the current state of a %independent_bits_engine random - * number generator engine @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %independent_bits_engine random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::independent_bits_engine<_RandomNumberEngine, - __w, _UIntType>& __x) - { - __os << __x.base(); - return __os; - } - - - /** - * @brief Produces random numbers by combining random numbers from some - * base engine to produce random numbers with a specifies number of bits - * @p __k. - */ - template - class shuffle_order_engine - { - static_assert(1u <= __k, "template argument substituting " - "__k out of bound"); - - public: - /** The type of the generated random value. */ - typedef typename _RandomNumberEngine::result_type result_type; - - static constexpr size_t table_size = __k; - - /** - * @brief Constructs a default %shuffle_order_engine engine. - * - * The underlying engine is default constructed as well. - */ - shuffle_order_engine() - : _M_b() - { _M_initialize(); } - - /** - * @brief Copy constructs a %shuffle_order_engine engine. - * - * Copies an existing base class random number generator. - * @param __rng An existing (base class) engine object. - */ - explicit - shuffle_order_engine(const _RandomNumberEngine& __rng) - : _M_b(__rng) - { _M_initialize(); } - - /** - * @brief Move constructs a %shuffle_order_engine engine. - * - * Copies an existing base class random number generator. - * @param __rng An existing (base class) engine object. - */ - explicit - shuffle_order_engine(_RandomNumberEngine&& __rng) - : _M_b(std::move(__rng)) - { _M_initialize(); } - - /** - * @brief Seed constructs a %shuffle_order_engine engine. - * - * Constructs the underlying generator engine seeded with @p __s. - * @param __s A seed value for the base class engine. - */ - explicit - shuffle_order_engine(result_type __s) - : _M_b(__s) - { _M_initialize(); } - - /** - * @brief Generator construct a %shuffle_order_engine engine. - * - * @param __q A seed sequence. - */ - template::value - && !std::is_same<_Sseq, _RandomNumberEngine>::value> - ::type> - explicit - shuffle_order_engine(_Sseq& __q) - : _M_b(__q) - { _M_initialize(); } - - /** - * @brief Reseeds the %shuffle_order_engine object with the default seed - for the underlying base class generator engine. - */ - void - seed() - { - _M_b.seed(); - _M_initialize(); - } - - /** - * @brief Reseeds the %shuffle_order_engine object with the default seed - * for the underlying base class generator engine. - */ - void - seed(result_type __s) - { - _M_b.seed(__s); - _M_initialize(); - } - - /** - * @brief Reseeds the %shuffle_order_engine object with the given seed - * sequence. - * @param __q A seed generator function. - */ - template - void - seed(_Sseq& __q) - { - _M_b.seed(__q); - _M_initialize(); - } - - /** - * Gets a const reference to the underlying generator engine object. - */ - const _RandomNumberEngine& - base() const noexcept - { return _M_b; } - - /** - * Gets the minimum value in the generated random number range. - */ - static constexpr result_type - min() - { return _RandomNumberEngine::min(); } - - /** - * Gets the maximum value in the generated random number range. - */ - static constexpr result_type - max() - { return _RandomNumberEngine::max(); } - - /** - * Discard a sequence of random numbers. - */ - void - discard(unsigned long long __z) - { - for (; __z != 0ULL; --__z) - (*this)(); - } - - /** - * Gets the next value in the generated random number sequence. - */ - result_type - operator()(); - - /** - * Compares two %shuffle_order_engine random number generator objects - * of the same type for equality. - * - * @param __lhs A %shuffle_order_engine random number generator object. - * @param __rhs Another %shuffle_order_engine random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be equal, false otherwise. - */ - friend bool - operator==(const shuffle_order_engine& __lhs, - const shuffle_order_engine& __rhs) - { return (__lhs._M_b == __rhs._M_b - && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) - && __lhs._M_y == __rhs._M_y); } - - /** - * @brief Inserts the current state of a %shuffle_order_engine random - * number generator engine @p __x into the output stream - @p __os. - * - * @param __os An output stream. - * @param __x A %shuffle_order_engine random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::shuffle_order_engine<_RandomNumberEngine1, - __k1>& __x); - - /** - * @brief Extracts the current state of a % subtract_with_carry_engine - * random number generator engine @p __x from the input stream - * @p __is. - * - * @param __is An input stream. - * @param __x A %shuffle_order_engine random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); - - private: - void _M_initialize() - { - for (size_t __i = 0; __i < __k; ++__i) - _M_v[__i] = _M_b(); - _M_y = _M_b(); - } - - _RandomNumberEngine _M_b; - result_type _M_v[__k]; - result_type _M_y; - }; - - /** - * Compares two %shuffle_order_engine random number generator objects - * of the same type for inequality. - * - * @param __lhs A %shuffle_order_engine random number generator object. - * @param __rhs Another %shuffle_order_engine random number generator - * object. - * - * @returns true if the infinite sequences of generated values - * would be different, false otherwise. - */ - template - inline bool - operator!=(const std::shuffle_order_engine<_RandomNumberEngine, - __k>& __lhs, - const std::shuffle_order_engine<_RandomNumberEngine, - __k>& __rhs) - { return !(__lhs == __rhs); } - - - /** - * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller. - */ - typedef linear_congruential_engine - minstd_rand0; - - /** - * An alternative LCR (Lehmer Generator function). - */ - typedef linear_congruential_engine - minstd_rand; - - /** - * The classic Mersenne Twister. - * - * Reference: - * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally - * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions - * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30. - */ - typedef mersenne_twister_engine< - uint_fast32_t, - 32, 624, 397, 31, - 0x9908b0dfUL, 11, - 0xffffffffUL, 7, - 0x9d2c5680UL, 15, - 0xefc60000UL, 18, 1812433253UL> mt19937; - - /** - * An alternative Mersenne Twister. - */ - typedef mersenne_twister_engine< - uint_fast64_t, - 64, 312, 156, 31, - 0xb5026f5aa96619e9ULL, 29, - 0x5555555555555555ULL, 17, - 0x71d67fffeda60000ULL, 37, - 0xfff7eee000000000ULL, 43, - 6364136223846793005ULL> mt19937_64; - - typedef subtract_with_carry_engine - ranlux24_base; - - typedef subtract_with_carry_engine - ranlux48_base; - - typedef discard_block_engine ranlux24; - - typedef discard_block_engine ranlux48; - - typedef shuffle_order_engine knuth_b; - - typedef minstd_rand0 default_random_engine; - - /** - * A standard interface to a platform-specific non-deterministic - * random number generator (if any are available). - */ - class random_device - { - public: - /** The type of the generated random value. */ - typedef unsigned int result_type; - - // constructors, destructors and member functions - -#ifdef _GLIBCXX_USE_RANDOM_TR1 - - explicit - random_device(const std::string& __token = "default") - { - _M_init(__token); - } - - ~random_device() - { _M_fini(); } - -#else - - explicit - random_device(const std::string& __token = "mt19937") - { _M_init_pretr1(__token); } - - public: - -#endif - - static constexpr result_type - min() - { return std::numeric_limits::min(); } - - static constexpr result_type - max() - { return std::numeric_limits::max(); } - - double - entropy() const noexcept - { return 0.0; } - - result_type - operator()() - { -#ifdef _GLIBCXX_USE_RANDOM_TR1 - return this->_M_getval(); -#else - return this->_M_getval_pretr1(); -#endif - } - - // No copy functions. - random_device(const random_device&) = delete; - void operator=(const random_device&) = delete; - - private: - - void _M_init(const std::string& __token); - void _M_init_pretr1(const std::string& __token); - void _M_fini(); - - result_type _M_getval(); - result_type _M_getval_pretr1(); - - union - { - void* _M_file; - mt19937 _M_mt; - }; - }; - - /* @} */ // group random_generators - - /** - * @addtogroup random_distributions Random Number Distributions - * @ingroup random - * @{ - */ - - /** - * @addtogroup random_distributions_uniform Uniform Distributions - * @ingroup random_distributions - * @{ - */ - - // std::uniform_int_distribution is defined in - - /** - * @brief Return true if two uniform integer distributions have - * different parameters. - */ - template - inline bool - operator!=(const std::uniform_int_distribution<_IntType>& __d1, - const std::uniform_int_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %uniform_int_distribution random number - * distribution @p __x into the output stream @p os. - * - * @param __os An output stream. - * @param __x A %uniform_int_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const std::uniform_int_distribution<_IntType>&); - - /** - * @brief Extracts a %uniform_int_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %uniform_int_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - std::uniform_int_distribution<_IntType>&); - - - /** - * @brief Uniform continuous distribution for random numbers. - * - * A continuous random distribution on the range [min, max) with equal - * probability throughout the range. The URNG should be real-valued and - * deliver number in the range [0, 1). - */ - template - class uniform_real_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef uniform_real_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __a = _RealType(0), - _RealType __b = _RealType(1)) - : _M_a(__a), _M_b(__b) - { - __glibcxx_assert(_M_a <= _M_b); - } - - result_type - a() const - { return _M_a; } - - result_type - b() const - { return _M_b; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_a; - _RealType _M_b; - }; - - public: - /** - * @brief Constructs a uniform_real_distribution object. - * - * @param __a [IN] The lower bound of the distribution. - * @param __b [IN] The upper bound of the distribution. - */ - explicit - uniform_real_distribution(_RealType __a = _RealType(0), - _RealType __b = _RealType(1)) - : _M_param(__a, __b) - { } - - explicit - uniform_real_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - * - * Does nothing for the uniform real distribution. - */ - void - reset() { } - - result_type - a() const - { return _M_param.a(); } - - result_type - b() const - { return _M_param.b(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the inclusive lower bound of the distribution range. - */ - result_type - min() const - { return this->a(); } - - /** - * @brief Returns the inclusive upper bound of the distribution range. - */ - result_type - max() const - { return this->b(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - return (__aurng() * (__p.b() - __p.a())) + __p.a(); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two uniform real distributions have - * the same parameters. - */ - friend bool - operator==(const uniform_real_distribution& __d1, - const uniform_real_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two uniform real distributions have - * different parameters. - */ - template - inline bool - operator!=(const std::uniform_real_distribution<_IntType>& __d1, - const std::uniform_real_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %uniform_real_distribution random number - * distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %uniform_real_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const std::uniform_real_distribution<_RealType>&); - - /** - * @brief Extracts a %uniform_real_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %uniform_real_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - std::uniform_real_distribution<_RealType>&); - - /* @} */ // group random_distributions_uniform - - /** - * @addtogroup random_distributions_normal Normal Distributions - * @ingroup random_distributions - * @{ - */ - - /** - * @brief A normal continuous distribution for random numbers. - * - * The formula for the normal probability density function is - * @f[ - * p(x|\mu,\sigma) = \frac{1}{\sigma \sqrt{2 \pi}} - * e^{- \frac{{x - \mu}^ {2}}{2 \sigma ^ {2}} } - * @f] - */ - template - class normal_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef normal_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __mean = _RealType(0), - _RealType __stddev = _RealType(1)) - : _M_mean(__mean), _M_stddev(__stddev) - { - __glibcxx_assert(_M_stddev > _RealType(0)); - } - - _RealType - mean() const - { return _M_mean; } - - _RealType - stddev() const - { return _M_stddev; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return (__p1._M_mean == __p2._M_mean - && __p1._M_stddev == __p2._M_stddev); } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_mean; - _RealType _M_stddev; - }; - - public: - /** - * Constructs a normal distribution with parameters @f$mean@f$ and - * standard deviation. - */ - explicit - normal_distribution(result_type __mean = result_type(0), - result_type __stddev = result_type(1)) - : _M_param(__mean, __stddev), _M_saved_available(false) - { } - - explicit - normal_distribution(const param_type& __p) - : _M_param(__p), _M_saved_available(false) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_saved_available = false; } - - /** - * @brief Returns the mean of the distribution. - */ - _RealType - mean() const - { return _M_param.mean(); } - - /** - * @brief Returns the standard deviation of the distribution. - */ - _RealType - stddev() const - { return _M_param.stddev(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return std::numeric_limits::lowest(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two normal distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - template - friend bool - operator==(const std::normal_distribution<_RealType1>& __d1, - const std::normal_distribution<_RealType1>& __d2); - - /** - * @brief Inserts a %normal_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %normal_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::normal_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %normal_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %normal_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::normal_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - result_type _M_saved; - bool _M_saved_available; - }; - - /** - * @brief Return true if two normal distributions are different. - */ - template - inline bool - operator!=(const std::normal_distribution<_RealType>& __d1, - const std::normal_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A lognormal_distribution random number distribution. - * - * The formula for the normal probability mass function is - * @f[ - * p(x|m,s) = \frac{1}{sx\sqrt{2\pi}} - * \exp{-\frac{(\ln{x} - m)^2}{2s^2}} - * @f] - */ - template - class lognormal_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef lognormal_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __m = _RealType(0), - _RealType __s = _RealType(1)) - : _M_m(__m), _M_s(__s) - { } - - _RealType - m() const - { return _M_m; } - - _RealType - s() const - { return _M_s; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_m; - _RealType _M_s; - }; - - explicit - lognormal_distribution(_RealType __m = _RealType(0), - _RealType __s = _RealType(1)) - : _M_param(__m, __s), _M_nd() - { } - - explicit - lognormal_distribution(const param_type& __p) - : _M_param(__p), _M_nd() - { } - - /** - * Resets the distribution state. - */ - void - reset() - { _M_nd.reset(); } - - /** - * - */ - _RealType - m() const - { return _M_param.m(); } - - _RealType - s() const - { return _M_param.s(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two lognormal distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const lognormal_distribution& __d1, - const lognormal_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_nd == __d2._M_nd); } - - /** - * @brief Inserts a %lognormal_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %lognormal_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::lognormal_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %lognormal_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %lognormal_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::lognormal_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::normal_distribution _M_nd; - }; - - /** - * @brief Return true if two lognormal distributions are different. - */ - template - inline bool - operator!=(const std::lognormal_distribution<_RealType>& __d1, - const std::lognormal_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A gamma continuous distribution for random numbers. - * - * The formula for the gamma probability density function is: - * @f[ - * p(x|\alpha,\beta) = \frac{1}{\beta\Gamma(\alpha)} - * (x/\beta)^{\alpha - 1} e^{-x/\beta} - * @f] - */ - template - class gamma_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef gamma_distribution<_RealType> distribution_type; - friend class gamma_distribution<_RealType>; - - explicit - param_type(_RealType __alpha_val = _RealType(1), - _RealType __beta_val = _RealType(1)) - : _M_alpha(__alpha_val), _M_beta(__beta_val) - { - __glibcxx_assert(_M_alpha > _RealType(0)); - _M_initialize(); - } - - _RealType - alpha() const - { return _M_alpha; } - - _RealType - beta() const - { return _M_beta; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return (__p1._M_alpha == __p2._M_alpha - && __p1._M_beta == __p2._M_beta); } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize(); - - _RealType _M_alpha; - _RealType _M_beta; - - _RealType _M_malpha, _M_a2; - }; - - public: - /** - * @brief Constructs a gamma distribution with parameters - * @f$\alpha@f$ and @f$\beta@f$. - */ - explicit - gamma_distribution(_RealType __alpha_val = _RealType(1), - _RealType __beta_val = _RealType(1)) - : _M_param(__alpha_val, __beta_val), _M_nd() - { } - - explicit - gamma_distribution(const param_type& __p) - : _M_param(__p), _M_nd() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_nd.reset(); } - - /** - * @brief Returns the @f$\alpha@f$ of the distribution. - */ - _RealType - alpha() const - { return _M_param.alpha(); } - - /** - * @brief Returns the @f$\beta@f$ of the distribution. - */ - _RealType - beta() const - { return _M_param.beta(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two gamma distributions have the same - * parameters and the sequences that would be generated - * are equal. - */ - friend bool - operator==(const gamma_distribution& __d1, - const gamma_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_nd == __d2._M_nd); } - - /** - * @brief Inserts a %gamma_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %gamma_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::gamma_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %gamma_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %gamma_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::gamma_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::normal_distribution _M_nd; - }; - - /** - * @brief Return true if two gamma distributions are different. - */ - template - inline bool - operator!=(const std::gamma_distribution<_RealType>& __d1, - const std::gamma_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A chi_squared_distribution random number distribution. - * - * The formula for the normal probability mass function is - * @f$p(x|n) = \frac{x^{(n/2) - 1}e^{-x/2}}{\Gamma(n/2) 2^{n/2}}@f$ - */ - template - class chi_squared_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef chi_squared_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __n = _RealType(1)) - : _M_n(__n) - { } - - _RealType - n() const - { return _M_n; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_n == __p2._M_n; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_n; - }; - - explicit - chi_squared_distribution(_RealType __n = _RealType(1)) - : _M_param(__n), _M_gd(__n / 2) - { } - - explicit - chi_squared_distribution(const param_type& __p) - : _M_param(__p), _M_gd(__p.n() / 2) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_gd.reset(); } - - /** - * - */ - _RealType - n() const - { return _M_param.n(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { - _M_param = __param; - typedef typename std::gamma_distribution::param_type - param_type; - _M_gd.param(param_type{__param.n() / 2}); - } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return 2 * _M_gd(__urng); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typedef typename std::gamma_distribution::param_type - param_type; - return 2 * _M_gd(__urng, param_type(__p.n() / 2)); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { typename std::gamma_distribution::param_type - __p2(__p.n() / 2); - this->__generate_impl(__f, __t, __urng, __p2); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { typename std::gamma_distribution::param_type - __p2(__p.n() / 2); - this->__generate_impl(__f, __t, __urng, __p2); } - - /** - * @brief Return true if two Chi-squared distributions have - * the same parameters and the sequences that would be - * generated are equal. - */ - friend bool - operator==(const chi_squared_distribution& __d1, - const chi_squared_distribution& __d2) - { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } - - /** - * @brief Inserts a %chi_squared_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %chi_squared_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::chi_squared_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %chi_squared_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %chi_squared_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::chi_squared_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng); - - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const typename - std::gamma_distribution::param_type& __p); - - param_type _M_param; - - std::gamma_distribution _M_gd; - }; - - /** - * @brief Return true if two Chi-squared distributions are different. - */ - template - inline bool - operator!=(const std::chi_squared_distribution<_RealType>& __d1, - const std::chi_squared_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A cauchy_distribution random number distribution. - * - * The formula for the normal probability mass function is - * @f$p(x|a,b) = (\pi b (1 + (\frac{x-a}{b})^2))^{-1}@f$ - */ - template - class cauchy_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef cauchy_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __a = _RealType(0), - _RealType __b = _RealType(1)) - : _M_a(__a), _M_b(__b) - { } - - _RealType - a() const - { return _M_a; } - - _RealType - b() const - { return _M_b; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_a; - _RealType _M_b; - }; - - explicit - cauchy_distribution(_RealType __a = _RealType(0), - _RealType __b = _RealType(1)) - : _M_param(__a, __b) - { } - - explicit - cauchy_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * - */ - _RealType - a() const - { return _M_param.a(); } - - _RealType - b() const - { return _M_param.b(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return std::numeric_limits::lowest(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Cauchy distributions have - * the same parameters. - */ - friend bool - operator==(const cauchy_distribution& __d1, - const cauchy_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two Cauchy distributions have - * different parameters. - */ - template - inline bool - operator!=(const std::cauchy_distribution<_RealType>& __d1, - const std::cauchy_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %cauchy_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %cauchy_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::cauchy_distribution<_RealType>& __x); - - /** - * @brief Extracts a %cauchy_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %cauchy_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::cauchy_distribution<_RealType>& __x); - - - /** - * @brief A fisher_f_distribution random number distribution. - * - * The formula for the normal probability mass function is - * @f[ - * p(x|m,n) = \frac{\Gamma((m+n)/2)}{\Gamma(m/2)\Gamma(n/2)} - * (\frac{m}{n})^{m/2} x^{(m/2)-1} - * (1 + \frac{mx}{n})^{-(m+n)/2} - * @f] - */ - template - class fisher_f_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef fisher_f_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __m = _RealType(1), - _RealType __n = _RealType(1)) - : _M_m(__m), _M_n(__n) - { } - - _RealType - m() const - { return _M_m; } - - _RealType - n() const - { return _M_n; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_m; - _RealType _M_n; - }; - - explicit - fisher_f_distribution(_RealType __m = _RealType(1), - _RealType __n = _RealType(1)) - : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2) - { } - - explicit - fisher_f_distribution(const param_type& __p) - : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { - _M_gd_x.reset(); - _M_gd_y.reset(); - } - - /** - * - */ - _RealType - m() const - { return _M_param.m(); } - - _RealType - n() const - { return _M_param.n(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typedef typename std::gamma_distribution::param_type - param_type; - return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) - / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Fisher f distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const fisher_f_distribution& __d1, - const fisher_f_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_gd_x == __d2._M_gd_x - && __d1._M_gd_y == __d2._M_gd_y); } - - /** - * @brief Inserts a %fisher_f_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %fisher_f_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::fisher_f_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %fisher_f_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %fisher_f_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::fisher_f_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng); - - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::gamma_distribution _M_gd_x, _M_gd_y; - }; - - /** - * @brief Return true if two Fisher f distributions are different. - */ - template - inline bool - operator!=(const std::fisher_f_distribution<_RealType>& __d1, - const std::fisher_f_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief A student_t_distribution random number distribution. - * - * The formula for the normal probability mass function is: - * @f[ - * p(x|n) = \frac{1}{\sqrt(n\pi)} \frac{\Gamma((n+1)/2)}{\Gamma(n/2)} - * (1 + \frac{x^2}{n}) ^{-(n+1)/2} - * @f] - */ - template - class student_t_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef student_t_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __n = _RealType(1)) - : _M_n(__n) - { } - - _RealType - n() const - { return _M_n; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_n == __p2._M_n; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_n; - }; - - explicit - student_t_distribution(_RealType __n = _RealType(1)) - : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2) - { } - - explicit - student_t_distribution(const param_type& __p) - : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { - _M_nd.reset(); - _M_gd.reset(); - } - - /** - * - */ - _RealType - n() const - { return _M_param.n(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return std::numeric_limits::lowest(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typedef typename std::gamma_distribution::param_type - param_type; - - const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); - return _M_nd(__urng) * std::sqrt(__p.n() / __g); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Student t distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const student_t_distribution& __d1, - const student_t_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); } - - /** - * @brief Inserts a %student_t_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %student_t_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::student_t_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %student_t_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %student_t_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::student_t_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng); - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::normal_distribution _M_nd; - std::gamma_distribution _M_gd; - }; - - /** - * @brief Return true if two Student t distributions are different. - */ - template - inline bool - operator!=(const std::student_t_distribution<_RealType>& __d1, - const std::student_t_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /* @} */ // group random_distributions_normal - - /** - * @addtogroup random_distributions_bernoulli Bernoulli Distributions - * @ingroup random_distributions - * @{ - */ - - /** - * @brief A Bernoulli random number distribution. - * - * Generates a sequence of true and false values with likelihood @f$p@f$ - * that true will come up and @f$(1 - p)@f$ that false will appear. - */ - class bernoulli_distribution - { - public: - /** The type of the range of the distribution. */ - typedef bool result_type; - - /** Parameter type. */ - struct param_type - { - typedef bernoulli_distribution distribution_type; - - explicit - param_type(double __p = 0.5) - : _M_p(__p) - { - __glibcxx_assert((_M_p >= 0.0) && (_M_p <= 1.0)); - } - - double - p() const - { return _M_p; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_p == __p2._M_p; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - double _M_p; - }; - - public: - /** - * @brief Constructs a Bernoulli distribution with likelihood @p p. - * - * @param __p [IN] The likelihood of a true result being returned. - * Must be in the interval @f$[0, 1]@f$. - */ - explicit - bernoulli_distribution(double __p = 0.5) - : _M_param(__p) - { } - - explicit - bernoulli_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - * - * Does nothing for a Bernoulli distribution. - */ - void - reset() { } - - /** - * @brief Returns the @p p parameter of the distribution. - */ - double - p() const - { return _M_param.p(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return std::numeric_limits::min(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - if ((__aurng() - __aurng.min()) - < __p.p() * (__aurng.max() - __aurng.min())) - return true; - return false; - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Bernoulli distributions have - * the same parameters. - */ - friend bool - operator==(const bernoulli_distribution& __d1, - const bernoulli_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two Bernoulli distributions have - * different parameters. - */ - inline bool - operator!=(const std::bernoulli_distribution& __d1, - const std::bernoulli_distribution& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %bernoulli_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %bernoulli_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::bernoulli_distribution& __x); - - /** - * @brief Extracts a %bernoulli_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %bernoulli_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::bernoulli_distribution& __x) - { - double __p; - __is >> __p; - __x.param(bernoulli_distribution::param_type(__p)); - return __is; - } - - - /** - * @brief A discrete binomial random number distribution. - * - * The formula for the binomial probability density function is - * @f$p(i|t,p) = \binom{t}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ - * and @f$p@f$ are the parameters of the distribution. - */ - template - class binomial_distribution - { - static_assert(std::is_integral<_IntType>::value, - "result_type must be an integral type"); - - public: - /** The type of the range of the distribution. */ - typedef _IntType result_type; - - /** Parameter type. */ - struct param_type - { - typedef binomial_distribution<_IntType> distribution_type; - friend class binomial_distribution<_IntType>; - - explicit - param_type(_IntType __t = _IntType(1), double __p = 0.5) - : _M_t(__t), _M_p(__p) - { - __glibcxx_assert((_M_t >= _IntType(0)) - && (_M_p >= 0.0) - && (_M_p <= 1.0)); - _M_initialize(); - } - - _IntType - t() const - { return _M_t; } - - double - p() const - { return _M_p; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize(); - - _IntType _M_t; - double _M_p; - - double _M_q; -#if _GLIBCXX_USE_C99_MATH_TR1 - double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, - _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; -#endif - bool _M_easy; - }; - - // constructors and member function - explicit - binomial_distribution(_IntType __t = _IntType(1), - double __p = 0.5) - : _M_param(__t, __p), _M_nd() - { } - - explicit - binomial_distribution(const param_type& __p) - : _M_param(__p), _M_nd() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_nd.reset(); } - - /** - * @brief Returns the distribution @p t parameter. - */ - _IntType - t() const - { return _M_param.t(); } - - /** - * @brief Returns the distribution @p p parameter. - */ - double - p() const - { return _M_param.p(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return 0; } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return _M_param.t(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two binomial distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const binomial_distribution& __d1, - const binomial_distribution& __d2) -#ifdef _GLIBCXX_USE_C99_MATH_TR1 - { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } -#else - { return __d1._M_param == __d2._M_param; } -#endif - - /** - * @brief Inserts a %binomial_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %binomial_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::binomial_distribution<_IntType1>& __x); - - /** - * @brief Extracts a %binomial_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %binomial_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::binomial_distribution<_IntType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - result_type - _M_waiting(_UniformRandomNumberGenerator& __urng, - _IntType __t, double __q); - - param_type _M_param; - - // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. - std::normal_distribution _M_nd; - }; - - /** - * @brief Return true if two binomial distributions are different. - */ - template - inline bool - operator!=(const std::binomial_distribution<_IntType>& __d1, - const std::binomial_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A discrete geometric random number distribution. - * - * The formula for the geometric probability density function is - * @f$p(i|p) = p(1 - p)^{i}@f$ where @f$p@f$ is the parameter of the - * distribution. - */ - template - class geometric_distribution - { - static_assert(std::is_integral<_IntType>::value, - "result_type must be an integral type"); - - public: - /** The type of the range of the distribution. */ - typedef _IntType result_type; - - /** Parameter type. */ - struct param_type - { - typedef geometric_distribution<_IntType> distribution_type; - friend class geometric_distribution<_IntType>; - - explicit - param_type(double __p = 0.5) - : _M_p(__p) - { - __glibcxx_assert((_M_p > 0.0) && (_M_p < 1.0)); - _M_initialize(); - } - - double - p() const - { return _M_p; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_p == __p2._M_p; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize() - { _M_log_1_p = std::log(1.0 - _M_p); } - - double _M_p; - - double _M_log_1_p; - }; - - // constructors and member function - explicit - geometric_distribution(double __p = 0.5) - : _M_param(__p) - { } - - explicit - geometric_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - * - * Does nothing for the geometric distribution. - */ - void - reset() { } - - /** - * @brief Returns the distribution parameter @p p. - */ - double - p() const - { return _M_param.p(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return 0; } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two geometric distributions have - * the same parameters. - */ - friend bool - operator==(const geometric_distribution& __d1, - const geometric_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two geometric distributions have - * different parameters. - */ - template - inline bool - operator!=(const std::geometric_distribution<_IntType>& __d1, - const std::geometric_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %geometric_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %geometric_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::geometric_distribution<_IntType>& __x); - - /** - * @brief Extracts a %geometric_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %geometric_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::geometric_distribution<_IntType>& __x); - - - /** - * @brief A negative_binomial_distribution random number distribution. - * - * The formula for the negative binomial probability mass function is - * @f$p(i) = \binom{n}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ - * and @f$p@f$ are the parameters of the distribution. - */ - template - class negative_binomial_distribution - { - static_assert(std::is_integral<_IntType>::value, - "result_type must be an integral type"); - - public: - /** The type of the range of the distribution. */ - typedef _IntType result_type; - - /** Parameter type. */ - struct param_type - { - typedef negative_binomial_distribution<_IntType> distribution_type; - - explicit - param_type(_IntType __k = 1, double __p = 0.5) - : _M_k(__k), _M_p(__p) - { - __glibcxx_assert((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0)); - } - - _IntType - k() const - { return _M_k; } - - double - p() const - { return _M_p; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _IntType _M_k; - double _M_p; - }; - - explicit - negative_binomial_distribution(_IntType __k = 1, double __p = 0.5) - : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) - { } - - explicit - negative_binomial_distribution(const param_type& __p) - : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_gd.reset(); } - - /** - * @brief Return the @f$k@f$ parameter of the distribution. - */ - _IntType - k() const - { return _M_param.k(); } - - /** - * @brief Return the @f$p@f$ parameter of the distribution. - */ - double - p() const - { return _M_param.p(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate_impl(__f, __t, __urng); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two negative binomial distributions have - * the same parameters and the sequences that would be - * generated are equal. - */ - friend bool - operator==(const negative_binomial_distribution& __d1, - const negative_binomial_distribution& __d2) - { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } - - /** - * @brief Inserts a %negative_binomial_distribution random - * number distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %negative_binomial_distribution random number - * distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::negative_binomial_distribution<_IntType1>& __x); - - /** - * @brief Extracts a %negative_binomial_distribution random number - * distribution @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %negative_binomial_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::negative_binomial_distribution<_IntType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng); - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::gamma_distribution _M_gd; - }; - - /** - * @brief Return true if two negative binomial distributions are different. - */ - template - inline bool - operator!=(const std::negative_binomial_distribution<_IntType>& __d1, - const std::negative_binomial_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - - /* @} */ // group random_distributions_bernoulli - - /** - * @addtogroup random_distributions_poisson Poisson Distributions - * @ingroup random_distributions - * @{ - */ - - /** - * @brief A discrete Poisson random number distribution. - * - * The formula for the Poisson probability density function is - * @f$p(i|\mu) = \frac{\mu^i}{i!} e^{-\mu}@f$ where @f$\mu@f$ is the - * parameter of the distribution. - */ - template - class poisson_distribution - { - static_assert(std::is_integral<_IntType>::value, - "result_type must be an integral type"); - - public: - /** The type of the range of the distribution. */ - typedef _IntType result_type; - - /** Parameter type. */ - struct param_type - { - typedef poisson_distribution<_IntType> distribution_type; - friend class poisson_distribution<_IntType>; - - explicit - param_type(double __mean = 1.0) - : _M_mean(__mean) - { - __glibcxx_assert(_M_mean > 0.0); - _M_initialize(); - } - - double - mean() const - { return _M_mean; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_mean == __p2._M_mean; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - // Hosts either log(mean) or the threshold of the simple method. - void - _M_initialize(); - - double _M_mean; - - double _M_lm_thr; -#if _GLIBCXX_USE_C99_MATH_TR1 - double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; -#endif - }; - - // constructors and member function - explicit - poisson_distribution(double __mean = 1.0) - : _M_param(__mean), _M_nd() - { } - - explicit - poisson_distribution(const param_type& __p) - : _M_param(__p), _M_nd() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_nd.reset(); } - - /** - * @brief Returns the distribution parameter @p mean. - */ - double - mean() const - { return _M_param.mean(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return 0; } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Poisson distributions have the same - * parameters and the sequences that would be generated - * are equal. - */ - friend bool - operator==(const poisson_distribution& __d1, - const poisson_distribution& __d2) -#ifdef _GLIBCXX_USE_C99_MATH_TR1 - { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } -#else - { return __d1._M_param == __d2._M_param; } -#endif - - /** - * @brief Inserts a %poisson_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %poisson_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::poisson_distribution<_IntType1>& __x); - - /** - * @brief Extracts a %poisson_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %poisson_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::poisson_distribution<_IntType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. - std::normal_distribution _M_nd; - }; - - /** - * @brief Return true if two Poisson distributions are different. - */ - template - inline bool - operator!=(const std::poisson_distribution<_IntType>& __d1, - const std::poisson_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief An exponential continuous distribution for random numbers. - * - * The formula for the exponential probability density function is - * @f$p(x|\lambda) = \lambda e^{-\lambda x}@f$. - * - * - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$\frac{1}{\lambda}@f$
Median@f$\frac{\ln 2}{\lambda}@f$
Mode@f$zero@f$
Range@f$[0, \infty]@f$
Standard Deviation@f$\frac{1}{\lambda}@f$
- */ - template - class exponential_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef exponential_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __lambda = _RealType(1)) - : _M_lambda(__lambda) - { - __glibcxx_assert(_M_lambda > _RealType(0)); - } - - _RealType - lambda() const - { return _M_lambda; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_lambda == __p2._M_lambda; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_lambda; - }; - - public: - /** - * @brief Constructs an exponential distribution with inverse scale - * parameter @f$\lambda@f$. - */ - explicit - exponential_distribution(const result_type& __lambda = result_type(1)) - : _M_param(__lambda) - { } - - explicit - exponential_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - * - * Has no effect on exponential distributions. - */ - void - reset() { } - - /** - * @brief Returns the inverse scale parameter of the distribution. - */ - _RealType - lambda() const - { return _M_param.lambda(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - return -std::log(result_type(1) - __aurng()) / __p.lambda(); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two exponential distributions have the same - * parameters. - */ - friend bool - operator==(const exponential_distribution& __d1, - const exponential_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two exponential distributions have different - * parameters. - */ - template - inline bool - operator!=(const std::exponential_distribution<_RealType>& __d1, - const std::exponential_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %exponential_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %exponential_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::exponential_distribution<_RealType>& __x); - - /** - * @brief Extracts a %exponential_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %exponential_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::exponential_distribution<_RealType>& __x); - - - /** - * @brief A weibull_distribution random number distribution. - * - * The formula for the normal probability density function is: - * @f[ - * p(x|\alpha,\beta) = \frac{\alpha}{\beta} (\frac{x}{\beta})^{\alpha-1} - * \exp{(-(\frac{x}{\beta})^\alpha)} - * @f] - */ - template - class weibull_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef weibull_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __a = _RealType(1), - _RealType __b = _RealType(1)) - : _M_a(__a), _M_b(__b) - { } - - _RealType - a() const - { return _M_a; } - - _RealType - b() const - { return _M_b; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_a; - _RealType _M_b; - }; - - explicit - weibull_distribution(_RealType __a = _RealType(1), - _RealType __b = _RealType(1)) - : _M_param(__a, __b) - { } - - explicit - weibull_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Return the @f$a@f$ parameter of the distribution. - */ - _RealType - a() const - { return _M_param.a(); } - - /** - * @brief Return the @f$b@f$ parameter of the distribution. - */ - _RealType - b() const - { return _M_param.b(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Weibull distributions have the same - * parameters. - */ - friend bool - operator==(const weibull_distribution& __d1, - const weibull_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two Weibull distributions have different - * parameters. - */ - template - inline bool - operator!=(const std::weibull_distribution<_RealType>& __d1, - const std::weibull_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %weibull_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %weibull_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::weibull_distribution<_RealType>& __x); - - /** - * @brief Extracts a %weibull_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %weibull_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::weibull_distribution<_RealType>& __x); - - - /** - * @brief A extreme_value_distribution random number distribution. - * - * The formula for the normal probability mass function is - * @f[ - * p(x|a,b) = \frac{1}{b} - * \exp( \frac{a-x}{b} - \exp(\frac{a-x}{b})) - * @f] - */ - template - class extreme_value_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef extreme_value_distribution<_RealType> distribution_type; - - explicit - param_type(_RealType __a = _RealType(0), - _RealType __b = _RealType(1)) - : _M_a(__a), _M_b(__b) - { } - - _RealType - a() const - { return _M_a; } - - _RealType - b() const - { return _M_b; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_a; - _RealType _M_b; - }; - - explicit - extreme_value_distribution(_RealType __a = _RealType(0), - _RealType __b = _RealType(1)) - : _M_param(__a, __b) - { } - - explicit - extreme_value_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Return the @f$a@f$ parameter of the distribution. - */ - _RealType - a() const - { return _M_param.a(); } - - /** - * @brief Return the @f$b@f$ parameter of the distribution. - */ - _RealType - b() const - { return _M_param.b(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return std::numeric_limits::lowest(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two extreme value distributions have the same - * parameters. - */ - friend bool - operator==(const extreme_value_distribution& __d1, - const extreme_value_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two extreme value distributions have different - * parameters. - */ - template - inline bool - operator!=(const std::extreme_value_distribution<_RealType>& __d1, - const std::extreme_value_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief Inserts a %extreme_value_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %extreme_value_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::extreme_value_distribution<_RealType>& __x); - - /** - * @brief Extracts a %extreme_value_distribution random number - * distribution @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %extreme_value_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::extreme_value_distribution<_RealType>& __x); - - - /** - * @brief A discrete_distribution random number distribution. - * - * The formula for the discrete probability mass function is - * - */ - template - class discrete_distribution - { - static_assert(std::is_integral<_IntType>::value, - "result_type must be an integral type"); - - public: - /** The type of the range of the distribution. */ - typedef _IntType result_type; - - /** Parameter type. */ - struct param_type - { - typedef discrete_distribution<_IntType> distribution_type; - friend class discrete_distribution<_IntType>; - - param_type() - : _M_prob(), _M_cp() - { } - - template - param_type(_InputIterator __wbegin, - _InputIterator __wend) - : _M_prob(__wbegin, __wend), _M_cp() - { _M_initialize(); } - - param_type(initializer_list __wil) - : _M_prob(__wil.begin(), __wil.end()), _M_cp() - { _M_initialize(); } - - template - param_type(size_t __nw, double __xmin, double __xmax, - _Func __fw); - - // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ - param_type(const param_type&) = default; - param_type& operator=(const param_type&) = default; - - std::vector - probabilities() const - { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_prob == __p2._M_prob; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize(); - - std::vector _M_prob; - std::vector _M_cp; - }; - - discrete_distribution() - : _M_param() - { } - - template - discrete_distribution(_InputIterator __wbegin, - _InputIterator __wend) - : _M_param(__wbegin, __wend) - { } - - discrete_distribution(initializer_list __wl) - : _M_param(__wl) - { } - - template - discrete_distribution(size_t __nw, double __xmin, double __xmax, - _Func __fw) - : _M_param(__nw, __xmin, __xmax, __fw) - { } - - explicit - discrete_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Returns the probabilities of the distribution. - */ - std::vector - probabilities() const - { - return _M_param._M_prob.empty() - ? std::vector(1, 1.0) : _M_param._M_prob; - } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { - return _M_param._M_prob.empty() - ? result_type(0) : result_type(_M_param._M_prob.size() - 1); - } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two discrete distributions have the same - * parameters. - */ - friend bool - operator==(const discrete_distribution& __d1, - const discrete_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %discrete_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %discrete_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::discrete_distribution<_IntType1>& __x); - - /** - * @brief Extracts a %discrete_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %discrete_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::discrete_distribution<_IntType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two discrete distributions have different - * parameters. - */ - template - inline bool - operator!=(const std::discrete_distribution<_IntType>& __d1, - const std::discrete_distribution<_IntType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A piecewise_constant_distribution random number distribution. - * - * The formula for the piecewise constant probability mass function is - * - */ - template - class piecewise_constant_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef piecewise_constant_distribution<_RealType> distribution_type; - friend class piecewise_constant_distribution<_RealType>; - - param_type() - : _M_int(), _M_den(), _M_cp() - { } - - template - param_type(_InputIteratorB __bfirst, - _InputIteratorB __bend, - _InputIteratorW __wbegin); - - template - param_type(initializer_list<_RealType> __bi, _Func __fw); - - template - param_type(size_t __nw, _RealType __xmin, _RealType __xmax, - _Func __fw); - - // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ - param_type(const param_type&) = default; - param_type& operator=(const param_type&) = default; - - std::vector<_RealType> - intervals() const - { - if (_M_int.empty()) - { - std::vector<_RealType> __tmp(2); - __tmp[1] = _RealType(1); - return __tmp; - } - else - return _M_int; - } - - std::vector - densities() const - { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize(); - - std::vector<_RealType> _M_int; - std::vector _M_den; - std::vector _M_cp; - }; - - explicit - piecewise_constant_distribution() - : _M_param() - { } - - template - piecewise_constant_distribution(_InputIteratorB __bfirst, - _InputIteratorB __bend, - _InputIteratorW __wbegin) - : _M_param(__bfirst, __bend, __wbegin) - { } - - template - piecewise_constant_distribution(initializer_list<_RealType> __bl, - _Func __fw) - : _M_param(__bl, __fw) - { } - - template - piecewise_constant_distribution(size_t __nw, - _RealType __xmin, _RealType __xmax, - _Func __fw) - : _M_param(__nw, __xmin, __xmax, __fw) - { } - - explicit - piecewise_constant_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Returns a vector of the intervals. - */ - std::vector<_RealType> - intervals() const - { - if (_M_param._M_int.empty()) - { - std::vector<_RealType> __tmp(2); - __tmp[1] = _RealType(1); - return __tmp; - } - else - return _M_param._M_int; - } - - /** - * @brief Returns a vector of the probability densities. - */ - std::vector - densities() const - { - return _M_param._M_den.empty() - ? std::vector(1, 1.0) : _M_param._M_den; - } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { - return _M_param._M_int.empty() - ? result_type(0) : _M_param._M_int.front(); - } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { - return _M_param._M_int.empty() - ? result_type(1) : _M_param._M_int.back(); - } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two piecewise constant distributions have the - * same parameters. - */ - friend bool - operator==(const piecewise_constant_distribution& __d1, - const piecewise_constant_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %piecewise_constant_distribution random - * number distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %piecewise_constant_distribution random number - * distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::piecewise_constant_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %piecewise_constant_distribution random - * number distribution @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %piecewise_constant_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::piecewise_constant_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two piecewise constant distributions have - * different parameters. - */ - template - inline bool - operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, - const std::piecewise_constant_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A piecewise_linear_distribution random number distribution. - * - * The formula for the piecewise linear probability mass function is - * - */ - template - class piecewise_linear_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "result_type must be a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef piecewise_linear_distribution<_RealType> distribution_type; - friend class piecewise_linear_distribution<_RealType>; - - param_type() - : _M_int(), _M_den(), _M_cp(), _M_m() - { } - - template - param_type(_InputIteratorB __bfirst, - _InputIteratorB __bend, - _InputIteratorW __wbegin); - - template - param_type(initializer_list<_RealType> __bl, _Func __fw); - - template - param_type(size_t __nw, _RealType __xmin, _RealType __xmax, - _Func __fw); - - // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ - param_type(const param_type&) = default; - param_type& operator=(const param_type&) = default; - - std::vector<_RealType> - intervals() const - { - if (_M_int.empty()) - { - std::vector<_RealType> __tmp(2); - __tmp[1] = _RealType(1); - return __tmp; - } - else - return _M_int; - } - - std::vector - densities() const - { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize(); - - std::vector<_RealType> _M_int; - std::vector _M_den; - std::vector _M_cp; - std::vector _M_m; - }; - - explicit - piecewise_linear_distribution() - : _M_param() - { } - - template - piecewise_linear_distribution(_InputIteratorB __bfirst, - _InputIteratorB __bend, - _InputIteratorW __wbegin) - : _M_param(__bfirst, __bend, __wbegin) - { } - - template - piecewise_linear_distribution(initializer_list<_RealType> __bl, - _Func __fw) - : _M_param(__bl, __fw) - { } - - template - piecewise_linear_distribution(size_t __nw, - _RealType __xmin, _RealType __xmax, - _Func __fw) - : _M_param(__nw, __xmin, __xmax, __fw) - { } - - explicit - piecewise_linear_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Return the intervals of the distribution. - */ - std::vector<_RealType> - intervals() const - { - if (_M_param._M_int.empty()) - { - std::vector<_RealType> __tmp(2); - __tmp[1] = _RealType(1); - return __tmp; - } - else - return _M_param._M_int; - } - - /** - * @brief Return a vector of the probability densities of the - * distribution. - */ - std::vector - densities() const - { - return _M_param._M_den.empty() - ? std::vector(2, 1.0) : _M_param._M_den; - } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { - return _M_param._M_int.empty() - ? result_type(0) : _M_param._M_int.front(); - } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { - return _M_param._M_int.empty() - ? result_type(1) : _M_param._M_int.back(); - } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two piecewise linear distributions have the - * same parameters. - */ - friend bool - operator==(const piecewise_linear_distribution& __d1, - const piecewise_linear_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %piecewise_linear_distribution random number - * distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %piecewise_linear_distribution random number - * distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const std::piecewise_linear_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %piecewise_linear_distribution random number - * distribution @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %piecewise_linear_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - std::piecewise_linear_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two piecewise linear distributions have - * different parameters. - */ - template - inline bool - operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, - const std::piecewise_linear_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /* @} */ // group random_distributions_poisson - - /* @} */ // group random_distributions - - /** - * @addtogroup random_utilities Random Number Utilities - * @ingroup random - * @{ - */ - - /** - * @brief The seed_seq class generates sequences of seeds for random - * number generators. - */ - class seed_seq - { - public: - /** The type of the seed vales. */ - typedef uint_least32_t result_type; - - /** Default constructor. */ - seed_seq() noexcept - : _M_v() - { } - - template - seed_seq(std::initializer_list<_IntType> il); - - template - seed_seq(_InputIterator __begin, _InputIterator __end); - - // generating functions - template - void - generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); - - // property functions - size_t size() const noexcept - { return _M_v.size(); } - - template - void - param(OutputIterator __dest) const - { std::copy(_M_v.begin(), _M_v.end(), __dest); } - - // no copy functions - seed_seq(const seed_seq&) = delete; - seed_seq& operator=(const seed_seq&) = delete; - - private: - std::vector _M_v; - }; - - /* @} */ // group random_utilities - - /* @} */ // group random - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/random.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/random.tcc deleted file mode 100644 index c43d85551..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/random.tcc +++ /dev/null @@ -1,3349 +0,0 @@ -// random number generation (out of line) -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/random.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{random} - */ - -#ifndef _RANDOM_TCC -#define _RANDOM_TCC 1 - -#include // std::accumulate and std::partial_sum - -namespace std _GLIBCXX_VISIBILITY(default) -{ - /* - * (Further) implementation-space details. - */ - namespace __detail - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - // General case for x = (ax + c) mod m -- use Schrage's algorithm - // to avoid integer overflow. - // - // Preconditions: a > 0, m > 0. - // - // Note: only works correctly for __m % __a < __m / __a. - template - _Tp - _Mod<_Tp, __m, __a, __c, false, true>:: - __calc(_Tp __x) - { - if (__a == 1) - __x %= __m; - else - { - static const _Tp __q = __m / __a; - static const _Tp __r = __m % __a; - - _Tp __t1 = __a * (__x % __q); - _Tp __t2 = __r * (__x / __q); - if (__t1 >= __t2) - __x = __t1 - __t2; - else - __x = __m - __t2 + __t1; - } - - if (__c != 0) - { - const _Tp __d = __m - __x; - if (__d > __c) - __x += __c; - else - __x = __c - __d; - } - return __x; - } - - template - _OutputIterator - __normalize(_InputIterator __first, _InputIterator __last, - _OutputIterator __result, const _Tp& __factor) - { - for (; __first != __last; ++__first, ++__result) - *__result = *__first / __factor; - return __result; - } - - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace __detail - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - constexpr _UIntType - linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier; - - template - constexpr _UIntType - linear_congruential_engine<_UIntType, __a, __c, __m>::increment; - - template - constexpr _UIntType - linear_congruential_engine<_UIntType, __a, __c, __m>::modulus; - - template - constexpr _UIntType - linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed; - - /** - * Seeds the LCR with integral value @p __s, adjusted so that the - * ring identity is never a member of the convergence set. - */ - template - void - linear_congruential_engine<_UIntType, __a, __c, __m>:: - seed(result_type __s) - { - if ((__detail::__mod<_UIntType, __m>(__c) == 0) - && (__detail::__mod<_UIntType, __m>(__s) == 0)) - _M_x = 1; - else - _M_x = __detail::__mod<_UIntType, __m>(__s); - } - - /** - * Seeds the LCR engine with a value generated by @p __q. - */ - template - template - typename std::enable_if::value>::type - linear_congruential_engine<_UIntType, __a, __c, __m>:: - seed(_Sseq& __q) - { - const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits - : std::__lg(__m); - const _UIntType __k = (__k0 + 31) / 32; - uint_least32_t __arr[__k + 3]; - __q.generate(__arr + 0, __arr + __k + 3); - _UIntType __factor = 1u; - _UIntType __sum = 0u; - for (size_t __j = 0; __j < __k; ++__j) - { - __sum += __arr[__j + 3] * __factor; - __factor *= __detail::_Shift<_UIntType, 32>::__value; - } - seed(__sum); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const linear_congruential_engine<_UIntType, - __a, __c, __m>& __lcr) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__os.widen(' ')); - - __os << __lcr._M_x; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec); - - __is >> __lcr._M_x; - - __is.flags(__flags); - return __is; - } - - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::word_size; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::state_size; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::shift_size; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::mask_bits; - - template - constexpr _UIntType - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::xor_mask; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_u; - - template - constexpr _UIntType - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_d; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_s; - - template - constexpr _UIntType - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_b; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_t; - - template - constexpr _UIntType - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_c; - - template - constexpr size_t - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::tempering_l; - - template - constexpr _UIntType - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>:: - initialization_multiplier; - - template - constexpr _UIntType - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::default_seed; - - template - void - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>:: - seed(result_type __sd) - { - _M_x[0] = __detail::__mod<_UIntType, - __detail::_Shift<_UIntType, __w>::__value>(__sd); - - for (size_t __i = 1; __i < state_size; ++__i) - { - _UIntType __x = _M_x[__i - 1]; - __x ^= __x >> (__w - 2); - __x *= __f; - __x += __detail::__mod<_UIntType, __n>(__i); - _M_x[__i] = __detail::__mod<_UIntType, - __detail::_Shift<_UIntType, __w>::__value>(__x); - } - _M_p = state_size; - } - - template - template - typename std::enable_if::value>::type - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>:: - seed(_Sseq& __q) - { - const _UIntType __upper_mask = (~_UIntType()) << __r; - const size_t __k = (__w + 31) / 32; - uint_least32_t __arr[__n * __k]; - __q.generate(__arr + 0, __arr + __n * __k); - - bool __zero = true; - for (size_t __i = 0; __i < state_size; ++__i) - { - _UIntType __factor = 1u; - _UIntType __sum = 0u; - for (size_t __j = 0; __j < __k; ++__j) - { - __sum += __arr[__k * __i + __j] * __factor; - __factor *= __detail::_Shift<_UIntType, 32>::__value; - } - _M_x[__i] = __detail::__mod<_UIntType, - __detail::_Shift<_UIntType, __w>::__value>(__sum); - - if (__zero) - { - if (__i == 0) - { - if ((_M_x[0] & __upper_mask) != 0u) - __zero = false; - } - else if (_M_x[__i] != 0u) - __zero = false; - } - } - if (__zero) - _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; - _M_p = state_size; - } - - template - void - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>:: - _M_gen_rand(void) - { - const _UIntType __upper_mask = (~_UIntType()) << __r; - const _UIntType __lower_mask = ~__upper_mask; - - for (size_t __k = 0; __k < (__n - __m); ++__k) - { - _UIntType __y = ((_M_x[__k] & __upper_mask) - | (_M_x[__k + 1] & __lower_mask)); - _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) - ^ ((__y & 0x01) ? __a : 0)); - } - - for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) - { - _UIntType __y = ((_M_x[__k] & __upper_mask) - | (_M_x[__k + 1] & __lower_mask)); - _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) - ^ ((__y & 0x01) ? __a : 0)); - } - - _UIntType __y = ((_M_x[__n - 1] & __upper_mask) - | (_M_x[0] & __lower_mask)); - _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) - ^ ((__y & 0x01) ? __a : 0)); - _M_p = 0; - } - - template - void - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>:: - discard(unsigned long long __z) - { - while (__z > state_size - _M_p) - { - __z -= state_size - _M_p; - _M_gen_rand(); - } - _M_p += __z; - } - - template - typename - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>::result_type - mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, - __s, __b, __t, __c, __l, __f>:: - operator()() - { - // Reload the vector - cost is O(n) amortized over n calls. - if (_M_p >= state_size) - _M_gen_rand(); - - // Calculate o(x(i)). - result_type __z = _M_x[_M_p++]; - __z ^= (__z >> __u) & __d; - __z ^= (__z << __s) & __b; - __z ^= (__z << __t) & __c; - __z ^= (__z >> __l); - - return __z; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const mersenne_twister_engine<_UIntType, __w, __n, __m, - __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - for (size_t __i = 0; __i < __n; ++__i) - __os << __x._M_x[__i] << __space; - __os << __x._M_p; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - mersenne_twister_engine<_UIntType, __w, __n, __m, - __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - for (size_t __i = 0; __i < __n; ++__i) - __is >> __x._M_x[__i]; - __is >> __x._M_p; - - __is.flags(__flags); - return __is; - } - - - template - constexpr size_t - subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size; - - template - constexpr size_t - subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag; - - template - constexpr size_t - subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag; - - template - constexpr _UIntType - subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed; - - template - void - subtract_with_carry_engine<_UIntType, __w, __s, __r>:: - seed(result_type __value) - { - std::linear_congruential_engine - __lcg(__value == 0u ? default_seed : __value); - - const size_t __n = (__w + 31) / 32; - - for (size_t __i = 0; __i < long_lag; ++__i) - { - _UIntType __sum = 0u; - _UIntType __factor = 1u; - for (size_t __j = 0; __j < __n; ++__j) - { - __sum += __detail::__mod::__value> - (__lcg()) * __factor; - __factor *= __detail::_Shift<_UIntType, 32>::__value; - } - _M_x[__i] = __detail::__mod<_UIntType, - __detail::_Shift<_UIntType, __w>::__value>(__sum); - } - _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; - _M_p = 0; - } - - template - template - typename std::enable_if::value>::type - subtract_with_carry_engine<_UIntType, __w, __s, __r>:: - seed(_Sseq& __q) - { - const size_t __k = (__w + 31) / 32; - uint_least32_t __arr[__r * __k]; - __q.generate(__arr + 0, __arr + __r * __k); - - for (size_t __i = 0; __i < long_lag; ++__i) - { - _UIntType __sum = 0u; - _UIntType __factor = 1u; - for (size_t __j = 0; __j < __k; ++__j) - { - __sum += __arr[__k * __i + __j] * __factor; - __factor *= __detail::_Shift<_UIntType, 32>::__value; - } - _M_x[__i] = __detail::__mod<_UIntType, - __detail::_Shift<_UIntType, __w>::__value>(__sum); - } - _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; - _M_p = 0; - } - - template - typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: - result_type - subtract_with_carry_engine<_UIntType, __w, __s, __r>:: - operator()() - { - // Derive short lag index from current index. - long __ps = _M_p - short_lag; - if (__ps < 0) - __ps += long_lag; - - // Calculate new x(i) without overflow or division. - // NB: Thanks to the requirements for _UIntType, _M_x[_M_p] + _M_carry - // cannot overflow. - _UIntType __xi; - if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) - { - __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; - _M_carry = 0; - } - else - { - __xi = (__detail::_Shift<_UIntType, __w>::__value - - _M_x[_M_p] - _M_carry + _M_x[__ps]); - _M_carry = 1; - } - _M_x[_M_p] = __xi; - - // Adjust current index to loop around in ring buffer. - if (++_M_p >= long_lag) - _M_p = 0; - - return __xi; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const subtract_with_carry_engine<_UIntType, - __w, __s, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - for (size_t __i = 0; __i < __r; ++__i) - __os << __x._M_x[__i] << __space; - __os << __x._M_carry << __space << __x._M_p; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - for (size_t __i = 0; __i < __r; ++__i) - __is >> __x._M_x[__i]; - __is >> __x._M_carry; - __is >> __x._M_p; - - __is.flags(__flags); - return __is; - } - - - template - constexpr size_t - discard_block_engine<_RandomNumberEngine, __p, __r>::block_size; - - template - constexpr size_t - discard_block_engine<_RandomNumberEngine, __p, __r>::used_block; - - template - typename discard_block_engine<_RandomNumberEngine, - __p, __r>::result_type - discard_block_engine<_RandomNumberEngine, __p, __r>:: - operator()() - { - if (_M_n >= used_block) - { - _M_b.discard(block_size - _M_n); - _M_n = 0; - } - ++_M_n; - return _M_b(); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const discard_block_engine<_RandomNumberEngine, - __p, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - __os << __x.base() << __space << __x._M_n; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - discard_block_engine<_RandomNumberEngine, __p, __r>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - __is >> __x._M_b >> __x._M_n; - - __is.flags(__flags); - return __is; - } - - - template - typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: - result_type - independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: - operator()() - { - typedef typename _RandomNumberEngine::result_type _Eresult_type; - const _Eresult_type __r - = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() - ? _M_b.max() - _M_b.min() + 1 : 0); - const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; - const unsigned __m = __r ? std::__lg(__r) : __edig; - - typedef typename std::common_type<_Eresult_type, result_type>::type - __ctype; - const unsigned __cdig = std::numeric_limits<__ctype>::digits; - - unsigned __n, __n0; - __ctype __s0, __s1, __y0, __y1; - - for (size_t __i = 0; __i < 2; ++__i) - { - __n = (__w + __m - 1) / __m + __i; - __n0 = __n - __w % __n; - const unsigned __w0 = __w / __n; // __w0 <= __m - - __s0 = 0; - __s1 = 0; - if (__w0 < __cdig) - { - __s0 = __ctype(1) << __w0; - __s1 = __s0 << 1; - } - - __y0 = 0; - __y1 = 0; - if (__r) - { - __y0 = __s0 * (__r / __s0); - if (__s1) - __y1 = __s1 * (__r / __s1); - - if (__r - __y0 <= __y0 / __n) - break; - } - else - break; - } - - result_type __sum = 0; - for (size_t __k = 0; __k < __n0; ++__k) - { - __ctype __u; - do - __u = _M_b() - _M_b.min(); - while (__y0 && __u >= __y0); - __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); - } - for (size_t __k = __n0; __k < __n; ++__k) - { - __ctype __u; - do - __u = _M_b() - _M_b.min(); - while (__y1 && __u >= __y1); - __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); - } - return __sum; - } - - - template - constexpr size_t - shuffle_order_engine<_RandomNumberEngine, __k>::table_size; - - template - typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type - shuffle_order_engine<_RandomNumberEngine, __k>:: - operator()() - { - size_t __j = __k * ((_M_y - _M_b.min()) - / (_M_b.max() - _M_b.min() + 1.0L)); - _M_y = _M_v[__j]; - _M_v[__j] = _M_b(); - - return _M_y; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const shuffle_order_engine<_RandomNumberEngine, __k>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - __os << __x.base(); - for (size_t __i = 0; __i < __k; ++__i) - __os << __space << __x._M_v[__i]; - __os << __space << __x._M_y; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - shuffle_order_engine<_RandomNumberEngine, __k>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - __is >> __x._M_b; - for (size_t __i = 0; __i < __k; ++__i) - __is >> __x._M_v[__i]; - __is >> __x._M_y; - - __is.flags(__flags); - return __is; - } - - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const uniform_int_distribution<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - - __os << __x.a() << __space << __x.b(); - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - uniform_int_distribution<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _IntType __a, __b; - __is >> __a >> __b; - __x.param(typename uniform_int_distribution<_IntType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - uniform_real_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - auto __range = __p.b() - __p.a(); - while (__f != __t) - *__f++ = __aurng() * __range + __p.a(); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const uniform_real_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - uniform_real_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - _RealType __a, __b; - __is >> __a >> __b; - __x.param(typename uniform_real_distribution<_RealType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - template - void - std::bernoulli_distribution:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - auto __limit = __p.p() * (__aurng.max() - __aurng.min()); - - while (__f != __t) - *__f++ = (__aurng() - __aurng.min()) < __limit; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bernoulli_distribution& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(std::numeric_limits::max_digits10); - - __os << __x.p(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - - template - template - typename geometric_distribution<_IntType>::result_type - geometric_distribution<_IntType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - // About the epsilon thing see this thread: - // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html - const double __naf = - (1 - std::numeric_limits::epsilon()) / 2; - // The largest _RealType convertible to _IntType. - const double __thr = - std::numeric_limits<_IntType>::max() + __naf; - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - double __cand; - do - __cand = std::floor(std::log(1.0 - __aurng()) / __param._M_log_1_p); - while (__cand >= __thr); - - return result_type(__cand + __naf); - } - - template - template - void - geometric_distribution<_IntType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - // About the epsilon thing see this thread: - // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html - const double __naf = - (1 - std::numeric_limits::epsilon()) / 2; - // The largest _RealType convertible to _IntType. - const double __thr = - std::numeric_limits<_IntType>::max() + __naf; - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - while (__f != __t) - { - double __cand; - do - __cand = std::floor(std::log(1.0 - __aurng()) - / __param._M_log_1_p); - while (__cand >= __thr); - - *__f++ = __cand + __naf; - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const geometric_distribution<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(std::numeric_limits::max_digits10); - - __os << __x.p(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - geometric_distribution<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - double __p; - __is >> __p; - __x.param(typename geometric_distribution<_IntType>::param_type(__p)); - - __is.flags(__flags); - return __is; - } - - // This is Leger's algorithm, also in Devroye, Ch. X, Example 1.5. - template - template - typename negative_binomial_distribution<_IntType>::result_type - negative_binomial_distribution<_IntType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - const double __y = _M_gd(__urng); - - // XXX Is the constructor too slow? - std::poisson_distribution __poisson(__y); - return __poisson(__urng); - } - - template - template - typename negative_binomial_distribution<_IntType>::result_type - negative_binomial_distribution<_IntType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typedef typename std::gamma_distribution::param_type - param_type; - - const double __y = - _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); - - std::poisson_distribution __poisson(__y); - return __poisson(__urng); - } - - template - template - void - negative_binomial_distribution<_IntType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - while (__f != __t) - { - const double __y = _M_gd(__urng); - - // XXX Is the constructor too slow? - std::poisson_distribution __poisson(__y); - *__f++ = __poisson(__urng); - } - } - - template - template - void - negative_binomial_distribution<_IntType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - typename std::gamma_distribution::param_type - __p2(__p.k(), (1.0 - __p.p()) / __p.p()); - - while (__f != __t) - { - const double __y = _M_gd(__urng, __p2); - - std::poisson_distribution __poisson(__y); - *__f++ = __poisson(__urng); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const negative_binomial_distribution<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(std::numeric_limits::max_digits10); - - __os << __x.k() << __space << __x.p() - << __space << __x._M_gd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - negative_binomial_distribution<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - _IntType __k; - double __p; - __is >> __k >> __p >> __x._M_gd; - __x.param(typename negative_binomial_distribution<_IntType>:: - param_type(__k, __p)); - - __is.flags(__flags); - return __is; - } - - - template - void - poisson_distribution<_IntType>::param_type:: - _M_initialize() - { -#if _GLIBCXX_USE_C99_MATH_TR1 - if (_M_mean >= 12) - { - const double __m = std::floor(_M_mean); - _M_lm_thr = std::log(_M_mean); - _M_lfm = std::lgamma(__m + 1); - _M_sm = std::sqrt(__m); - - const double __pi_4 = 0.7853981633974483096156608458198757L; - const double __dx = std::sqrt(2 * __m * std::log(32 * __m - / __pi_4)); - _M_d = std::round(std::max(6.0, std::min(__m, __dx))); - const double __cx = 2 * __m + _M_d; - _M_scx = std::sqrt(__cx / 2); - _M_1cx = 1 / __cx; - - _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); - _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) - / _M_d; - } - else -#endif - _M_lm_thr = std::exp(-_M_mean); - } - - /** - * A rejection algorithm when mean >= 12 and a simple method based - * upon the multiplication of uniform random variates otherwise. - * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 - * is defined. - * - * Reference: - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!). - */ - template - template - typename poisson_distribution<_IntType>::result_type - poisson_distribution<_IntType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); -#if _GLIBCXX_USE_C99_MATH_TR1 - if (__param.mean() >= 12) - { - double __x; - - // See comments above... - const double __naf = - (1 - std::numeric_limits::epsilon()) / 2; - const double __thr = - std::numeric_limits<_IntType>::max() + __naf; - - const double __m = std::floor(__param.mean()); - // sqrt(pi / 2) - const double __spi_2 = 1.2533141373155002512078826424055226L; - const double __c1 = __param._M_sm * __spi_2; - const double __c2 = __param._M_c2b + __c1; - const double __c3 = __c2 + 1; - const double __c4 = __c3 + 1; - // e^(1 / 78) - const double __e178 = 1.0129030479320018583185514777512983L; - const double __c5 = __c4 + __e178; - const double __c = __param._M_cb + __c5; - const double __2cx = 2 * (2 * __m + __param._M_d); - - bool __reject = true; - do - { - const double __u = __c * __aurng(); - const double __e = -std::log(1.0 - __aurng()); - - double __w = 0.0; - - if (__u <= __c1) - { - const double __n = _M_nd(__urng); - const double __y = -std::abs(__n) * __param._M_sm - 1; - __x = std::floor(__y); - __w = -__n * __n / 2; - if (__x < -__m) - continue; - } - else if (__u <= __c2) - { - const double __n = _M_nd(__urng); - const double __y = 1 + std::abs(__n) * __param._M_scx; - __x = std::ceil(__y); - __w = __y * (2 - __y) * __param._M_1cx; - if (__x > __param._M_d) - continue; - } - else if (__u <= __c3) - // NB: This case not in the book, nor in the Errata, - // but should be ok... - __x = -1; - else if (__u <= __c4) - __x = 0; - else if (__u <= __c5) - __x = 1; - else - { - const double __v = -std::log(1.0 - __aurng()); - const double __y = __param._M_d - + __v * __2cx / __param._M_d; - __x = std::ceil(__y); - __w = -__param._M_d * __param._M_1cx * (1 + __y / 2); - } - - __reject = (__w - __e - __x * __param._M_lm_thr - > __param._M_lfm - std::lgamma(__x + __m + 1)); - - __reject |= __x + __m >= __thr; - - } while (__reject); - - return result_type(__x + __m + __naf); - } - else -#endif - { - _IntType __x = 0; - double __prod = 1.0; - - do - { - __prod *= __aurng(); - __x += 1; - } - while (__prod > __param._M_lm_thr); - - return __x - 1; - } - } - - template - template - void - poisson_distribution<_IntType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - // We could duplicate everything from operator()... - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const poisson_distribution<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits::max_digits10); - - __os << __x.mean() << __space << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - poisson_distribution<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - double __mean; - __is >> __mean >> __x._M_nd; - __x.param(typename poisson_distribution<_IntType>::param_type(__mean)); - - __is.flags(__flags); - return __is; - } - - - template - void - binomial_distribution<_IntType>::param_type:: - _M_initialize() - { - const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; - - _M_easy = true; - -#if _GLIBCXX_USE_C99_MATH_TR1 - if (_M_t * __p12 >= 8) - { - _M_easy = false; - const double __np = std::floor(_M_t * __p12); - const double __pa = __np / _M_t; - const double __1p = 1 - __pa; - - const double __pi_4 = 0.7853981633974483096156608458198757L; - const double __d1x = - std::sqrt(__np * __1p * std::log(32 * __np - / (81 * __pi_4 * __1p))); - _M_d1 = std::round(std::max(1.0, __d1x)); - const double __d2x = - std::sqrt(__np * __1p * std::log(32 * _M_t * __1p - / (__pi_4 * __pa))); - _M_d2 = std::round(std::max(1.0, __d2x)); - - // sqrt(pi / 2) - const double __spi_2 = 1.2533141373155002512078826424055226L; - _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); - _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p)); - _M_c = 2 * _M_d1 / __np; - _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; - const double __a12 = _M_a1 + _M_s2 * __spi_2; - const double __s1s = _M_s1 * _M_s1; - _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) - * 2 * __s1s / _M_d1 - * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); - const double __s2s = _M_s2 * _M_s2; - _M_s = (_M_a123 + 2 * __s2s / _M_d2 - * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); - _M_lf = (std::lgamma(__np + 1) - + std::lgamma(_M_t - __np + 1)); - _M_lp1p = std::log(__pa / __1p); - - _M_q = -std::log(1 - (__p12 - __pa) / __1p); - } - else -#endif - _M_q = -std::log(1 - __p12); - } - - template - template - typename binomial_distribution<_IntType>::result_type - binomial_distribution<_IntType>:: - _M_waiting(_UniformRandomNumberGenerator& __urng, - _IntType __t, double __q) - { - _IntType __x = 0; - double __sum = 0.0; - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - do - { - if (__t == __x) - return __x; - const double __e = -std::log(1.0 - __aurng()); - __sum += __e / (__t - __x); - __x += 1; - } - while (__sum <= __q); - - return __x - 1; - } - - /** - * A rejection algorithm when t * p >= 8 and a simple waiting time - * method - the second in the referenced book - otherwise. - * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 - * is defined. - * - * Reference: - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. X, Sect. 4 (+ Errata!). - */ - template - template - typename binomial_distribution<_IntType>::result_type - binomial_distribution<_IntType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - result_type __ret; - const _IntType __t = __param.t(); - const double __p = __param.p(); - const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - -#if _GLIBCXX_USE_C99_MATH_TR1 - if (!__param._M_easy) - { - double __x; - - // See comments above... - const double __naf = - (1 - std::numeric_limits::epsilon()) / 2; - const double __thr = - std::numeric_limits<_IntType>::max() + __naf; - - const double __np = std::floor(__t * __p12); - - // sqrt(pi / 2) - const double __spi_2 = 1.2533141373155002512078826424055226L; - const double __a1 = __param._M_a1; - const double __a12 = __a1 + __param._M_s2 * __spi_2; - const double __a123 = __param._M_a123; - const double __s1s = __param._M_s1 * __param._M_s1; - const double __s2s = __param._M_s2 * __param._M_s2; - - bool __reject; - do - { - const double __u = __param._M_s * __aurng(); - - double __v; - - if (__u <= __a1) - { - const double __n = _M_nd(__urng); - const double __y = __param._M_s1 * std::abs(__n); - __reject = __y >= __param._M_d1; - if (!__reject) - { - const double __e = -std::log(1.0 - __aurng()); - __x = std::floor(__y); - __v = -__e - __n * __n / 2 + __param._M_c; - } - } - else if (__u <= __a12) - { - const double __n = _M_nd(__urng); - const double __y = __param._M_s2 * std::abs(__n); - __reject = __y >= __param._M_d2; - if (!__reject) - { - const double __e = -std::log(1.0 - __aurng()); - __x = std::floor(-__y); - __v = -__e - __n * __n / 2; - } - } - else if (__u <= __a123) - { - const double __e1 = -std::log(1.0 - __aurng()); - const double __e2 = -std::log(1.0 - __aurng()); - - const double __y = __param._M_d1 - + 2 * __s1s * __e1 / __param._M_d1; - __x = std::floor(__y); - __v = (-__e2 + __param._M_d1 * (1 / (__t - __np) - -__y / (2 * __s1s))); - __reject = false; - } - else - { - const double __e1 = -std::log(1.0 - __aurng()); - const double __e2 = -std::log(1.0 - __aurng()); - - const double __y = __param._M_d2 - + 2 * __s2s * __e1 / __param._M_d2; - __x = std::floor(-__y); - __v = -__e2 - __param._M_d2 * __y / (2 * __s2s); - __reject = false; - } - - __reject = __reject || __x < -__np || __x > __t - __np; - if (!__reject) - { - const double __lfx = - std::lgamma(__np + __x + 1) - + std::lgamma(__t - (__np + __x) + 1); - __reject = __v > __param._M_lf - __lfx - + __x * __param._M_lp1p; - } - - __reject |= __x + __np >= __thr; - } - while (__reject); - - __x += __np + __naf; - - const _IntType __z = _M_waiting(__urng, __t - _IntType(__x), - __param._M_q); - __ret = _IntType(__x) + __z; - } - else -#endif - __ret = _M_waiting(__urng, __t, __param._M_q); - - if (__p12 != __p) - __ret = __t - __ret; - return __ret; - } - - template - template - void - binomial_distribution<_IntType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - // We could duplicate everything from operator()... - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const binomial_distribution<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits::max_digits10); - - __os << __x.t() << __space << __x.p() - << __space << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - binomial_distribution<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _IntType __t; - double __p; - __is >> __t >> __p >> __x._M_nd; - __x.param(typename binomial_distribution<_IntType>:: - param_type(__t, __p)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - std::exponential_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - while (__f != __t) - *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const exponential_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.lambda(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - exponential_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __lambda; - __is >> __lambda; - __x.param(typename exponential_distribution<_RealType>:: - param_type(__lambda)); - - __is.flags(__flags); - return __is; - } - - - /** - * Polar method due to Marsaglia. - * - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. V, Sect. 4.4. - */ - template - template - typename normal_distribution<_RealType>::result_type - normal_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - result_type __ret; - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - if (_M_saved_available) - { - _M_saved_available = false; - __ret = _M_saved; - } - else - { - result_type __x, __y, __r2; - do - { - __x = result_type(2.0) * __aurng() - 1.0; - __y = result_type(2.0) * __aurng() - 1.0; - __r2 = __x * __x + __y * __y; - } - while (__r2 > 1.0 || __r2 == 0.0); - - const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); - _M_saved = __x * __mult; - _M_saved_available = true; - __ret = __y * __mult; - } - - __ret = __ret * __param.stddev() + __param.mean(); - return __ret; - } - - template - template - void - normal_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - - if (__f == __t) - return; - - if (_M_saved_available) - { - _M_saved_available = false; - *__f++ = _M_saved * __param.stddev() + __param.mean(); - - if (__f == __t) - return; - } - - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - while (__f + 1 < __t) - { - result_type __x, __y, __r2; - do - { - __x = result_type(2.0) * __aurng() - 1.0; - __y = result_type(2.0) * __aurng() - 1.0; - __r2 = __x * __x + __y * __y; - } - while (__r2 > 1.0 || __r2 == 0.0); - - const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); - *__f++ = __y * __mult * __param.stddev() + __param.mean(); - *__f++ = __x * __mult * __param.stddev() + __param.mean(); - } - - if (__f != __t) - { - result_type __x, __y, __r2; - do - { - __x = result_type(2.0) * __aurng() - 1.0; - __y = result_type(2.0) * __aurng() - 1.0; - __r2 = __x * __x + __y * __y; - } - while (__r2 > 1.0 || __r2 == 0.0); - - const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); - _M_saved = __x * __mult; - _M_saved_available = true; - *__f = __y * __mult * __param.stddev() + __param.mean(); - } - } - - template - bool - operator==(const std::normal_distribution<_RealType>& __d1, - const std::normal_distribution<_RealType>& __d2) - { - if (__d1._M_param == __d2._M_param - && __d1._M_saved_available == __d2._M_saved_available) - { - if (__d1._M_saved_available - && __d1._M_saved == __d2._M_saved) - return true; - else if(!__d1._M_saved_available) - return true; - else - return false; - } - else - return false; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const normal_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.mean() << __space << __x.stddev() - << __space << __x._M_saved_available; - if (__x._M_saved_available) - __os << __space << __x._M_saved; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - normal_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - double __mean, __stddev; - __is >> __mean >> __stddev - >> __x._M_saved_available; - if (__x._M_saved_available) - __is >> __x._M_saved; - __x.param(typename normal_distribution<_RealType>:: - param_type(__mean, __stddev)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - lognormal_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - while (__f != __t) - *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const lognormal_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.m() << __space << __x.s() - << __space << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - lognormal_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __m, __s; - __is >> __m >> __s >> __x._M_nd; - __x.param(typename lognormal_distribution<_RealType>:: - param_type(__m, __s)); - - __is.flags(__flags); - return __is; - } - - template - template - void - std::chi_squared_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - while (__f != __t) - *__f++ = 2 * _M_gd(__urng); - } - - template - template - void - std::chi_squared_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const typename - std::gamma_distribution::param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - while (__f != __t) - *__f++ = 2 * _M_gd(__urng, __p); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const chi_squared_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.n() << __space << __x._M_gd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - chi_squared_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __n; - __is >> __n >> __x._M_gd; - __x.param(typename chi_squared_distribution<_RealType>:: - param_type(__n)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename cauchy_distribution<_RealType>::result_type - cauchy_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - _RealType __u; - do - __u = __aurng(); - while (__u == 0.5); - - const _RealType __pi = 3.1415926535897932384626433832795029L; - return __p.a() + __p.b() * std::tan(__pi * __u); - } - - template - template - void - cauchy_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - const _RealType __pi = 3.1415926535897932384626433832795029L; - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - while (__f != __t) - { - _RealType __u; - do - __u = __aurng(); - while (__u == 0.5); - - *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const cauchy_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - cauchy_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __a, __b; - __is >> __a >> __b; - __x.param(typename cauchy_distribution<_RealType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - std::fisher_f_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - while (__f != __t) - *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); - } - - template - template - void - std::fisher_f_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - typedef typename std::gamma_distribution::param_type - param_type; - param_type __p1(__p.m() / 2); - param_type __p2(__p.n() / 2); - while (__f != __t) - *__f++ = ((_M_gd_x(__urng, __p1) * n()) - / (_M_gd_y(__urng, __p2) * m())); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const fisher_f_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.m() << __space << __x.n() - << __space << __x._M_gd_x << __space << __x._M_gd_y; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - fisher_f_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __m, __n; - __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y; - __x.param(typename fisher_f_distribution<_RealType>:: - param_type(__m, __n)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - std::student_t_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - while (__f != __t) - *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); - } - - template - template - void - std::student_t_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - typename std::gamma_distribution::param_type - __p2(__p.n() / 2, 2); - while (__f != __t) - *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const student_t_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - student_t_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __n; - __is >> __n >> __x._M_nd >> __x._M_gd; - __x.param(typename student_t_distribution<_RealType>::param_type(__n)); - - __is.flags(__flags); - return __is; - } - - - template - void - gamma_distribution<_RealType>::param_type:: - _M_initialize() - { - _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; - - const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); - _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); - } - - /** - * Marsaglia, G. and Tsang, W. W. - * "A Simple Method for Generating Gamma Variables" - * ACM Transactions on Mathematical Software, 26, 3, 363-372, 2000. - */ - template - template - typename gamma_distribution<_RealType>::result_type - gamma_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - result_type __u, __v, __n; - const result_type __a1 = (__param._M_malpha - - _RealType(1.0) / _RealType(3.0)); - - do - { - do - { - __n = _M_nd(__urng); - __v = result_type(1.0) + __param._M_a2 * __n; - } - while (__v <= 0.0); - - __v = __v * __v * __v; - __u = __aurng(); - } - while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n - && (std::log(__u) > (0.5 * __n * __n + __a1 - * (1.0 - __v + std::log(__v))))); - - if (__param.alpha() == __param._M_malpha) - return __a1 * __v * __param.beta(); - else - { - do - __u = __aurng(); - while (__u == 0.0); - - return (std::pow(__u, result_type(1.0) / __param.alpha()) - * __a1 * __v * __param.beta()); - } - } - - template - template - void - gamma_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - result_type __u, __v, __n; - const result_type __a1 = (__param._M_malpha - - _RealType(1.0) / _RealType(3.0)); - - if (__param.alpha() == __param._M_malpha) - while (__f != __t) - { - do - { - do - { - __n = _M_nd(__urng); - __v = result_type(1.0) + __param._M_a2 * __n; - } - while (__v <= 0.0); - - __v = __v * __v * __v; - __u = __aurng(); - } - while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n - && (std::log(__u) > (0.5 * __n * __n + __a1 - * (1.0 - __v + std::log(__v))))); - - *__f++ = __a1 * __v * __param.beta(); - } - else - while (__f != __t) - { - do - { - do - { - __n = _M_nd(__urng); - __v = result_type(1.0) + __param._M_a2 * __n; - } - while (__v <= 0.0); - - __v = __v * __v * __v; - __u = __aurng(); - } - while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n - && (std::log(__u) > (0.5 * __n * __n + __a1 - * (1.0 - __v + std::log(__v))))); - - do - __u = __aurng(); - while (__u == 0.0); - - *__f++ = (std::pow(__u, result_type(1.0) / __param.alpha()) - * __a1 * __v * __param.beta()); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const gamma_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.alpha() << __space << __x.beta() - << __space << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - gamma_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __alpha_val, __beta_val; - __is >> __alpha_val >> __beta_val >> __x._M_nd; - __x.param(typename gamma_distribution<_RealType>:: - param_type(__alpha_val, __beta_val)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename weibull_distribution<_RealType>::result_type - weibull_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - return __p.b() * std::pow(-std::log(result_type(1) - __aurng()), - result_type(1) / __p.a()); - } - - template - template - void - weibull_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - auto __inv_a = result_type(1) / __p.a(); - - while (__f != __t) - *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), - __inv_a); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const weibull_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - weibull_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __a, __b; - __is >> __a >> __b; - __x.param(typename weibull_distribution<_RealType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename extreme_value_distribution<_RealType>::result_type - extreme_value_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - return __p.a() - __p.b() * std::log(-std::log(result_type(1) - - __aurng())); - } - - template - template - void - extreme_value_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - while (__f != __t) - *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) - - __aurng())); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const extreme_value_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - extreme_value_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __a, __b; - __is >> __a >> __b; - __x.param(typename extreme_value_distribution<_RealType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - template - void - discrete_distribution<_IntType>::param_type:: - _M_initialize() - { - if (_M_prob.size() < 2) - { - _M_prob.clear(); - return; - } - - const double __sum = std::accumulate(_M_prob.begin(), - _M_prob.end(), 0.0); - // Now normalize the probabilites. - __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), - __sum); - // Accumulate partial sums. - _M_cp.reserve(_M_prob.size()); - std::partial_sum(_M_prob.begin(), _M_prob.end(), - std::back_inserter(_M_cp)); - // Make sure the last cumulative probability is one. - _M_cp[_M_cp.size() - 1] = 1.0; - } - - template - template - discrete_distribution<_IntType>::param_type:: - param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) - : _M_prob(), _M_cp() - { - const size_t __n = __nw == 0 ? 1 : __nw; - const double __delta = (__xmax - __xmin) / __n; - - _M_prob.reserve(__n); - for (size_t __k = 0; __k < __nw; ++__k) - _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); - - _M_initialize(); - } - - template - template - typename discrete_distribution<_IntType>::result_type - discrete_distribution<_IntType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - if (__param._M_cp.empty()) - return result_type(0); - - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - const double __p = __aurng(); - auto __pos = std::lower_bound(__param._M_cp.begin(), - __param._M_cp.end(), __p); - - return __pos - __param._M_cp.begin(); - } - - template - template - void - discrete_distribution<_IntType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - - if (__param._M_cp.empty()) - { - while (__f != __t) - *__f++ = result_type(0); - return; - } - - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - while (__f != __t) - { - const double __p = __aurng(); - auto __pos = std::lower_bound(__param._M_cp.begin(), - __param._M_cp.end(), __p); - - *__f++ = __pos - __param._M_cp.begin(); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const discrete_distribution<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits::max_digits10); - - std::vector __prob = __x.probabilities(); - __os << __prob.size(); - for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) - __os << __space << *__dit; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - discrete_distribution<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - size_t __n; - __is >> __n; - - std::vector __prob_vec; - __prob_vec.reserve(__n); - for (; __n != 0; --__n) - { - double __prob; - __is >> __prob; - __prob_vec.push_back(__prob); - } - - __x.param(typename discrete_distribution<_IntType>:: - param_type(__prob_vec.begin(), __prob_vec.end())); - - __is.flags(__flags); - return __is; - } - - - template - void - piecewise_constant_distribution<_RealType>::param_type:: - _M_initialize() - { - if (_M_int.size() < 2 - || (_M_int.size() == 2 - && _M_int[0] == _RealType(0) - && _M_int[1] == _RealType(1))) - { - _M_int.clear(); - _M_den.clear(); - return; - } - - const double __sum = std::accumulate(_M_den.begin(), - _M_den.end(), 0.0); - - __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), - __sum); - - _M_cp.reserve(_M_den.size()); - std::partial_sum(_M_den.begin(), _M_den.end(), - std::back_inserter(_M_cp)); - - // Make sure the last cumulative probability is one. - _M_cp[_M_cp.size() - 1] = 1.0; - - for (size_t __k = 0; __k < _M_den.size(); ++__k) - _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; - } - - template - template - piecewise_constant_distribution<_RealType>::param_type:: - param_type(_InputIteratorB __bbegin, - _InputIteratorB __bend, - _InputIteratorW __wbegin) - : _M_int(), _M_den(), _M_cp() - { - if (__bbegin != __bend) - { - for (;;) - { - _M_int.push_back(*__bbegin); - ++__bbegin; - if (__bbegin == __bend) - break; - - _M_den.push_back(*__wbegin); - ++__wbegin; - } - } - - _M_initialize(); - } - - template - template - piecewise_constant_distribution<_RealType>::param_type:: - param_type(initializer_list<_RealType> __bl, _Func __fw) - : _M_int(), _M_den(), _M_cp() - { - _M_int.reserve(__bl.size()); - for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) - _M_int.push_back(*__biter); - - _M_den.reserve(_M_int.size() - 1); - for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) - _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); - - _M_initialize(); - } - - template - template - piecewise_constant_distribution<_RealType>::param_type:: - param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) - : _M_int(), _M_den(), _M_cp() - { - const size_t __n = __nw == 0 ? 1 : __nw; - const _RealType __delta = (__xmax - __xmin) / __n; - - _M_int.reserve(__n + 1); - for (size_t __k = 0; __k <= __nw; ++__k) - _M_int.push_back(__xmin + __k * __delta); - - _M_den.reserve(__n); - for (size_t __k = 0; __k < __nw; ++__k) - _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); - - _M_initialize(); - } - - template - template - typename piecewise_constant_distribution<_RealType>::result_type - piecewise_constant_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - const double __p = __aurng(); - if (__param._M_cp.empty()) - return __p; - - auto __pos = std::lower_bound(__param._M_cp.begin(), - __param._M_cp.end(), __p); - const size_t __i = __pos - __param._M_cp.begin(); - - const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; - - return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; - } - - template - template - void - piecewise_constant_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - if (__param._M_cp.empty()) - { - while (__f != __t) - *__f++ = __aurng(); - return; - } - - while (__f != __t) - { - const double __p = __aurng(); - - auto __pos = std::lower_bound(__param._M_cp.begin(), - __param._M_cp.end(), __p); - const size_t __i = __pos - __param._M_cp.begin(); - - const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; - - *__f++ = (__param._M_int[__i] - + (__p - __pref) / __param._M_den[__i]); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const piecewise_constant_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - std::vector<_RealType> __int = __x.intervals(); - __os << __int.size() - 1; - - for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) - __os << __space << *__xit; - - std::vector __den = __x.densities(); - for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) - __os << __space << *__dit; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - piecewise_constant_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - size_t __n; - __is >> __n; - - std::vector<_RealType> __int_vec; - __int_vec.reserve(__n + 1); - for (size_t __i = 0; __i <= __n; ++__i) - { - _RealType __int; - __is >> __int; - __int_vec.push_back(__int); - } - - std::vector __den_vec; - __den_vec.reserve(__n); - for (size_t __i = 0; __i < __n; ++__i) - { - double __den; - __is >> __den; - __den_vec.push_back(__den); - } - - __x.param(typename piecewise_constant_distribution<_RealType>:: - param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); - - __is.flags(__flags); - return __is; - } - - - template - void - piecewise_linear_distribution<_RealType>::param_type:: - _M_initialize() - { - if (_M_int.size() < 2 - || (_M_int.size() == 2 - && _M_int[0] == _RealType(0) - && _M_int[1] == _RealType(1) - && _M_den[0] == _M_den[1])) - { - _M_int.clear(); - _M_den.clear(); - return; - } - - double __sum = 0.0; - _M_cp.reserve(_M_int.size() - 1); - _M_m.reserve(_M_int.size() - 1); - for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) - { - const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; - __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; - _M_cp.push_back(__sum); - _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); - } - - // Now normalize the densities... - __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), - __sum); - // ... and partial sums... - __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); - // ... and slopes. - __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); - - // Make sure the last cumulative probablility is one. - _M_cp[_M_cp.size() - 1] = 1.0; - } - - template - template - piecewise_linear_distribution<_RealType>::param_type:: - param_type(_InputIteratorB __bbegin, - _InputIteratorB __bend, - _InputIteratorW __wbegin) - : _M_int(), _M_den(), _M_cp(), _M_m() - { - for (; __bbegin != __bend; ++__bbegin, ++__wbegin) - { - _M_int.push_back(*__bbegin); - _M_den.push_back(*__wbegin); - } - - _M_initialize(); - } - - template - template - piecewise_linear_distribution<_RealType>::param_type:: - param_type(initializer_list<_RealType> __bl, _Func __fw) - : _M_int(), _M_den(), _M_cp(), _M_m() - { - _M_int.reserve(__bl.size()); - _M_den.reserve(__bl.size()); - for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) - { - _M_int.push_back(*__biter); - _M_den.push_back(__fw(*__biter)); - } - - _M_initialize(); - } - - template - template - piecewise_linear_distribution<_RealType>::param_type:: - param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) - : _M_int(), _M_den(), _M_cp(), _M_m() - { - const size_t __n = __nw == 0 ? 1 : __nw; - const _RealType __delta = (__xmax - __xmin) / __n; - - _M_int.reserve(__n + 1); - _M_den.reserve(__n + 1); - for (size_t __k = 0; __k <= __nw; ++__k) - { - _M_int.push_back(__xmin + __k * __delta); - _M_den.push_back(__fw(_M_int[__k] + __delta)); - } - - _M_initialize(); - } - - template - template - typename piecewise_linear_distribution<_RealType>::result_type - piecewise_linear_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - const double __p = __aurng(); - if (__param._M_cp.empty()) - return __p; - - auto __pos = std::lower_bound(__param._M_cp.begin(), - __param._M_cp.end(), __p); - const size_t __i = __pos - __param._M_cp.begin(); - - const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; - - const double __a = 0.5 * __param._M_m[__i]; - const double __b = __param._M_den[__i]; - const double __cm = __p - __pref; - - _RealType __x = __param._M_int[__i]; - if (__a == 0) - __x += __cm / __b; - else - { - const double __d = __b * __b + 4.0 * __a * __cm; - __x += 0.5 * (std::sqrt(__d) - __b) / __a; - } - - return __x; - } - - template - template - void - piecewise_linear_distribution<_RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - // We could duplicate everything from operator()... - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const piecewise_linear_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - std::vector<_RealType> __int = __x.intervals(); - __os << __int.size() - 1; - - for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) - __os << __space << *__xit; - - std::vector __den = __x.densities(); - for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) - __os << __space << *__dit; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - piecewise_linear_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - size_t __n; - __is >> __n; - - std::vector<_RealType> __int_vec; - __int_vec.reserve(__n + 1); - for (size_t __i = 0; __i <= __n; ++__i) - { - _RealType __int; - __is >> __int; - __int_vec.push_back(__int); - } - - std::vector __den_vec; - __den_vec.reserve(__n + 1); - for (size_t __i = 0; __i <= __n; ++__i) - { - double __den; - __is >> __den; - __den_vec.push_back(__den); - } - - __x.param(typename piecewise_linear_distribution<_RealType>:: - param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); - - __is.flags(__flags); - return __is; - } - - - template - seed_seq::seed_seq(std::initializer_list<_IntType> __il) - { - for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) - _M_v.push_back(__detail::__mod::__value>(*__iter)); - } - - template - seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) - { - for (_InputIterator __iter = __begin; __iter != __end; ++__iter) - _M_v.push_back(__detail::__mod::__value>(*__iter)); - } - - template - void - seed_seq::generate(_RandomAccessIterator __begin, - _RandomAccessIterator __end) - { - typedef typename iterator_traits<_RandomAccessIterator>::value_type - _Type; - - if (__begin == __end) - return; - - std::fill(__begin, __end, _Type(0x8b8b8b8bu)); - - const size_t __n = __end - __begin; - const size_t __s = _M_v.size(); - const size_t __t = (__n >= 623) ? 11 - : (__n >= 68) ? 7 - : (__n >= 39) ? 5 - : (__n >= 7) ? 3 - : (__n - 1) / 2; - const size_t __p = (__n - __t) / 2; - const size_t __q = __p + __t; - const size_t __m = std::max(size_t(__s + 1), __n); - - for (size_t __k = 0; __k < __m; ++__k) - { - _Type __arg = (__begin[__k % __n] - ^ __begin[(__k + __p) % __n] - ^ __begin[(__k - 1) % __n]); - _Type __r1 = __arg ^ (__arg >> 27); - __r1 = __detail::__mod<_Type, - __detail::_Shift<_Type, 32>::__value>(1664525u * __r1); - _Type __r2 = __r1; - if (__k == 0) - __r2 += __s; - else if (__k <= __s) - __r2 += __k % __n + _M_v[__k - 1]; - else - __r2 += __k % __n; - __r2 = __detail::__mod<_Type, - __detail::_Shift<_Type, 32>::__value>(__r2); - __begin[(__k + __p) % __n] += __r1; - __begin[(__k + __q) % __n] += __r2; - __begin[__k % __n] = __r2; - } - - for (size_t __k = __m; __k < __m + __n; ++__k) - { - _Type __arg = (__begin[__k % __n] - + __begin[(__k + __p) % __n] - + __begin[(__k - 1) % __n]); - _Type __r3 = __arg ^ (__arg >> 27); - __r3 = __detail::__mod<_Type, - __detail::_Shift<_Type, 32>::__value>(1566083941u * __r3); - _Type __r4 = __r3 - __k % __n; - __r4 = __detail::__mod<_Type, - __detail::_Shift<_Type, 32>::__value>(__r4); - __begin[(__k + __p) % __n] ^= __r3; - __begin[(__k + __q) % __n] ^= __r4; - __begin[__k % __n] = __r4; - } - } - - template - _RealType - generate_canonical(_UniformRandomNumberGenerator& __urng) - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument must be a floating point type"); - - const size_t __b - = std::min(static_cast(std::numeric_limits<_RealType>::digits), - __bits); - const long double __r = static_cast(__urng.max()) - - static_cast(__urng.min()) + 1.0L; - const size_t __log2r = std::log(__r) / std::log(2.0L); - const size_t __m = std::max(1UL, - (__b + __log2r - 1UL) / __log2r); - _RealType __ret; - _RealType __sum = _RealType(0); - _RealType __tmp = _RealType(1); - for (size_t __k = __m; __k != 0; --__k) - { - __sum += _RealType(__urng() - __urng.min()) * __tmp; - __tmp *= __r; - } - __ret = __sum / __tmp; - if (__builtin_expect(__ret >= _RealType(1), 0)) - { -#if _GLIBCXX_USE_C99_MATH_TR1 - __ret = std::nextafter(_RealType(1), _RealType(0)); -#else - __ret = _RealType(1) - - std::numeric_limits<_RealType>::epsilon() / _RealType(2); -#endif - } - return __ret; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/refwrap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/refwrap.h deleted file mode 100644 index 86260dac9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/refwrap.h +++ /dev/null @@ -1,398 +0,0 @@ -// Implementation of std::reference_wrapper -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/bits/bind.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{functional} - */ - -#ifndef _GLIBCXX_REFWRAP_H -#define _GLIBCXX_REFWRAP_H 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include // for unary_function and binary_function - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// If we have found a result_type, extract it. - template> - struct _Maybe_get_result_type - { }; - - template - struct _Maybe_get_result_type<_Functor, - __void_t> - { typedef typename _Functor::result_type result_type; }; - - /** - * Base class for any function object that has a weak result type, as - * defined in 20.8.2 [func.require] of C++11. - */ - template - struct _Weak_result_type_impl - : _Maybe_get_result_type<_Functor> - { }; - - /// Retrieve the result type for a function type. - template - struct _Weak_result_type_impl<_Res(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes......) _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes...) const> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes......) const> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes...) volatile> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes......) volatile> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes...) const volatile> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(_ArgTypes......) const volatile> - { typedef _Res result_type; }; - - /// Retrieve the result type for a function reference. - template - struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(&)(_ArgTypes......)> - { typedef _Res result_type; }; - - /// Retrieve the result type for a function pointer. - template - struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res(*)(_ArgTypes......) - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - /// Retrieve result type for a member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - /// Retrieve result type for a const member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) const - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - /// Retrieve result type for a volatile member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) volatile - _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - /// Retrieve result type for a const volatile member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) - const volatile _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes......) - const volatile _GLIBCXX_NOEXCEPT_QUAL> - { typedef _Res result_type; }; - - /** - * Strip top-level cv-qualifiers from the function object and let - * _Weak_result_type_impl perform the real work. - */ - template - struct _Weak_result_type - : _Weak_result_type_impl::type> - { }; - - // Detect nested argument_type. - template> - struct _Refwrap_base_arg1 - { }; - - // Nested argument_type. - template - struct _Refwrap_base_arg1<_Tp, - __void_t> - { - typedef typename _Tp::argument_type argument_type; - }; - - // Detect nested first_argument_type and second_argument_type. - template> - struct _Refwrap_base_arg2 - { }; - - // Nested first_argument_type and second_argument_type. - template - struct _Refwrap_base_arg2<_Tp, - __void_t> - { - typedef typename _Tp::first_argument_type first_argument_type; - typedef typename _Tp::second_argument_type second_argument_type; - }; - - /** - * Derives from unary_function or binary_function when it - * can. Specializations handle all of the easy cases. The primary - * template determines what to do with a class type, which may - * derive from both unary_function and binary_function. - */ - template - struct _Reference_wrapper_base - : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> - { }; - - // - a function type (unary) - template - struct _Reference_wrapper_base<_Res(_T1) _GLIBCXX_NOEXCEPT_QUAL> - : unary_function<_T1, _Res> - { }; - - template - struct _Reference_wrapper_base<_Res(_T1) const> - : unary_function<_T1, _Res> - { }; - - template - struct _Reference_wrapper_base<_Res(_T1) volatile> - : unary_function<_T1, _Res> - { }; - - template - struct _Reference_wrapper_base<_Res(_T1) const volatile> - : unary_function<_T1, _Res> - { }; - - // - a function type (binary) - template - struct _Reference_wrapper_base<_Res(_T1, _T2) _GLIBCXX_NOEXCEPT_QUAL> - : binary_function<_T1, _T2, _Res> - { }; - - template - struct _Reference_wrapper_base<_Res(_T1, _T2) const> - : binary_function<_T1, _T2, _Res> - { }; - - template - struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> - : binary_function<_T1, _T2, _Res> - { }; - - template - struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> - : binary_function<_T1, _T2, _Res> - { }; - - // - a function pointer type (unary) - template - struct _Reference_wrapper_base<_Res(*)(_T1) _GLIBCXX_NOEXCEPT_QUAL> - : unary_function<_T1, _Res> - { }; - - // - a function pointer type (binary) - template - struct _Reference_wrapper_base<_Res(*)(_T1, _T2) _GLIBCXX_NOEXCEPT_QUAL> - : binary_function<_T1, _T2, _Res> - { }; - - // - a pointer to member function type (unary, no qualifiers) - template - struct _Reference_wrapper_base<_Res (_T1::*)() _GLIBCXX_NOEXCEPT_QUAL> - : unary_function<_T1*, _Res> - { }; - - // - a pointer to member function type (binary, no qualifiers) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) _GLIBCXX_NOEXCEPT_QUAL> - : binary_function<_T1*, _T2, _Res> - { }; - - // - a pointer to member function type (unary, const) - template - struct _Reference_wrapper_base<_Res (_T1::*)() const _GLIBCXX_NOEXCEPT_QUAL> - : unary_function - { }; - - // - a pointer to member function type (binary, const) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const _GLIBCXX_NOEXCEPT_QUAL> - : binary_function - { }; - - // - a pointer to member function type (unary, volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)() volatile _GLIBCXX_NOEXCEPT_QUAL> - : unary_function - { }; - - // - a pointer to member function type (binary, volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile _GLIBCXX_NOEXCEPT_QUAL> - : binary_function - { }; - - // - a pointer to member function type (unary, const volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)() const volatile _GLIBCXX_NOEXCEPT_QUAL> - : unary_function - { }; - - // - a pointer to member function type (binary, const volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile _GLIBCXX_NOEXCEPT_QUAL> - : binary_function - { }; - - /** - * @brief Primary class template for reference_wrapper. - * @ingroup functors - * @{ - */ - template - class reference_wrapper - : public _Reference_wrapper_base::type> - { - _Tp* _M_data; - - public: - typedef _Tp type; - - reference_wrapper(_Tp& __indata) noexcept - : _M_data(std::__addressof(__indata)) - { } - - reference_wrapper(_Tp&&) = delete; - - reference_wrapper(const reference_wrapper&) = default; - - reference_wrapper& - operator=(const reference_wrapper&) = default; - - operator _Tp&() const noexcept - { return this->get(); } - - _Tp& - get() const noexcept - { return *_M_data; } - - template - typename result_of<_Tp&(_Args&&...)>::type - operator()(_Args&&... __args) const - { - return std::__invoke(get(), std::forward<_Args>(__args)...); - } - }; - - - /// Denotes a reference should be taken to a variable. - template - inline reference_wrapper<_Tp> - ref(_Tp& __t) noexcept - { return reference_wrapper<_Tp>(__t); } - - /// Denotes a const reference should be taken to a variable. - template - inline reference_wrapper - cref(const _Tp& __t) noexcept - { return reference_wrapper(__t); } - - template - void ref(const _Tp&&) = delete; - - template - void cref(const _Tp&&) = delete; - - /// Partial specialization. - template - inline reference_wrapper<_Tp> - ref(reference_wrapper<_Tp> __t) noexcept - { return ref(__t.get()); } - - /// Partial specialization. - template - inline reference_wrapper - cref(reference_wrapper<_Tp> __t) noexcept - { return cref(__t.get()); } - - // @} group functors - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++11 - -#endif // _GLIBCXX_REFWRAP_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr.h deleted file mode 100644 index c4985ee56..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr.h +++ /dev/null @@ -1,727 +0,0 @@ -// shared_ptr and weak_ptr implementation -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// GCC Note: Based on files from version 1.32.0 of the Boost library. - -// shared_count.hpp -// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. - -// shared_ptr.hpp -// Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. -// Copyright (C) 2001, 2002, 2003 Peter Dimov - -// weak_ptr.hpp -// Copyright (C) 2001, 2002, 2003 Peter Dimov - -// enable_shared_from_this.hpp -// Copyright (C) 2002 Peter Dimov - -// 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 - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{memory} - */ - -#ifndef _SHARED_PTR_H -#define _SHARED_PTR_H 1 - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup pointer_abstractions - * @{ - */ - - /// 20.7.2.2.11 shared_ptr I/O - template - inline std::basic_ostream<_Ch, _Tr>& - operator<<(std::basic_ostream<_Ch, _Tr>& __os, - const __shared_ptr<_Tp, _Lp>& __p) - { - __os << __p.get(); - return __os; - } - - /// 20.7.2.2.10 shared_ptr get_deleter - template - inline _Del* - get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept - { -#if __cpp_rtti - return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); -#else - return 0; -#endif - } - - - /** - * @brief A smart pointer with reference-counted copy semantics. - * - * The object pointed to is deleted when the last shared_ptr pointing to - * it is destroyed or reset. - */ - template - class shared_ptr : public __shared_ptr<_Tp> - { - template - using _Constructible = typename enable_if< - is_constructible<__shared_ptr<_Tp>, _Args...>::value - >::type; - - template - using _Assignable = typename enable_if< - is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& - >::type; - - public: - - using element_type = typename __shared_ptr<_Tp>::element_type; - -#if __cplusplus > 201402L -# define __cpp_lib_shared_ptr_weak_type 201606 - using weak_type = weak_ptr<_Tp>; -#endif - /** - * @brief Construct an empty %shared_ptr. - * @post use_count()==0 && get()==0 - */ - constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } - - shared_ptr(const shared_ptr&) noexcept = default; - - /** - * @brief Construct a %shared_ptr that owns the pointer @a __p. - * @param __p A pointer that is convertible to element_type*. - * @post use_count() == 1 && get() == __p - * @throw std::bad_alloc, in which case @c delete @a __p is called. - */ - template> - explicit - shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } - - /** - * @brief Construct a %shared_ptr that owns the pointer @a __p - * and the deleter @a __d. - * @param __p A pointer. - * @param __d A deleter. - * @post use_count() == 1 && get() == __p - * @throw std::bad_alloc, in which case @a __d(__p) is called. - * - * Requirements: _Deleter's copy constructor and destructor must - * not throw - * - * __shared_ptr will release __p by calling __d(__p) - */ - template> - shared_ptr(_Yp* __p, _Deleter __d) - : __shared_ptr<_Tp>(__p, std::move(__d)) { } - - /** - * @brief Construct a %shared_ptr that owns a null pointer - * and the deleter @a __d. - * @param __p A null pointer constant. - * @param __d A deleter. - * @post use_count() == 1 && get() == __p - * @throw std::bad_alloc, in which case @a __d(__p) is called. - * - * Requirements: _Deleter's copy constructor and destructor must - * not throw - * - * The last owner will call __d(__p) - */ - template - shared_ptr(nullptr_t __p, _Deleter __d) - : __shared_ptr<_Tp>(__p, std::move(__d)) { } - - /** - * @brief Construct a %shared_ptr that owns the pointer @a __p - * and the deleter @a __d. - * @param __p A pointer. - * @param __d A deleter. - * @param __a An allocator. - * @post use_count() == 1 && get() == __p - * @throw std::bad_alloc, in which case @a __d(__p) is called. - * - * Requirements: _Deleter's copy constructor and destructor must - * not throw _Alloc's copy constructor and destructor must not - * throw. - * - * __shared_ptr will release __p by calling __d(__p) - */ - template> - shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) - : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } - - /** - * @brief Construct a %shared_ptr that owns a null pointer - * and the deleter @a __d. - * @param __p A null pointer constant. - * @param __d A deleter. - * @param __a An allocator. - * @post use_count() == 1 && get() == __p - * @throw std::bad_alloc, in which case @a __d(__p) is called. - * - * Requirements: _Deleter's copy constructor and destructor must - * not throw _Alloc's copy constructor and destructor must not - * throw. - * - * The last owner will call __d(__p) - */ - template - shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) - : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } - - // Aliasing constructor - - /** - * @brief Constructs a %shared_ptr instance that stores @a __p - * and shares ownership with @a __r. - * @param __r A %shared_ptr. - * @param __p A pointer that will remain valid while @a *__r is valid. - * @post get() == __p && use_count() == __r.use_count() - * - * This can be used to construct a @c shared_ptr to a sub-object - * of an object managed by an existing @c shared_ptr. - * - * @code - * shared_ptr< pair > pii(new pair()); - * shared_ptr pi(pii, &pii->first); - * assert(pii.use_count() == 2); - * @endcode - */ - template - shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept - : __shared_ptr<_Tp>(__r, __p) { } - - /** - * @brief If @a __r is empty, constructs an empty %shared_ptr; - * otherwise construct a %shared_ptr that shares ownership - * with @a __r. - * @param __r A %shared_ptr. - * @post get() == __r.get() && use_count() == __r.use_count() - */ - template&>> - shared_ptr(const shared_ptr<_Yp>& __r) noexcept - : __shared_ptr<_Tp>(__r) { } - - /** - * @brief Move-constructs a %shared_ptr instance from @a __r. - * @param __r A %shared_ptr rvalue. - * @post *this contains the old value of @a __r, @a __r is empty. - */ - shared_ptr(shared_ptr&& __r) noexcept - : __shared_ptr<_Tp>(std::move(__r)) { } - - /** - * @brief Move-constructs a %shared_ptr instance from @a __r. - * @param __r A %shared_ptr rvalue. - * @post *this contains the old value of @a __r, @a __r is empty. - */ - template>> - shared_ptr(shared_ptr<_Yp>&& __r) noexcept - : __shared_ptr<_Tp>(std::move(__r)) { } - - /** - * @brief Constructs a %shared_ptr that shares ownership with @a __r - * and stores a copy of the pointer stored in @a __r. - * @param __r A weak_ptr. - * @post use_count() == __r.use_count() - * @throw bad_weak_ptr when __r.expired(), - * in which case the constructor has no effect. - */ - template&>> - explicit shared_ptr(const weak_ptr<_Yp>& __r) - : __shared_ptr<_Tp>(__r) { } - -#if _GLIBCXX_USE_DEPRECATED - template>> - shared_ptr(auto_ptr<_Yp>&& __r); -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2399. shared_ptr's constructor from unique_ptr should be constrained - template>> - shared_ptr(unique_ptr<_Yp, _Del>&& __r) - : __shared_ptr<_Tp>(std::move(__r)) { } - -#if __cplusplus <= 201402L && _GLIBCXX_USE_DEPRECATED - // This non-standard constructor exists to support conversions that - // were possible in C++11 and C++14 but are ill-formed in C++17. - // If an exception is thrown this constructor has no effect. - template, __sp_array_delete>* = 0> - shared_ptr(unique_ptr<_Yp, _Del>&& __r) - : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } -#endif - - /** - * @brief Construct an empty %shared_ptr. - * @post use_count() == 0 && get() == nullptr - */ - constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } - - shared_ptr& operator=(const shared_ptr&) noexcept = default; - - template - _Assignable&> - operator=(const shared_ptr<_Yp>& __r) noexcept - { - this->__shared_ptr<_Tp>::operator=(__r); - return *this; - } - -#if _GLIBCXX_USE_DEPRECATED - template - _Assignable> - operator=(auto_ptr<_Yp>&& __r) - { - this->__shared_ptr<_Tp>::operator=(std::move(__r)); - return *this; - } -#endif - - shared_ptr& - operator=(shared_ptr&& __r) noexcept - { - this->__shared_ptr<_Tp>::operator=(std::move(__r)); - return *this; - } - - template - _Assignable> - operator=(shared_ptr<_Yp>&& __r) noexcept - { - this->__shared_ptr<_Tp>::operator=(std::move(__r)); - return *this; - } - - template - _Assignable> - operator=(unique_ptr<_Yp, _Del>&& __r) - { - this->__shared_ptr<_Tp>::operator=(std::move(__r)); - return *this; - } - - private: - // This constructor is non-standard, it is used by allocate_shared. - template - shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, - _Args&&... __args) - : __shared_ptr<_Tp>(__tag, __a, std::forward<_Args>(__args)...) - { } - - template - friend shared_ptr<_Yp> - allocate_shared(const _Alloc& __a, _Args&&... __args); - - // This constructor is non-standard, it is used by weak_ptr::lock(). - shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) - : __shared_ptr<_Tp>(__r, std::nothrow) { } - - friend class weak_ptr<_Tp>; - }; - -#if __cpp_deduction_guides >= 201606 - template - shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>; - template - shared_ptr(unique_ptr<_Tp, _Del>) -> shared_ptr<_Tp>; -#endif - - // 20.7.2.2.7 shared_ptr comparisons - template - inline bool - operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept - { return __a.get() == __b.get(); } - - template - inline bool - operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return !__a; } - - template - inline bool - operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return !__a; } - - template - inline bool - operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept - { return __a.get() != __b.get(); } - - template - inline bool - operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return (bool)__a; } - - template - inline bool - operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return (bool)__a; } - - template - inline bool - operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept - { - using _Tp_elt = typename shared_ptr<_Tp>::element_type; - using _Up_elt = typename shared_ptr<_Up>::element_type; - using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; - return less<_Vp>()(__a.get(), __b.get()); - } - - template - inline bool - operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { - using _Tp_elt = typename shared_ptr<_Tp>::element_type; - return less<_Tp_elt*>()(__a.get(), nullptr); - } - - template - inline bool - operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { - using _Tp_elt = typename shared_ptr<_Tp>::element_type; - return less<_Tp_elt*>()(nullptr, __a.get()); - } - - template - inline bool - operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept - { return !(__b < __a); } - - template - inline bool - operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return !(nullptr < __a); } - - template - inline bool - operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return !(__a < nullptr); } - - template - inline bool - operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept - { return (__b < __a); } - - template - inline bool - operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return nullptr < __a; } - - template - inline bool - operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return __a < nullptr; } - - template - inline bool - operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept - { return !(__a < __b); } - - template - inline bool - operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return !(__a < nullptr); } - - template - inline bool - operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return !(nullptr < __a); } - - template - struct less> : public _Sp_less> - { }; - - // 20.7.2.2.8 shared_ptr specialized algorithms. - template - inline void - swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept - { __a.swap(__b); } - - // 20.7.2.2.9 shared_ptr casts. - template - inline shared_ptr<_Tp> - static_pointer_cast(const shared_ptr<_Up>& __r) noexcept - { - using _Sp = shared_ptr<_Tp>; - return _Sp(__r, static_cast(__r.get())); - } - - template - inline shared_ptr<_Tp> - const_pointer_cast(const shared_ptr<_Up>& __r) noexcept - { - using _Sp = shared_ptr<_Tp>; - return _Sp(__r, const_cast(__r.get())); - } - - template - inline shared_ptr<_Tp> - dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept - { - using _Sp = shared_ptr<_Tp>; - if (auto* __p = dynamic_cast(__r.get())) - return _Sp(__r, __p); - return _Sp(); - } - -#if __cplusplus > 201402L - template - inline shared_ptr<_Tp> - reinterpret_pointer_cast(const shared_ptr<_Up>& __r) noexcept - { - using _Sp = shared_ptr<_Tp>; - return _Sp(__r, reinterpret_cast(__r.get())); - } -#endif - - /** - * @brief A smart pointer with weak semantics. - * - * With forwarding constructors and assignment operators. - */ - template - class weak_ptr : public __weak_ptr<_Tp> - { - template - using _Constructible = typename enable_if< - is_constructible<__weak_ptr<_Tp>, _Arg>::value - >::type; - - template - using _Assignable = typename enable_if< - is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& - >::type; - - public: - constexpr weak_ptr() noexcept = default; - - template&>> - weak_ptr(const shared_ptr<_Yp>& __r) noexcept - : __weak_ptr<_Tp>(__r) { } - - weak_ptr(const weak_ptr&) noexcept = default; - - template&>> - weak_ptr(const weak_ptr<_Yp>& __r) noexcept - : __weak_ptr<_Tp>(__r) { } - - weak_ptr(weak_ptr&&) noexcept = default; - - template>> - weak_ptr(weak_ptr<_Yp>&& __r) noexcept - : __weak_ptr<_Tp>(std::move(__r)) { } - - weak_ptr& - operator=(const weak_ptr& __r) noexcept = default; - - template - _Assignable&> - operator=(const weak_ptr<_Yp>& __r) noexcept - { - this->__weak_ptr<_Tp>::operator=(__r); - return *this; - } - - template - _Assignable&> - operator=(const shared_ptr<_Yp>& __r) noexcept - { - this->__weak_ptr<_Tp>::operator=(__r); - return *this; - } - - weak_ptr& - operator=(weak_ptr&& __r) noexcept = default; - - template - _Assignable> - operator=(weak_ptr<_Yp>&& __r) noexcept - { - this->__weak_ptr<_Tp>::operator=(std::move(__r)); - return *this; - } - - shared_ptr<_Tp> - lock() const noexcept - { return shared_ptr<_Tp>(*this, std::nothrow); } - }; - -#if __cpp_deduction_guides >= 201606 - template - weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>; -#endif - - // 20.7.2.3.6 weak_ptr specialized algorithms. - template - inline void - swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept - { __a.swap(__b); } - - - /// Primary template owner_less - template - struct owner_less; - - /// Void specialization of owner_less - template<> - struct owner_less : _Sp_owner_less - { }; - - /// Partial specialization of owner_less for shared_ptr. - template - struct owner_less> - : public _Sp_owner_less, weak_ptr<_Tp>> - { }; - - /// Partial specialization of owner_less for weak_ptr. - template - struct owner_less> - : public _Sp_owner_less, shared_ptr<_Tp>> - { }; - - /** - * @brief Base class allowing use of member function shared_from_this. - */ - template - class enable_shared_from_this - { - protected: - constexpr enable_shared_from_this() noexcept { } - - enable_shared_from_this(const enable_shared_from_this&) noexcept { } - - enable_shared_from_this& - operator=(const enable_shared_from_this&) noexcept - { return *this; } - - ~enable_shared_from_this() { } - - public: - shared_ptr<_Tp> - shared_from_this() - { return shared_ptr<_Tp>(this->_M_weak_this); } - - shared_ptr - shared_from_this() const - { return shared_ptr(this->_M_weak_this); } - -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 -#define __cpp_lib_enable_shared_from_this 201603 - weak_ptr<_Tp> - weak_from_this() noexcept - { return this->_M_weak_this; } - - weak_ptr - weak_from_this() const noexcept - { return this->_M_weak_this; } -#endif - - private: - template - void - _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept - { _M_weak_this._M_assign(__p, __n); } - - // Found by ADL when this is an associated class. - friend const enable_shared_from_this* - __enable_shared_from_this_base(const __shared_count<>&, - const enable_shared_from_this* __p) - { return __p; } - - template - friend class __shared_ptr; - - mutable weak_ptr<_Tp> _M_weak_this; - }; - - /** - * @brief Create an object that is owned by a shared_ptr. - * @param __a An allocator. - * @param __args Arguments for the @a _Tp object's constructor. - * @return A shared_ptr that owns the newly created object. - * @throw An exception thrown from @a _Alloc::allocate or from the - * constructor of @a _Tp. - * - * A copy of @a __a will be used to allocate memory for the shared_ptr - * and the new object. - */ - template - inline shared_ptr<_Tp> - allocate_shared(const _Alloc& __a, _Args&&... __args) - { - return shared_ptr<_Tp>(_Sp_make_shared_tag(), __a, - std::forward<_Args>(__args)...); - } - - /** - * @brief Create an object that is owned by a shared_ptr. - * @param __args Arguments for the @a _Tp object's constructor. - * @return A shared_ptr that owns the newly created object. - * @throw std::bad_alloc, or an exception thrown from the - * constructor of @a _Tp. - */ - template - inline shared_ptr<_Tp> - make_shared(_Args&&... __args) - { - typedef typename std::remove_const<_Tp>::type _Tp_nc; - return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), - std::forward<_Args>(__args)...); - } - - /// std::hash specialization for shared_ptr. - template - struct hash> - : public __hash_base> - { - size_t - operator()(const shared_ptr<_Tp>& __s) const noexcept - { - return std::hash::element_type*>()(__s.get()); - } - }; - - // @} group pointer_abstractions - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif // _SHARED_PTR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_bvector.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_bvector.h deleted file mode 100644 index 37e000ad9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_bvector.h +++ /dev/null @@ -1,1294 +0,0 @@ -// vector specialization -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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-1999 - * 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_bvector.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{vector} - */ - -#ifndef _STL_BVECTOR_H -#define _STL_BVECTOR_H 1 - -#if __cplusplus >= 201103L -#include -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - typedef unsigned long _Bit_type; - enum { _S_word_bit = int(__CHAR_BIT__ * sizeof(_Bit_type)) }; - - struct _Bit_reference - { - _Bit_type * _M_p; - _Bit_type _M_mask; - - _Bit_reference(_Bit_type * __x, _Bit_type __y) - : _M_p(__x), _M_mask(__y) { } - - _Bit_reference() _GLIBCXX_NOEXCEPT : _M_p(0), _M_mask(0) { } - - operator bool() const _GLIBCXX_NOEXCEPT - { return !!(*_M_p & _M_mask); } - - _Bit_reference& - operator=(bool __x) _GLIBCXX_NOEXCEPT - { - if (__x) - *_M_p |= _M_mask; - else - *_M_p &= ~_M_mask; - return *this; - } - - _Bit_reference& - operator=(const _Bit_reference& __x) _GLIBCXX_NOEXCEPT - { return *this = bool(__x); } - - bool - operator==(const _Bit_reference& __x) const - { return bool(*this) == bool(__x); } - - bool - operator<(const _Bit_reference& __x) const - { return !bool(*this) && bool(__x); } - - void - flip() _GLIBCXX_NOEXCEPT - { *_M_p ^= _M_mask; } - }; - -#if __cplusplus >= 201103L - inline void - swap(_Bit_reference __x, _Bit_reference __y) noexcept - { - bool __tmp = __x; - __x = __y; - __y = __tmp; - } - - inline void - swap(_Bit_reference __x, bool& __y) noexcept - { - bool __tmp = __x; - __x = __y; - __y = __tmp; - } - - inline void - swap(bool& __x, _Bit_reference __y) noexcept - { - bool __tmp = __x; - __x = __y; - __y = __tmp; - } -#endif - - struct _Bit_iterator_base - : public std::iterator - { - _Bit_type * _M_p; - unsigned int _M_offset; - - _Bit_iterator_base(_Bit_type * __x, unsigned int __y) - : _M_p(__x), _M_offset(__y) { } - - void - _M_bump_up() - { - if (_M_offset++ == int(_S_word_bit) - 1) - { - _M_offset = 0; - ++_M_p; - } - } - - void - _M_bump_down() - { - if (_M_offset-- == 0) - { - _M_offset = int(_S_word_bit) - 1; - --_M_p; - } - } - - void - _M_incr(ptrdiff_t __i) - { - difference_type __n = __i + _M_offset; - _M_p += __n / int(_S_word_bit); - __n = __n % int(_S_word_bit); - if (__n < 0) - { - __n += int(_S_word_bit); - --_M_p; - } - _M_offset = static_cast(__n); - } - - bool - operator==(const _Bit_iterator_base& __i) const - { return _M_p == __i._M_p && _M_offset == __i._M_offset; } - - bool - operator<(const _Bit_iterator_base& __i) const - { - return _M_p < __i._M_p - || (_M_p == __i._M_p && _M_offset < __i._M_offset); - } - - bool - operator!=(const _Bit_iterator_base& __i) const - { return !(*this == __i); } - - bool - operator>(const _Bit_iterator_base& __i) const - { return __i < *this; } - - bool - operator<=(const _Bit_iterator_base& __i) const - { return !(__i < *this); } - - bool - operator>=(const _Bit_iterator_base& __i) const - { return !(*this < __i); } - }; - - inline ptrdiff_t - operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) - { - return (int(_S_word_bit) * (__x._M_p - __y._M_p) - + __x._M_offset - __y._M_offset); - } - - struct _Bit_iterator : public _Bit_iterator_base - { - typedef _Bit_reference reference; - typedef _Bit_reference* pointer; - typedef _Bit_iterator iterator; - - _Bit_iterator() : _Bit_iterator_base(0, 0) { } - - _Bit_iterator(_Bit_type * __x, unsigned int __y) - : _Bit_iterator_base(__x, __y) { } - - iterator - _M_const_cast() const - { return *this; } - - reference - operator*() const - { return reference(_M_p, 1UL << _M_offset); } - - iterator& - operator++() - { - _M_bump_up(); - return *this; - } - - iterator - operator++(int) - { - iterator __tmp = *this; - _M_bump_up(); - return __tmp; - } - - iterator& - operator--() - { - _M_bump_down(); - return *this; - } - - iterator - operator--(int) - { - iterator __tmp = *this; - _M_bump_down(); - return __tmp; - } - - iterator& - operator+=(difference_type __i) - { - _M_incr(__i); - return *this; - } - - iterator& - operator-=(difference_type __i) - { - *this += -__i; - return *this; - } - - iterator - operator+(difference_type __i) const - { - iterator __tmp = *this; - return __tmp += __i; - } - - iterator - operator-(difference_type __i) const - { - iterator __tmp = *this; - return __tmp -= __i; - } - - reference - operator[](difference_type __i) const - { return *(*this + __i); } - }; - - inline _Bit_iterator - operator+(ptrdiff_t __n, const _Bit_iterator& __x) - { return __x + __n; } - - struct _Bit_const_iterator : public _Bit_iterator_base - { - typedef bool reference; - typedef bool const_reference; - typedef const bool* pointer; - typedef _Bit_const_iterator const_iterator; - - _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } - - _Bit_const_iterator(_Bit_type * __x, unsigned int __y) - : _Bit_iterator_base(__x, __y) { } - - _Bit_const_iterator(const _Bit_iterator& __x) - : _Bit_iterator_base(__x._M_p, __x._M_offset) { } - - _Bit_iterator - _M_const_cast() const - { return _Bit_iterator(_M_p, _M_offset); } - - const_reference - operator*() const - { return _Bit_reference(_M_p, 1UL << _M_offset); } - - const_iterator& - operator++() - { - _M_bump_up(); - return *this; - } - - const_iterator - operator++(int) - { - const_iterator __tmp = *this; - _M_bump_up(); - return __tmp; - } - - const_iterator& - operator--() - { - _M_bump_down(); - return *this; - } - - const_iterator - operator--(int) - { - const_iterator __tmp = *this; - _M_bump_down(); - return __tmp; - } - - const_iterator& - operator+=(difference_type __i) - { - _M_incr(__i); - return *this; - } - - const_iterator& - operator-=(difference_type __i) - { - *this += -__i; - return *this; - } - - const_iterator - operator+(difference_type __i) const - { - const_iterator __tmp = *this; - return __tmp += __i; - } - - const_iterator - operator-(difference_type __i) const - { - const_iterator __tmp = *this; - return __tmp -= __i; - } - - const_reference - operator[](difference_type __i) const - { return *(*this + __i); } - }; - - inline _Bit_const_iterator - operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) - { return __x + __n; } - - inline void - __fill_bvector(_Bit_iterator __first, _Bit_iterator __last, bool __x) - { - for (; __first != __last; ++__first) - *__first = __x; - } - - inline void - fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) - { - if (__first._M_p != __last._M_p) - { - std::fill(__first._M_p + 1, __last._M_p, __x ? ~0 : 0); - __fill_bvector(__first, _Bit_iterator(__first._M_p + 1, 0), __x); - __fill_bvector(_Bit_iterator(__last._M_p, 0), __last, __x); - } - else - __fill_bvector(__first, __last, __x); - } - - template - struct _Bvector_base - { - typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template - rebind<_Bit_type>::other _Bit_alloc_type; - typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> - _Bit_alloc_traits; - typedef typename _Bit_alloc_traits::pointer _Bit_pointer; - - struct _Bvector_impl - : public _Bit_alloc_type - { - _Bit_iterator _M_start; - _Bit_iterator _M_finish; - _Bit_pointer _M_end_of_storage; - - _Bvector_impl() - : _Bit_alloc_type(), _M_start(), _M_finish(), _M_end_of_storage() - { } - - _Bvector_impl(const _Bit_alloc_type& __a) - : _Bit_alloc_type(__a), _M_start(), _M_finish(), _M_end_of_storage() - { } - -#if __cplusplus >= 201103L - _Bvector_impl(_Bit_alloc_type&& __a) - : _Bit_alloc_type(std::move(__a)), _M_start(), _M_finish(), - _M_end_of_storage() - { } -#endif - - _Bit_type* - _M_end_addr() const _GLIBCXX_NOEXCEPT - { - if (_M_end_of_storage) - return std::__addressof(_M_end_of_storage[-1]) + 1; - return 0; - } - }; - - public: - typedef _Alloc allocator_type; - - _Bit_alloc_type& - _M_get_Bit_allocator() _GLIBCXX_NOEXCEPT - { return *static_cast<_Bit_alloc_type*>(&this->_M_impl); } - - const _Bit_alloc_type& - _M_get_Bit_allocator() const _GLIBCXX_NOEXCEPT - { return *static_cast(&this->_M_impl); } - - allocator_type - get_allocator() const _GLIBCXX_NOEXCEPT - { return allocator_type(_M_get_Bit_allocator()); } - - _Bvector_base() - : _M_impl() { } - - _Bvector_base(const allocator_type& __a) - : _M_impl(__a) { } - -#if __cplusplus >= 201103L - _Bvector_base(_Bvector_base&& __x) noexcept - : _M_impl(std::move(__x._M_get_Bit_allocator())) - { - this->_M_impl._M_start = __x._M_impl._M_start; - this->_M_impl._M_finish = __x._M_impl._M_finish; - this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage; - __x._M_impl._M_start = _Bit_iterator(); - __x._M_impl._M_finish = _Bit_iterator(); - __x._M_impl._M_end_of_storage = nullptr; - } -#endif - - ~_Bvector_base() - { this->_M_deallocate(); } - - protected: - _Bvector_impl _M_impl; - - _Bit_pointer - _M_allocate(size_t __n) - { return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); } - - void - _M_deallocate() - { - if (_M_impl._M_start._M_p) - { - const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; - _Bit_alloc_traits::deallocate(_M_impl, - _M_impl._M_end_of_storage - __n, - __n); - _M_impl._M_start = _M_impl._M_finish = _Bit_iterator(); - _M_impl._M_end_of_storage = _Bit_pointer(); - } - } - - static size_t - _S_nword(size_t __n) - { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } - }; - -_GLIBCXX_END_NAMESPACE_CONTAINER -} // namespace std - -// Declare a partial specialization of vector. -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - /** - * @brief A specialization of vector for booleans which offers fixed time - * access to individual elements in any order. - * - * @ingroup sequences - * - * @tparam _Alloc Allocator type. - * - * Note that vector does not actually meet the requirements for being - * a container. This is because the reference and pointer types are not - * really references and pointers to bool. See DR96 for details. @see - * vector for function documentation. - * - * In some terminology a %vector can be described as a dynamic - * C-style array, it offers fast and efficient access to individual - * elements in any order and saves the user from worrying about - * memory and size allocation. Subscripting ( @c [] ) access is - * also provided as with C-style arrays. - */ -template - class vector : protected _Bvector_base<_Alloc> - { - typedef _Bvector_base<_Alloc> _Base; - typedef typename _Base::_Bit_pointer _Bit_pointer; - typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; - -#if __cplusplus >= 201103L - template friend struct hash; -#endif - - public: - typedef bool value_type; - typedef size_t size_type; - typedef ptrdiff_t difference_type; - typedef _Bit_reference reference; - typedef bool const_reference; - typedef _Bit_reference* pointer; - typedef const bool* const_pointer; - typedef _Bit_iterator iterator; - typedef _Bit_const_iterator const_iterator; - typedef std::reverse_iterator const_reverse_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef _Alloc allocator_type; - - allocator_type get_allocator() const - { return _Base::get_allocator(); } - - protected: - using _Base::_M_allocate; - using _Base::_M_deallocate; - using _Base::_S_nword; - using _Base::_M_get_Bit_allocator; - - public: - vector() -#if __cplusplus >= 201103L - noexcept(is_nothrow_default_constructible::value) -#endif - : _Base() { } - - explicit - vector(const allocator_type& __a) - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - vector(size_type __n, const allocator_type& __a = allocator_type()) - : vector(__n, false, __a) - { } - - vector(size_type __n, const bool& __value, - const allocator_type& __a = allocator_type()) - : _Base(__a) - { - _M_initialize(__n); - std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_addr(), - __value ? ~0 : 0); - } -#else - explicit - vector(size_type __n, const bool& __value = bool(), - const allocator_type& __a = allocator_type()) - : _Base(__a) - { - _M_initialize(__n); - std::fill(this->_M_impl._M_start._M_p, this->_M_impl._M_end_addr(), - __value ? ~0 : 0); - } -#endif - - vector(const vector& __x) - : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) - { - _M_initialize(__x.size()); - _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); - } - -#if __cplusplus >= 201103L - vector(vector&& __x) noexcept - : _Base(std::move(__x)) { } - - vector(vector&& __x, const allocator_type& __a) - noexcept(_Bit_alloc_traits::_S_always_equal()) - : _Base(__a) - { - if (__x.get_allocator() == __a) - { - this->_M_impl._M_start = __x._M_impl._M_start; - this->_M_impl._M_finish = __x._M_impl._M_finish; - this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage; - __x._M_impl._M_start = _Bit_iterator(); - __x._M_impl._M_finish = _Bit_iterator(); - __x._M_impl._M_end_of_storage = nullptr; - } - else - { - _M_initialize(__x.size()); - _M_copy_aligned(__x.begin(), __x.end(), begin()); - __x.clear(); - } - } - - vector(const vector& __x, const allocator_type& __a) - : _Base(__a) - { - _M_initialize(__x.size()); - _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); - } - - vector(initializer_list __l, - const allocator_type& __a = allocator_type()) - : _Base(__a) - { - _M_initialize_range(__l.begin(), __l.end(), - random_access_iterator_tag()); - } -#endif - -#if __cplusplus >= 201103L - template> - vector(_InputIterator __first, _InputIterator __last, - const allocator_type& __a = allocator_type()) - : _Base(__a) - { _M_initialize_dispatch(__first, __last, __false_type()); } -#else - template - vector(_InputIterator __first, _InputIterator __last, - const allocator_type& __a = allocator_type()) - : _Base(__a) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - _M_initialize_dispatch(__first, __last, _Integral()); - } -#endif - - ~vector() _GLIBCXX_NOEXCEPT { } - - vector& - operator=(const vector& __x) - { - if (&__x == this) - return *this; -#if __cplusplus >= 201103L - if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) - { - if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) - { - this->_M_deallocate(); - std::__alloc_on_copy(_M_get_Bit_allocator(), - __x._M_get_Bit_allocator()); - _M_initialize(__x.size()); - } - else - std::__alloc_on_copy(_M_get_Bit_allocator(), - __x._M_get_Bit_allocator()); - } -#endif - if (__x.size() > capacity()) - { - this->_M_deallocate(); - _M_initialize(__x.size()); - } - this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), - begin()); - return *this; - } - -#if __cplusplus >= 201103L - vector& - operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) - { - if (_Bit_alloc_traits::_S_propagate_on_move_assign() - || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) - { - this->_M_deallocate(); - this->_M_impl._M_start = __x._M_impl._M_start; - this->_M_impl._M_finish = __x._M_impl._M_finish; - this->_M_impl._M_end_of_storage = __x._M_impl._M_end_of_storage; - __x._M_impl._M_start = _Bit_iterator(); - __x._M_impl._M_finish = _Bit_iterator(); - __x._M_impl._M_end_of_storage = nullptr; - std::__alloc_on_move(_M_get_Bit_allocator(), - __x._M_get_Bit_allocator()); - } - else - { - if (__x.size() > capacity()) - { - this->_M_deallocate(); - _M_initialize(__x.size()); - } - this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), - begin()); - __x.clear(); - } - return *this; - } - - vector& - operator=(initializer_list __l) - { - this->assign (__l.begin(), __l.end()); - return *this; - } -#endif - - // assign(), a generalized assignment member function. Two - // versions: one that takes a count, and one that takes a range. - // The range version is a member template, so we dispatch on whether - // or not the type is an integer. - void - assign(size_type __n, const bool& __x) - { _M_fill_assign(__n, __x); } - -#if __cplusplus >= 201103L - template> - void - assign(_InputIterator __first, _InputIterator __last) - { _M_assign_dispatch(__first, __last, __false_type()); } -#else - template - void - assign(_InputIterator __first, _InputIterator __last) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - _M_assign_dispatch(__first, __last, _Integral()); - } -#endif - -#if __cplusplus >= 201103L - void - assign(initializer_list __l) - { this->assign(__l.begin(), __l.end()); } -#endif - - iterator - begin() _GLIBCXX_NOEXCEPT - { return this->_M_impl._M_start; } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return this->_M_impl._M_start; } - - iterator - end() _GLIBCXX_NOEXCEPT - { return this->_M_impl._M_finish; } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return this->_M_impl._M_finish; } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return this->_M_impl._M_start; } - - const_iterator - cend() const noexcept - { return this->_M_impl._M_finish; } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - size_type - size() const _GLIBCXX_NOEXCEPT - { return size_type(end() - begin()); } - - size_type - max_size() const _GLIBCXX_NOEXCEPT - { - const size_type __isize = - __gnu_cxx::__numeric_traits::__max - - int(_S_word_bit) + 1; - const size_type __asize - = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); - return (__asize <= __isize / int(_S_word_bit) - ? __asize * int(_S_word_bit) : __isize); - } - - size_type - capacity() const _GLIBCXX_NOEXCEPT - { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) - - begin()); } - - bool - empty() const _GLIBCXX_NOEXCEPT - { return begin() == end(); } - - reference - operator[](size_type __n) - { - return *iterator(this->_M_impl._M_start._M_p - + __n / int(_S_word_bit), __n % int(_S_word_bit)); - } - - const_reference - operator[](size_type __n) const - { - return *const_iterator(this->_M_impl._M_start._M_p - + __n / int(_S_word_bit), __n % int(_S_word_bit)); - } - - protected: - void - _M_range_check(size_type __n) const - { - if (__n >= this->size()) - __throw_out_of_range_fmt(__N("vector::_M_range_check: __n " - "(which is %zu) >= this->size() " - "(which is %zu)"), - __n, this->size()); - } - - public: - reference - at(size_type __n) - { _M_range_check(__n); return (*this)[__n]; } - - const_reference - at(size_type __n) const - { _M_range_check(__n); return (*this)[__n]; } - - void - reserve(size_type __n) - { - if (__n > max_size()) - __throw_length_error(__N("vector::reserve")); - if (capacity() < __n) - _M_reallocate(__n); - } - - reference - front() - { return *begin(); } - - const_reference - front() const - { return *begin(); } - - reference - back() - { return *(end() - 1); } - - const_reference - back() const - { return *(end() - 1); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 464. Suggestion for new member functions in standard containers. - // N.B. DR 464 says nothing about vector but we need something - // here due to the way we are implementing DR 464 in the debug-mode - // vector class. - void - data() _GLIBCXX_NOEXCEPT { } - - void - push_back(bool __x) - { - if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) - *this->_M_impl._M_finish++ = __x; - else - _M_insert_aux(end(), __x); - } - - void - swap(vector& __x) _GLIBCXX_NOEXCEPT - { - std::swap(this->_M_impl._M_start, __x._M_impl._M_start); - std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); - std::swap(this->_M_impl._M_end_of_storage, - __x._M_impl._M_end_of_storage); - _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), - __x._M_get_Bit_allocator()); - } - - // [23.2.5]/1, third-to-last entry in synopsis listing - static void - swap(reference __x, reference __y) _GLIBCXX_NOEXCEPT - { - bool __tmp = __x; - __x = __y; - __y = __tmp; - } - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __position, const bool& __x = bool()) -#else - insert(iterator __position, const bool& __x = bool()) -#endif - { - const difference_type __n = __position - begin(); - if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() - && __position == end()) - *this->_M_impl._M_finish++ = __x; - else - _M_insert_aux(__position._M_const_cast(), __x); - return begin() + __n; - } - -#if __cplusplus >= 201103L - template> - iterator - insert(const_iterator __position, - _InputIterator __first, _InputIterator __last) - { - difference_type __offset = __position - cbegin(); - _M_insert_dispatch(__position._M_const_cast(), - __first, __last, __false_type()); - return begin() + __offset; - } -#else - template - void - insert(iterator __position, - _InputIterator __first, _InputIterator __last) - { - typedef typename std::__is_integer<_InputIterator>::__type _Integral; - _M_insert_dispatch(__position, __first, __last, _Integral()); - } -#endif - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, size_type __n, const bool& __x) - { - difference_type __offset = __position - cbegin(); - _M_fill_insert(__position._M_const_cast(), __n, __x); - return begin() + __offset; - } -#else - void - insert(iterator __position, size_type __n, const bool& __x) - { _M_fill_insert(__position, __n, __x); } -#endif - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __p, initializer_list __l) - { return this->insert(__p, __l.begin(), __l.end()); } -#endif - - void - pop_back() - { --this->_M_impl._M_finish; } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __position) -#else - erase(iterator __position) -#endif - { return _M_erase(__position._M_const_cast()); } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __first, const_iterator __last) -#else - erase(iterator __first, iterator __last) -#endif - { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } - - void - resize(size_type __new_size, bool __x = bool()) - { - if (__new_size < size()) - _M_erase_at_end(begin() + difference_type(__new_size)); - else - insert(end(), __new_size - size(), __x); - } - -#if __cplusplus >= 201103L - void - shrink_to_fit() - { _M_shrink_to_fit(); } -#endif - - void - flip() _GLIBCXX_NOEXCEPT - { - _Bit_type * const __end = this->_M_impl._M_end_addr(); - for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) - *__p = ~*__p; - } - - void - clear() _GLIBCXX_NOEXCEPT - { _M_erase_at_end(begin()); } - -#if __cplusplus >= 201103L - template -#if __cplusplus > 201402L - reference -#else - void -#endif - emplace_back(_Args&&... __args) - { - push_back(bool(__args...)); -#if __cplusplus > 201402L - return back(); -#endif - } - - template - iterator - emplace(const_iterator __pos, _Args&&... __args) - { return insert(__pos, bool(__args...)); } -#endif - - protected: - // Precondition: __first._M_offset == 0 && __result._M_offset == 0. - iterator - _M_copy_aligned(const_iterator __first, const_iterator __last, - iterator __result) - { - _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); - return std::copy(const_iterator(__last._M_p, 0), __last, - iterator(__q, 0)); - } - - void - _M_initialize(size_type __n) - { - _Bit_pointer __q = this->_M_allocate(__n); - this->_M_impl._M_end_of_storage = __q + _S_nword(__n); - this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); - this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); - } - - void - _M_reallocate(size_type __n); - -#if __cplusplus >= 201103L - bool - _M_shrink_to_fit(); -#endif - - // Check whether it's an integral type. If so, it's not an iterator. - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 438. Ambiguity in the "do the right thing" clause - template - void - _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) - { - _M_initialize(static_cast(__n)); - std::fill(this->_M_impl._M_start._M_p, - this->_M_impl._M_end_addr(), __x ? ~0 : 0); - } - - template - void - _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, - __false_type) - { _M_initialize_range(__first, __last, - std::__iterator_category(__first)); } - - template - void - _M_initialize_range(_InputIterator __first, _InputIterator __last, - std::input_iterator_tag) - { - for (; __first != __last; ++__first) - push_back(*__first); - } - - template - void - _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, - std::forward_iterator_tag) - { - const size_type __n = std::distance(__first, __last); - _M_initialize(__n); - std::copy(__first, __last, this->_M_impl._M_start); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 438. Ambiguity in the "do the right thing" clause - template - void - _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) - { _M_fill_assign(__n, __val); } - - template - void - _M_assign_dispatch(_InputIterator __first, _InputIterator __last, - __false_type) - { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } - - void - _M_fill_assign(size_t __n, bool __x) - { - if (__n > size()) - { - std::fill(this->_M_impl._M_start._M_p, - this->_M_impl._M_end_addr(), __x ? ~0 : 0); - insert(end(), __n - size(), __x); - } - else - { - _M_erase_at_end(begin() + __n); - std::fill(this->_M_impl._M_start._M_p, - this->_M_impl._M_end_addr(), __x ? ~0 : 0); - } - } - - template - void - _M_assign_aux(_InputIterator __first, _InputIterator __last, - std::input_iterator_tag) - { - iterator __cur = begin(); - for (; __first != __last && __cur != end(); ++__cur, ++__first) - *__cur = *__first; - if (__first == __last) - _M_erase_at_end(__cur); - else - insert(end(), __first, __last); - } - - template - void - _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, - std::forward_iterator_tag) - { - const size_type __len = std::distance(__first, __last); - if (__len < size()) - _M_erase_at_end(std::copy(__first, __last, begin())); - else - { - _ForwardIterator __mid = __first; - std::advance(__mid, size()); - std::copy(__first, __mid, begin()); - insert(end(), __mid, __last); - } - } - - // Check whether it's an integral type. If so, it's not an iterator. - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 438. Ambiguity in the "do the right thing" clause - template - void - _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, - __true_type) - { _M_fill_insert(__pos, __n, __x); } - - template - void - _M_insert_dispatch(iterator __pos, - _InputIterator __first, _InputIterator __last, - __false_type) - { _M_insert_range(__pos, __first, __last, - std::__iterator_category(__first)); } - - void - _M_fill_insert(iterator __position, size_type __n, bool __x); - - template - void - _M_insert_range(iterator __pos, _InputIterator __first, - _InputIterator __last, std::input_iterator_tag) - { - for (; __first != __last; ++__first) - { - __pos = insert(__pos, *__first); - ++__pos; - } - } - - template - void - _M_insert_range(iterator __position, _ForwardIterator __first, - _ForwardIterator __last, std::forward_iterator_tag); - - void - _M_insert_aux(iterator __position, bool __x); - - size_type - _M_check_len(size_type __n, const char* __s) const - { - if (max_size() - size() < __n) - __throw_length_error(__N(__s)); - - const size_type __len = size() + std::max(size(), __n); - return (__len < size() || __len > max_size()) ? max_size() : __len; - } - - void - _M_erase_at_end(iterator __pos) - { this->_M_impl._M_finish = __pos; } - - iterator - _M_erase(iterator __pos); - - iterator - _M_erase(iterator __first, iterator __last); - }; - -_GLIBCXX_END_NAMESPACE_CONTAINER -} // namespace std - -#if __cplusplus >= 201103L - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // DR 1182. - /// std::hash specialization for vector. - template - struct hash<_GLIBCXX_STD_C::vector> - : public __hash_base> - { - size_t - operator()(const _GLIBCXX_STD_C::vector&) const noexcept; - }; - -_GLIBCXX_END_NAMESPACE_VERSION -}// namespace std - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator.h deleted file mode 100644 index e6ef784ce..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator.h +++ /dev/null @@ -1,1260 +0,0 @@ -// Iterators -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Hewlett-Packard Company makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/** @file bits/stl_iterator.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{iterator} - * - * This file implements reverse_iterator, back_insert_iterator, - * front_insert_iterator, insert_iterator, __normal_iterator, and their - * supporting functions and overloaded operators. - */ - -#ifndef _STL_ITERATOR_H -#define _STL_ITERATOR_H 1 - -#include -#include -#include -#include - -#if __cplusplus > 201402L -# define __cpp_lib_array_constexpr 201603 -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup iterators - * @{ - */ - - // 24.4.1 Reverse iterators - /** - * Bidirectional and random access iterators have corresponding reverse - * %iterator adaptors that iterate through the data structure in the - * opposite direction. They have the same signatures as the corresponding - * iterators. The fundamental relation between a reverse %iterator and its - * corresponding %iterator @c i is established by the identity: - * @code - * &*(reverse_iterator(i)) == &*(i - 1) - * @endcode - * - * This mapping is dictated by the fact that while there is always a - * pointer past the end of an array, there might not be a valid pointer - * before the beginning of an array. [24.4.1]/1,2 - * - * Reverse iterators can be tricky and surprising at first. Their - * semantics make sense, however, and the trickiness is a side effect of - * the requirement that the iterators must be safe. - */ - template - class reverse_iterator - : public iterator::iterator_category, - typename iterator_traits<_Iterator>::value_type, - typename iterator_traits<_Iterator>::difference_type, - typename iterator_traits<_Iterator>::pointer, - typename iterator_traits<_Iterator>::reference> - { - protected: - _Iterator current; - - typedef iterator_traits<_Iterator> __traits_type; - - public: - typedef _Iterator iterator_type; - typedef typename __traits_type::difference_type difference_type; - typedef typename __traits_type::pointer pointer; - typedef typename __traits_type::reference reference; - - /** - * The default constructor value-initializes member @p current. - * If it is a pointer, that means it is zero-initialized. - */ - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 235 No specification of default ctor for reverse_iterator - _GLIBCXX17_CONSTEXPR - reverse_iterator() : current() { } - - /** - * This %iterator will move in the opposite direction that @p x does. - */ - explicit _GLIBCXX17_CONSTEXPR - reverse_iterator(iterator_type __x) : current(__x) { } - - /** - * The copy constructor is normal. - */ - _GLIBCXX17_CONSTEXPR - reverse_iterator(const reverse_iterator& __x) - : current(__x.current) { } - - /** - * A %reverse_iterator across other types can be copied if the - * underlying %iterator can be converted to the type of @c current. - */ - template - _GLIBCXX17_CONSTEXPR - reverse_iterator(const reverse_iterator<_Iter>& __x) - : current(__x.base()) { } - - /** - * @return @c current, the %iterator used for underlying work. - */ - _GLIBCXX17_CONSTEXPR iterator_type - base() const - { return current; } - - /** - * @return A reference to the value at @c --current - * - * This requires that @c --current is dereferenceable. - * - * @warning This implementation requires that for an iterator of the - * underlying iterator type, @c x, a reference obtained by - * @c *x remains valid after @c x has been modified or - * destroyed. This is a bug: http://gcc.gnu.org/PR51823 - */ - _GLIBCXX17_CONSTEXPR reference - operator*() const - { - _Iterator __tmp = current; - return *--__tmp; - } - - /** - * @return A pointer to the value at @c --current - * - * This requires that @c --current is dereferenceable. - */ - _GLIBCXX17_CONSTEXPR pointer - operator->() const - { return &(operator*()); } - - /** - * @return @c *this - * - * Decrements the underlying iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator& - operator++() - { - --current; - return *this; - } - - /** - * @return The original value of @c *this - * - * Decrements the underlying iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator - operator++(int) - { - reverse_iterator __tmp = *this; - --current; - return __tmp; - } - - /** - * @return @c *this - * - * Increments the underlying iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator& - operator--() - { - ++current; - return *this; - } - - /** - * @return A reverse_iterator with the previous value of @c *this - * - * Increments the underlying iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator - operator--(int) - { - reverse_iterator __tmp = *this; - ++current; - return __tmp; - } - - /** - * @return A reverse_iterator that refers to @c current - @a __n - * - * The underlying iterator must be a Random Access Iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator - operator+(difference_type __n) const - { return reverse_iterator(current - __n); } - - /** - * @return *this - * - * Moves the underlying iterator backwards @a __n steps. - * The underlying iterator must be a Random Access Iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator& - operator+=(difference_type __n) - { - current -= __n; - return *this; - } - - /** - * @return A reverse_iterator that refers to @c current - @a __n - * - * The underlying iterator must be a Random Access Iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator - operator-(difference_type __n) const - { return reverse_iterator(current + __n); } - - /** - * @return *this - * - * Moves the underlying iterator forwards @a __n steps. - * The underlying iterator must be a Random Access Iterator. - */ - _GLIBCXX17_CONSTEXPR reverse_iterator& - operator-=(difference_type __n) - { - current += __n; - return *this; - } - - /** - * @return The value at @c current - @a __n - 1 - * - * The underlying iterator must be a Random Access Iterator. - */ - _GLIBCXX17_CONSTEXPR reference - operator[](difference_type __n) const - { return *(*this + __n); } - }; - - //@{ - /** - * @param __x A %reverse_iterator. - * @param __y A %reverse_iterator. - * @return A simple bool. - * - * Reverse iterators forward many operations to their underlying base() - * iterators. Others are implemented in terms of one another. - * - */ - template - inline _GLIBCXX17_CONSTEXPR bool - operator==(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __x.base() == __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __y.base() < __x.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator!=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return !(__x == __y); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __y < __x; } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return !(__y < __x); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>=(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return !(__x < __y); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 280. Comparison of reverse_iterator to const reverse_iterator. - template - inline _GLIBCXX17_CONSTEXPR bool - operator==(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __x.base() == __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __y.base() < __x.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator!=(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return !(__x == __y); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __y < __x; } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<=(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return !(__y < __x); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>=(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return !(__x < __y); } - //@} - -#if __cplusplus < 201103L - template - inline typename reverse_iterator<_Iterator>::difference_type - operator-(const reverse_iterator<_Iterator>& __x, - const reverse_iterator<_Iterator>& __y) - { return __y.base() - __x.base(); } - - template - inline typename reverse_iterator<_IteratorL>::difference_type - operator-(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - { return __y.base() - __x.base(); } -#else - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 685. reverse_iterator/move_iterator difference has invalid signatures - template - inline _GLIBCXX17_CONSTEXPR auto - operator-(const reverse_iterator<_IteratorL>& __x, - const reverse_iterator<_IteratorR>& __y) - -> decltype(__y.base() - __x.base()) - { return __y.base() - __x.base(); } -#endif - - template - inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> - operator+(typename reverse_iterator<_Iterator>::difference_type __n, - const reverse_iterator<_Iterator>& __x) - { return reverse_iterator<_Iterator>(__x.base() - __n); } - -#if __cplusplus >= 201103L - // Same as C++14 make_reverse_iterator but used in C++03 mode too. - template - inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> - __make_reverse_iterator(_Iterator __i) - { return reverse_iterator<_Iterator>(__i); } - -# if __cplusplus > 201103L -# define __cpp_lib_make_reverse_iterator 201402 - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 2285. make_reverse_iterator - /// Generator function for reverse_iterator. - template - inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> - make_reverse_iterator(_Iterator __i) - { return reverse_iterator<_Iterator>(__i); } -# endif -#endif - -#if __cplusplus >= 201103L - template - auto - __niter_base(reverse_iterator<_Iterator> __it) - -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) - { return __make_reverse_iterator(__niter_base(__it.base())); } - - template - struct __is_move_iterator > - : __is_move_iterator<_Iterator> - { }; - - template - auto - __miter_base(reverse_iterator<_Iterator> __it) - -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) - { return __make_reverse_iterator(__miter_base(__it.base())); } -#endif - - // 24.4.2.2.1 back_insert_iterator - /** - * @brief Turns assignment into insertion. - * - * These are output iterators, constructed from a container-of-T. - * Assigning a T to the iterator appends it to the container using - * push_back. - * - * Tip: Using the back_inserter function to create these iterators can - * save typing. - */ - template - class back_insert_iterator - : public iterator - { - protected: - _Container* container; - - public: - /// A nested typedef for the type of whatever container you used. - typedef _Container container_type; - - /// The only way to create this %iterator is with a container. - explicit - back_insert_iterator(_Container& __x) - : container(std::__addressof(__x)) { } - - /** - * @param __value An instance of whatever type - * container_type::const_reference is; presumably a - * reference-to-const T for container. - * @return This %iterator, for chained operations. - * - * This kind of %iterator doesn't really have a @a position in the - * container (you can think of the position as being permanently at - * the end, if you like). Assigning a value to the %iterator will - * always append the value to the end of the container. - */ -#if __cplusplus < 201103L - back_insert_iterator& - operator=(typename _Container::const_reference __value) - { - container->push_back(__value); - return *this; - } -#else - back_insert_iterator& - operator=(const typename _Container::value_type& __value) - { - container->push_back(__value); - return *this; - } - - back_insert_iterator& - operator=(typename _Container::value_type&& __value) - { - container->push_back(std::move(__value)); - return *this; - } -#endif - - /// Simply returns *this. - back_insert_iterator& - operator*() - { return *this; } - - /// Simply returns *this. (This %iterator does not @a move.) - back_insert_iterator& - operator++() - { return *this; } - - /// Simply returns *this. (This %iterator does not @a move.) - back_insert_iterator - operator++(int) - { return *this; } - }; - - /** - * @param __x A container of arbitrary type. - * @return An instance of back_insert_iterator working on @p __x. - * - * This wrapper function helps in creating back_insert_iterator instances. - * Typing the name of the %iterator requires knowing the precise full - * type of the container, which can be tedious and impedes generic - * programming. Using this function lets you take advantage of automatic - * template parameter deduction, making the compiler match the correct - * types for you. - */ - template - inline back_insert_iterator<_Container> - back_inserter(_Container& __x) - { return back_insert_iterator<_Container>(__x); } - - /** - * @brief Turns assignment into insertion. - * - * These are output iterators, constructed from a container-of-T. - * Assigning a T to the iterator prepends it to the container using - * push_front. - * - * Tip: Using the front_inserter function to create these iterators can - * save typing. - */ - template - class front_insert_iterator - : public iterator - { - protected: - _Container* container; - - public: - /// A nested typedef for the type of whatever container you used. - typedef _Container container_type; - - /// The only way to create this %iterator is with a container. - explicit front_insert_iterator(_Container& __x) - : container(std::__addressof(__x)) { } - - /** - * @param __value An instance of whatever type - * container_type::const_reference is; presumably a - * reference-to-const T for container. - * @return This %iterator, for chained operations. - * - * This kind of %iterator doesn't really have a @a position in the - * container (you can think of the position as being permanently at - * the front, if you like). Assigning a value to the %iterator will - * always prepend the value to the front of the container. - */ -#if __cplusplus < 201103L - front_insert_iterator& - operator=(typename _Container::const_reference __value) - { - container->push_front(__value); - return *this; - } -#else - front_insert_iterator& - operator=(const typename _Container::value_type& __value) - { - container->push_front(__value); - return *this; - } - - front_insert_iterator& - operator=(typename _Container::value_type&& __value) - { - container->push_front(std::move(__value)); - return *this; - } -#endif - - /// Simply returns *this. - front_insert_iterator& - operator*() - { return *this; } - - /// Simply returns *this. (This %iterator does not @a move.) - front_insert_iterator& - operator++() - { return *this; } - - /// Simply returns *this. (This %iterator does not @a move.) - front_insert_iterator - operator++(int) - { return *this; } - }; - - /** - * @param __x A container of arbitrary type. - * @return An instance of front_insert_iterator working on @p x. - * - * This wrapper function helps in creating front_insert_iterator instances. - * Typing the name of the %iterator requires knowing the precise full - * type of the container, which can be tedious and impedes generic - * programming. Using this function lets you take advantage of automatic - * template parameter deduction, making the compiler match the correct - * types for you. - */ - template - inline front_insert_iterator<_Container> - front_inserter(_Container& __x) - { return front_insert_iterator<_Container>(__x); } - - /** - * @brief Turns assignment into insertion. - * - * These are output iterators, constructed from a container-of-T. - * Assigning a T to the iterator inserts it in the container at the - * %iterator's position, rather than overwriting the value at that - * position. - * - * (Sequences will actually insert a @e copy of the value before the - * %iterator's position.) - * - * Tip: Using the inserter function to create these iterators can - * save typing. - */ - template - class insert_iterator - : public iterator - { - protected: - _Container* container; - typename _Container::iterator iter; - - public: - /// A nested typedef for the type of whatever container you used. - typedef _Container container_type; - - /** - * The only way to create this %iterator is with a container and an - * initial position (a normal %iterator into the container). - */ - insert_iterator(_Container& __x, typename _Container::iterator __i) - : container(std::__addressof(__x)), iter(__i) {} - - /** - * @param __value An instance of whatever type - * container_type::const_reference is; presumably a - * reference-to-const T for container. - * @return This %iterator, for chained operations. - * - * This kind of %iterator maintains its own position in the - * container. Assigning a value to the %iterator will insert the - * value into the container at the place before the %iterator. - * - * The position is maintained such that subsequent assignments will - * insert values immediately after one another. For example, - * @code - * // vector v contains A and Z - * - * insert_iterator i (v, ++v.begin()); - * i = 1; - * i = 2; - * i = 3; - * - * // vector v contains A, 1, 2, 3, and Z - * @endcode - */ -#if __cplusplus < 201103L - insert_iterator& - operator=(typename _Container::const_reference __value) - { - iter = container->insert(iter, __value); - ++iter; - return *this; - } -#else - insert_iterator& - operator=(const typename _Container::value_type& __value) - { - iter = container->insert(iter, __value); - ++iter; - return *this; - } - - insert_iterator& - operator=(typename _Container::value_type&& __value) - { - iter = container->insert(iter, std::move(__value)); - ++iter; - return *this; - } -#endif - - /// Simply returns *this. - insert_iterator& - operator*() - { return *this; } - - /// Simply returns *this. (This %iterator does not @a move.) - insert_iterator& - operator++() - { return *this; } - - /// Simply returns *this. (This %iterator does not @a move.) - insert_iterator& - operator++(int) - { return *this; } - }; - - /** - * @param __x A container of arbitrary type. - * @return An instance of insert_iterator working on @p __x. - * - * This wrapper function helps in creating insert_iterator instances. - * Typing the name of the %iterator requires knowing the precise full - * type of the container, which can be tedious and impedes generic - * programming. Using this function lets you take advantage of automatic - * template parameter deduction, making the compiler match the correct - * types for you. - */ - template - inline insert_iterator<_Container> - inserter(_Container& __x, _Iterator __i) - { - return insert_iterator<_Container>(__x, - typename _Container::iterator(__i)); - } - - // @} group iterators - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // This iterator adapter is @a normal in the sense that it does not - // change the semantics of any of the operators of its iterator - // parameter. Its primary purpose is to convert an iterator that is - // not a class, e.g. a pointer, into an iterator that is a class. - // The _Container parameter exists solely so that different containers - // using this template can instantiate different types, even if the - // _Iterator parameter is the same. - using std::iterator_traits; - using std::iterator; - template - class __normal_iterator - { - protected: - _Iterator _M_current; - - typedef iterator_traits<_Iterator> __traits_type; - - public: - typedef _Iterator iterator_type; - typedef typename __traits_type::iterator_category iterator_category; - typedef typename __traits_type::value_type value_type; - typedef typename __traits_type::difference_type difference_type; - typedef typename __traits_type::reference reference; - typedef typename __traits_type::pointer pointer; - - _GLIBCXX_CONSTEXPR __normal_iterator() _GLIBCXX_NOEXCEPT - : _M_current(_Iterator()) { } - - explicit - __normal_iterator(const _Iterator& __i) _GLIBCXX_NOEXCEPT - : _M_current(__i) { } - - // Allow iterator to const_iterator conversion - template - __normal_iterator(const __normal_iterator<_Iter, - typename __enable_if< - (std::__are_same<_Iter, typename _Container::pointer>::__value), - _Container>::__type>& __i) _GLIBCXX_NOEXCEPT - : _M_current(__i.base()) { } - - // Forward iterator requirements - reference - operator*() const _GLIBCXX_NOEXCEPT - { return *_M_current; } - - pointer - operator->() const _GLIBCXX_NOEXCEPT - { return _M_current; } - - __normal_iterator& - operator++() _GLIBCXX_NOEXCEPT - { - ++_M_current; - return *this; - } - - __normal_iterator - operator++(int) _GLIBCXX_NOEXCEPT - { return __normal_iterator(_M_current++); } - - // Bidirectional iterator requirements - __normal_iterator& - operator--() _GLIBCXX_NOEXCEPT - { - --_M_current; - return *this; - } - - __normal_iterator - operator--(int) _GLIBCXX_NOEXCEPT - { return __normal_iterator(_M_current--); } - - // Random access iterator requirements - reference - operator[](difference_type __n) const _GLIBCXX_NOEXCEPT - { return _M_current[__n]; } - - __normal_iterator& - operator+=(difference_type __n) _GLIBCXX_NOEXCEPT - { _M_current += __n; return *this; } - - __normal_iterator - operator+(difference_type __n) const _GLIBCXX_NOEXCEPT - { return __normal_iterator(_M_current + __n); } - - __normal_iterator& - operator-=(difference_type __n) _GLIBCXX_NOEXCEPT - { _M_current -= __n; return *this; } - - __normal_iterator - operator-(difference_type __n) const _GLIBCXX_NOEXCEPT - { return __normal_iterator(_M_current - __n); } - - const _Iterator& - base() const _GLIBCXX_NOEXCEPT - { return _M_current; } - }; - - // Note: In what follows, the left- and right-hand-side iterators are - // allowed to vary in types (conceptually in cv-qualification) so that - // comparison between cv-qualified and non-cv-qualified iterators be - // valid. However, the greedy and unfriendly operators in std::rel_ops - // will make overload resolution ambiguous (when in scope) if we don't - // provide overloads whose operands are of the same type. Can someone - // remind me what generic programming is about? -- Gaby - - // Forward iterator requirements - template - inline bool - operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() == __rhs.base(); } - - template - inline bool - operator==(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() == __rhs.base(); } - - template - inline bool - operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() != __rhs.base(); } - - template - inline bool - operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() != __rhs.base(); } - - // Random access iterator requirements - template - inline bool - operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() < __rhs.base(); } - - template - inline bool - operator<(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() < __rhs.base(); } - - template - inline bool - operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() > __rhs.base(); } - - template - inline bool - operator>(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() > __rhs.base(); } - - template - inline bool - operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() <= __rhs.base(); } - - template - inline bool - operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() <= __rhs.base(); } - - template - inline bool - operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() >= __rhs.base(); } - - template - inline bool - operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() >= __rhs.base(); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // According to the resolution of DR179 not only the various comparison - // operators but also operator- must accept mixed iterator/const_iterator - // parameters. - template -#if __cplusplus >= 201103L - // DR 685. - inline auto - operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept - -> decltype(__lhs.base() - __rhs.base()) -#else - inline typename __normal_iterator<_IteratorL, _Container>::difference_type - operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, - const __normal_iterator<_IteratorR, _Container>& __rhs) -#endif - { return __lhs.base() - __rhs.base(); } - - template - inline typename __normal_iterator<_Iterator, _Container>::difference_type - operator-(const __normal_iterator<_Iterator, _Container>& __lhs, - const __normal_iterator<_Iterator, _Container>& __rhs) - _GLIBCXX_NOEXCEPT - { return __lhs.base() - __rhs.base(); } - - template - inline __normal_iterator<_Iterator, _Container> - operator+(typename __normal_iterator<_Iterator, _Container>::difference_type - __n, const __normal_iterator<_Iterator, _Container>& __i) - _GLIBCXX_NOEXCEPT - { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - _Iterator - __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) - { return __it.base(); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#if __cplusplus >= 201103L - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup iterators - * @{ - */ - - // 24.4.3 Move iterators - /** - * Class template move_iterator is an iterator adapter with the same - * behavior as the underlying iterator except that its dereference - * operator implicitly converts the value returned by the underlying - * iterator's dereference operator to an rvalue reference. Some - * generic algorithms can be called with move iterators to replace - * copying with moving. - */ - template - class move_iterator - { - protected: - _Iterator _M_current; - - typedef iterator_traits<_Iterator> __traits_type; - typedef typename __traits_type::reference __base_ref; - - public: - typedef _Iterator iterator_type; - typedef typename __traits_type::iterator_category iterator_category; - typedef typename __traits_type::value_type value_type; - typedef typename __traits_type::difference_type difference_type; - // NB: DR 680. - typedef _Iterator pointer; - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2106. move_iterator wrapping iterators returning prvalues - typedef typename conditional::value, - typename remove_reference<__base_ref>::type&&, - __base_ref>::type reference; - - _GLIBCXX17_CONSTEXPR - move_iterator() - : _M_current() { } - - explicit _GLIBCXX17_CONSTEXPR - move_iterator(iterator_type __i) - : _M_current(__i) { } - - template - _GLIBCXX17_CONSTEXPR - move_iterator(const move_iterator<_Iter>& __i) - : _M_current(__i.base()) { } - - _GLIBCXX17_CONSTEXPR iterator_type - base() const - { return _M_current; } - - _GLIBCXX17_CONSTEXPR reference - operator*() const - { return static_cast(*_M_current); } - - _GLIBCXX17_CONSTEXPR pointer - operator->() const - { return _M_current; } - - _GLIBCXX17_CONSTEXPR move_iterator& - operator++() - { - ++_M_current; - return *this; - } - - _GLIBCXX17_CONSTEXPR move_iterator - operator++(int) - { - move_iterator __tmp = *this; - ++_M_current; - return __tmp; - } - - _GLIBCXX17_CONSTEXPR move_iterator& - operator--() - { - --_M_current; - return *this; - } - - _GLIBCXX17_CONSTEXPR move_iterator - operator--(int) - { - move_iterator __tmp = *this; - --_M_current; - return __tmp; - } - - _GLIBCXX17_CONSTEXPR move_iterator - operator+(difference_type __n) const - { return move_iterator(_M_current + __n); } - - _GLIBCXX17_CONSTEXPR move_iterator& - operator+=(difference_type __n) - { - _M_current += __n; - return *this; - } - - _GLIBCXX17_CONSTEXPR move_iterator - operator-(difference_type __n) const - { return move_iterator(_M_current - __n); } - - _GLIBCXX17_CONSTEXPR move_iterator& - operator-=(difference_type __n) - { - _M_current -= __n; - return *this; - } - - _GLIBCXX17_CONSTEXPR reference - operator[](difference_type __n) const - { return std::move(_M_current[__n]); } - }; - - // Note: See __normal_iterator operators note from Gaby to understand - // why there are always 2 versions for most of the move_iterator - // operators. - template - inline _GLIBCXX17_CONSTEXPR bool - operator==(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - { return __x.base() == __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator==(const move_iterator<_Iterator>& __x, - const move_iterator<_Iterator>& __y) - { return __x.base() == __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator!=(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - { return !(__x == __y); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator!=(const move_iterator<_Iterator>& __x, - const move_iterator<_Iterator>& __y) - { return !(__x == __y); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - { return __x.base() < __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<(const move_iterator<_Iterator>& __x, - const move_iterator<_Iterator>& __y) - { return __x.base() < __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<=(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - { return !(__y < __x); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator<=(const move_iterator<_Iterator>& __x, - const move_iterator<_Iterator>& __y) - { return !(__y < __x); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - { return __y < __x; } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>(const move_iterator<_Iterator>& __x, - const move_iterator<_Iterator>& __y) - { return __y < __x; } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>=(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - { return !(__x < __y); } - - template - inline _GLIBCXX17_CONSTEXPR bool - operator>=(const move_iterator<_Iterator>& __x, - const move_iterator<_Iterator>& __y) - { return !(__x < __y); } - - // DR 685. - template - inline _GLIBCXX17_CONSTEXPR auto - operator-(const move_iterator<_IteratorL>& __x, - const move_iterator<_IteratorR>& __y) - -> decltype(__x.base() - __y.base()) - { return __x.base() - __y.base(); } - - template - inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> - operator+(typename move_iterator<_Iterator>::difference_type __n, - const move_iterator<_Iterator>& __x) - { return __x + __n; } - - template - inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> - make_move_iterator(_Iterator __i) - { return move_iterator<_Iterator>(__i); } - - template::value_type>::value, - _Iterator, move_iterator<_Iterator>>::type> - inline _GLIBCXX17_CONSTEXPR _ReturnType - __make_move_if_noexcept_iterator(_Iterator __i) - { return _ReturnType(__i); } - - // Overload for pointers that matches std::move_if_noexcept more closely, - // returning a constant iterator when we don't want to move. - template::value, - const _Tp*, move_iterator<_Tp*>>::type> - inline _GLIBCXX17_CONSTEXPR _ReturnType - __make_move_if_noexcept_iterator(_Tp* __i) - { return _ReturnType(__i); } - - // @} group iterators - - template - auto - __niter_base(move_iterator<_Iterator> __it) - -> decltype(make_move_iterator(__niter_base(__it.base()))) - { return make_move_iterator(__niter_base(__it.base())); } - - template - struct __is_move_iterator > - { - enum { __value = 1 }; - typedef __true_type __type; - }; - - template - auto - __miter_base(move_iterator<_Iterator> __it) - -> decltype(__miter_base(__it.base())) - { return __miter_base(__it.base()); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter) -#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) \ - std::__make_move_if_noexcept_iterator(_Iter) -#else -#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter) -#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) (_Iter) -#endif // C++11 - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/string_view.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/string_view.tcc deleted file mode 100644 index 86661ff09..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/string_view.tcc +++ /dev/null @@ -1,225 +0,0 @@ -// Components for manipulating non-owning sequences of characters -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/string_view.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{string_view} - */ - -// -// N3762 basic_string_view library -// - -#ifndef _GLIBCXX_STRING_VIEW_TCC -#define _GLIBCXX_STRING_VIEW_TCC 1 - -#pragma GCC system_header - -#if __cplusplus >= 201703L - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find(const _CharT* __str, size_type __pos, size_type __n) const noexcept - { - __glibcxx_requires_string_len(__str, __n); - - if (__n == 0) - return __pos <= this->_M_len ? __pos : npos; - - if (__n <= this->_M_len) - { - for (; __pos <= this->_M_len - __n; ++__pos) - if (traits_type::eq(this->_M_str[__pos], __str[0]) - && traits_type::compare(this->_M_str + __pos + 1, - __str + 1, __n - 1) == 0) - return __pos; - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find(_CharT __c, size_type __pos) const noexcept - { - size_type __ret = npos; - if (__pos < this->_M_len) - { - const size_type __n = this->_M_len - __pos; - const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); - if (__p) - __ret = __p - this->_M_str; - } - return __ret; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept - { - __glibcxx_requires_string_len(__str, __n); - - if (__n <= this->_M_len) - { - __pos = std::min(size_type(this->_M_len - __n), __pos); - do - { - if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) - return __pos; - } - while (__pos-- > 0); - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - rfind(_CharT __c, size_type __pos) const noexcept - { - size_type __size = this->_M_len; - if (__size > 0) - { - if (--__size > __pos) - __size = __pos; - for (++__size; __size-- > 0; ) - if (traits_type::eq(this->_M_str[__size], __c)) - return __size; - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_first_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - for (; __n && __pos < this->_M_len; ++__pos) - { - const _CharT* __p = traits_type::find(__str, __n, - this->_M_str[__pos]); - if (__p) - return __pos; - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_last_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - size_type __size = this->size(); - if (__size && __n) - { - if (--__size > __pos) - __size = __pos; - do - { - if (traits_type::find(__str, __n, this->_M_str[__size])) - return __size; - } - while (__size-- != 0); - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - for (; __pos < this->_M_len; ++__pos) - if (!traits_type::find(__str, __n, this->_M_str[__pos])) - return __pos; - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_first_not_of(_CharT __c, size_type __pos) const noexcept - { - for (; __pos < this->_M_len; ++__pos) - if (!traits_type::eq(this->_M_str[__pos], __c)) - return __pos; - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - size_type __size = this->_M_len; - if (__size) - { - if (--__size > __pos) - __size = __pos; - do - { - if (!traits_type::find(__str, __n, this->_M_str[__size])) - return __size; - } - while (__size--); - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_last_not_of(_CharT __c, size_type __pos) const noexcept - { - size_type __size = this->_M_len; - if (__size) - { - if (--__size > __pos) - __size = __pos; - do - { - if (!traits_type::eq(this->_M_str[__size], __c)) - return __size; - } - while (__size--); - } - return npos; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // __cplusplus <= 201402L - -#endif // _GLIBCXX_STRING_VIEW_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unordered_map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unordered_map.h deleted file mode 100644 index dd881d462..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unordered_map.h +++ /dev/null @@ -1,1989 +0,0 @@ -// unordered_map implementation -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/unordered_map.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{unordered_map} - */ - -#ifndef _UNORDERED_MAP_H -#define _UNORDERED_MAP_H - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - /// Base types for unordered_map. - template - using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; - - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator >, - typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> - using __umap_hashtable = _Hashtable<_Key, std::pair, - _Alloc, __detail::_Select1st, - _Pred, _Hash, - __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, _Tr>; - - /// Base types for unordered_multimap. - template - using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; - - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator >, - typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> - using __ummap_hashtable = _Hashtable<_Key, std::pair, - _Alloc, __detail::_Select1st, - _Pred, _Hash, - __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, _Tr>; - - template - class unordered_multimap; - - /** - * @brief A standard container composed of unique keys (containing - * at most one of each key value) that associates values of another type - * with the keys. - * - * @ingroup unordered_associative_containers - * - * @tparam _Key Type of key objects. - * @tparam _Tp Type of mapped objects. - * @tparam _Hash Hashing function object type, defaults to hash<_Value>. - * @tparam _Pred Predicate function object type, defaults - * to equal_to<_Value>. - * @tparam _Alloc Allocator type, defaults to - * std::allocator>. - * - * Meets the requirements of a container, and - * unordered associative container - * - * The resulting value type of the container is std::pair. - * - * Base is _Hashtable, dispatched at compile time via template - * alias __umap_hashtable. - */ - template, - class _Pred = std::equal_to<_Key>, - class _Alloc = std::allocator > > - class unordered_map - { - typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; - _Hashtable _M_h; - - public: - // typedefs: - //@{ - /// Public typedefs. - typedef typename _Hashtable::key_type key_type; - typedef typename _Hashtable::value_type value_type; - typedef typename _Hashtable::mapped_type mapped_type; - typedef typename _Hashtable::hasher hasher; - typedef typename _Hashtable::key_equal key_equal; - typedef typename _Hashtable::allocator_type allocator_type; - //@} - - //@{ - /// Iterator-related typedefs. - typedef typename _Hashtable::pointer pointer; - typedef typename _Hashtable::const_pointer const_pointer; - typedef typename _Hashtable::reference reference; - typedef typename _Hashtable::const_reference const_reference; - typedef typename _Hashtable::iterator iterator; - typedef typename _Hashtable::const_iterator const_iterator; - typedef typename _Hashtable::local_iterator local_iterator; - typedef typename _Hashtable::const_local_iterator const_local_iterator; - typedef typename _Hashtable::size_type size_type; - typedef typename _Hashtable::difference_type difference_type; - //@} - -#if __cplusplus > 201402L - using node_type = typename _Hashtable::node_type; - using insert_return_type = typename _Hashtable::insert_return_type; -#endif - - //construct/destroy/copy - - /// Default constructor. - unordered_map() = default; - - /** - * @brief Default constructor creates no elements. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - */ - explicit - unordered_map(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__n, __hf, __eql, __a) - { } - - /** - * @brief Builds an %unordered_map from a range. - * @param __first An input iterator. - * @param __last An input iterator. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_map consisting of copies of the elements from - * [__first,__last). This is linear in N (where N is - * distance(__first,__last)). - */ - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__first, __last, __n, __hf, __eql, __a) - { } - - /// Copy constructor. - unordered_map(const unordered_map&) = default; - - /// Move constructor. - unordered_map(unordered_map&&) = default; - - /** - * @brief Creates an %unordered_map with no elements. - * @param __a An allocator object. - */ - explicit - unordered_map(const allocator_type& __a) - : _M_h(__a) - { } - - /* - * @brief Copy constructor with allocator argument. - * @param __uset Input %unordered_map to copy. - * @param __a An allocator object. - */ - unordered_map(const unordered_map& __umap, - const allocator_type& __a) - : _M_h(__umap._M_h, __a) - { } - - /* - * @brief Move constructor with allocator argument. - * @param __uset Input %unordered_map to move. - * @param __a An allocator object. - */ - unordered_map(unordered_map&& __umap, - const allocator_type& __a) - : _M_h(std::move(__umap._M_h), __a) - { } - - /** - * @brief Builds an %unordered_map from an initializer_list. - * @param __l An initializer_list. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_map consisting of copies of the elements in the - * list. This is linear in N (where N is @a __l.size()). - */ - unordered_map(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__l, __n, __hf, __eql, __a) - { } - - unordered_map(size_type __n, const allocator_type& __a) - : unordered_map(__n, hasher(), key_equal(), __a) - { } - - unordered_map(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_map(__n, __hf, key_equal(), __a) - { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_map(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_map(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_map(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_map(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_map(__l, __n, __hf, key_equal(), __a) - { } - - /// Copy assignment operator. - unordered_map& - operator=(const unordered_map&) = default; - - /// Move assignment operator. - unordered_map& - operator=(unordered_map&&) = default; - - /** - * @brief %Unordered_map list assignment operator. - * @param __l An initializer_list. - * - * This function fills an %unordered_map with copies of the elements in - * the initializer list @a __l. - * - * Note that the assignment completely changes the %unordered_map and - * that the resulting %unordered_map's size is the same as the number - * of elements assigned. - */ - unordered_map& - operator=(initializer_list __l) - { - _M_h = __l; - return *this; - } - - /// Returns the allocator object used by the %unordered_map. - allocator_type - get_allocator() const noexcept - { return _M_h.get_allocator(); } - - // size and capacity: - - /// Returns true if the %unordered_map is empty. - bool - empty() const noexcept - { return _M_h.empty(); } - - /// Returns the size of the %unordered_map. - size_type - size() const noexcept - { return _M_h.size(); } - - /// Returns the maximum size of the %unordered_map. - size_type - max_size() const noexcept - { return _M_h.max_size(); } - - // iterators. - - /** - * Returns a read/write iterator that points to the first element in the - * %unordered_map. - */ - iterator - begin() noexcept - { return _M_h.begin(); } - - //@{ - /** - * Returns a read-only (constant) iterator that points to the first - * element in the %unordered_map. - */ - const_iterator - begin() const noexcept - { return _M_h.begin(); } - - const_iterator - cbegin() const noexcept - { return _M_h.begin(); } - //@} - - /** - * Returns a read/write iterator that points one past the last element in - * the %unordered_map. - */ - iterator - end() noexcept - { return _M_h.end(); } - - //@{ - /** - * Returns a read-only (constant) iterator that points one past the last - * element in the %unordered_map. - */ - const_iterator - end() const noexcept - { return _M_h.end(); } - - const_iterator - cend() const noexcept - { return _M_h.end(); } - //@} - - // modifiers. - - /** - * @brief Attempts to build and insert a std::pair into the - * %unordered_map. - * - * @param __args Arguments used to generate a new pair instance (see - * std::piecewise_contruct for passing arguments to each - * part of the pair constructor). - * - * @return A pair, of which the first element is an iterator that points - * to the possibly inserted pair, and the second is a bool that - * is true if the pair was actually inserted. - * - * This function attempts to build and insert a (key, value) %pair into - * the %unordered_map. - * An %unordered_map relies on unique keys and thus a %pair is only - * inserted if its first element (the key) is not already present in the - * %unordered_map. - * - * Insertion requires amortized constant time. - */ - template - std::pair - emplace(_Args&&... __args) - { return _M_h.emplace(std::forward<_Args>(__args)...); } - - /** - * @brief Attempts to build and insert a std::pair into the - * %unordered_map. - * - * @param __pos An iterator that serves as a hint as to where the pair - * should be inserted. - * @param __args Arguments used to generate a new pair instance (see - * std::piecewise_contruct for passing arguments to each - * part of the pair constructor). - * @return An iterator that points to the element with key of the - * std::pair built from @a __args (may or may not be that - * std::pair). - * - * This function is not concerned about whether the insertion took place, - * and thus does not return a boolean like the single-argument emplace() - * does. - * Note that the first parameter is only a hint and can potentially - * improve the performance of the insertion process. A bad hint would - * cause no gains in efficiency. - * - * See - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * for more on @a hinting. - * - * Insertion requires amortized constant time. - */ - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } - -#if __cplusplus > 201402L - /// Extract a node. - node_type - extract(const_iterator __pos) - { - __glibcxx_assert(__pos != end()); - return _M_h.extract(__pos); - } - - /// Extract a node. - node_type - extract(const key_type& __key) - { return _M_h.extract(__key); } - - /// Re-insert an extracted node. - insert_return_type - insert(node_type&& __nh) - { return _M_h._M_reinsert_node(std::move(__nh)); } - - /// Re-insert an extracted node. - iterator - insert(const_iterator, node_type&& __nh) - { return _M_h._M_reinsert_node(std::move(__nh)).position; } - -#define __cpp_lib_unordered_map_try_emplace 201411 - /** - * @brief Attempts to build and insert a std::pair into the - * %unordered_map. - * - * @param __k Key to use for finding a possibly existing pair in - * the unordered_map. - * @param __args Arguments used to generate the .second for a - * new pair instance. - * - * @return A pair, of which the first element is an iterator that points - * to the possibly inserted pair, and the second is a bool that - * is true if the pair was actually inserted. - * - * This function attempts to build and insert a (key, value) %pair into - * the %unordered_map. - * An %unordered_map relies on unique keys and thus a %pair is only - * inserted if its first element (the key) is not already present in the - * %unordered_map. - * If a %pair is not inserted, this function has no effect. - * - * Insertion requires amortized constant time. - */ - template - pair - try_emplace(const key_type& __k, _Args&&... __args) - { - iterator __i = find(__k); - if (__i == end()) - { - __i = emplace(std::piecewise_construct, - std::forward_as_tuple(__k), - std::forward_as_tuple( - std::forward<_Args>(__args)...)) - .first; - return {__i, true}; - } - return {__i, false}; - } - - // move-capable overload - template - pair - try_emplace(key_type&& __k, _Args&&... __args) - { - iterator __i = find(__k); - if (__i == end()) - { - __i = emplace(std::piecewise_construct, - std::forward_as_tuple(std::move(__k)), - std::forward_as_tuple( - std::forward<_Args>(__args)...)) - .first; - return {__i, true}; - } - return {__i, false}; - } - - /** - * @brief Attempts to build and insert a std::pair into the - * %unordered_map. - * - * @param __hint An iterator that serves as a hint as to where the pair - * should be inserted. - * @param __k Key to use for finding a possibly existing pair in - * the unordered_map. - * @param __args Arguments used to generate the .second for a - * new pair instance. - * @return An iterator that points to the element with key of the - * std::pair built from @a __args (may or may not be that - * std::pair). - * - * This function is not concerned about whether the insertion took place, - * and thus does not return a boolean like the single-argument emplace() - * does. However, if insertion did not take place, - * this function has no effect. - * Note that the first parameter is only a hint and can potentially - * improve the performance of the insertion process. A bad hint would - * cause no gains in efficiency. - * - * See - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * for more on @a hinting. - * - * Insertion requires amortized constant time. - */ - template - iterator - try_emplace(const_iterator __hint, const key_type& __k, - _Args&&... __args) - { - iterator __i = find(__k); - if (__i == end()) - __i = emplace_hint(__hint, std::piecewise_construct, - std::forward_as_tuple(__k), - std::forward_as_tuple( - std::forward<_Args>(__args)...)); - return __i; - } - - // move-capable overload - template - iterator - try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) - { - iterator __i = find(__k); - if (__i == end()) - __i = emplace_hint(__hint, std::piecewise_construct, - std::forward_as_tuple(std::move(__k)), - std::forward_as_tuple( - std::forward<_Args>(__args)...)); - return __i; - } -#endif // C++17 - - //@{ - /** - * @brief Attempts to insert a std::pair into the %unordered_map. - - * @param __x Pair to be inserted (see std::make_pair for easy - * creation of pairs). - * - * @return A pair, of which the first element is an iterator that - * points to the possibly inserted pair, and the second is - * a bool that is true if the pair was actually inserted. - * - * This function attempts to insert a (key, value) %pair into the - * %unordered_map. An %unordered_map relies on unique keys and thus a - * %pair is only inserted if its first element (the key) is not already - * present in the %unordered_map. - * - * Insertion requires amortized constant time. - */ - std::pair - insert(const value_type& __x) - { return _M_h.insert(__x); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - std::pair - insert(value_type&& __x) - { return _M_h.insert(std::move(__x)); } - - template::value>::type> - std::pair - insert(_Pair&& __x) - { return _M_h.insert(std::forward<_Pair>(__x)); } - //@} - - //@{ - /** - * @brief Attempts to insert a std::pair into the %unordered_map. - * @param __hint An iterator that serves as a hint as to where the - * pair should be inserted. - * @param __x Pair to be inserted (see std::make_pair for easy creation - * of pairs). - * @return An iterator that points to the element with key of - * @a __x (may or may not be the %pair passed in). - * - * This function is not concerned about whether the insertion took place, - * and thus does not return a boolean like the single-argument insert() - * does. Note that the first parameter is only a hint and can - * potentially improve the performance of the insertion process. A bad - * hint would cause no gains in efficiency. - * - * See - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * for more on @a hinting. - * - * Insertion requires amortized constant time. - */ - iterator - insert(const_iterator __hint, const value_type& __x) - { return _M_h.insert(__hint, __x); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(const_iterator __hint, value_type&& __x) - { return _M_h.insert(__hint, std::move(__x)); } - - template::value>::type> - iterator - insert(const_iterator __hint, _Pair&& __x) - { return _M_h.insert(__hint, std::forward<_Pair>(__x)); } - //@} - - /** - * @brief A template function that attempts to insert a range of - * elements. - * @param __first Iterator pointing to the start of the range to be - * inserted. - * @param __last Iterator pointing to the end of the range. - * - * Complexity similar to that of the range constructor. - */ - template - void - insert(_InputIterator __first, _InputIterator __last) - { _M_h.insert(__first, __last); } - - /** - * @brief Attempts to insert a list of elements into the %unordered_map. - * @param __l A std::initializer_list of elements - * to be inserted. - * - * Complexity similar to that of the range constructor. - */ - void - insert(initializer_list __l) - { _M_h.insert(__l); } - - -#if __cplusplus > 201402L -#define __cpp_lib_unordered_map_insertion 201411 - /** - * @brief Attempts to insert a std::pair into the %unordered_map. - * @param __k Key to use for finding a possibly existing pair in - * the map. - * @param __obj Argument used to generate the .second for a pair - * instance. - * - * @return A pair, of which the first element is an iterator that - * points to the possibly inserted pair, and the second is - * a bool that is true if the pair was actually inserted. - * - * This function attempts to insert a (key, value) %pair into the - * %unordered_map. An %unordered_map relies on unique keys and thus a - * %pair is only inserted if its first element (the key) is not already - * present in the %unordered_map. - * If the %pair was already in the %unordered_map, the .second of - * the %pair is assigned from __obj. - * - * Insertion requires amortized constant time. - */ - template - pair - insert_or_assign(const key_type& __k, _Obj&& __obj) - { - iterator __i = find(__k); - if (__i == end()) - { - __i = emplace(std::piecewise_construct, - std::forward_as_tuple(__k), - std::forward_as_tuple(std::forward<_Obj>(__obj))) - .first; - return {__i, true}; - } - (*__i).second = std::forward<_Obj>(__obj); - return {__i, false}; - } - - // move-capable overload - template - pair - insert_or_assign(key_type&& __k, _Obj&& __obj) - { - iterator __i = find(__k); - if (__i == end()) - { - __i = emplace(std::piecewise_construct, - std::forward_as_tuple(std::move(__k)), - std::forward_as_tuple(std::forward<_Obj>(__obj))) - .first; - return {__i, true}; - } - (*__i).second = std::forward<_Obj>(__obj); - return {__i, false}; - } - - /** - * @brief Attempts to insert a std::pair into the %unordered_map. - * @param __hint An iterator that serves as a hint as to where the - * pair should be inserted. - * @param __k Key to use for finding a possibly existing pair in - * the unordered_map. - * @param __obj Argument used to generate the .second for a pair - * instance. - * @return An iterator that points to the element with key of - * @a __x (may or may not be the %pair passed in). - * - * This function is not concerned about whether the insertion took place, - * and thus does not return a boolean like the single-argument insert() - * does. - * If the %pair was already in the %unordered map, the .second of - * the %pair is assigned from __obj. - * Note that the first parameter is only a hint and can - * potentially improve the performance of the insertion process. A bad - * hint would cause no gains in efficiency. - * - * See - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * for more on @a hinting. - * - * Insertion requires amortized constant time. - */ - template - iterator - insert_or_assign(const_iterator __hint, const key_type& __k, - _Obj&& __obj) - { - iterator __i = find(__k); - if (__i == end()) - { - return emplace_hint(__hint, std::piecewise_construct, - std::forward_as_tuple(__k), - std::forward_as_tuple( - std::forward<_Obj>(__obj))); - } - (*__i).second = std::forward<_Obj>(__obj); - return __i; - } - - // move-capable overload - template - iterator - insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) - { - iterator __i = find(__k); - if (__i == end()) - { - return emplace_hint(__hint, std::piecewise_construct, - std::forward_as_tuple(std::move(__k)), - std::forward_as_tuple( - std::forward<_Obj>(__obj))); - } - (*__i).second = std::forward<_Obj>(__obj); - return __i; - } -#endif - - //@{ - /** - * @brief Erases an element from an %unordered_map. - * @param __position An iterator pointing to the element to be erased. - * @return An iterator pointing to the element immediately following - * @a __position prior to the element being erased. If no such - * element exists, end() is returned. - * - * This function erases an element, pointed to by the given iterator, - * from an %unordered_map. - * Note that this function only erases the element, and that if the - * element is itself a pointer, the pointed-to memory is not touched in - * any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __position) - { return _M_h.erase(__position); } - - // LWG 2059. - iterator - erase(iterator __position) - { return _M_h.erase(__position); } - //@} - - /** - * @brief Erases elements according to the provided key. - * @param __x Key of element to be erased. - * @return The number of elements erased. - * - * This function erases all the elements located by the given key from - * an %unordered_map. For an %unordered_map the result of this function - * can only be 0 (not present) or 1 (present). - * Note that this function only erases the element, and that if the - * element is itself a pointer, the pointed-to memory is not touched in - * any way. Managing the pointer is the user's responsibility. - */ - size_type - erase(const key_type& __x) - { return _M_h.erase(__x); } - - /** - * @brief Erases a [__first,__last) range of elements from an - * %unordered_map. - * @param __first Iterator pointing to the start of the range to be - * erased. - * @param __last Iterator pointing to the end of the range to - * be erased. - * @return The iterator @a __last. - * - * This function erases a sequence of elements from an %unordered_map. - * Note that this function only erases the elements, and that if - * the element is itself a pointer, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __first, const_iterator __last) - { return _M_h.erase(__first, __last); } - - /** - * Erases all elements in an %unordered_map. - * Note that this function only erases the elements, and that if the - * elements themselves are pointers, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - void - clear() noexcept - { _M_h.clear(); } - - /** - * @brief Swaps data with another %unordered_map. - * @param __x An %unordered_map of the same element and allocator - * types. - * - * This exchanges the elements between two %unordered_map in constant - * time. - * Note that the global std::swap() function is specialized such that - * std::swap(m1,m2) will feed to this function. - */ - void - swap(unordered_map& __x) - noexcept( noexcept(_M_h.swap(__x._M_h)) ) - { _M_h.swap(__x._M_h); } - -#if __cplusplus > 201402L - template - friend class _Hash_merge_helper; - - template - void - merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper = _Hash_merge_helper; - _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) - { merge(__source); } - - template - void - merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper = _Hash_merge_helper; - _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) - { merge(__source); } -#endif // C++17 - - // observers. - - /// Returns the hash functor object with which the %unordered_map was - /// constructed. - hasher - hash_function() const - { return _M_h.hash_function(); } - - /// Returns the key comparison object with which the %unordered_map was - /// constructed. - key_equal - key_eq() const - { return _M_h.key_eq(); } - - // lookup. - - //@{ - /** - * @brief Tries to locate an element in an %unordered_map. - * @param __x Key to be located. - * @return Iterator pointing to sought-after element, or end() if not - * found. - * - * This function takes a key and tries to locate the element with which - * the key matches. If successful the function returns an iterator - * pointing to the sought after element. If unsuccessful it returns the - * past-the-end ( @c end() ) iterator. - */ - iterator - find(const key_type& __x) - { return _M_h.find(__x); } - - const_iterator - find(const key_type& __x) const - { return _M_h.find(__x); } - //@} - - /** - * @brief Finds the number of elements. - * @param __x Key to count. - * @return Number of elements with specified key. - * - * This function only makes sense for %unordered_multimap; for - * %unordered_map the result will either be 0 (not present) or 1 - * (present). - */ - size_type - count(const key_type& __x) const - { return _M_h.count(__x); } - - //@{ - /** - * @brief Finds a subsequence matching given key. - * @param __x Key to be located. - * @return Pair of iterators that possibly points to the subsequence - * matching given key. - * - * This function probably only makes sense for %unordered_multimap. - */ - std::pair - equal_range(const key_type& __x) - { return _M_h.equal_range(__x); } - - std::pair - equal_range(const key_type& __x) const - { return _M_h.equal_range(__x); } - //@} - - //@{ - /** - * @brief Subscript ( @c [] ) access to %unordered_map data. - * @param __k The key for which data should be retrieved. - * @return A reference to the data of the (key,data) %pair. - * - * Allows for easy lookup with the subscript ( @c [] )operator. Returns - * data associated with the key specified in subscript. If the key does - * not exist, a pair with that key is created using default values, which - * is then returned. - * - * Lookup requires constant time. - */ - mapped_type& - operator[](const key_type& __k) - { return _M_h[__k]; } - - mapped_type& - operator[](key_type&& __k) - { return _M_h[std::move(__k)]; } - //@} - - //@{ - /** - * @brief Access to %unordered_map data. - * @param __k The key for which data should be retrieved. - * @return A reference to the data whose key is equal to @a __k, if - * such a data is present in the %unordered_map. - * @throw std::out_of_range If no such data is present. - */ - mapped_type& - at(const key_type& __k) - { return _M_h.at(__k); } - - const mapped_type& - at(const key_type& __k) const - { return _M_h.at(__k); } - //@} - - // bucket interface. - - /// Returns the number of buckets of the %unordered_map. - size_type - bucket_count() const noexcept - { return _M_h.bucket_count(); } - - /// Returns the maximum number of buckets of the %unordered_map. - size_type - max_bucket_count() const noexcept - { return _M_h.max_bucket_count(); } - - /* - * @brief Returns the number of elements in a given bucket. - * @param __n A bucket index. - * @return The number of elements in the bucket. - */ - size_type - bucket_size(size_type __n) const - { return _M_h.bucket_size(__n); } - - /* - * @brief Returns the bucket index of a given element. - * @param __key A key instance. - * @return The key bucket index. - */ - size_type - bucket(const key_type& __key) const - { return _M_h.bucket(__key); } - - /** - * @brief Returns a read/write iterator pointing to the first bucket - * element. - * @param __n The bucket index. - * @return A read/write local iterator. - */ - local_iterator - begin(size_type __n) - { return _M_h.begin(__n); } - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to the first - * bucket element. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - const_local_iterator - begin(size_type __n) const - { return _M_h.begin(__n); } - - const_local_iterator - cbegin(size_type __n) const - { return _M_h.cbegin(__n); } - //@} - - /** - * @brief Returns a read/write iterator pointing to one past the last - * bucket elements. - * @param __n The bucket index. - * @return A read/write local iterator. - */ - local_iterator - end(size_type __n) - { return _M_h.end(__n); } - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to one past - * the last bucket elements. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - const_local_iterator - end(size_type __n) const - { return _M_h.end(__n); } - - const_local_iterator - cend(size_type __n) const - { return _M_h.cend(__n); } - //@} - - // hash policy. - - /// Returns the average number of elements per bucket. - float - load_factor() const noexcept - { return _M_h.load_factor(); } - - /// Returns a positive number that the %unordered_map tries to keep the - /// load factor less than or equal to. - float - max_load_factor() const noexcept - { return _M_h.max_load_factor(); } - - /** - * @brief Change the %unordered_map maximum load factor. - * @param __z The new maximum load factor. - */ - void - max_load_factor(float __z) - { _M_h.max_load_factor(__z); } - - /** - * @brief May rehash the %unordered_map. - * @param __n The new number of buckets. - * - * Rehash will occur only if the new number of buckets respect the - * %unordered_map maximum load factor. - */ - void - rehash(size_type __n) - { _M_h.rehash(__n); } - - /** - * @brief Prepare the %unordered_map for a specified number of - * elements. - * @param __n Number of elements required. - * - * Same as rehash(ceil(n / max_load_factor())). - */ - void - reserve(size_type __n) - { _M_h.reserve(__n); } - - template - friend bool - operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, - const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); - }; - - /** - * @brief A standard container composed of equivalent keys - * (possibly containing multiple of each key value) that associates - * values of another type with the keys. - * - * @ingroup unordered_associative_containers - * - * @tparam _Key Type of key objects. - * @tparam _Tp Type of mapped objects. - * @tparam _Hash Hashing function object type, defaults to hash<_Value>. - * @tparam _Pred Predicate function object type, defaults - * to equal_to<_Value>. - * @tparam _Alloc Allocator type, defaults to - * std::allocator>. - * - * Meets the requirements of a container, and - * unordered associative container - * - * The resulting value type of the container is std::pair. - * - * Base is _Hashtable, dispatched at compile time via template - * alias __ummap_hashtable. - */ - template, - class _Pred = std::equal_to<_Key>, - class _Alloc = std::allocator > > - class unordered_multimap - { - typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; - _Hashtable _M_h; - - public: - // typedefs: - //@{ - /// Public typedefs. - typedef typename _Hashtable::key_type key_type; - typedef typename _Hashtable::value_type value_type; - typedef typename _Hashtable::mapped_type mapped_type; - typedef typename _Hashtable::hasher hasher; - typedef typename _Hashtable::key_equal key_equal; - typedef typename _Hashtable::allocator_type allocator_type; - //@} - - //@{ - /// Iterator-related typedefs. - typedef typename _Hashtable::pointer pointer; - typedef typename _Hashtable::const_pointer const_pointer; - typedef typename _Hashtable::reference reference; - typedef typename _Hashtable::const_reference const_reference; - typedef typename _Hashtable::iterator iterator; - typedef typename _Hashtable::const_iterator const_iterator; - typedef typename _Hashtable::local_iterator local_iterator; - typedef typename _Hashtable::const_local_iterator const_local_iterator; - typedef typename _Hashtable::size_type size_type; - typedef typename _Hashtable::difference_type difference_type; - //@} - -#if __cplusplus > 201402L - using node_type = typename _Hashtable::node_type; -#endif - - //construct/destroy/copy - - /// Default constructor. - unordered_multimap() = default; - - /** - * @brief Default constructor creates no elements. - * @param __n Mnimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - */ - explicit - unordered_multimap(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__n, __hf, __eql, __a) - { } - - /** - * @brief Builds an %unordered_multimap from a range. - * @param __first An input iterator. - * @param __last An input iterator. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_multimap consisting of copies of the elements - * from [__first,__last). This is linear in N (where N is - * distance(__first,__last)). - */ - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__first, __last, __n, __hf, __eql, __a) - { } - - /// Copy constructor. - unordered_multimap(const unordered_multimap&) = default; - - /// Move constructor. - unordered_multimap(unordered_multimap&&) = default; - - /** - * @brief Creates an %unordered_multimap with no elements. - * @param __a An allocator object. - */ - explicit - unordered_multimap(const allocator_type& __a) - : _M_h(__a) - { } - - /* - * @brief Copy constructor with allocator argument. - * @param __uset Input %unordered_multimap to copy. - * @param __a An allocator object. - */ - unordered_multimap(const unordered_multimap& __ummap, - const allocator_type& __a) - : _M_h(__ummap._M_h, __a) - { } - - /* - * @brief Move constructor with allocator argument. - * @param __uset Input %unordered_multimap to move. - * @param __a An allocator object. - */ - unordered_multimap(unordered_multimap&& __ummap, - const allocator_type& __a) - : _M_h(std::move(__ummap._M_h), __a) - { } - - /** - * @brief Builds an %unordered_multimap from an initializer_list. - * @param __l An initializer_list. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_multimap consisting of copies of the elements in - * the list. This is linear in N (where N is @a __l.size()). - */ - unordered_multimap(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__l, __n, __hf, __eql, __a) - { } - - unordered_multimap(size_type __n, const allocator_type& __a) - : unordered_multimap(__n, hasher(), key_equal(), __a) - { } - - unordered_multimap(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__n, __hf, key_equal(), __a) - { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_multimap(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_multimap(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_multimap(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__l, __n, __hf, key_equal(), __a) - { } - - /// Copy assignment operator. - unordered_multimap& - operator=(const unordered_multimap&) = default; - - /// Move assignment operator. - unordered_multimap& - operator=(unordered_multimap&&) = default; - - /** - * @brief %Unordered_multimap list assignment operator. - * @param __l An initializer_list. - * - * This function fills an %unordered_multimap with copies of the - * elements in the initializer list @a __l. - * - * Note that the assignment completely changes the %unordered_multimap - * and that the resulting %unordered_multimap's size is the same as the - * number of elements assigned. - */ - unordered_multimap& - operator=(initializer_list __l) - { - _M_h = __l; - return *this; - } - - /// Returns the allocator object used by the %unordered_multimap. - allocator_type - get_allocator() const noexcept - { return _M_h.get_allocator(); } - - // size and capacity: - - /// Returns true if the %unordered_multimap is empty. - bool - empty() const noexcept - { return _M_h.empty(); } - - /// Returns the size of the %unordered_multimap. - size_type - size() const noexcept - { return _M_h.size(); } - - /// Returns the maximum size of the %unordered_multimap. - size_type - max_size() const noexcept - { return _M_h.max_size(); } - - // iterators. - - /** - * Returns a read/write iterator that points to the first element in the - * %unordered_multimap. - */ - iterator - begin() noexcept - { return _M_h.begin(); } - - //@{ - /** - * Returns a read-only (constant) iterator that points to the first - * element in the %unordered_multimap. - */ - const_iterator - begin() const noexcept - { return _M_h.begin(); } - - const_iterator - cbegin() const noexcept - { return _M_h.begin(); } - //@} - - /** - * Returns a read/write iterator that points one past the last element in - * the %unordered_multimap. - */ - iterator - end() noexcept - { return _M_h.end(); } - - //@{ - /** - * Returns a read-only (constant) iterator that points one past the last - * element in the %unordered_multimap. - */ - const_iterator - end() const noexcept - { return _M_h.end(); } - - const_iterator - cend() const noexcept - { return _M_h.end(); } - //@} - - // modifiers. - - /** - * @brief Attempts to build and insert a std::pair into the - * %unordered_multimap. - * - * @param __args Arguments used to generate a new pair instance (see - * std::piecewise_contruct for passing arguments to each - * part of the pair constructor). - * - * @return An iterator that points to the inserted pair. - * - * This function attempts to build and insert a (key, value) %pair into - * the %unordered_multimap. - * - * Insertion requires amortized constant time. - */ - template - iterator - emplace(_Args&&... __args) - { return _M_h.emplace(std::forward<_Args>(__args)...); } - - /** - * @brief Attempts to build and insert a std::pair into the - * %unordered_multimap. - * - * @param __pos An iterator that serves as a hint as to where the pair - * should be inserted. - * @param __args Arguments used to generate a new pair instance (see - * std::piecewise_contruct for passing arguments to each - * part of the pair constructor). - * @return An iterator that points to the element with key of the - * std::pair built from @a __args. - * - * Note that the first parameter is only a hint and can potentially - * improve the performance of the insertion process. A bad hint would - * cause no gains in efficiency. - * - * See - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * for more on @a hinting. - * - * Insertion requires amortized constant time. - */ - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } - - //@{ - /** - * @brief Inserts a std::pair into the %unordered_multimap. - * @param __x Pair to be inserted (see std::make_pair for easy - * creation of pairs). - * - * @return An iterator that points to the inserted pair. - * - * Insertion requires amortized constant time. - */ - iterator - insert(const value_type& __x) - { return _M_h.insert(__x); } - - iterator - insert(value_type&& __x) - { return _M_h.insert(std::move(__x)); } - - template::value>::type> - iterator - insert(_Pair&& __x) - { return _M_h.insert(std::forward<_Pair>(__x)); } - //@} - - //@{ - /** - * @brief Inserts a std::pair into the %unordered_multimap. - * @param __hint An iterator that serves as a hint as to where the - * pair should be inserted. - * @param __x Pair to be inserted (see std::make_pair for easy creation - * of pairs). - * @return An iterator that points to the element with key of - * @a __x (may or may not be the %pair passed in). - * - * Note that the first parameter is only a hint and can potentially - * improve the performance of the insertion process. A bad hint would - * cause no gains in efficiency. - * - * See - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * for more on @a hinting. - * - * Insertion requires amortized constant time. - */ - iterator - insert(const_iterator __hint, const value_type& __x) - { return _M_h.insert(__hint, __x); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(const_iterator __hint, value_type&& __x) - { return _M_h.insert(__hint, std::move(__x)); } - - template::value>::type> - iterator - insert(const_iterator __hint, _Pair&& __x) - { return _M_h.insert(__hint, std::forward<_Pair>(__x)); } - //@} - - /** - * @brief A template function that attempts to insert a range of - * elements. - * @param __first Iterator pointing to the start of the range to be - * inserted. - * @param __last Iterator pointing to the end of the range. - * - * Complexity similar to that of the range constructor. - */ - template - void - insert(_InputIterator __first, _InputIterator __last) - { _M_h.insert(__first, __last); } - - /** - * @brief Attempts to insert a list of elements into the - * %unordered_multimap. - * @param __l A std::initializer_list of elements - * to be inserted. - * - * Complexity similar to that of the range constructor. - */ - void - insert(initializer_list __l) - { _M_h.insert(__l); } - -#if __cplusplus > 201402L - /// Extract a node. - node_type - extract(const_iterator __pos) - { - __glibcxx_assert(__pos != end()); - return _M_h.extract(__pos); - } - - /// Extract a node. - node_type - extract(const key_type& __key) - { return _M_h.extract(__key); } - - /// Re-insert an extracted node. - iterator - insert(node_type&& __nh) - { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } - - /// Re-insert an extracted node. - iterator - insert(const_iterator __hint, node_type&& __nh) - { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } -#endif // C++17 - - //@{ - /** - * @brief Erases an element from an %unordered_multimap. - * @param __position An iterator pointing to the element to be erased. - * @return An iterator pointing to the element immediately following - * @a __position prior to the element being erased. If no such - * element exists, end() is returned. - * - * This function erases an element, pointed to by the given iterator, - * from an %unordered_multimap. - * Note that this function only erases the element, and that if the - * element is itself a pointer, the pointed-to memory is not touched in - * any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __position) - { return _M_h.erase(__position); } - - // LWG 2059. - iterator - erase(iterator __position) - { return _M_h.erase(__position); } - //@} - - /** - * @brief Erases elements according to the provided key. - * @param __x Key of elements to be erased. - * @return The number of elements erased. - * - * This function erases all the elements located by the given key from - * an %unordered_multimap. - * Note that this function only erases the element, and that if the - * element is itself a pointer, the pointed-to memory is not touched in - * any way. Managing the pointer is the user's responsibility. - */ - size_type - erase(const key_type& __x) - { return _M_h.erase(__x); } - - /** - * @brief Erases a [__first,__last) range of elements from an - * %unordered_multimap. - * @param __first Iterator pointing to the start of the range to be - * erased. - * @param __last Iterator pointing to the end of the range to - * be erased. - * @return The iterator @a __last. - * - * This function erases a sequence of elements from an - * %unordered_multimap. - * Note that this function only erases the elements, and that if - * the element is itself a pointer, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __first, const_iterator __last) - { return _M_h.erase(__first, __last); } - - /** - * Erases all elements in an %unordered_multimap. - * Note that this function only erases the elements, and that if the - * elements themselves are pointers, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - void - clear() noexcept - { _M_h.clear(); } - - /** - * @brief Swaps data with another %unordered_multimap. - * @param __x An %unordered_multimap of the same element and allocator - * types. - * - * This exchanges the elements between two %unordered_multimap in - * constant time. - * Note that the global std::swap() function is specialized such that - * std::swap(m1,m2) will feed to this function. - */ - void - swap(unordered_multimap& __x) - noexcept( noexcept(_M_h.swap(__x._M_h)) ) - { _M_h.swap(__x._M_h); } - -#if __cplusplus > 201402L - template - friend class _Hash_merge_helper; - - template - void - merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper - = _Hash_merge_helper; - _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) - { merge(__source); } - - template - void - merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper - = _Hash_merge_helper; - _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) - { merge(__source); } -#endif // C++17 - - // observers. - - /// Returns the hash functor object with which the %unordered_multimap - /// was constructed. - hasher - hash_function() const - { return _M_h.hash_function(); } - - /// Returns the key comparison object with which the %unordered_multimap - /// was constructed. - key_equal - key_eq() const - { return _M_h.key_eq(); } - - // lookup. - - //@{ - /** - * @brief Tries to locate an element in an %unordered_multimap. - * @param __x Key to be located. - * @return Iterator pointing to sought-after element, or end() if not - * found. - * - * This function takes a key and tries to locate the element with which - * the key matches. If successful the function returns an iterator - * pointing to the sought after element. If unsuccessful it returns the - * past-the-end ( @c end() ) iterator. - */ - iterator - find(const key_type& __x) - { return _M_h.find(__x); } - - const_iterator - find(const key_type& __x) const - { return _M_h.find(__x); } - //@} - - /** - * @brief Finds the number of elements. - * @param __x Key to count. - * @return Number of elements with specified key. - */ - size_type - count(const key_type& __x) const - { return _M_h.count(__x); } - - //@{ - /** - * @brief Finds a subsequence matching given key. - * @param __x Key to be located. - * @return Pair of iterators that possibly points to the subsequence - * matching given key. - */ - std::pair - equal_range(const key_type& __x) - { return _M_h.equal_range(__x); } - - std::pair - equal_range(const key_type& __x) const - { return _M_h.equal_range(__x); } - //@} - - // bucket interface. - - /// Returns the number of buckets of the %unordered_multimap. - size_type - bucket_count() const noexcept - { return _M_h.bucket_count(); } - - /// Returns the maximum number of buckets of the %unordered_multimap. - size_type - max_bucket_count() const noexcept - { return _M_h.max_bucket_count(); } - - /* - * @brief Returns the number of elements in a given bucket. - * @param __n A bucket index. - * @return The number of elements in the bucket. - */ - size_type - bucket_size(size_type __n) const - { return _M_h.bucket_size(__n); } - - /* - * @brief Returns the bucket index of a given element. - * @param __key A key instance. - * @return The key bucket index. - */ - size_type - bucket(const key_type& __key) const - { return _M_h.bucket(__key); } - - /** - * @brief Returns a read/write iterator pointing to the first bucket - * element. - * @param __n The bucket index. - * @return A read/write local iterator. - */ - local_iterator - begin(size_type __n) - { return _M_h.begin(__n); } - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to the first - * bucket element. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - const_local_iterator - begin(size_type __n) const - { return _M_h.begin(__n); } - - const_local_iterator - cbegin(size_type __n) const - { return _M_h.cbegin(__n); } - //@} - - /** - * @brief Returns a read/write iterator pointing to one past the last - * bucket elements. - * @param __n The bucket index. - * @return A read/write local iterator. - */ - local_iterator - end(size_type __n) - { return _M_h.end(__n); } - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to one past - * the last bucket elements. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - const_local_iterator - end(size_type __n) const - { return _M_h.end(__n); } - - const_local_iterator - cend(size_type __n) const - { return _M_h.cend(__n); } - //@} - - // hash policy. - - /// Returns the average number of elements per bucket. - float - load_factor() const noexcept - { return _M_h.load_factor(); } - - /// Returns a positive number that the %unordered_multimap tries to keep - /// the load factor less than or equal to. - float - max_load_factor() const noexcept - { return _M_h.max_load_factor(); } - - /** - * @brief Change the %unordered_multimap maximum load factor. - * @param __z The new maximum load factor. - */ - void - max_load_factor(float __z) - { _M_h.max_load_factor(__z); } - - /** - * @brief May rehash the %unordered_multimap. - * @param __n The new number of buckets. - * - * Rehash will occur only if the new number of buckets respect the - * %unordered_multimap maximum load factor. - */ - void - rehash(size_type __n) - { _M_h.rehash(__n); } - - /** - * @brief Prepare the %unordered_multimap for a specified number of - * elements. - * @param __n Number of elements required. - * - * Same as rehash(ceil(n / max_load_factor())). - */ - void - reserve(size_type __n) - { _M_h.reserve(__n); } - - template - friend bool - operator==(const unordered_multimap<_Key1, _Tp1, - _Hash1, _Pred1, _Alloc1>&, - const unordered_multimap<_Key1, _Tp1, - _Hash1, _Pred1, _Alloc1>&); - }; - - template - inline void - swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline void - swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return __x._M_h._M_equal(__y._M_h); } - - template - inline bool - operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - - template - inline bool - operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return __x._M_h._M_equal(__y._M_h); } - - template - inline bool - operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -_GLIBCXX_END_NAMESPACE_CONTAINER - -#if __cplusplus > 201402L -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // Allow std::unordered_map access to internals of compatible maps. - template - struct _Hash_merge_helper< - _GLIBCXX_STD_C::unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>, - _Hash2, _Eq2> - { - private: - template - using unordered_map = _GLIBCXX_STD_C::unordered_map<_Tp...>; - template - using unordered_multimap = _GLIBCXX_STD_C::unordered_multimap<_Tp...>; - - friend unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>; - - static auto& - _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) - { return __map._M_h; } - - static auto& - _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) - { return __map._M_h; } - }; - - // Allow std::unordered_multimap access to internals of compatible maps. - template - struct _Hash_merge_helper< - _GLIBCXX_STD_C::unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>, - _Hash2, _Eq2> - { - private: - template - using unordered_map = _GLIBCXX_STD_C::unordered_map<_Tp...>; - template - using unordered_multimap = _GLIBCXX_STD_C::unordered_multimap<_Tp...>; - - friend unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>; - - static auto& - _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) - { return __map._M_h; } - - static auto& - _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) - { return __map._M_h; } - }; -_GLIBCXX_END_NAMESPACE_VERSION -#endif // C++17 - -} // namespace std - -#endif /* _UNORDERED_MAP_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unordered_set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unordered_set.h deleted file mode 100644 index 85c2562f8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unordered_set.h +++ /dev/null @@ -1,1612 +0,0 @@ -// unordered_set implementation -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file bits/unordered_set.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{unordered_set} - */ - -#ifndef _UNORDERED_SET_H -#define _UNORDERED_SET_H - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - /// Base types for unordered_set. - template - using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; - - template, - typename _Pred = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value>, - typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> - using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, - __detail::_Identity, _Pred, _Hash, - __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, _Tr>; - - /// Base types for unordered_multiset. - template - using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; - - template, - typename _Pred = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value>, - typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> - using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, - __detail::_Identity, - _Pred, _Hash, - __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, _Tr>; - - template - class unordered_multiset; - - /** - * @brief A standard container composed of unique keys (containing - * at most one of each key value) in which the elements' keys are - * the elements themselves. - * - * @ingroup unordered_associative_containers - * - * @tparam _Value Type of key objects. - * @tparam _Hash Hashing function object type, defaults to hash<_Value>. - - * @tparam _Pred Predicate function object type, defaults to - * equal_to<_Value>. - * - * @tparam _Alloc Allocator type, defaults to allocator<_Key>. - * - * Meets the requirements of a container, and - * unordered associative container - * - * Base is _Hashtable, dispatched at compile time via template - * alias __uset_hashtable. - */ - template, - class _Pred = std::equal_to<_Value>, - class _Alloc = std::allocator<_Value> > - class unordered_set - { - typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; - _Hashtable _M_h; - - public: - // typedefs: - //@{ - /// Public typedefs. - typedef typename _Hashtable::key_type key_type; - typedef typename _Hashtable::value_type value_type; - typedef typename _Hashtable::hasher hasher; - typedef typename _Hashtable::key_equal key_equal; - typedef typename _Hashtable::allocator_type allocator_type; - //@} - - //@{ - /// Iterator-related typedefs. - typedef typename _Hashtable::pointer pointer; - typedef typename _Hashtable::const_pointer const_pointer; - typedef typename _Hashtable::reference reference; - typedef typename _Hashtable::const_reference const_reference; - typedef typename _Hashtable::iterator iterator; - typedef typename _Hashtable::const_iterator const_iterator; - typedef typename _Hashtable::local_iterator local_iterator; - typedef typename _Hashtable::const_local_iterator const_local_iterator; - typedef typename _Hashtable::size_type size_type; - typedef typename _Hashtable::difference_type difference_type; - //@} - -#if __cplusplus > 201402L - using node_type = typename _Hashtable::node_type; - using insert_return_type = typename _Hashtable::insert_return_type; -#endif - - // construct/destroy/copy - - /// Default constructor. - unordered_set() = default; - - /** - * @brief Default constructor creates no elements. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - */ - explicit - unordered_set(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__n, __hf, __eql, __a) - { } - - /** - * @brief Builds an %unordered_set from a range. - * @param __first An input iterator. - * @param __last An input iterator. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_set consisting of copies of the elements from - * [__first,__last). This is linear in N (where N is - * distance(__first,__last)). - */ - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__first, __last, __n, __hf, __eql, __a) - { } - - /// Copy constructor. - unordered_set(const unordered_set&) = default; - - /// Move constructor. - unordered_set(unordered_set&&) = default; - - /** - * @brief Creates an %unordered_set with no elements. - * @param __a An allocator object. - */ - explicit - unordered_set(const allocator_type& __a) - : _M_h(__a) - { } - - /* - * @brief Copy constructor with allocator argument. - * @param __uset Input %unordered_set to copy. - * @param __a An allocator object. - */ - unordered_set(const unordered_set& __uset, - const allocator_type& __a) - : _M_h(__uset._M_h, __a) - { } - - /* - * @brief Move constructor with allocator argument. - * @param __uset Input %unordered_set to move. - * @param __a An allocator object. - */ - unordered_set(unordered_set&& __uset, - const allocator_type& __a) - : _M_h(std::move(__uset._M_h), __a) - { } - - /** - * @brief Builds an %unordered_set from an initializer_list. - * @param __l An initializer_list. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_set consisting of copies of the elements in the - * list. This is linear in N (where N is @a __l.size()). - */ - unordered_set(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__l, __n, __hf, __eql, __a) - { } - - unordered_set(size_type __n, const allocator_type& __a) - : unordered_set(__n, hasher(), key_equal(), __a) - { } - - unordered_set(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__n, __hf, key_equal(), __a) - { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_set(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_set(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_set(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__l, __n, __hf, key_equal(), __a) - { } - - /// Copy assignment operator. - unordered_set& - operator=(const unordered_set&) = default; - - /// Move assignment operator. - unordered_set& - operator=(unordered_set&&) = default; - - /** - * @brief %Unordered_set list assignment operator. - * @param __l An initializer_list. - * - * This function fills an %unordered_set with copies of the elements in - * the initializer list @a __l. - * - * Note that the assignment completely changes the %unordered_set and - * that the resulting %unordered_set's size is the same as the number - * of elements assigned. - */ - unordered_set& - operator=(initializer_list __l) - { - _M_h = __l; - return *this; - } - - /// Returns the allocator object used by the %unordered_set. - allocator_type - get_allocator() const noexcept - { return _M_h.get_allocator(); } - - // size and capacity: - - /// Returns true if the %unordered_set is empty. - bool - empty() const noexcept - { return _M_h.empty(); } - - /// Returns the size of the %unordered_set. - size_type - size() const noexcept - { return _M_h.size(); } - - /// Returns the maximum size of the %unordered_set. - size_type - max_size() const noexcept - { return _M_h.max_size(); } - - // iterators. - - //@{ - /** - * Returns a read-only (constant) iterator that points to the first - * element in the %unordered_set. - */ - iterator - begin() noexcept - { return _M_h.begin(); } - - const_iterator - begin() const noexcept - { return _M_h.begin(); } - //@} - - //@{ - /** - * Returns a read-only (constant) iterator that points one past the last - * element in the %unordered_set. - */ - iterator - end() noexcept - { return _M_h.end(); } - - const_iterator - end() const noexcept - { return _M_h.end(); } - //@} - - /** - * Returns a read-only (constant) iterator that points to the first - * element in the %unordered_set. - */ - const_iterator - cbegin() const noexcept - { return _M_h.begin(); } - - /** - * Returns a read-only (constant) iterator that points one past the last - * element in the %unordered_set. - */ - const_iterator - cend() const noexcept - { return _M_h.end(); } - - // modifiers. - - /** - * @brief Attempts to build and insert an element into the - * %unordered_set. - * @param __args Arguments used to generate an element. - * @return A pair, of which the first element is an iterator that points - * to the possibly inserted element, and the second is a bool - * that is true if the element was actually inserted. - * - * This function attempts to build and insert an element into the - * %unordered_set. An %unordered_set relies on unique keys and thus an - * element is only inserted if it is not already present in the - * %unordered_set. - * - * Insertion requires amortized constant time. - */ - template - std::pair - emplace(_Args&&... __args) - { return _M_h.emplace(std::forward<_Args>(__args)...); } - - /** - * @brief Attempts to insert an element into the %unordered_set. - * @param __pos An iterator that serves as a hint as to where the - * element should be inserted. - * @param __args Arguments used to generate the element to be - * inserted. - * @return An iterator that points to the element with key equivalent to - * the one generated from @a __args (may or may not be the - * element itself). - * - * This function is not concerned about whether the insertion took place, - * and thus does not return a boolean like the single-argument emplace() - * does. Note that the first parameter is only a hint and can - * potentially improve the performance of the insertion process. A bad - * hint would cause no gains in efficiency. - * - * For more on @a hinting, see: - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * - * Insertion requires amortized constant time. - */ - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } - - //@{ - /** - * @brief Attempts to insert an element into the %unordered_set. - * @param __x Element to be inserted. - * @return A pair, of which the first element is an iterator that points - * to the possibly inserted element, and the second is a bool - * that is true if the element was actually inserted. - * - * This function attempts to insert an element into the %unordered_set. - * An %unordered_set relies on unique keys and thus an element is only - * inserted if it is not already present in the %unordered_set. - * - * Insertion requires amortized constant time. - */ - std::pair - insert(const value_type& __x) - { return _M_h.insert(__x); } - - std::pair - insert(value_type&& __x) - { return _M_h.insert(std::move(__x)); } - //@} - - //@{ - /** - * @brief Attempts to insert an element into the %unordered_set. - * @param __hint An iterator that serves as a hint as to where the - * element should be inserted. - * @param __x Element to be inserted. - * @return An iterator that points to the element with key of - * @a __x (may or may not be the element passed in). - * - * This function is not concerned about whether the insertion took place, - * and thus does not return a boolean like the single-argument insert() - * does. Note that the first parameter is only a hint and can - * potentially improve the performance of the insertion process. A bad - * hint would cause no gains in efficiency. - * - * For more on @a hinting, see: - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * - * Insertion requires amortized constant. - */ - iterator - insert(const_iterator __hint, const value_type& __x) - { return _M_h.insert(__hint, __x); } - - iterator - insert(const_iterator __hint, value_type&& __x) - { return _M_h.insert(__hint, std::move(__x)); } - //@} - - /** - * @brief A template function that attempts to insert a range of - * elements. - * @param __first Iterator pointing to the start of the range to be - * inserted. - * @param __last Iterator pointing to the end of the range. - * - * Complexity similar to that of the range constructor. - */ - template - void - insert(_InputIterator __first, _InputIterator __last) - { _M_h.insert(__first, __last); } - - /** - * @brief Attempts to insert a list of elements into the %unordered_set. - * @param __l A std::initializer_list of elements - * to be inserted. - * - * Complexity similar to that of the range constructor. - */ - void - insert(initializer_list __l) - { _M_h.insert(__l); } - -#if __cplusplus > 201402L - /// Extract a node. - node_type - extract(const_iterator __pos) - { - __glibcxx_assert(__pos != end()); - return _M_h.extract(__pos); - } - - /// Extract a node. - node_type - extract(const key_type& __key) - { return _M_h.extract(__key); } - - /// Re-insert an extracted node. - insert_return_type - insert(node_type&& __nh) - { return _M_h._M_reinsert_node(std::move(__nh)); } - - /// Re-insert an extracted node. - iterator - insert(const_iterator, node_type&& __nh) - { return _M_h._M_reinsert_node(std::move(__nh)).position; } -#endif // C++17 - - //@{ - /** - * @brief Erases an element from an %unordered_set. - * @param __position An iterator pointing to the element to be erased. - * @return An iterator pointing to the element immediately following - * @a __position prior to the element being erased. If no such - * element exists, end() is returned. - * - * This function erases an element, pointed to by the given iterator, - * from an %unordered_set. Note that this function only erases the - * element, and that if the element is itself a pointer, the pointed-to - * memory is not touched in any way. Managing the pointer is the user's - * responsibility. - */ - iterator - erase(const_iterator __position) - { return _M_h.erase(__position); } - - // LWG 2059. - iterator - erase(iterator __position) - { return _M_h.erase(__position); } - //@} - - /** - * @brief Erases elements according to the provided key. - * @param __x Key of element to be erased. - * @return The number of elements erased. - * - * This function erases all the elements located by the given key from - * an %unordered_set. For an %unordered_set the result of this function - * can only be 0 (not present) or 1 (present). - * Note that this function only erases the element, and that if - * the element is itself a pointer, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - size_type - erase(const key_type& __x) - { return _M_h.erase(__x); } - - /** - * @brief Erases a [__first,__last) range of elements from an - * %unordered_set. - * @param __first Iterator pointing to the start of the range to be - * erased. - * @param __last Iterator pointing to the end of the range to - * be erased. - * @return The iterator @a __last. - * - * This function erases a sequence of elements from an %unordered_set. - * Note that this function only erases the element, and that if - * the element is itself a pointer, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __first, const_iterator __last) - { return _M_h.erase(__first, __last); } - - /** - * Erases all elements in an %unordered_set. Note that this function only - * erases the elements, and that if the elements themselves are pointers, - * the pointed-to memory is not touched in any way. Managing the pointer - * is the user's responsibility. - */ - void - clear() noexcept - { _M_h.clear(); } - - /** - * @brief Swaps data with another %unordered_set. - * @param __x An %unordered_set of the same element and allocator - * types. - * - * This exchanges the elements between two sets in constant time. - * Note that the global std::swap() function is specialized such that - * std::swap(s1,s2) will feed to this function. - */ - void - swap(unordered_set& __x) - noexcept( noexcept(_M_h.swap(__x._M_h)) ) - { _M_h.swap(__x._M_h); } - -#if __cplusplus > 201402L - template - friend class _Hash_merge_helper; - - template - void - merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper = _Hash_merge_helper; - _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) - { merge(__source); } - - template - void - merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper = _Hash_merge_helper; - _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) - { merge(__source); } -#endif // C++17 - - // observers. - - /// Returns the hash functor object with which the %unordered_set was - /// constructed. - hasher - hash_function() const - { return _M_h.hash_function(); } - - /// Returns the key comparison object with which the %unordered_set was - /// constructed. - key_equal - key_eq() const - { return _M_h.key_eq(); } - - // lookup. - - //@{ - /** - * @brief Tries to locate an element in an %unordered_set. - * @param __x Element to be located. - * @return Iterator pointing to sought-after element, or end() if not - * found. - * - * This function takes a key and tries to locate the element with which - * the key matches. If successful the function returns an iterator - * pointing to the sought after element. If unsuccessful it returns the - * past-the-end ( @c end() ) iterator. - */ - iterator - find(const key_type& __x) - { return _M_h.find(__x); } - - const_iterator - find(const key_type& __x) const - { return _M_h.find(__x); } - //@} - - /** - * @brief Finds the number of elements. - * @param __x Element to located. - * @return Number of elements with specified key. - * - * This function only makes sense for unordered_multisets; for - * unordered_set the result will either be 0 (not present) or 1 - * (present). - */ - size_type - count(const key_type& __x) const - { return _M_h.count(__x); } - - //@{ - /** - * @brief Finds a subsequence matching given key. - * @param __x Key to be located. - * @return Pair of iterators that possibly points to the subsequence - * matching given key. - * - * This function probably only makes sense for multisets. - */ - std::pair - equal_range(const key_type& __x) - { return _M_h.equal_range(__x); } - - std::pair - equal_range(const key_type& __x) const - { return _M_h.equal_range(__x); } - //@} - - // bucket interface. - - /// Returns the number of buckets of the %unordered_set. - size_type - bucket_count() const noexcept - { return _M_h.bucket_count(); } - - /// Returns the maximum number of buckets of the %unordered_set. - size_type - max_bucket_count() const noexcept - { return _M_h.max_bucket_count(); } - - /* - * @brief Returns the number of elements in a given bucket. - * @param __n A bucket index. - * @return The number of elements in the bucket. - */ - size_type - bucket_size(size_type __n) const - { return _M_h.bucket_size(__n); } - - /* - * @brief Returns the bucket index of a given element. - * @param __key A key instance. - * @return The key bucket index. - */ - size_type - bucket(const key_type& __key) const - { return _M_h.bucket(__key); } - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to the first - * bucket element. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - local_iterator - begin(size_type __n) - { return _M_h.begin(__n); } - - const_local_iterator - begin(size_type __n) const - { return _M_h.begin(__n); } - - const_local_iterator - cbegin(size_type __n) const - { return _M_h.cbegin(__n); } - //@} - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to one past - * the last bucket elements. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - local_iterator - end(size_type __n) - { return _M_h.end(__n); } - - const_local_iterator - end(size_type __n) const - { return _M_h.end(__n); } - - const_local_iterator - cend(size_type __n) const - { return _M_h.cend(__n); } - //@} - - // hash policy. - - /// Returns the average number of elements per bucket. - float - load_factor() const noexcept - { return _M_h.load_factor(); } - - /// Returns a positive number that the %unordered_set tries to keep the - /// load factor less than or equal to. - float - max_load_factor() const noexcept - { return _M_h.max_load_factor(); } - - /** - * @brief Change the %unordered_set maximum load factor. - * @param __z The new maximum load factor. - */ - void - max_load_factor(float __z) - { _M_h.max_load_factor(__z); } - - /** - * @brief May rehash the %unordered_set. - * @param __n The new number of buckets. - * - * Rehash will occur only if the new number of buckets respect the - * %unordered_set maximum load factor. - */ - void - rehash(size_type __n) - { _M_h.rehash(__n); } - - /** - * @brief Prepare the %unordered_set for a specified number of - * elements. - * @param __n Number of elements required. - * - * Same as rehash(ceil(n / max_load_factor())). - */ - void - reserve(size_type __n) - { _M_h.reserve(__n); } - - template - friend bool - operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, - const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); - }; - - /** - * @brief A standard container composed of equivalent keys - * (possibly containing multiple of each key value) in which the - * elements' keys are the elements themselves. - * - * @ingroup unordered_associative_containers - * - * @tparam _Value Type of key objects. - * @tparam _Hash Hashing function object type, defaults to hash<_Value>. - * @tparam _Pred Predicate function object type, defaults - * to equal_to<_Value>. - * @tparam _Alloc Allocator type, defaults to allocator<_Key>. - * - * Meets the requirements of a container, and - * unordered associative container - * - * Base is _Hashtable, dispatched at compile time via template - * alias __umset_hashtable. - */ - template, - class _Pred = std::equal_to<_Value>, - class _Alloc = std::allocator<_Value> > - class unordered_multiset - { - typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; - _Hashtable _M_h; - - public: - // typedefs: - //@{ - /// Public typedefs. - typedef typename _Hashtable::key_type key_type; - typedef typename _Hashtable::value_type value_type; - typedef typename _Hashtable::hasher hasher; - typedef typename _Hashtable::key_equal key_equal; - typedef typename _Hashtable::allocator_type allocator_type; - //@} - - //@{ - /// Iterator-related typedefs. - typedef typename _Hashtable::pointer pointer; - typedef typename _Hashtable::const_pointer const_pointer; - typedef typename _Hashtable::reference reference; - typedef typename _Hashtable::const_reference const_reference; - typedef typename _Hashtable::iterator iterator; - typedef typename _Hashtable::const_iterator const_iterator; - typedef typename _Hashtable::local_iterator local_iterator; - typedef typename _Hashtable::const_local_iterator const_local_iterator; - typedef typename _Hashtable::size_type size_type; - typedef typename _Hashtable::difference_type difference_type; - //@} - -#if __cplusplus > 201402L - using node_type = typename _Hashtable::node_type; -#endif - - // construct/destroy/copy - - /// Default constructor. - unordered_multiset() = default; - - /** - * @brief Default constructor creates no elements. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - */ - explicit - unordered_multiset(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__n, __hf, __eql, __a) - { } - - /** - * @brief Builds an %unordered_multiset from a range. - * @param __first An input iterator. - * @param __last An input iterator. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_multiset consisting of copies of the elements - * from [__first,__last). This is linear in N (where N is - * distance(__first,__last)). - */ - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__first, __last, __n, __hf, __eql, __a) - { } - - /// Copy constructor. - unordered_multiset(const unordered_multiset&) = default; - - /// Move constructor. - unordered_multiset(unordered_multiset&&) = default; - - /** - * @brief Builds an %unordered_multiset from an initializer_list. - * @param __l An initializer_list. - * @param __n Minimal initial number of buckets. - * @param __hf A hash functor. - * @param __eql A key equality functor. - * @param __a An allocator object. - * - * Create an %unordered_multiset consisting of copies of the elements in - * the list. This is linear in N (where N is @a __l.size()). - */ - unordered_multiset(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _M_h(__l, __n, __hf, __eql, __a) - { } - - /// Copy assignment operator. - unordered_multiset& - operator=(const unordered_multiset&) = default; - - /// Move assignment operator. - unordered_multiset& - operator=(unordered_multiset&&) = default; - - /** - * @brief Creates an %unordered_multiset with no elements. - * @param __a An allocator object. - */ - explicit - unordered_multiset(const allocator_type& __a) - : _M_h(__a) - { } - - /* - * @brief Copy constructor with allocator argument. - * @param __uset Input %unordered_multiset to copy. - * @param __a An allocator object. - */ - unordered_multiset(const unordered_multiset& __umset, - const allocator_type& __a) - : _M_h(__umset._M_h, __a) - { } - - /* - * @brief Move constructor with allocator argument. - * @param __umset Input %unordered_multiset to move. - * @param __a An allocator object. - */ - unordered_multiset(unordered_multiset&& __umset, - const allocator_type& __a) - : _M_h(std::move(__umset._M_h), __a) - { } - - unordered_multiset(size_type __n, const allocator_type& __a) - : unordered_multiset(__n, hasher(), key_equal(), __a) - { } - - unordered_multiset(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__n, __hf, key_equal(), __a) - { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_multiset(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__l, __n, __hf, key_equal(), __a) - { } - - /** - * @brief %Unordered_multiset list assignment operator. - * @param __l An initializer_list. - * - * This function fills an %unordered_multiset with copies of the elements - * in the initializer list @a __l. - * - * Note that the assignment completely changes the %unordered_multiset - * and that the resulting %unordered_multiset's size is the same as the - * number of elements assigned. - */ - unordered_multiset& - operator=(initializer_list __l) - { - _M_h = __l; - return *this; - } - - /// Returns the allocator object used by the %unordered_multiset. - allocator_type - get_allocator() const noexcept - { return _M_h.get_allocator(); } - - // size and capacity: - - /// Returns true if the %unordered_multiset is empty. - bool - empty() const noexcept - { return _M_h.empty(); } - - /// Returns the size of the %unordered_multiset. - size_type - size() const noexcept - { return _M_h.size(); } - - /// Returns the maximum size of the %unordered_multiset. - size_type - max_size() const noexcept - { return _M_h.max_size(); } - - // iterators. - - //@{ - /** - * Returns a read-only (constant) iterator that points to the first - * element in the %unordered_multiset. - */ - iterator - begin() noexcept - { return _M_h.begin(); } - - const_iterator - begin() const noexcept - { return _M_h.begin(); } - //@} - - //@{ - /** - * Returns a read-only (constant) iterator that points one past the last - * element in the %unordered_multiset. - */ - iterator - end() noexcept - { return _M_h.end(); } - - const_iterator - end() const noexcept - { return _M_h.end(); } - //@} - - /** - * Returns a read-only (constant) iterator that points to the first - * element in the %unordered_multiset. - */ - const_iterator - cbegin() const noexcept - { return _M_h.begin(); } - - /** - * Returns a read-only (constant) iterator that points one past the last - * element in the %unordered_multiset. - */ - const_iterator - cend() const noexcept - { return _M_h.end(); } - - // modifiers. - - /** - * @brief Builds and insert an element into the %unordered_multiset. - * @param __args Arguments used to generate an element. - * @return An iterator that points to the inserted element. - * - * Insertion requires amortized constant time. - */ - template - iterator - emplace(_Args&&... __args) - { return _M_h.emplace(std::forward<_Args>(__args)...); } - - /** - * @brief Inserts an element into the %unordered_multiset. - * @param __pos An iterator that serves as a hint as to where the - * element should be inserted. - * @param __args Arguments used to generate the element to be - * inserted. - * @return An iterator that points to the inserted element. - * - * Note that the first parameter is only a hint and can potentially - * improve the performance of the insertion process. A bad hint would - * cause no gains in efficiency. - * - * For more on @a hinting, see: - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * - * Insertion requires amortized constant time. - */ - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } - - //@{ - /** - * @brief Inserts an element into the %unordered_multiset. - * @param __x Element to be inserted. - * @return An iterator that points to the inserted element. - * - * Insertion requires amortized constant time. - */ - iterator - insert(const value_type& __x) - { return _M_h.insert(__x); } - - iterator - insert(value_type&& __x) - { return _M_h.insert(std::move(__x)); } - //@} - - //@{ - /** - * @brief Inserts an element into the %unordered_multiset. - * @param __hint An iterator that serves as a hint as to where the - * element should be inserted. - * @param __x Element to be inserted. - * @return An iterator that points to the inserted element. - * - * Note that the first parameter is only a hint and can potentially - * improve the performance of the insertion process. A bad hint would - * cause no gains in efficiency. - * - * For more on @a hinting, see: - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints - * - * Insertion requires amortized constant. - */ - iterator - insert(const_iterator __hint, const value_type& __x) - { return _M_h.insert(__hint, __x); } - - iterator - insert(const_iterator __hint, value_type&& __x) - { return _M_h.insert(__hint, std::move(__x)); } - //@} - - /** - * @brief A template function that inserts a range of elements. - * @param __first Iterator pointing to the start of the range to be - * inserted. - * @param __last Iterator pointing to the end of the range. - * - * Complexity similar to that of the range constructor. - */ - template - void - insert(_InputIterator __first, _InputIterator __last) - { _M_h.insert(__first, __last); } - - /** - * @brief Inserts a list of elements into the %unordered_multiset. - * @param __l A std::initializer_list of elements to be - * inserted. - * - * Complexity similar to that of the range constructor. - */ - void - insert(initializer_list __l) - { _M_h.insert(__l); } - -#if __cplusplus > 201402L - /// Extract a node. - node_type - extract(const_iterator __pos) - { - __glibcxx_assert(__pos != end()); - return _M_h.extract(__pos); - } - - /// Extract a node. - node_type - extract(const key_type& __key) - { return _M_h.extract(__key); } - - /// Re-insert an extracted node. - iterator - insert(node_type&& __nh) - { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } - - /// Re-insert an extracted node. - iterator - insert(const_iterator __hint, node_type&& __nh) - { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } -#endif // C++17 - - //@{ - /** - * @brief Erases an element from an %unordered_multiset. - * @param __position An iterator pointing to the element to be erased. - * @return An iterator pointing to the element immediately following - * @a __position prior to the element being erased. If no such - * element exists, end() is returned. - * - * This function erases an element, pointed to by the given iterator, - * from an %unordered_multiset. - * - * Note that this function only erases the element, and that if the - * element is itself a pointer, the pointed-to memory is not touched in - * any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __position) - { return _M_h.erase(__position); } - - // LWG 2059. - iterator - erase(iterator __position) - { return _M_h.erase(__position); } - //@} - - - /** - * @brief Erases elements according to the provided key. - * @param __x Key of element to be erased. - * @return The number of elements erased. - * - * This function erases all the elements located by the given key from - * an %unordered_multiset. - * - * Note that this function only erases the element, and that if the - * element is itself a pointer, the pointed-to memory is not touched in - * any way. Managing the pointer is the user's responsibility. - */ - size_type - erase(const key_type& __x) - { return _M_h.erase(__x); } - - /** - * @brief Erases a [__first,__last) range of elements from an - * %unordered_multiset. - * @param __first Iterator pointing to the start of the range to be - * erased. - * @param __last Iterator pointing to the end of the range to - * be erased. - * @return The iterator @a __last. - * - * This function erases a sequence of elements from an - * %unordered_multiset. - * - * Note that this function only erases the element, and that if - * the element is itself a pointer, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - iterator - erase(const_iterator __first, const_iterator __last) - { return _M_h.erase(__first, __last); } - - /** - * Erases all elements in an %unordered_multiset. - * - * Note that this function only erases the elements, and that if the - * elements themselves are pointers, the pointed-to memory is not touched - * in any way. Managing the pointer is the user's responsibility. - */ - void - clear() noexcept - { _M_h.clear(); } - - /** - * @brief Swaps data with another %unordered_multiset. - * @param __x An %unordered_multiset of the same element and allocator - * types. - * - * This exchanges the elements between two sets in constant time. - * Note that the global std::swap() function is specialized such that - * std::swap(s1,s2) will feed to this function. - */ - void - swap(unordered_multiset& __x) - noexcept( noexcept(_M_h.swap(__x._M_h)) ) - { _M_h.swap(__x._M_h); } - -#if __cplusplus > 201402L - template - friend class _Hash_merge_helper; - - template - void - merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper - = _Hash_merge_helper; - _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) - { merge(__source); } - - template - void - merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) - { - using _Merge_helper - = _Hash_merge_helper; - _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); - } - - template - void - merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) - { merge(__source); } -#endif // C++17 - - // observers. - - /// Returns the hash functor object with which the %unordered_multiset - /// was constructed. - hasher - hash_function() const - { return _M_h.hash_function(); } - - /// Returns the key comparison object with which the %unordered_multiset - /// was constructed. - key_equal - key_eq() const - { return _M_h.key_eq(); } - - // lookup. - - //@{ - /** - * @brief Tries to locate an element in an %unordered_multiset. - * @param __x Element to be located. - * @return Iterator pointing to sought-after element, or end() if not - * found. - * - * This function takes a key and tries to locate the element with which - * the key matches. If successful the function returns an iterator - * pointing to the sought after element. If unsuccessful it returns the - * past-the-end ( @c end() ) iterator. - */ - iterator - find(const key_type& __x) - { return _M_h.find(__x); } - - const_iterator - find(const key_type& __x) const - { return _M_h.find(__x); } - //@} - - /** - * @brief Finds the number of elements. - * @param __x Element to located. - * @return Number of elements with specified key. - */ - size_type - count(const key_type& __x) const - { return _M_h.count(__x); } - - //@{ - /** - * @brief Finds a subsequence matching given key. - * @param __x Key to be located. - * @return Pair of iterators that possibly points to the subsequence - * matching given key. - */ - std::pair - equal_range(const key_type& __x) - { return _M_h.equal_range(__x); } - - std::pair - equal_range(const key_type& __x) const - { return _M_h.equal_range(__x); } - //@} - - // bucket interface. - - /// Returns the number of buckets of the %unordered_multiset. - size_type - bucket_count() const noexcept - { return _M_h.bucket_count(); } - - /// Returns the maximum number of buckets of the %unordered_multiset. - size_type - max_bucket_count() const noexcept - { return _M_h.max_bucket_count(); } - - /* - * @brief Returns the number of elements in a given bucket. - * @param __n A bucket index. - * @return The number of elements in the bucket. - */ - size_type - bucket_size(size_type __n) const - { return _M_h.bucket_size(__n); } - - /* - * @brief Returns the bucket index of a given element. - * @param __key A key instance. - * @return The key bucket index. - */ - size_type - bucket(const key_type& __key) const - { return _M_h.bucket(__key); } - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to the first - * bucket element. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - local_iterator - begin(size_type __n) - { return _M_h.begin(__n); } - - const_local_iterator - begin(size_type __n) const - { return _M_h.begin(__n); } - - const_local_iterator - cbegin(size_type __n) const - { return _M_h.cbegin(__n); } - //@} - - //@{ - /** - * @brief Returns a read-only (constant) iterator pointing to one past - * the last bucket elements. - * @param __n The bucket index. - * @return A read-only local iterator. - */ - local_iterator - end(size_type __n) - { return _M_h.end(__n); } - - const_local_iterator - end(size_type __n) const - { return _M_h.end(__n); } - - const_local_iterator - cend(size_type __n) const - { return _M_h.cend(__n); } - //@} - - // hash policy. - - /// Returns the average number of elements per bucket. - float - load_factor() const noexcept - { return _M_h.load_factor(); } - - /// Returns a positive number that the %unordered_multiset tries to keep the - /// load factor less than or equal to. - float - max_load_factor() const noexcept - { return _M_h.max_load_factor(); } - - /** - * @brief Change the %unordered_multiset maximum load factor. - * @param __z The new maximum load factor. - */ - void - max_load_factor(float __z) - { _M_h.max_load_factor(__z); } - - /** - * @brief May rehash the %unordered_multiset. - * @param __n The new number of buckets. - * - * Rehash will occur only if the new number of buckets respect the - * %unordered_multiset maximum load factor. - */ - void - rehash(size_type __n) - { _M_h.rehash(__n); } - - /** - * @brief Prepare the %unordered_multiset for a specified number of - * elements. - * @param __n Number of elements required. - * - * Same as rehash(ceil(n / max_load_factor())). - */ - void - reserve(size_type __n) - { _M_h.reserve(__n); } - - template - friend bool - operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, - const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); - }; - - template - inline void - swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline void - swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - { return __x._M_h._M_equal(__y._M_h); } - - template - inline bool - operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - - template - inline bool - operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { return __x._M_h._M_equal(__y._M_h); } - - template - inline bool - operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -_GLIBCXX_END_NAMESPACE_CONTAINER - -#if __cplusplus > 201402L -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // Allow std::unordered_set access to internals of compatible sets. - template - struct _Hash_merge_helper< - _GLIBCXX_STD_C::unordered_set<_Val, _Hash1, _Eq1, _Alloc>, _Hash2, _Eq2> - { - private: - template - using unordered_set = _GLIBCXX_STD_C::unordered_set<_Tp...>; - template - using unordered_multiset = _GLIBCXX_STD_C::unordered_multiset<_Tp...>; - - friend unordered_set<_Val, _Hash1, _Eq1, _Alloc>; - - static auto& - _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) - { return __set._M_h; } - - static auto& - _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) - { return __set._M_h; } - }; - - // Allow std::unordered_multiset access to internals of compatible sets. - template - struct _Hash_merge_helper< - _GLIBCXX_STD_C::unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>, - _Hash2, _Eq2> - { - private: - template - using unordered_set = _GLIBCXX_STD_C::unordered_set<_Tp...>; - template - using unordered_multiset = _GLIBCXX_STD_C::unordered_multiset<_Tp...>; - - friend unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>; - - static auto& - _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) - { return __set._M_h; } - - static auto& - _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) - { return __set._M_h; } - }; -_GLIBCXX_END_NAMESPACE_VERSION -#endif // C++17 - -} // namespace std - -#endif /* _UNORDERED_SET_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bitset deleted file mode 100644 index 382886ca2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bitset +++ /dev/null @@ -1,1594 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 1998 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/** @file include/bitset - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_BITSET -#define _GLIBCXX_BITSET 1 - -#pragma GCC system_header - -#include -#include // For invalid_argument, out_of_range, - // overflow_error -#include -#include - -#define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * __SIZEOF_LONG__) -#define _GLIBCXX_BITSET_WORDS(__n) \ - ((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + \ - ((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1)) - -#define _GLIBCXX_BITSET_BITS_PER_ULL (__CHAR_BIT__ * __SIZEOF_LONG_LONG__) - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_CONTAINER - - /** - * Base class, general case. It is a class invariant that _Nw will be - * nonnegative. - * - * See documentation for bitset. - */ - template - struct _Base_bitset - { - typedef unsigned long _WordT; - - /// 0 is the least significant word. - _WordT _M_w[_Nw]; - - _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT - : _M_w() { } - -#if __cplusplus >= 201103L - constexpr _Base_bitset(unsigned long long __val) noexcept - : _M_w{ _WordT(__val) -#if __SIZEOF_LONG_LONG__ > __SIZEOF_LONG__ - , _WordT(__val >> _GLIBCXX_BITSET_BITS_PER_WORD) -#endif - } { } -#else - _Base_bitset(unsigned long __val) - : _M_w() - { _M_w[0] = __val; } -#endif - - static _GLIBCXX_CONSTEXPR size_t - _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT - { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT - { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT - { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } - - static _GLIBCXX_CONSTEXPR _WordT - _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT - { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } - - _WordT& - _M_getword(size_t __pos) _GLIBCXX_NOEXCEPT - { return _M_w[_S_whichword(__pos)]; } - - _GLIBCXX_CONSTEXPR _WordT - _M_getword(size_t __pos) const _GLIBCXX_NOEXCEPT - { return _M_w[_S_whichword(__pos)]; } - -#if __cplusplus >= 201103L - const _WordT* - _M_getdata() const noexcept - { return _M_w; } -#endif - - _WordT& - _M_hiword() _GLIBCXX_NOEXCEPT - { return _M_w[_Nw - 1]; } - - _GLIBCXX_CONSTEXPR _WordT - _M_hiword() const _GLIBCXX_NOEXCEPT - { return _M_w[_Nw - 1]; } - - void - _M_do_and(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - _M_w[__i] &= __x._M_w[__i]; - } - - void - _M_do_or(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - _M_w[__i] |= __x._M_w[__i]; - } - - void - _M_do_xor(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - _M_w[__i] ^= __x._M_w[__i]; - } - - void - _M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT; - - void - _M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT; - - void - _M_do_flip() _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - _M_w[__i] = ~_M_w[__i]; - } - - void - _M_do_set() _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - _M_w[__i] = ~static_cast<_WordT>(0); - } - - void - _M_do_reset() _GLIBCXX_NOEXCEPT - { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); } - - bool - _M_is_equal(const _Base_bitset<_Nw>& __x) const _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; ++__i) - if (_M_w[__i] != __x._M_w[__i]) - return false; - return true; - } - - template - bool - _M_are_all() const _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw - 1; __i++) - if (_M_w[__i] != ~static_cast<_WordT>(0)) - return false; - return _M_hiword() == (~static_cast<_WordT>(0) - >> (_Nw * _GLIBCXX_BITSET_BITS_PER_WORD - - _Nb)); - } - - bool - _M_is_any() const _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - if (_M_w[__i] != static_cast<_WordT>(0)) - return true; - return false; - } - - size_t - _M_do_count() const _GLIBCXX_NOEXCEPT - { - size_t __result = 0; - for (size_t __i = 0; __i < _Nw; __i++) - __result += __builtin_popcountl(_M_w[__i]); - return __result; - } - - unsigned long - _M_do_to_ulong() const; - -#if __cplusplus >= 201103L - unsigned long long - _M_do_to_ullong() const; -#endif - - // find first "on" bit - size_t - _M_do_find_first(size_t) const _GLIBCXX_NOEXCEPT; - - // find the next "on" bit that follows "prev" - size_t - _M_do_find_next(size_t, size_t) const _GLIBCXX_NOEXCEPT; - }; - - // Definitions of non-inline functions from _Base_bitset. - template - void - _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT - { - if (__builtin_expect(__shift != 0, 1)) - { - const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD; - const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD; - - if (__offset == 0) - for (size_t __n = _Nw - 1; __n >= __wshift; --__n) - _M_w[__n] = _M_w[__n - __wshift]; - else - { - const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD - - __offset); - for (size_t __n = _Nw - 1; __n > __wshift; --__n) - _M_w[__n] = ((_M_w[__n - __wshift] << __offset) - | (_M_w[__n - __wshift - 1] >> __sub_offset)); - _M_w[__wshift] = _M_w[0] << __offset; - } - - std::fill(_M_w + 0, _M_w + __wshift, static_cast<_WordT>(0)); - } - } - - template - void - _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT - { - if (__builtin_expect(__shift != 0, 1)) - { - const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD; - const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD; - const size_t __limit = _Nw - __wshift - 1; - - if (__offset == 0) - for (size_t __n = 0; __n <= __limit; ++__n) - _M_w[__n] = _M_w[__n + __wshift]; - else - { - const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD - - __offset); - for (size_t __n = 0; __n < __limit; ++__n) - _M_w[__n] = ((_M_w[__n + __wshift] >> __offset) - | (_M_w[__n + __wshift + 1] << __sub_offset)); - _M_w[__limit] = _M_w[_Nw-1] >> __offset; - } - - std::fill(_M_w + __limit + 1, _M_w + _Nw, static_cast<_WordT>(0)); - } - } - - template - unsigned long - _Base_bitset<_Nw>::_M_do_to_ulong() const - { - for (size_t __i = 1; __i < _Nw; ++__i) - if (_M_w[__i]) - __throw_overflow_error(__N("_Base_bitset::_M_do_to_ulong")); - return _M_w[0]; - } - -#if __cplusplus >= 201103L - template - unsigned long long - _Base_bitset<_Nw>::_M_do_to_ullong() const - { - const bool __dw = sizeof(unsigned long long) > sizeof(unsigned long); - for (size_t __i = 1 + __dw; __i < _Nw; ++__i) - if (_M_w[__i]) - __throw_overflow_error(__N("_Base_bitset::_M_do_to_ullong")); - - if (__dw) - return _M_w[0] + (static_cast(_M_w[1]) - << _GLIBCXX_BITSET_BITS_PER_WORD); - return _M_w[0]; - } -#endif - - template - size_t - _Base_bitset<_Nw>:: - _M_do_find_first(size_t __not_found) const _GLIBCXX_NOEXCEPT - { - for (size_t __i = 0; __i < _Nw; __i++) - { - _WordT __thisword = _M_w[__i]; - if (__thisword != static_cast<_WordT>(0)) - return (__i * _GLIBCXX_BITSET_BITS_PER_WORD - + __builtin_ctzl(__thisword)); - } - // not found, so return an indication of failure. - return __not_found; - } - - template - size_t - _Base_bitset<_Nw>:: - _M_do_find_next(size_t __prev, size_t __not_found) const _GLIBCXX_NOEXCEPT - { - // make bound inclusive - ++__prev; - - // check out of bounds - if (__prev >= _Nw * _GLIBCXX_BITSET_BITS_PER_WORD) - return __not_found; - - // search first word - size_t __i = _S_whichword(__prev); - _WordT __thisword = _M_w[__i]; - - // mask off bits below bound - __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev); - - if (__thisword != static_cast<_WordT>(0)) - return (__i * _GLIBCXX_BITSET_BITS_PER_WORD - + __builtin_ctzl(__thisword)); - - // check subsequent words - __i++; - for (; __i < _Nw; __i++) - { - __thisword = _M_w[__i]; - if (__thisword != static_cast<_WordT>(0)) - return (__i * _GLIBCXX_BITSET_BITS_PER_WORD - + __builtin_ctzl(__thisword)); - } - // not found, so return an indication of failure. - return __not_found; - } // end _M_do_find_next - - /** - * Base class, specialization for a single word. - * - * See documentation for bitset. - */ - template<> - struct _Base_bitset<1> - { - typedef unsigned long _WordT; - _WordT _M_w; - - _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT - : _M_w(0) - { } - -#if __cplusplus >= 201103L - constexpr _Base_bitset(unsigned long long __val) noexcept -#else - _Base_bitset(unsigned long __val) -#endif - : _M_w(__val) - { } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT - { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT - { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT - { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } - - static _GLIBCXX_CONSTEXPR _WordT - _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT - { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } - - _WordT& - _M_getword(size_t) _GLIBCXX_NOEXCEPT - { return _M_w; } - - _GLIBCXX_CONSTEXPR _WordT - _M_getword(size_t) const _GLIBCXX_NOEXCEPT - { return _M_w; } - -#if __cplusplus >= 201103L - const _WordT* - _M_getdata() const noexcept - { return &_M_w; } -#endif - - _WordT& - _M_hiword() _GLIBCXX_NOEXCEPT - { return _M_w; } - - _GLIBCXX_CONSTEXPR _WordT - _M_hiword() const _GLIBCXX_NOEXCEPT - { return _M_w; } - - void - _M_do_and(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT - { _M_w &= __x._M_w; } - - void - _M_do_or(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT - { _M_w |= __x._M_w; } - - void - _M_do_xor(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT - { _M_w ^= __x._M_w; } - - void - _M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT - { _M_w <<= __shift; } - - void - _M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT - { _M_w >>= __shift; } - - void - _M_do_flip() _GLIBCXX_NOEXCEPT - { _M_w = ~_M_w; } - - void - _M_do_set() _GLIBCXX_NOEXCEPT - { _M_w = ~static_cast<_WordT>(0); } - - void - _M_do_reset() _GLIBCXX_NOEXCEPT - { _M_w = 0; } - - bool - _M_is_equal(const _Base_bitset<1>& __x) const _GLIBCXX_NOEXCEPT - { return _M_w == __x._M_w; } - - template - bool - _M_are_all() const _GLIBCXX_NOEXCEPT - { return _M_w == (~static_cast<_WordT>(0) - >> (_GLIBCXX_BITSET_BITS_PER_WORD - _Nb)); } - - bool - _M_is_any() const _GLIBCXX_NOEXCEPT - { return _M_w != 0; } - - size_t - _M_do_count() const _GLIBCXX_NOEXCEPT - { return __builtin_popcountl(_M_w); } - - unsigned long - _M_do_to_ulong() const _GLIBCXX_NOEXCEPT - { return _M_w; } - -#if __cplusplus >= 201103L - unsigned long long - _M_do_to_ullong() const noexcept - { return _M_w; } -#endif - - size_t - _M_do_find_first(size_t __not_found) const _GLIBCXX_NOEXCEPT - { - if (_M_w != 0) - return __builtin_ctzl(_M_w); - else - return __not_found; - } - - // find the next "on" bit that follows "prev" - size_t - _M_do_find_next(size_t __prev, size_t __not_found) const - _GLIBCXX_NOEXCEPT - { - ++__prev; - if (__prev >= ((size_t) _GLIBCXX_BITSET_BITS_PER_WORD)) - return __not_found; - - _WordT __x = _M_w >> __prev; - if (__x != 0) - return __builtin_ctzl(__x) + __prev; - else - return __not_found; - } - }; - - /** - * Base class, specialization for no storage (zero-length %bitset). - * - * See documentation for bitset. - */ - template<> - struct _Base_bitset<0> - { - typedef unsigned long _WordT; - - _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT - { } - -#if __cplusplus >= 201103L - constexpr _Base_bitset(unsigned long long) noexcept -#else - _Base_bitset(unsigned long) -#endif - { } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT - { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT - { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } - - static _GLIBCXX_CONSTEXPR size_t - _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT - { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } - - static _GLIBCXX_CONSTEXPR _WordT - _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT - { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } - - // This would normally give access to the data. The bounds-checking - // in the bitset class will prevent the user from getting this far, - // but (1) it must still return an lvalue to compile, and (2) the - // user might call _Unchecked_set directly, in which case this /needs/ - // to fail. Let's not penalize zero-length users unless they actually - // make an unchecked call; all the memory ugliness is therefore - // localized to this single should-never-get-this-far function. - _WordT& - _M_getword(size_t) _GLIBCXX_NOEXCEPT - { - __throw_out_of_range(__N("_Base_bitset::_M_getword")); - return *new _WordT; - } - - _GLIBCXX_CONSTEXPR _WordT - _M_getword(size_t __pos) const _GLIBCXX_NOEXCEPT - { return 0; } - - _GLIBCXX_CONSTEXPR _WordT - _M_hiword() const _GLIBCXX_NOEXCEPT - { return 0; } - - void - _M_do_and(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT - { } - - void - _M_do_or(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT - { } - - void - _M_do_xor(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT - { } - - void - _M_do_left_shift(size_t) _GLIBCXX_NOEXCEPT - { } - - void - _M_do_right_shift(size_t) _GLIBCXX_NOEXCEPT - { } - - void - _M_do_flip() _GLIBCXX_NOEXCEPT - { } - - void - _M_do_set() _GLIBCXX_NOEXCEPT - { } - - void - _M_do_reset() _GLIBCXX_NOEXCEPT - { } - - // Are all empty bitsets equal to each other? Are they equal to - // themselves? How to compare a thing which has no state? What is - // the sound of one zero-length bitset clapping? - bool - _M_is_equal(const _Base_bitset<0>&) const _GLIBCXX_NOEXCEPT - { return true; } - - template - bool - _M_are_all() const _GLIBCXX_NOEXCEPT - { return true; } - - bool - _M_is_any() const _GLIBCXX_NOEXCEPT - { return false; } - - size_t - _M_do_count() const _GLIBCXX_NOEXCEPT - { return 0; } - - unsigned long - _M_do_to_ulong() const _GLIBCXX_NOEXCEPT - { return 0; } - -#if __cplusplus >= 201103L - unsigned long long - _M_do_to_ullong() const noexcept - { return 0; } -#endif - - // Normally "not found" is the size, but that could also be - // misinterpreted as an index in this corner case. Oh well. - size_t - _M_do_find_first(size_t) const _GLIBCXX_NOEXCEPT - { return 0; } - - size_t - _M_do_find_next(size_t, size_t) const _GLIBCXX_NOEXCEPT - { return 0; } - }; - - - // Helper class to zero out the unused high-order bits in the highest word. - template - struct _Sanitize - { - typedef unsigned long _WordT; - - static void - _S_do_sanitize(_WordT& __val) _GLIBCXX_NOEXCEPT - { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); } - }; - - template<> - struct _Sanitize<0> - { - typedef unsigned long _WordT; - - static void - _S_do_sanitize(_WordT) _GLIBCXX_NOEXCEPT { } - }; - -#if __cplusplus >= 201103L - template - struct _Sanitize_val - { - static constexpr unsigned long long - _S_do_sanitize_val(unsigned long long __val) - { return __val; } - }; - - template - struct _Sanitize_val<_Nb, true> - { - static constexpr unsigned long long - _S_do_sanitize_val(unsigned long long __val) - { return __val & ~((~static_cast(0)) << _Nb); } - }; -#endif - - /** - * @brief The %bitset class represents a @e fixed-size sequence of bits. - * @ingroup utilities - * - * (Note that %bitset does @e not meet the formal requirements of a - * container. Mainly, it lacks iterators.) - * - * The template argument, @a Nb, may be any non-negative number, - * specifying the number of bits (e.g., "0", "12", "1024*1024"). - * - * In the general unoptimized case, storage is allocated in word-sized - * blocks. Let B be the number of bits in a word, then (Nb+(B-1))/B - * words will be used for storage. B - Nb%B bits are unused. (They are - * the high-order bits in the highest word.) It is a class invariant - * that those unused bits are always zero. - * - * If you think of %bitset as a simple array of bits, be - * aware that your mental picture is reversed: a %bitset behaves - * the same way as bits in integers do, with the bit at index 0 in - * the least significant / right-hand position, and the bit at - * index Nb-1 in the most significant / left-hand position. - * Thus, unlike other containers, a %bitset's index counts from - * right to left, to put it very loosely. - * - * This behavior is preserved when translating to and from strings. For - * example, the first line of the following program probably prints - * b('a') is 0001100001 on a modern ASCII system. - * - * @code - * #include - * #include - * #include - * - * using namespace std; - * - * int main() - * { - * long a = 'a'; - * bitset<10> b(a); - * - * cout << "b('a') is " << b << endl; - * - * ostringstream s; - * s << b; - * string str = s.str(); - * cout << "index 3 in the string is " << str[3] << " but\n" - * << "index 3 in the bitset is " << b[3] << endl; - * } - * @endcode - * - * Also see: - * https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_containers.html - * for a description of extensions. - * - * Most of the actual code isn't contained in %bitset<> itself, but in the - * base class _Base_bitset. The base class works with whole words, not with - * individual bits. This allows us to specialize _Base_bitset for the - * important special case where the %bitset is only a single word. - * - * Extra confusion can result due to the fact that the storage for - * _Base_bitset @e is a regular array, and is indexed as such. This is - * carefully encapsulated. - */ - template - class bitset - : private _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> - { - private: - typedef _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> _Base; - typedef unsigned long _WordT; - - template - void - _M_check_initial_position(const std::basic_string<_CharT, _Traits, _Alloc>& __s, - size_t __position) const - { - if (__position > __s.size()) - __throw_out_of_range_fmt(__N("bitset::bitset: __position " - "(which is %zu) > __s.size() " - "(which is %zu)"), - __position, __s.size()); - } - - void _M_check(size_t __position, const char *__s) const - { - if (__position >= _Nb) - __throw_out_of_range_fmt(__N("%s: __position (which is %zu) " - ">= _Nb (which is %zu)"), - __s, __position, _Nb); - } - - void - _M_do_sanitize() _GLIBCXX_NOEXCEPT - { - typedef _Sanitize<_Nb % _GLIBCXX_BITSET_BITS_PER_WORD> __sanitize_type; - __sanitize_type::_S_do_sanitize(this->_M_hiword()); - } - -#if __cplusplus >= 201103L - template friend struct hash; -#endif - - public: - /** - * This encapsulates the concept of a single bit. An instance of this - * class is a proxy for an actual bit; this way the individual bit - * operations are done as faster word-size bitwise instructions. - * - * Most users will never need to use this class directly; conversions - * to and from bool are automatic and should be transparent. Overloaded - * operators help to preserve the illusion. - * - * (On a typical system, this bit %reference is 64 - * times the size of an actual bit. Ha.) - */ - class reference - { - friend class bitset; - - _WordT* _M_wp; - size_t _M_bpos; - - // left undefined - reference(); - - public: - reference(bitset& __b, size_t __pos) _GLIBCXX_NOEXCEPT - { - _M_wp = &__b._M_getword(__pos); - _M_bpos = _Base::_S_whichbit(__pos); - } - - ~reference() _GLIBCXX_NOEXCEPT - { } - - // For b[i] = __x; - reference& - operator=(bool __x) _GLIBCXX_NOEXCEPT - { - if (__x) - *_M_wp |= _Base::_S_maskbit(_M_bpos); - else - *_M_wp &= ~_Base::_S_maskbit(_M_bpos); - return *this; - } - - // For b[i] = b[__j]; - reference& - operator=(const reference& __j) _GLIBCXX_NOEXCEPT - { - if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos))) - *_M_wp |= _Base::_S_maskbit(_M_bpos); - else - *_M_wp &= ~_Base::_S_maskbit(_M_bpos); - return *this; - } - - // Flips the bit - bool - operator~() const _GLIBCXX_NOEXCEPT - { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) == 0; } - - // For __x = b[i]; - operator bool() const _GLIBCXX_NOEXCEPT - { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) != 0; } - - // For b[i].flip(); - reference& - flip() _GLIBCXX_NOEXCEPT - { - *_M_wp ^= _Base::_S_maskbit(_M_bpos); - return *this; - } - }; - friend class reference; - - // 23.3.5.1 constructors: - /// All bits set to zero. - _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT - { } - - /// Initial bits bitwise-copied from a single word (others set to zero). -#if __cplusplus >= 201103L - constexpr bitset(unsigned long long __val) noexcept - : _Base(_Sanitize_val<_Nb>::_S_do_sanitize_val(__val)) { } -#else - bitset(unsigned long __val) - : _Base(__val) - { _M_do_sanitize(); } -#endif - - /** - * Use a subset of a string. - * @param __s A string of @a 0 and @a 1 characters. - * @param __position Index of the first character in @a __s to use; - * defaults to zero. - * @throw std::out_of_range If @a pos is bigger the size of @a __s. - * @throw std::invalid_argument If a character appears in the string - * which is neither @a 0 nor @a 1. - */ - template - explicit - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, - size_t __position = 0) - : _Base() - { - _M_check_initial_position(__s, __position); - _M_copy_from_string(__s, __position, - std::basic_string<_CharT, _Traits, _Alloc>::npos, - _CharT('0'), _CharT('1')); - } - - /** - * Use a subset of a string. - * @param __s A string of @a 0 and @a 1 characters. - * @param __position Index of the first character in @a __s to use. - * @param __n The number of characters to copy. - * @throw std::out_of_range If @a __position is bigger the size - * of @a __s. - * @throw std::invalid_argument If a character appears in the string - * which is neither @a 0 nor @a 1. - */ - template - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, - size_t __position, size_t __n) - : _Base() - { - _M_check_initial_position(__s, __position); - _M_copy_from_string(__s, __position, __n, _CharT('0'), _CharT('1')); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 396. what are characters zero and one. - template - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, - size_t __position, size_t __n, - _CharT __zero, _CharT __one = _CharT('1')) - : _Base() - { - _M_check_initial_position(__s, __position); - _M_copy_from_string(__s, __position, __n, __zero, __one); - } - -#if __cplusplus >= 201103L - /** - * Construct from a character %array. - * @param __str An %array of characters @a zero and @a one. - * @param __n The number of characters to use. - * @param __zero The character corresponding to the value 0. - * @param __one The character corresponding to the value 1. - * @throw std::invalid_argument If a character appears in the string - * which is neither @a __zero nor @a __one. - */ - template - explicit - bitset(const _CharT* __str, - typename std::basic_string<_CharT>::size_type __n - = std::basic_string<_CharT>::npos, - _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) - : _Base() - { - if (!__str) - __throw_logic_error(__N("bitset::bitset(const _CharT*, ...)")); - - if (__n == std::basic_string<_CharT>::npos) - __n = std::char_traits<_CharT>::length(__str); - _M_copy_from_ptr<_CharT, std::char_traits<_CharT>>(__str, __n, 0, - __n, __zero, - __one); - } -#endif - - // 23.3.5.2 bitset operations: - //@{ - /** - * Operations on bitsets. - * @param __rhs A same-sized bitset. - * - * These should be self-explanatory. - */ - bitset<_Nb>& - operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - this->_M_do_and(__rhs); - return *this; - } - - bitset<_Nb>& - operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - this->_M_do_or(__rhs); - return *this; - } - - bitset<_Nb>& - operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - this->_M_do_xor(__rhs); - return *this; - } - //@} - - //@{ - /** - * Operations on bitsets. - * @param __position The number of places to shift. - * - * These should be self-explanatory. - */ - bitset<_Nb>& - operator<<=(size_t __position) _GLIBCXX_NOEXCEPT - { - if (__builtin_expect(__position < _Nb, 1)) - { - this->_M_do_left_shift(__position); - this->_M_do_sanitize(); - } - else - this->_M_do_reset(); - return *this; - } - - bitset<_Nb>& - operator>>=(size_t __position) _GLIBCXX_NOEXCEPT - { - if (__builtin_expect(__position < _Nb, 1)) - { - this->_M_do_right_shift(__position); - this->_M_do_sanitize(); - } - else - this->_M_do_reset(); - return *this; - } - //@} - - //@{ - /** - * These versions of single-bit set, reset, flip, and test are - * extensions from the SGI version. They do no range checking. - * @ingroup SGIextensions - */ - bitset<_Nb>& - _Unchecked_set(size_t __pos) _GLIBCXX_NOEXCEPT - { - this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); - return *this; - } - - bitset<_Nb>& - _Unchecked_set(size_t __pos, int __val) _GLIBCXX_NOEXCEPT - { - if (__val) - this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); - else - this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); - return *this; - } - - bitset<_Nb>& - _Unchecked_reset(size_t __pos) _GLIBCXX_NOEXCEPT - { - this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); - return *this; - } - - bitset<_Nb>& - _Unchecked_flip(size_t __pos) _GLIBCXX_NOEXCEPT - { - this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos); - return *this; - } - - _GLIBCXX_CONSTEXPR bool - _Unchecked_test(size_t __pos) const _GLIBCXX_NOEXCEPT - { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos)) - != static_cast<_WordT>(0)); } - //@} - - // Set, reset, and flip. - /** - * @brief Sets every bit to true. - */ - bitset<_Nb>& - set() _GLIBCXX_NOEXCEPT - { - this->_M_do_set(); - this->_M_do_sanitize(); - return *this; - } - - /** - * @brief Sets a given bit to a particular value. - * @param __position The index of the bit. - * @param __val Either true or false, defaults to true. - * @throw std::out_of_range If @a pos is bigger the size of the %set. - */ - bitset<_Nb>& - set(size_t __position, bool __val = true) - { - this->_M_check(__position, __N("bitset::set")); - return _Unchecked_set(__position, __val); - } - - /** - * @brief Sets every bit to false. - */ - bitset<_Nb>& - reset() _GLIBCXX_NOEXCEPT - { - this->_M_do_reset(); - return *this; - } - - /** - * @brief Sets a given bit to false. - * @param __position The index of the bit. - * @throw std::out_of_range If @a pos is bigger the size of the %set. - * - * Same as writing @c set(pos,false). - */ - bitset<_Nb>& - reset(size_t __position) - { - this->_M_check(__position, __N("bitset::reset")); - return _Unchecked_reset(__position); - } - - /** - * @brief Toggles every bit to its opposite value. - */ - bitset<_Nb>& - flip() _GLIBCXX_NOEXCEPT - { - this->_M_do_flip(); - this->_M_do_sanitize(); - return *this; - } - - /** - * @brief Toggles a given bit to its opposite value. - * @param __position The index of the bit. - * @throw std::out_of_range If @a pos is bigger the size of the %set. - */ - bitset<_Nb>& - flip(size_t __position) - { - this->_M_check(__position, __N("bitset::flip")); - return _Unchecked_flip(__position); - } - - /// See the no-argument flip(). - bitset<_Nb> - operator~() const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(*this).flip(); } - - //@{ - /** - * @brief Array-indexing support. - * @param __position Index into the %bitset. - * @return A bool for a const %bitset. For non-const - * bitsets, an instance of the reference proxy class. - * @note These operators do no range checking and throw no exceptions, - * as required by DR 11 to the standard. - * - * _GLIBCXX_RESOLVE_LIB_DEFECTS Note that this implementation already - * resolves DR 11 (items 1 and 2), but does not do the range-checking - * required by that DR's resolution. -pme - * The DR has since been changed: range-checking is a precondition - * (users' responsibility), and these functions must not throw. -pme - */ - reference - operator[](size_t __position) - { return reference(*this, __position); } - - _GLIBCXX_CONSTEXPR bool - operator[](size_t __position) const - { return _Unchecked_test(__position); } - //@} - - /** - * @brief Returns a numerical interpretation of the %bitset. - * @return The integral equivalent of the bits. - * @throw std::overflow_error If there are too many bits to be - * represented in an @c unsigned @c long. - */ - unsigned long - to_ulong() const - { return this->_M_do_to_ulong(); } - -#if __cplusplus >= 201103L - unsigned long long - to_ullong() const - { return this->_M_do_to_ullong(); } -#endif - - /** - * @brief Returns a character interpretation of the %bitset. - * @return The string equivalent of the bits. - * - * Note the ordering of the bits: decreasing character positions - * correspond to increasing bit positions (see the main class notes for - * an example). - */ - template - std::basic_string<_CharT, _Traits, _Alloc> - to_string() const - { - std::basic_string<_CharT, _Traits, _Alloc> __result; - _M_copy_to_string(__result, _CharT('0'), _CharT('1')); - return __result; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 396. what are characters zero and one. - template - std::basic_string<_CharT, _Traits, _Alloc> - to_string(_CharT __zero, _CharT __one = _CharT('1')) const - { - std::basic_string<_CharT, _Traits, _Alloc> __result; - _M_copy_to_string(__result, __zero, __one); - return __result; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 434. bitset::to_string() hard to use. - template - std::basic_string<_CharT, _Traits, std::allocator<_CharT> > - to_string() const - { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 853. to_string needs updating with zero and one. - template - std::basic_string<_CharT, _Traits, std::allocator<_CharT> > - to_string(_CharT __zero, _CharT __one = _CharT('1')) const - { return to_string<_CharT, _Traits, - std::allocator<_CharT> >(__zero, __one); } - - template - std::basic_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> > - to_string() const - { - return to_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> >(); - } - - template - std::basic_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> > - to_string(_CharT __zero, _CharT __one = _CharT('1')) const - { - return to_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> >(__zero, __one); - } - - std::basic_string, std::allocator > - to_string() const - { - return to_string, - std::allocator >(); - } - - std::basic_string, std::allocator > - to_string(char __zero, char __one = '1') const - { - return to_string, - std::allocator >(__zero, __one); - } - - // Helper functions for string operations. - template - void - _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t, - _CharT, _CharT); - - template - void - _M_copy_from_string(const std::basic_string<_CharT, - _Traits, _Alloc>& __s, size_t __pos, size_t __n, - _CharT __zero, _CharT __one) - { _M_copy_from_ptr<_CharT, _Traits>(__s.data(), __s.size(), __pos, __n, - __zero, __one); } - - template - void - _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>&, - _CharT, _CharT) const; - - // NB: Backward compat. - template - void - _M_copy_from_string(const std::basic_string<_CharT, - _Traits, _Alloc>& __s, size_t __pos, size_t __n) - { _M_copy_from_string(__s, __pos, __n, _CharT('0'), _CharT('1')); } - - template - void - _M_copy_to_string(std::basic_string<_CharT, _Traits,_Alloc>& __s) const - { _M_copy_to_string(__s, _CharT('0'), _CharT('1')); } - - /// Returns the number of bits which are set. - size_t - count() const _GLIBCXX_NOEXCEPT - { return this->_M_do_count(); } - - /// Returns the total number of bits. - _GLIBCXX_CONSTEXPR size_t - size() const _GLIBCXX_NOEXCEPT - { return _Nb; } - - //@{ - /// These comparisons for equality/inequality are, well, @e bitwise. - bool - operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT - { return this->_M_is_equal(__rhs); } - - bool - operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT - { return !this->_M_is_equal(__rhs); } - //@} - - /** - * @brief Tests the value of a bit. - * @param __position The index of a bit. - * @return The value at @a pos. - * @throw std::out_of_range If @a pos is bigger the size of the %set. - */ - bool - test(size_t __position) const - { - this->_M_check(__position, __N("bitset::test")); - return _Unchecked_test(__position); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 693. std::bitset::all() missing. - /** - * @brief Tests whether all the bits are on. - * @return True if all the bits are set. - */ - bool - all() const _GLIBCXX_NOEXCEPT - { return this->template _M_are_all<_Nb>(); } - - /** - * @brief Tests whether any of the bits are on. - * @return True if at least one bit is set. - */ - bool - any() const _GLIBCXX_NOEXCEPT - { return this->_M_is_any(); } - - /** - * @brief Tests whether any of the bits are on. - * @return True if none of the bits are set. - */ - bool - none() const _GLIBCXX_NOEXCEPT - { return !this->_M_is_any(); } - - //@{ - /// Self-explanatory. - bitset<_Nb> - operator<<(size_t __position) const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(*this) <<= __position; } - - bitset<_Nb> - operator>>(size_t __position) const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(*this) >>= __position; } - //@} - - /** - * @brief Finds the index of the first "on" bit. - * @return The index of the first bit set, or size() if not found. - * @ingroup SGIextensions - * @sa _Find_next - */ - size_t - _Find_first() const _GLIBCXX_NOEXCEPT - { return this->_M_do_find_first(_Nb); } - - /** - * @brief Finds the index of the next "on" bit after prev. - * @return The index of the next bit set, or size() if not found. - * @param __prev Where to start searching. - * @ingroup SGIextensions - * @sa _Find_first - */ - size_t - _Find_next(size_t __prev) const _GLIBCXX_NOEXCEPT - { return this->_M_do_find_next(__prev, _Nb); } - }; - - // Definitions of non-inline member functions. - template - template - void - bitset<_Nb>:: - _M_copy_from_ptr(const _CharT* __s, size_t __len, - size_t __pos, size_t __n, _CharT __zero, _CharT __one) - { - reset(); - const size_t __nbits = std::min(_Nb, std::min(__n, size_t(__len - __pos))); - for (size_t __i = __nbits; __i > 0; --__i) - { - const _CharT __c = __s[__pos + __nbits - __i]; - if (_Traits::eq(__c, __zero)) - ; - else if (_Traits::eq(__c, __one)) - _Unchecked_set(__i - 1); - else - __throw_invalid_argument(__N("bitset::_M_copy_from_ptr")); - } - } - - template - template - void - bitset<_Nb>:: - _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>& __s, - _CharT __zero, _CharT __one) const - { - __s.assign(_Nb, __zero); - for (size_t __i = _Nb; __i > 0; --__i) - if (_Unchecked_test(__i - 1)) - _Traits::assign(__s[_Nb - __i], __one); - } - - // 23.3.5.3 bitset operations: - //@{ - /** - * @brief Global bitwise operations on bitsets. - * @param __x A bitset. - * @param __y A bitset of the same size as @a __x. - * @return A new bitset. - * - * These should be self-explanatory. - */ - template - inline bitset<_Nb> - operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { - bitset<_Nb> __result(__x); - __result &= __y; - return __result; - } - - template - inline bitset<_Nb> - operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { - bitset<_Nb> __result(__x); - __result |= __y; - return __result; - } - - template - inline bitset<_Nb> - operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { - bitset<_Nb> __result(__x); - __result ^= __y; - return __result; - } - //@} - - //@{ - /** - * @brief Global I/O operators for bitsets. - * - * Direct I/O between streams and bitsets is supported. Output is - * straightforward. Input will skip whitespace, only accept @a 0 and @a 1 - * characters, and will only extract as many digits as the %bitset will - * hold. - */ - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) - { - typedef typename _Traits::char_type char_type; - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - std::basic_string<_CharT, _Traits> __tmp; - __tmp.reserve(_Nb); - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 303. Bitset input operator underspecified - const char_type __zero = __is.widen('0'); - const char_type __one = __is.widen('1'); - - typename __ios_base::iostate __state = __ios_base::goodbit; - typename __istream_type::sentry __sentry(__is); - if (__sentry) - { - __try - { - for (size_t __i = _Nb; __i > 0; --__i) - { - static typename _Traits::int_type __eof = _Traits::eof(); - - typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc(); - if (_Traits::eq_int_type(__c1, __eof)) - { - __state |= __ios_base::eofbit; - break; - } - else - { - const char_type __c2 = _Traits::to_char_type(__c1); - if (_Traits::eq(__c2, __zero)) - __tmp.push_back(__zero); - else if (_Traits::eq(__c2, __one)) - __tmp.push_back(__one); - else if (_Traits:: - eq_int_type(__is.rdbuf()->sputbackc(__c2), - __eof)) - { - __state |= __ios_base::failbit; - break; - } - } - } - } - __catch(__cxxabiv1::__forced_unwind&) - { - __is._M_setstate(__ios_base::badbit); - __throw_exception_again; - } - __catch(...) - { __is._M_setstate(__ios_base::badbit); } - } - - if (__tmp.empty() && _Nb) - __state |= __ios_base::failbit; - else - __x._M_copy_from_string(__tmp, static_cast(0), _Nb, - __zero, __one); - if (__state) - __is.setstate(__state); - return __is; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bitset<_Nb>& __x) - { - std::basic_string<_CharT, _Traits> __tmp; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 396. what are characters zero and one. - const ctype<_CharT>& __ct = use_facet >(__os.getloc()); - __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1')); - return __os << __tmp; - } - //@} - -_GLIBCXX_END_NAMESPACE_CONTAINER -} // namespace std - -#undef _GLIBCXX_BITSET_WORDS -#undef _GLIBCXX_BITSET_BITS_PER_WORD -#undef _GLIBCXX_BITSET_BITS_PER_ULL - -#if __cplusplus >= 201103L - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // DR 1182. - /// std::hash specialization for bitset. - template - struct hash<_GLIBCXX_STD_C::bitset<_Nb>> - : public __hash_base> - { - size_t - operator()(const _GLIBCXX_STD_C::bitset<_Nb>& __b) const noexcept - { - const size_t __clength = (_Nb + __CHAR_BIT__ - 1) / __CHAR_BIT__; - return std::_Hash_impl::hash(__b._M_getdata(), __clength); - } - }; - - template<> - struct hash<_GLIBCXX_STD_C::bitset<0>> - : public __hash_base> - { - size_t - operator()(const _GLIBCXX_STD_C::bitset<0>&) const noexcept - { return 0; } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif // C++11 - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif /* _GLIBCXX_BITSET */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ccomplex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ccomplex deleted file mode 100644 index 515c02c12..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ccomplex +++ /dev/null @@ -1,42 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/ccomplex - * This is a Standard C++ Library header. - */ - -#pragma GCC system_header - -#ifndef _GLIBCXX_CCOMPLEX -#define _GLIBCXX_CCOMPLEX 1 - -#if __cplusplus < 201103L -# include -#endif - -extern "C++" { -#include -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cctype deleted file mode 100644 index 6710ca940..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cctype +++ /dev/null @@ -1,94 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cctype - * This is a Standard C++ Library file. You should @c \#include this file - * in your programs, rather than any of the @a *.h implementation files. - * - * This is the C++ version of the Standard C Library header @c ctype.h, - * and its contents are (mostly) the same as that header, but are all - * contained in the namespace @c std (except for names which are defined - * as macros in C). - */ - -// -// ISO C++ 14882: -// - -#pragma GCC system_header - -#include -#include - -#ifndef _GLIBCXX_CCTYPE -#define _GLIBCXX_CCTYPE 1 - -// Get rid of those macros defined in in lieu of real functions. -#undef isalnum -#undef isalpha -#undef iscntrl -#undef isdigit -#undef isgraph -#undef islower -#undef isprint -#undef ispunct -#undef isspace -#undef isupper -#undef isxdigit -#undef tolower -#undef toupper - -namespace std -{ - using ::isalnum; - using ::isalpha; - using ::iscntrl; - using ::isdigit; - using ::isgraph; - using ::islower; - using ::isprint; - using ::ispunct; - using ::isspace; - using ::isupper; - using ::isxdigit; - using ::tolower; - using ::toupper; -} // namespace std - -#if __cplusplus >= 201103L - -#ifdef _GLIBCXX_USE_C99_CTYPE_TR1 - -#undef isblank - -namespace std -{ - using ::isblank; -} // namespace std - -#endif // _GLIBCXX_USE_C99_CTYPE_TR1 - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cfenv b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cfenv deleted file mode 100644 index e121f9faa..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cfenv +++ /dev/null @@ -1,84 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cfenv - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_CFENV -#define _GLIBCXX_CFENV 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include - -#if _GLIBCXX_HAVE_FENV_H -# include -#endif - -#ifdef _GLIBCXX_USE_C99_FENV_TR1 - -#undef feclearexcept -#undef fegetexceptflag -#undef feraiseexcept -#undef fesetexceptflag -#undef fetestexcept -#undef fegetround -#undef fesetround -#undef fegetenv -#undef feholdexcept -#undef fesetenv -#undef feupdateenv - -namespace std -{ - // types - using ::fenv_t; - using ::fexcept_t; - - // functions - using ::feclearexcept; - using ::fegetexceptflag; - using ::feraiseexcept; - using ::fesetexceptflag; - using ::fetestexcept; - - using ::fegetround; - using ::fesetround; - - using ::fegetenv; - using ::feholdexcept; - using ::fesetenv; - using ::feupdateenv; -} // namespace std - -#endif // _GLIBCXX_USE_C99_FENV_TR1 - -#endif // C++11 - -#endif // _GLIBCXX_CFENV diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cfloat b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cfloat deleted file mode 100644 index 903142c4d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cfloat +++ /dev/null @@ -1,56 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cfloat - * 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 float.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 -// - -#pragma GCC system_header - -#include -#include - -#ifndef _GLIBCXX_CFLOAT -#define _GLIBCXX_CFLOAT 1 - -#if __cplusplus >= 201103L -# ifndef DECIMAL_DIG -# define DECIMAL_DIG __DECIMAL_DIG__ -# endif -# ifndef FLT_EVAL_METHOD -# define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ -# endif -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/chrono b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/chrono deleted file mode 100644 index 5d0151857..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/chrono +++ /dev/null @@ -1,985 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2008-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/chrono - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_CHRONO -#define _GLIBCXX_CHRONO 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include -#include // for literals support. - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ - /** - * @defgroup chrono Time - * @ingroup utilities - * - * Classes and functions for time. - * @{ - */ - - /** @namespace std::chrono - * @brief ISO C++ 2011 entities sub-namespace for time and date. - */ - namespace chrono - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - template> - struct duration; - - template - struct time_point; - - _GLIBCXX_END_NAMESPACE_VERSION - } - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // 20.11.4.3 specialization of common_type (for duration, sfinae-friendly) - - template - struct __duration_common_type_wrapper - { - private: - typedef __static_gcd<_Period1::num, _Period2::num> __gcd_num; - typedef __static_gcd<_Period1::den, _Period2::den> __gcd_den; - typedef typename _CT::type __cr; - typedef ratio<__gcd_num::value, - (_Period1::den / __gcd_den::value) * _Period2::den> __r; - public: - typedef __success_type> type; - }; - - template - struct __duration_common_type_wrapper<__failure_type, _Period1, _Period2> - { typedef __failure_type type; }; - - template - struct common_type, - chrono::duration<_Rep2, _Period2>> - : public __duration_common_type_wrapper>::type, _Period1, _Period2>::type - { }; - - // 20.11.4.3 specialization of common_type (for time_point, sfinae-friendly) - - template - struct __timepoint_common_type_wrapper - { - typedef __success_type> - type; - }; - - template - struct __timepoint_common_type_wrapper<__failure_type, _Clock> - { typedef __failure_type type; }; - - template - struct common_type, - chrono::time_point<_Clock, _Duration2>> - : public __timepoint_common_type_wrapper>::type, _Clock>::type - { }; - -_GLIBCXX_END_NAMESPACE_VERSION - - namespace chrono - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Primary template for duration_cast impl. - template - struct __duration_cast_impl - { - template - static constexpr _ToDur - __cast(const duration<_Rep, _Period>& __d) - { - typedef typename _ToDur::rep __to_rep; - return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) - * static_cast<_CR>(_CF::num) - / static_cast<_CR>(_CF::den))); - } - }; - - template - struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> - { - template - static constexpr _ToDur - __cast(const duration<_Rep, _Period>& __d) - { - typedef typename _ToDur::rep __to_rep; - return _ToDur(static_cast<__to_rep>(__d.count())); - } - }; - - template - struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> - { - template - static constexpr _ToDur - __cast(const duration<_Rep, _Period>& __d) - { - typedef typename _ToDur::rep __to_rep; - return _ToDur(static_cast<__to_rep>( - static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); - } - }; - - template - struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> - { - template - static constexpr _ToDur - __cast(const duration<_Rep, _Period>& __d) - { - typedef typename _ToDur::rep __to_rep; - return _ToDur(static_cast<__to_rep>( - static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); - } - }; - - template - struct __is_duration - : std::false_type - { }; - - template - struct __is_duration> - : std::true_type - { }; - - /// duration_cast - template - constexpr typename enable_if<__is_duration<_ToDur>::value, - _ToDur>::type - duration_cast(const duration<_Rep, _Period>& __d) - { - typedef typename _ToDur::period __to_period; - typedef typename _ToDur::rep __to_rep; - typedef ratio_divide<_Period, __to_period> __cf; - typedef typename common_type<__to_rep, _Rep, intmax_t>::type - __cr; - typedef __duration_cast_impl<_ToDur, __cf, __cr, - __cf::num == 1, __cf::den == 1> __dc; - return __dc::__cast(__d); - } - - /// treat_as_floating_point - template - struct treat_as_floating_point - : is_floating_point<_Rep> - { }; - -#if __cplusplus > 201402L - template - inline constexpr bool treat_as_floating_point_v = - treat_as_floating_point<_Rep>::value; -#endif // C++17 - -#if __cplusplus >= 201703L -# define __cpp_lib_chrono 201611 - - template - constexpr enable_if_t<__is_duration<_ToDur>::value, _ToDur> - floor(const duration<_Rep, _Period>& __d) - { - auto __to = chrono::duration_cast<_ToDur>(__d); - if (__to > __d) - return __to - _ToDur{1}; - return __to; - } - - template - constexpr enable_if_t<__is_duration<_ToDur>::value, _ToDur> - ceil(const duration<_Rep, _Period>& __d) - { - auto __to = chrono::duration_cast<_ToDur>(__d); - if (__to < __d) - return __to + _ToDur{1}; - return __to; - } - - template - constexpr enable_if_t< - __and_<__is_duration<_ToDur>, - __not_>>::value, - _ToDur> - round(const duration<_Rep, _Period>& __d) - { - _ToDur __t0 = chrono::floor<_ToDur>(__d); - _ToDur __t1 = __t0 + _ToDur{1}; - auto __diff0 = __d - __t0; - auto __diff1 = __t1 - __d; - if (__diff0 == __diff1) - { - if (__t0.count() & 1) - return __t1; - return __t0; - } - else if (__diff0 < __diff1) - return __t0; - return __t1; - } - - template - constexpr - enable_if_t::is_signed, duration<_Rep, _Period>> - abs(duration<_Rep, _Period> __d) - { - if (__d >= __d.zero()) - return __d; - return -__d; - } -#endif // C++17 - - /// duration_values - template - struct duration_values - { - static constexpr _Rep - zero() - { return _Rep(0); } - - static constexpr _Rep - max() - { return numeric_limits<_Rep>::max(); } - - static constexpr _Rep - min() - { return numeric_limits<_Rep>::lowest(); } - }; - - template - struct __is_ratio - : std::false_type - { }; - - template - struct __is_ratio> - : std::true_type - { }; - - /// duration - template - struct duration - { - typedef _Rep rep; - typedef _Period period; - - static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration"); - static_assert(__is_ratio<_Period>::value, - "period must be a specialization of ratio"); - static_assert(_Period::num > 0, "period must be positive"); - - // 20.11.5.1 construction / copy / destroy - constexpr duration() = default; - - // NB: Make constexpr implicit. This cannot be explicitly - // constexpr, as any UDT that is not a literal type with a - // constexpr copy constructor will be ill-formed. - duration(const duration&) = default; - - template::value - && (treat_as_floating_point::value - || !treat_as_floating_point<_Rep2>::value)>::type> - constexpr explicit duration(const _Rep2& __rep) - : __r(static_cast(__rep)) { } - - template::value - || (ratio_divide<_Period2, period>::den == 1 - && !treat_as_floating_point<_Rep2>::value)>::type> - constexpr duration(const duration<_Rep2, _Period2>& __d) - : __r(duration_cast(__d).count()) { } - - ~duration() = default; - duration& operator=(const duration&) = default; - - // 20.11.5.2 observer - constexpr rep - count() const - { return __r; } - - // 20.11.5.3 arithmetic - constexpr duration - operator+() const - { return *this; } - - constexpr duration - operator-() const - { return duration(-__r); } - - _GLIBCXX17_CONSTEXPR duration& - operator++() - { - ++__r; - return *this; - } - - _GLIBCXX17_CONSTEXPR duration - operator++(int) - { return duration(__r++); } - - _GLIBCXX17_CONSTEXPR duration& - operator--() - { - --__r; - return *this; - } - - _GLIBCXX17_CONSTEXPR duration - operator--(int) - { return duration(__r--); } - - _GLIBCXX17_CONSTEXPR duration& - operator+=(const duration& __d) - { - __r += __d.count(); - return *this; - } - - _GLIBCXX17_CONSTEXPR duration& - operator-=(const duration& __d) - { - __r -= __d.count(); - return *this; - } - - _GLIBCXX17_CONSTEXPR duration& - operator*=(const rep& __rhs) - { - __r *= __rhs; - return *this; - } - - _GLIBCXX17_CONSTEXPR duration& - operator/=(const rep& __rhs) - { - __r /= __rhs; - return *this; - } - - // DR 934. - template - _GLIBCXX17_CONSTEXPR - typename enable_if::value, - duration&>::type - operator%=(const rep& __rhs) - { - __r %= __rhs; - return *this; - } - - template - _GLIBCXX17_CONSTEXPR - typename enable_if::value, - duration&>::type - operator%=(const duration& __d) - { - __r %= __d.count(); - return *this; - } - - // 20.11.5.4 special values - static constexpr duration - zero() - { return duration(duration_values::zero()); } - - static constexpr duration - min() - { return duration(duration_values::min()); } - - static constexpr duration - max() - { return duration(duration_values::max()); } - - private: - rep __r; - }; - - template - constexpr typename common_type, - duration<_Rep2, _Period2>>::type - operator+(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<__dur1,__dur2>::type __cd; - return __cd(__cd(__lhs).count() + __cd(__rhs).count()); - } - - template - constexpr typename common_type, - duration<_Rep2, _Period2>>::type - operator-(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<__dur1,__dur2>::type __cd; - return __cd(__cd(__lhs).count() - __cd(__rhs).count()); - } - - template::type>::value> - struct __common_rep_type { }; - - template - struct __common_rep_type<_Rep1, _Rep2, true> - { typedef typename common_type<_Rep1, _Rep2>::type type; }; - - template - constexpr - duration::type, _Period> - operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) - { - typedef duration::type, _Period> - __cd; - return __cd(__cd(__d).count() * __s); - } - - template - constexpr - duration::type, _Period> - operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) - { return __d * __s; } - - template - constexpr duration::value, _Rep2>::type>::type, _Period> - operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) - { - typedef duration::type, _Period> - __cd; - return __cd(__cd(__d).count() / __s); - } - - template - constexpr typename common_type<_Rep1, _Rep2>::type - operator/(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<__dur1,__dur2>::type __cd; - return __cd(__lhs).count() / __cd(__rhs).count(); - } - - // DR 934. - template - constexpr duration::value, _Rep2>::type>::type, _Period> - operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) - { - typedef duration::type, _Period> - __cd; - return __cd(__cd(__d).count() % __s); - } - - template - constexpr typename common_type, - duration<_Rep2, _Period2>>::type - operator%(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<__dur1,__dur2>::type __cd; - return __cd(__cd(__lhs).count() % __cd(__rhs).count()); - } - - // comparisons - template - constexpr bool - operator==(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<__dur1,__dur2>::type __ct; - return __ct(__lhs).count() == __ct(__rhs).count(); - } - - template - constexpr bool - operator<(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<__dur1,__dur2>::type __ct; - return __ct(__lhs).count() < __ct(__rhs).count(); - } - - template - constexpr bool - operator!=(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { return !(__lhs == __rhs); } - - template - constexpr bool - operator<=(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { return !(__rhs < __lhs); } - - template - constexpr bool - operator>(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { return __rhs < __lhs; } - - template - constexpr bool - operator>=(const duration<_Rep1, _Period1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { return !(__lhs < __rhs); } - - /// nanoseconds - typedef duration nanoseconds; - - /// microseconds - typedef duration microseconds; - - /// milliseconds - typedef duration milliseconds; - - /// seconds - typedef duration seconds; - - /// minutes - typedef duration> minutes; - - /// hours - typedef duration> hours; - - /// time_point - template - struct time_point - { - typedef _Clock clock; - typedef _Dur duration; - typedef typename duration::rep rep; - typedef typename duration::period period; - - constexpr time_point() : __d(duration::zero()) - { } - - constexpr explicit time_point(const duration& __dur) - : __d(__dur) - { } - - // conversions - template>> - constexpr time_point(const time_point& __t) - : __d(__t.time_since_epoch()) - { } - - // observer - constexpr duration - time_since_epoch() const - { return __d; } - - // arithmetic - _GLIBCXX17_CONSTEXPR time_point& - operator+=(const duration& __dur) - { - __d += __dur; - return *this; - } - - _GLIBCXX17_CONSTEXPR time_point& - operator-=(const duration& __dur) - { - __d -= __dur; - return *this; - } - - // special values - static constexpr time_point - min() - { return time_point(duration::min()); } - - static constexpr time_point - max() - { return time_point(duration::max()); } - - private: - duration __d; - }; - - /// time_point_cast - template - constexpr typename enable_if<__is_duration<_ToDur>::value, - time_point<_Clock, _ToDur>>::type - time_point_cast(const time_point<_Clock, _Dur>& __t) - { - typedef time_point<_Clock, _ToDur> __time_point; - return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); - } - -#if __cplusplus > 201402L - template - constexpr - enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> - floor(const time_point<_Clock, _Dur>& __tp) - { - return time_point<_Clock, _ToDur>{ - chrono::floor<_ToDur>(__tp.time_since_epoch())}; - } - - template - constexpr - enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> - ceil(const time_point<_Clock, _Dur>& __tp) - { - return time_point<_Clock, _ToDur>{ - chrono::ceil<_ToDur>(__tp.time_since_epoch())}; - } - - template - constexpr enable_if_t< - __and_<__is_duration<_ToDur>, - __not_>>::value, - time_point<_Clock, _ToDur>> - round(const time_point<_Clock, _Dur>& __tp) - { - return time_point<_Clock, _ToDur>{ - chrono::round<_ToDur>(__tp.time_since_epoch())}; - } -#endif // C++17 - - template - constexpr time_point<_Clock, - typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> - operator+(const time_point<_Clock, _Dur1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<_Dur1,__dur2>::type __ct; - typedef time_point<_Clock, __ct> __time_point; - return __time_point(__lhs.time_since_epoch() + __rhs); - } - - template - constexpr time_point<_Clock, - typename common_type, _Dur2>::type> - operator+(const duration<_Rep1, _Period1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { - typedef duration<_Rep1, _Period1> __dur1; - typedef typename common_type<__dur1,_Dur2>::type __ct; - typedef time_point<_Clock, __ct> __time_point; - return __time_point(__rhs.time_since_epoch() + __lhs); - } - - template - constexpr time_point<_Clock, - typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> - operator-(const time_point<_Clock, _Dur1>& __lhs, - const duration<_Rep2, _Period2>& __rhs) - { - typedef duration<_Rep2, _Period2> __dur2; - typedef typename common_type<_Dur1,__dur2>::type __ct; - typedef time_point<_Clock, __ct> __time_point; - return __time_point(__lhs.time_since_epoch() -__rhs); - } - - template - constexpr typename common_type<_Dur1, _Dur2>::type - operator-(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } - - template - constexpr bool - operator==(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } - - template - constexpr bool - operator!=(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return !(__lhs == __rhs); } - - template - constexpr bool - operator<(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } - - template - constexpr bool - operator<=(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return !(__rhs < __lhs); } - - template - constexpr bool - operator>(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return __rhs < __lhs; } - - template - constexpr bool - operator>=(const time_point<_Clock, _Dur1>& __lhs, - const time_point<_Clock, _Dur2>& __rhs) - { return !(__lhs < __rhs); } - - - // Clocks. - - // Why nanosecond resolution as the default? - // Why have std::system_clock always count in the highest - // resolution (ie nanoseconds), even if on some OSes the low 3 - // or 9 decimal digits will be always zero? This allows later - // implementations to change the system_clock::now() - // implementation any time to provide better resolution without - // changing function signature or units. - - // To support the (forward) evolution of the library's defined - // clocks, wrap inside inline namespace so that the current - // defintions of system_clock, steady_clock, and - // high_resolution_clock types are uniquely mangled. This way, new - // code can use the latests clocks, while the library can contain - // compatibility definitions for previous versions. At some - // point, when these clocks settle down, the inlined namespaces - // can be removed. XXX GLIBCXX_ABI Deprecated - inline namespace _V2 { - - /** - * @brief System clock. - * - * Time returned represents wall time from the system-wide clock. - */ - struct system_clock - { - typedef chrono::nanoseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - - static_assert(system_clock::duration::min() - < system_clock::duration::zero(), - "a clock's minimum duration cannot be less than its epoch"); - - static constexpr bool is_steady = false; - - static time_point - now() noexcept; - - // Map to C API - static std::time_t - to_time_t(const time_point& __t) noexcept - { - return std::time_t(duration_cast - (__t.time_since_epoch()).count()); - } - - static time_point - from_time_t(std::time_t __t) noexcept - { - typedef chrono::time_point __from; - return time_point_cast - (__from(chrono::seconds(__t))); - } - }; - - - /** - * @brief Monotonic clock - * - * Time returned has the property of only increasing at a uniform rate. - */ - struct steady_clock - { - typedef chrono::nanoseconds duration; - typedef duration::rep rep; - typedef duration::period period; - typedef chrono::time_point time_point; - - static constexpr bool is_steady = true; - - static time_point - now() noexcept; - }; - - - /** - * @brief Highest-resolution clock - * - * This is the clock "with the shortest tick period." Alias to - * std::system_clock until higher-than-nanosecond definitions - * become feasible. - */ - using high_resolution_clock = system_clock; - - } // end inline namespace _V2 - - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace chrono - -#if __cplusplus > 201103L - -#define __cpp_lib_chrono_udls 201304 - - inline namespace literals - { - inline namespace chrono_literals - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - struct _Checked_integral_constant - : integral_constant<_Rep, static_cast<_Rep>(_Val)> - { - static_assert(_Checked_integral_constant::value >= 0 - && _Checked_integral_constant::value == _Val, - "literal value cannot be represented by duration type"); - }; - - template - constexpr _Dur __check_overflow() - { - using _Val = __parse_int::_Parse_int<_Digits...>; - using _Rep = typename _Dur::rep; - // TODO: should be simply integral_constant<_Rep, _Val::value> - // but GCC doesn't reject narrowing conversions to _Rep. - using _CheckedVal = _Checked_integral_constant<_Rep, _Val::value>; - return _Dur{_CheckedVal::value}; - } - - constexpr chrono::duration> - operator""h(long double __hours) - { return chrono::duration>{__hours}; } - - template - constexpr chrono::hours - operator""h() - { return __check_overflow(); } - - constexpr chrono::duration> - operator""min(long double __mins) - { return chrono::duration>{__mins}; } - - template - constexpr chrono::minutes - operator""min() - { return __check_overflow(); } - - constexpr chrono::duration - operator""s(long double __secs) - { return chrono::duration{__secs}; } - - template - constexpr chrono::seconds - operator""s() - { return __check_overflow(); } - - constexpr chrono::duration - operator""ms(long double __msecs) - { return chrono::duration{__msecs}; } - - template - constexpr chrono::milliseconds - operator""ms() - { return __check_overflow(); } - - constexpr chrono::duration - operator""us(long double __usecs) - { return chrono::duration{__usecs}; } - - template - constexpr chrono::microseconds - operator""us() - { return __check_overflow(); } - - constexpr chrono::duration - operator""ns(long double __nsecs) - { return chrono::duration{__nsecs}; } - - template - constexpr chrono::nanoseconds - operator""ns() - { return __check_overflow(); } - - _GLIBCXX_END_NAMESPACE_VERSION - } // inline namespace chrono_literals - } // inline namespace literals - - namespace chrono - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - using namespace literals::chrono_literals; - - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace chrono - -#endif // __cplusplus > 201103L - - // @} group chrono -} // namespace std - -#endif //_GLIBCXX_USE_C99_STDINT_TR1 - -#endif // C++11 - -#endif //_GLIBCXX_CHRONO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cinttypes b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cinttypes deleted file mode 100644 index 4e5e80423..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cinttypes +++ /dev/null @@ -1,81 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cinttypes - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_CINTTYPES -#define _GLIBCXX_CINTTYPES 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include - -// For 27.9.2/3 (see C99, Note 184) -#if _GLIBCXX_HAVE_INTTYPES_H -# ifndef __STDC_FORMAT_MACROS -# define _UNDEF__STDC_FORMAT_MACROS -# define __STDC_FORMAT_MACROS -# endif -# include -# ifdef _UNDEF__STDC_FORMAT_MACROS -# undef __STDC_FORMAT_MACROS -# undef _UNDEF__STDC_FORMAT_MACROS -# endif -#endif - -#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1 - -namespace std -{ - // types - using ::imaxdiv_t; - - // functions - using ::imaxabs; - using ::imaxdiv; - - // GCC does not support extended integer types - // intmax_t abs(intmax_t) - // imaxdiv_t div(intmax_t, intmax_t) - - using ::strtoimax; - using ::strtoumax; - -#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 - using ::wcstoimax; - using ::wcstoumax; -#endif -} // namespace std - -#endif // _GLIBCXX_USE_C99_INTTYPES_TR1 - -#endif // C++11 - -#endif // _GLIBCXX_CINTTYPES diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/climits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/climits deleted file mode 100644 index d92a1d860..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/climits +++ /dev/null @@ -1,59 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 -// - -#pragma GCC system_header - -#include -#include - -#ifndef _GLIBCXX_CLIMITS -#define _GLIBCXX_CLIMITS 1 - -#ifndef LLONG_MIN -#define LLONG_MIN (-__LONG_LONG_MAX__ - 1) -#endif - -#ifndef LLONG_MAX -#define LLONG_MAX __LONG_LONG_MAX__ -#endif - -#ifndef ULLONG_MAX -#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1) -#endif - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cmath deleted file mode 100644 index 6e7508f69..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cmath +++ /dev/null @@ -1,1919 +0,0 @@ -// -*- C++ -*- C forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cmath - * 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 math.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: 26.5 C library -// - -#pragma GCC system_header - -#include -#include -#include -#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS -#include_next -#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS -#include - -#ifndef _GLIBCXX_CMATH -#define _GLIBCXX_CMATH 1 - -// Get rid of those macros defined in in lieu of real functions. -#undef div -#undef acos -#undef asin -#undef atan -#undef atan2 -#undef ceil -#undef cos -#undef cosh -#undef exp -#undef fabs -#undef floor -#undef fmod -#undef frexp -#undef ldexp -#undef log -#undef log10 -#undef modf -#undef pow -#undef sin -#undef sinh -#undef sqrt -#undef tan -#undef tanh - -extern "C++" -{ -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using ::acos; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - acos(float __x) - { return __builtin_acosf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - acos(long double __x) - { return __builtin_acosl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - acos(_Tp __x) - { return __builtin_acos(__x); } - - using ::asin; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - asin(float __x) - { return __builtin_asinf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - asin(long double __x) - { return __builtin_asinl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - asin(_Tp __x) - { return __builtin_asin(__x); } - - using ::atan; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - atan(float __x) - { return __builtin_atanf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - atan(long double __x) - { return __builtin_atanl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - atan(_Tp __x) - { return __builtin_atan(__x); } - - using ::atan2; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - atan2(float __y, float __x) - { return __builtin_atan2f(__y, __x); } - - inline _GLIBCXX_CONSTEXPR long double - atan2(long double __y, long double __x) - { return __builtin_atan2l(__y, __x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - atan2(_Tp __y, _Up __x) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return atan2(__type(__y), __type(__x)); - } - - using ::ceil; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - ceil(float __x) - { return __builtin_ceilf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - ceil(long double __x) - { return __builtin_ceill(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - ceil(_Tp __x) - { return __builtin_ceil(__x); } - - using ::cos; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - cos(float __x) - { return __builtin_cosf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - cos(long double __x) - { return __builtin_cosl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - cos(_Tp __x) - { return __builtin_cos(__x); } - - using ::cosh; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - cosh(float __x) - { return __builtin_coshf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - cosh(long double __x) - { return __builtin_coshl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - cosh(_Tp __x) - { return __builtin_cosh(__x); } - - using ::exp; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - exp(float __x) - { return __builtin_expf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - exp(long double __x) - { return __builtin_expl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - exp(_Tp __x) - { return __builtin_exp(__x); } - - using ::fabs; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - fabs(float __x) - { return __builtin_fabsf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - fabs(long double __x) - { return __builtin_fabsl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - fabs(_Tp __x) - { return __builtin_fabs(__x); } - - using ::floor; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - floor(float __x) - { return __builtin_floorf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - floor(long double __x) - { return __builtin_floorl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - floor(_Tp __x) - { return __builtin_floor(__x); } - - using ::fmod; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - fmod(float __x, float __y) - { return __builtin_fmodf(__x, __y); } - - inline _GLIBCXX_CONSTEXPR long double - fmod(long double __x, long double __y) - { return __builtin_fmodl(__x, __y); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fmod(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fmod(__type(__x), __type(__y)); - } - - using ::frexp; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline float - frexp(float __x, int* __exp) - { return __builtin_frexpf(__x, __exp); } - - inline long double - frexp(long double __x, int* __exp) - { return __builtin_frexpl(__x, __exp); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - frexp(_Tp __x, int* __exp) - { return __builtin_frexp(__x, __exp); } - - using ::ldexp; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - ldexp(float __x, int __exp) - { return __builtin_ldexpf(__x, __exp); } - - inline _GLIBCXX_CONSTEXPR long double - ldexp(long double __x, int __exp) - { return __builtin_ldexpl(__x, __exp); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - ldexp(_Tp __x, int __exp) - { return __builtin_ldexp(__x, __exp); } - - using ::log; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - log(float __x) - { return __builtin_logf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - log(long double __x) - { return __builtin_logl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - log(_Tp __x) - { return __builtin_log(__x); } - - using ::log10; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - log10(float __x) - { return __builtin_log10f(__x); } - - inline _GLIBCXX_CONSTEXPR long double - log10(long double __x) - { return __builtin_log10l(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - log10(_Tp __x) - { return __builtin_log10(__x); } - - using ::modf; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline float - modf(float __x, float* __iptr) - { return __builtin_modff(__x, __iptr); } - - inline long double - modf(long double __x, long double* __iptr) - { return __builtin_modfl(__x, __iptr); } -#endif - - using ::pow; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - pow(float __x, float __y) - { return __builtin_powf(__x, __y); } - - inline _GLIBCXX_CONSTEXPR long double - pow(long double __x, long double __y) - { return __builtin_powl(__x, __y); } - -#if __cplusplus < 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 550. What should the return type of pow(float,int) be? - inline double - pow(double __x, int __i) - { return __builtin_powi(__x, __i); } - - inline float - pow(float __x, int __n) - { return __builtin_powif(__x, __n); } - - inline long double - pow(long double __x, int __n) - { return __builtin_powil(__x, __n); } -#endif -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - pow(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return pow(__type(__x), __type(__y)); - } - - using ::sin; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - sin(float __x) - { return __builtin_sinf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - sin(long double __x) - { return __builtin_sinl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - sin(_Tp __x) - { return __builtin_sin(__x); } - - using ::sinh; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - sinh(float __x) - { return __builtin_sinhf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - sinh(long double __x) - { return __builtin_sinhl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - sinh(_Tp __x) - { return __builtin_sinh(__x); } - - using ::sqrt; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - sqrt(float __x) - { return __builtin_sqrtf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - sqrt(long double __x) - { return __builtin_sqrtl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - sqrt(_Tp __x) - { return __builtin_sqrt(__x); } - - using ::tan; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - tan(float __x) - { return __builtin_tanf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - tan(long double __x) - { return __builtin_tanl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - tan(_Tp __x) - { return __builtin_tan(__x); } - - using ::tanh; - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO - inline _GLIBCXX_CONSTEXPR float - tanh(float __x) - { return __builtin_tanhf(__x); } - - inline _GLIBCXX_CONSTEXPR long double - tanh(long double __x) - { return __builtin_tanhl(__x); } -#endif - - template - inline _GLIBCXX_CONSTEXPR - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - tanh(_Tp __x) - { return __builtin_tanh(__x); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#if _GLIBCXX_USE_C99_MATH -#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC - -// These are possible macros imported from C99-land. -#undef fpclassify -#undef isfinite -#undef isinf -#undef isnan -#undef isnormal -#undef signbit -#undef isgreater -#undef isgreaterequal -#undef isless -#undef islessequal -#undef islessgreater -#undef isunordered - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if __cplusplus >= 201103L - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr int - fpclassify(float __x) - { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, - FP_SUBNORMAL, FP_ZERO, __x); } - - constexpr int - fpclassify(double __x) - { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, - FP_SUBNORMAL, FP_ZERO, __x); } - - constexpr int - fpclassify(long double __x) - { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, - FP_SUBNORMAL, FP_ZERO, __x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - int>::__type - fpclassify(_Tp __x) - { return __x != 0 ? FP_NORMAL : FP_ZERO; } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isfinite(float __x) - { return __builtin_isfinite(__x); } - - constexpr bool - isfinite(double __x) - { return __builtin_isfinite(__x); } - - constexpr bool - isfinite(long double __x) - { return __builtin_isfinite(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - bool>::__type - isfinite(_Tp __x) - { return true; } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isinf(float __x) - { return __builtin_isinf(__x); } - -#if _GLIBCXX_HAVE_OBSOLETE_ISINF \ - && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC - using ::isinf; -#else - constexpr bool - isinf(double __x) - { return __builtin_isinf(__x); } -#endif - - constexpr bool - isinf(long double __x) - { return __builtin_isinf(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - bool>::__type - isinf(_Tp __x) - { return false; } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isnan(float __x) - { return __builtin_isnan(__x); } - -#if _GLIBCXX_HAVE_OBSOLETE_ISNAN \ - && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC - using ::isnan; -#else - constexpr bool - isnan(double __x) - { return __builtin_isnan(__x); } -#endif - - constexpr bool - isnan(long double __x) - { return __builtin_isnan(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - bool>::__type - isnan(_Tp __x) - { return false; } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isnormal(float __x) - { return __builtin_isnormal(__x); } - - constexpr bool - isnormal(double __x) - { return __builtin_isnormal(__x); } - - constexpr bool - isnormal(long double __x) - { return __builtin_isnormal(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - bool>::__type - isnormal(_Tp __x) - { return __x != 0 ? true : false; } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - // Note: middle-end/36757 is fixed, __builtin_signbit is type-generic. - constexpr bool - signbit(float __x) - { return __builtin_signbit(__x); } - - constexpr bool - signbit(double __x) - { return __builtin_signbit(__x); } - - constexpr bool - signbit(long double __x) - { return __builtin_signbit(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - bool>::__type - signbit(_Tp __x) - { return __x < 0 ? true : false; } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isgreater(float __x, float __y) - { return __builtin_isgreater(__x, __y); } - - constexpr bool - isgreater(double __x, double __y) - { return __builtin_isgreater(__x, __y); } - - constexpr bool - isgreater(long double __x, long double __y) - { return __builtin_isgreater(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename - __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value - && __is_arithmetic<_Up>::__value), bool>::__type - isgreater(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return __builtin_isgreater(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isgreaterequal(float __x, float __y) - { return __builtin_isgreaterequal(__x, __y); } - - constexpr bool - isgreaterequal(double __x, double __y) - { return __builtin_isgreaterequal(__x, __y); } - - constexpr bool - isgreaterequal(long double __x, long double __y) - { return __builtin_isgreaterequal(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename - __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value - && __is_arithmetic<_Up>::__value), bool>::__type - isgreaterequal(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return __builtin_isgreaterequal(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isless(float __x, float __y) - { return __builtin_isless(__x, __y); } - - constexpr bool - isless(double __x, double __y) - { return __builtin_isless(__x, __y); } - - constexpr bool - isless(long double __x, long double __y) - { return __builtin_isless(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename - __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value - && __is_arithmetic<_Up>::__value), bool>::__type - isless(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return __builtin_isless(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - islessequal(float __x, float __y) - { return __builtin_islessequal(__x, __y); } - - constexpr bool - islessequal(double __x, double __y) - { return __builtin_islessequal(__x, __y); } - - constexpr bool - islessequal(long double __x, long double __y) - { return __builtin_islessequal(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename - __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value - && __is_arithmetic<_Up>::__value), bool>::__type - islessequal(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return __builtin_islessequal(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - islessgreater(float __x, float __y) - { return __builtin_islessgreater(__x, __y); } - - constexpr bool - islessgreater(double __x, double __y) - { return __builtin_islessgreater(__x, __y); } - - constexpr bool - islessgreater(long double __x, long double __y) - { return __builtin_islessgreater(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename - __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value - && __is_arithmetic<_Up>::__value), bool>::__type - islessgreater(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return __builtin_islessgreater(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr bool - isunordered(float __x, float __y) - { return __builtin_isunordered(__x, __y); } - - constexpr bool - isunordered(double __x, double __y) - { return __builtin_isunordered(__x, __y); } - - constexpr bool - isunordered(long double __x, long double __y) - { return __builtin_isunordered(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename - __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value - && __is_arithmetic<_Up>::__value), bool>::__type - isunordered(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return __builtin_isunordered(__type(__x), __type(__y)); - } -#endif - -#else - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - fpclassify(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, - FP_SUBNORMAL, FP_ZERO, __type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isfinite(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isfinite(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isinf(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isinf(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isnan(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isnan(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isnormal(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isnormal(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - signbit(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_signbit(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isgreater(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isgreater(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isgreaterequal(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isgreaterequal(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isless(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isless(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - islessequal(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_islessequal(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - islessgreater(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_islessgreater(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isunordered(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isunordered(__type(__f1), __type(__f2)); - } - -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */ -#endif - -#if __cplusplus >= 201103L - -#ifdef _GLIBCXX_USE_C99_MATH_TR1 - -#undef acosh -#undef acoshf -#undef acoshl -#undef asinh -#undef asinhf -#undef asinhl -#undef atanh -#undef atanhf -#undef atanhl -#undef cbrt -#undef cbrtf -#undef cbrtl -#undef copysign -#undef copysignf -#undef copysignl -#undef erf -#undef erff -#undef erfl -#undef erfc -#undef erfcf -#undef erfcl -#undef exp2 -#undef exp2f -#undef exp2l -#undef expm1 -#undef expm1f -#undef expm1l -#undef fdim -#undef fdimf -#undef fdiml -#undef fma -#undef fmaf -#undef fmal -#undef fmax -#undef fmaxf -#undef fmaxl -#undef fmin -#undef fminf -#undef fminl -#undef hypot -#undef hypotf -#undef hypotl -#undef ilogb -#undef ilogbf -#undef ilogbl -#undef lgamma -#undef lgammaf -#undef lgammal -#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS -#undef llrint -#undef llrintf -#undef llrintl -#undef llround -#undef llroundf -#undef llroundl -#endif -#undef log1p -#undef log1pf -#undef log1pl -#undef log2 -#undef log2f -#undef log2l -#undef logb -#undef logbf -#undef logbl -#undef lrint -#undef lrintf -#undef lrintl -#undef lround -#undef lroundf -#undef lroundl -#undef nan -#undef nanf -#undef nanl -#undef nearbyint -#undef nearbyintf -#undef nearbyintl -#undef nextafter -#undef nextafterf -#undef nextafterl -#undef nexttoward -#undef nexttowardf -#undef nexttowardl -#undef remainder -#undef remainderf -#undef remainderl -#undef remquo -#undef remquof -#undef remquol -#undef rint -#undef rintf -#undef rintl -#undef round -#undef roundf -#undef roundl -#undef scalbln -#undef scalblnf -#undef scalblnl -#undef scalbn -#undef scalbnf -#undef scalbnl -#undef tgamma -#undef tgammaf -#undef tgammal -#undef trunc -#undef truncf -#undef truncl - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // types - using ::double_t; - using ::float_t; - - // functions - using ::acosh; - using ::acoshf; - using ::acoshl; - - using ::asinh; - using ::asinhf; - using ::asinhl; - - using ::atanh; - using ::atanhf; - using ::atanhl; - - using ::cbrt; - using ::cbrtf; - using ::cbrtl; - - using ::copysign; - using ::copysignf; - using ::copysignl; - - using ::erf; - using ::erff; - using ::erfl; - - using ::erfc; - using ::erfcf; - using ::erfcl; - - using ::exp2; - using ::exp2f; - using ::exp2l; - - using ::expm1; - using ::expm1f; - using ::expm1l; - - using ::fdim; - using ::fdimf; - using ::fdiml; - - using ::fma; - using ::fmaf; - using ::fmal; - - using ::fmax; - using ::fmaxf; - using ::fmaxl; - - using ::fmin; - using ::fminf; - using ::fminl; - - using ::hypot; - using ::hypotf; - using ::hypotl; - - using ::ilogb; - using ::ilogbf; - using ::ilogbl; - - using ::lgamma; - using ::lgammaf; - using ::lgammal; - -#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS - using ::llrint; - using ::llrintf; - using ::llrintl; - - using ::llround; - using ::llroundf; - using ::llroundl; -#endif - - using ::log1p; - using ::log1pf; - using ::log1pl; - - using ::log2; - using ::log2f; - using ::log2l; - - using ::logb; - using ::logbf; - using ::logbl; - - using ::lrint; - using ::lrintf; - using ::lrintl; - - using ::lround; - using ::lroundf; - using ::lroundl; - - using ::nan; - using ::nanf; - using ::nanl; - - using ::nearbyint; - using ::nearbyintf; - using ::nearbyintl; - - using ::nextafter; - using ::nextafterf; - using ::nextafterl; - - using ::nexttoward; - using ::nexttowardf; - using ::nexttowardl; - - using ::remainder; - using ::remainderf; - using ::remainderl; - - using ::remquo; - using ::remquof; - using ::remquol; - - using ::rint; - using ::rintf; - using ::rintl; - - using ::round; - using ::roundf; - using ::roundl; - - using ::scalbln; - using ::scalblnf; - using ::scalblnl; - - using ::scalbn; - using ::scalbnf; - using ::scalbnl; - - using ::tgamma; - using ::tgammaf; - using ::tgammal; - - using ::trunc; - using ::truncf; - using ::truncl; - - /// Additional overloads. -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - acosh(float __x) - { return __builtin_acoshf(__x); } - - constexpr long double - acosh(long double __x) - { return __builtin_acoshl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - acosh(_Tp __x) - { return __builtin_acosh(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - asinh(float __x) - { return __builtin_asinhf(__x); } - - constexpr long double - asinh(long double __x) - { return __builtin_asinhl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - asinh(_Tp __x) - { return __builtin_asinh(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - atanh(float __x) - { return __builtin_atanhf(__x); } - - constexpr long double - atanh(long double __x) - { return __builtin_atanhl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - atanh(_Tp __x) - { return __builtin_atanh(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - cbrt(float __x) - { return __builtin_cbrtf(__x); } - - constexpr long double - cbrt(long double __x) - { return __builtin_cbrtl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - cbrt(_Tp __x) - { return __builtin_cbrt(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - copysign(float __x, float __y) - { return __builtin_copysignf(__x, __y); } - - constexpr long double - copysign(long double __x, long double __y) - { return __builtin_copysignl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - copysign(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return copysign(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - erf(float __x) - { return __builtin_erff(__x); } - - constexpr long double - erf(long double __x) - { return __builtin_erfl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - erf(_Tp __x) - { return __builtin_erf(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - erfc(float __x) - { return __builtin_erfcf(__x); } - - constexpr long double - erfc(long double __x) - { return __builtin_erfcl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - erfc(_Tp __x) - { return __builtin_erfc(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - exp2(float __x) - { return __builtin_exp2f(__x); } - - constexpr long double - exp2(long double __x) - { return __builtin_exp2l(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - exp2(_Tp __x) - { return __builtin_exp2(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - expm1(float __x) - { return __builtin_expm1f(__x); } - - constexpr long double - expm1(long double __x) - { return __builtin_expm1l(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - expm1(_Tp __x) - { return __builtin_expm1(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - fdim(float __x, float __y) - { return __builtin_fdimf(__x, __y); } - - constexpr long double - fdim(long double __x, long double __y) - { return __builtin_fdiml(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fdim(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fdim(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - fma(float __x, float __y, float __z) - { return __builtin_fmaf(__x, __y, __z); } - - constexpr long double - fma(long double __x, long double __y, long double __z) - { return __builtin_fmal(__x, __y, __z); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type - fma(_Tp __x, _Up __y, _Vp __z) - { - typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; - return fma(__type(__x), __type(__y), __type(__z)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - fmax(float __x, float __y) - { return __builtin_fmaxf(__x, __y); } - - constexpr long double - fmax(long double __x, long double __y) - { return __builtin_fmaxl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fmax(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fmax(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - fmin(float __x, float __y) - { return __builtin_fminf(__x, __y); } - - constexpr long double - fmin(long double __x, long double __y) - { return __builtin_fminl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fmin(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fmin(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - hypot(float __x, float __y) - { return __builtin_hypotf(__x, __y); } - - constexpr long double - hypot(long double __x, long double __y) - { return __builtin_hypotl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - hypot(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return hypot(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr int - ilogb(float __x) - { return __builtin_ilogbf(__x); } - - constexpr int - ilogb(long double __x) - { return __builtin_ilogbl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr - typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - int>::__type - ilogb(_Tp __x) - { return __builtin_ilogb(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - lgamma(float __x) - { return __builtin_lgammaf(__x); } - - constexpr long double - lgamma(long double __x) - { return __builtin_lgammal(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - lgamma(_Tp __x) - { return __builtin_lgamma(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr long long - llrint(float __x) - { return __builtin_llrintf(__x); } - - constexpr long long - llrint(long double __x) - { return __builtin_llrintl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long long>::__type - llrint(_Tp __x) - { return __builtin_llrint(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr long long - llround(float __x) - { return __builtin_llroundf(__x); } - - constexpr long long - llround(long double __x) - { return __builtin_llroundl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long long>::__type - llround(_Tp __x) - { return __builtin_llround(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - log1p(float __x) - { return __builtin_log1pf(__x); } - - constexpr long double - log1p(long double __x) - { return __builtin_log1pl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - log1p(_Tp __x) - { return __builtin_log1p(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - // DR 568. - constexpr float - log2(float __x) - { return __builtin_log2f(__x); } - - constexpr long double - log2(long double __x) - { return __builtin_log2l(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - log2(_Tp __x) - { return __builtin_log2(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - logb(float __x) - { return __builtin_logbf(__x); } - - constexpr long double - logb(long double __x) - { return __builtin_logbl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - logb(_Tp __x) - { return __builtin_logb(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr long - lrint(float __x) - { return __builtin_lrintf(__x); } - - constexpr long - lrint(long double __x) - { return __builtin_lrintl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long>::__type - lrint(_Tp __x) - { return __builtin_lrint(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr long - lround(float __x) - { return __builtin_lroundf(__x); } - - constexpr long - lround(long double __x) - { return __builtin_lroundl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long>::__type - lround(_Tp __x) - { return __builtin_lround(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - nearbyint(float __x) - { return __builtin_nearbyintf(__x); } - - constexpr long double - nearbyint(long double __x) - { return __builtin_nearbyintl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - nearbyint(_Tp __x) - { return __builtin_nearbyint(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - nextafter(float __x, float __y) - { return __builtin_nextafterf(__x, __y); } - - constexpr long double - nextafter(long double __x, long double __y) - { return __builtin_nextafterl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - nextafter(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return nextafter(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - nexttoward(float __x, long double __y) - { return __builtin_nexttowardf(__x, __y); } - - constexpr long double - nexttoward(long double __x, long double __y) - { return __builtin_nexttowardl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - nexttoward(_Tp __x, long double __y) - { return __builtin_nexttoward(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - remainder(float __x, float __y) - { return __builtin_remainderf(__x, __y); } - - constexpr long double - remainder(long double __x, long double __y) - { return __builtin_remainderl(__x, __y); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - remainder(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return remainder(__type(__x), __type(__y)); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - remquo(float __x, float __y, int* __pquo) - { return __builtin_remquof(__x, __y, __pquo); } - - inline long double - remquo(long double __x, long double __y, int* __pquo) - { return __builtin_remquol(__x, __y, __pquo); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - remquo(_Tp __x, _Up __y, int* __pquo) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return remquo(__type(__x), __type(__y), __pquo); - } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - rint(float __x) - { return __builtin_rintf(__x); } - - constexpr long double - rint(long double __x) - { return __builtin_rintl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - rint(_Tp __x) - { return __builtin_rint(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - round(float __x) - { return __builtin_roundf(__x); } - - constexpr long double - round(long double __x) - { return __builtin_roundl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - round(_Tp __x) - { return __builtin_round(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - scalbln(float __x, long __ex) - { return __builtin_scalblnf(__x, __ex); } - - constexpr long double - scalbln(long double __x, long __ex) - { return __builtin_scalblnl(__x, __ex); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - scalbln(_Tp __x, long __ex) - { return __builtin_scalbln(__x, __ex); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - scalbn(float __x, int __ex) - { return __builtin_scalbnf(__x, __ex); } - - constexpr long double - scalbn(long double __x, int __ex) - { return __builtin_scalbnl(__x, __ex); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - scalbn(_Tp __x, int __ex) - { return __builtin_scalbn(__x, __ex); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - tgamma(float __x) - { return __builtin_tgammaf(__x); } - - constexpr long double - tgamma(long double __x) - { return __builtin_tgammal(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - tgamma(_Tp __x) - { return __builtin_tgamma(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - constexpr float - trunc(float __x) - { return __builtin_truncf(__x); } - - constexpr long double - trunc(long double __x) - { return __builtin_truncl(__x); } -#endif - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT - template - constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - trunc(_Tp __x) - { return __builtin_trunc(__x); } -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif // _GLIBCXX_USE_C99_MATH_TR1 - -#endif // C++11 - -#if __cplusplus > 201402L -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // [c.math.hypot3], three-dimensional hypotenuse -#define __cpp_lib_hypot 201603 - - template - inline _Tp - __hypot3(_Tp __x, _Tp __y, _Tp __z) - { - __x = std::abs(__x); - __y = std::abs(__y); - __z = std::abs(__z); - if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x) - return __a * std::sqrt((__x / __a) * (__x / __a) - + (__y / __a) * (__y / __a) - + (__z / __a) * (__z / __a)); - else - return {}; - } - - inline float - hypot(float __x, float __y, float __z) - { return std::__hypot3(__x, __y, __z); } - - inline double - hypot(double __x, double __y, double __z) - { return std::__hypot3(__x, __y, __z); } - - inline long double - hypot(long double __x, long double __y, long double __z) - { return std::__hypot3(__x, __y, __z); } - - template - typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type - hypot(_Tp __x, _Up __y, _Vp __z) - { - using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type; - return std::__hypot3<__type>(__x, __y, __z); - } -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace -#endif // C++17 - - -#if _GLIBCXX_USE_STD_SPEC_FUNCS -# include -#endif - -} // extern "C++" - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/complex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/complex deleted file mode 100644 index 22107cb22..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/complex +++ /dev/null @@ -1,1986 +0,0 @@ -// The template and inlines for the -*- C++ -*- complex number classes. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/complex - * This is a Standard C++ Library header. - */ - -// -// ISO C++ 14882: 26.2 Complex Numbers -// Note: this is not a conforming implementation. -// Initially implemented by Ulrich Drepper -// Improved by Gabriel Dos Reis -// - -#ifndef _GLIBCXX_COMPLEX -#define _GLIBCXX_COMPLEX 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include - -// Get rid of a macro possibly defined in -#undef complex - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup complex_numbers Complex Numbers - * @ingroup numerics - * - * Classes and functions for complex numbers. - * @{ - */ - - // Forward declarations. - template class complex; - template<> class complex; - template<> class complex; - template<> class complex; - - /// Return magnitude of @a z. - template _Tp abs(const complex<_Tp>&); - /// Return phase angle of @a z. - template _Tp arg(const complex<_Tp>&); - /// Return @a z magnitude squared. - template _Tp norm(const complex<_Tp>&); - - /// Return complex conjugate of @a z. - template complex<_Tp> conj(const complex<_Tp>&); - /// Return complex with magnitude @a rho and angle @a theta. - template complex<_Tp> polar(const _Tp&, const _Tp& = 0); - - // Transcendentals: - /// Return complex cosine of @a z. - template complex<_Tp> cos(const complex<_Tp>&); - /// Return complex hyperbolic cosine of @a z. - template complex<_Tp> cosh(const complex<_Tp>&); - /// Return complex base e exponential of @a z. - template complex<_Tp> exp(const complex<_Tp>&); - /// Return complex natural logarithm of @a z. - template complex<_Tp> log(const complex<_Tp>&); - /// Return complex base 10 logarithm of @a z. - template complex<_Tp> log10(const complex<_Tp>&); - /// Return @a x to the @a y'th power. - template complex<_Tp> pow(const complex<_Tp>&, int); - /// Return @a x to the @a y'th power. - template complex<_Tp> pow(const complex<_Tp>&, const _Tp&); - /// Return @a x to the @a y'th power. - template complex<_Tp> pow(const complex<_Tp>&, - const complex<_Tp>&); - /// Return @a x to the @a y'th power. - template complex<_Tp> pow(const _Tp&, const complex<_Tp>&); - /// Return complex sine of @a z. - template complex<_Tp> sin(const complex<_Tp>&); - /// Return complex hyperbolic sine of @a z. - template complex<_Tp> sinh(const complex<_Tp>&); - /// Return complex square root of @a z. - template complex<_Tp> sqrt(const complex<_Tp>&); - /// Return complex tangent of @a z. - template complex<_Tp> tan(const complex<_Tp>&); - /// Return complex hyperbolic tangent of @a z. - template complex<_Tp> tanh(const complex<_Tp>&); - - - // 26.2.2 Primary template class complex - /** - * Template to represent complex numbers. - * - * Specializations for float, double, and long double are part of the - * library. Results with any other type are not guaranteed. - * - * @param Tp Type of real and imaginary values. - */ - template - struct complex - { - /// Value typedef. - typedef _Tp value_type; - - /// Default constructor. First parameter is x, second parameter is y. - /// Unspecified parameters default to 0. - _GLIBCXX_CONSTEXPR complex(const _Tp& __r = _Tp(), const _Tp& __i = _Tp()) - : _M_real(__r), _M_imag(__i) { } - - // Let the compiler synthesize the copy constructor -#if __cplusplus >= 201103L - constexpr complex(const complex&) = default; -#endif - - /// Converting constructor. - template - _GLIBCXX_CONSTEXPR complex(const complex<_Up>& __z) - : _M_real(__z.real()), _M_imag(__z.imag()) { } - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - _GLIBCXX_ABI_TAG_CXX11 - constexpr _Tp - real() const { return _M_real; } - - _GLIBCXX_ABI_TAG_CXX11 - constexpr _Tp - imag() const { return _M_imag; } -#else - /// Return real part of complex number. - _Tp& - real() { return _M_real; } - - /// Return real part of complex number. - const _Tp& - real() const { return _M_real; } - - /// Return imaginary part of complex number. - _Tp& - imag() { return _M_imag; } - - /// Return imaginary part of complex number. - const _Tp& - imag() const { return _M_imag; } -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - void - real(_Tp __val) { _M_real = __val; } - - void - imag(_Tp __val) { _M_imag = __val; } - - /// Assign a scalar to this complex number. - complex<_Tp>& operator=(const _Tp&); - - /// Add a scalar to this complex number. - // 26.2.5/1 - complex<_Tp>& - operator+=(const _Tp& __t) - { - _M_real += __t; - return *this; - } - - /// Subtract a scalar from this complex number. - // 26.2.5/3 - complex<_Tp>& - operator-=(const _Tp& __t) - { - _M_real -= __t; - return *this; - } - - /// Multiply this complex number by a scalar. - complex<_Tp>& operator*=(const _Tp&); - /// Divide this complex number by a scalar. - complex<_Tp>& operator/=(const _Tp&); - - // Let the compiler synthesize the copy assignment operator -#if __cplusplus >= 201103L - complex& operator=(const complex&) = default; -#endif - - /// Assign another complex number to this one. - template - complex<_Tp>& operator=(const complex<_Up>&); - /// Add another complex number to this one. - template - complex<_Tp>& operator+=(const complex<_Up>&); - /// Subtract another complex number from this one. - template - complex<_Tp>& operator-=(const complex<_Up>&); - /// Multiply this complex number by another. - template - complex<_Tp>& operator*=(const complex<_Up>&); - /// Divide this complex number by another. - template - complex<_Tp>& operator/=(const complex<_Up>&); - - _GLIBCXX_CONSTEXPR complex __rep() const - { return *this; } - - private: - _Tp _M_real; - _Tp _M_imag; - }; - - template - complex<_Tp>& - complex<_Tp>::operator=(const _Tp& __t) - { - _M_real = __t; - _M_imag = _Tp(); - return *this; - } - - // 26.2.5/5 - template - complex<_Tp>& - complex<_Tp>::operator*=(const _Tp& __t) - { - _M_real *= __t; - _M_imag *= __t; - return *this; - } - - // 26.2.5/7 - template - complex<_Tp>& - complex<_Tp>::operator/=(const _Tp& __t) - { - _M_real /= __t; - _M_imag /= __t; - return *this; - } - - template - template - complex<_Tp>& - complex<_Tp>::operator=(const complex<_Up>& __z) - { - _M_real = __z.real(); - _M_imag = __z.imag(); - return *this; - } - - // 26.2.5/9 - template - template - complex<_Tp>& - complex<_Tp>::operator+=(const complex<_Up>& __z) - { - _M_real += __z.real(); - _M_imag += __z.imag(); - return *this; - } - - // 26.2.5/11 - template - template - complex<_Tp>& - complex<_Tp>::operator-=(const complex<_Up>& __z) - { - _M_real -= __z.real(); - _M_imag -= __z.imag(); - return *this; - } - - // 26.2.5/13 - // XXX: This is a grammar school implementation. - template - template - complex<_Tp>& - complex<_Tp>::operator*=(const complex<_Up>& __z) - { - const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); - _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); - _M_real = __r; - return *this; - } - - // 26.2.5/15 - // XXX: This is a grammar school implementation. - template - template - complex<_Tp>& - complex<_Tp>::operator/=(const complex<_Up>& __z) - { - const _Tp __r = _M_real * __z.real() + _M_imag * __z.imag(); - const _Tp __n = std::norm(__z); - _M_imag = (_M_imag * __z.real() - _M_real * __z.imag()) / __n; - _M_real = __r / __n; - return *this; - } - - // Operators: - //@{ - /// Return new complex value @a x plus @a y. - template - inline complex<_Tp> - operator+(const complex<_Tp>& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __x; - __r += __y; - return __r; - } - - template - inline complex<_Tp> - operator+(const complex<_Tp>& __x, const _Tp& __y) - { - complex<_Tp> __r = __x; - __r += __y; - return __r; - } - - template - inline complex<_Tp> - operator+(const _Tp& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __y; - __r += __x; - return __r; - } - //@} - - //@{ - /// Return new complex value @a x minus @a y. - template - inline complex<_Tp> - operator-(const complex<_Tp>& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __x; - __r -= __y; - return __r; - } - - template - inline complex<_Tp> - operator-(const complex<_Tp>& __x, const _Tp& __y) - { - complex<_Tp> __r = __x; - __r -= __y; - return __r; - } - - template - inline complex<_Tp> - operator-(const _Tp& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r(__x, -__y.imag()); - __r -= __y.real(); - return __r; - } - //@} - - //@{ - /// Return new complex value @a x times @a y. - template - inline complex<_Tp> - operator*(const complex<_Tp>& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __x; - __r *= __y; - return __r; - } - - template - inline complex<_Tp> - operator*(const complex<_Tp>& __x, const _Tp& __y) - { - complex<_Tp> __r = __x; - __r *= __y; - return __r; - } - - template - inline complex<_Tp> - operator*(const _Tp& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __y; - __r *= __x; - return __r; - } - //@} - - //@{ - /// Return new complex value @a x divided by @a y. - template - inline complex<_Tp> - operator/(const complex<_Tp>& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __x; - __r /= __y; - return __r; - } - - template - inline complex<_Tp> - operator/(const complex<_Tp>& __x, const _Tp& __y) - { - complex<_Tp> __r = __x; - __r /= __y; - return __r; - } - - template - inline complex<_Tp> - operator/(const _Tp& __x, const complex<_Tp>& __y) - { - complex<_Tp> __r = __x; - __r /= __y; - return __r; - } - //@} - - /// Return @a x. - template - inline complex<_Tp> - operator+(const complex<_Tp>& __x) - { return __x; } - - /// Return complex negation of @a x. - template - inline complex<_Tp> - operator-(const complex<_Tp>& __x) - { return complex<_Tp>(-__x.real(), -__x.imag()); } - - //@{ - /// Return true if @a x is equal to @a y. - template - inline _GLIBCXX_CONSTEXPR bool - operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) - { return __x.real() == __y.real() && __x.imag() == __y.imag(); } - - template - inline _GLIBCXX_CONSTEXPR bool - operator==(const complex<_Tp>& __x, const _Tp& __y) - { return __x.real() == __y && __x.imag() == _Tp(); } - - template - inline _GLIBCXX_CONSTEXPR bool - operator==(const _Tp& __x, const complex<_Tp>& __y) - { return __x == __y.real() && _Tp() == __y.imag(); } - //@} - - //@{ - /// Return false if @a x is equal to @a y. - template - inline _GLIBCXX_CONSTEXPR bool - operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y) - { return __x.real() != __y.real() || __x.imag() != __y.imag(); } - - template - inline _GLIBCXX_CONSTEXPR bool - operator!=(const complex<_Tp>& __x, const _Tp& __y) - { return __x.real() != __y || __x.imag() != _Tp(); } - - template - inline _GLIBCXX_CONSTEXPR bool - operator!=(const _Tp& __x, const complex<_Tp>& __y) - { return __x != __y.real() || _Tp() != __y.imag(); } - //@} - - /// Extraction operator for complex values. - template - basic_istream<_CharT, _Traits>& - operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x) - { - _Tp __re_x, __im_x; - _CharT __ch = _CharT(); - __is >> __ch; - if (__ch == '(') - { - __is >> __re_x >> __ch; - if (__ch == ',') - { - __is >> __im_x >> __ch; - if (__ch == ')') - __x = complex<_Tp>(__re_x, __im_x); - else - __is.setstate(ios_base::failbit); - } - else if (__ch == ')') - __x = __re_x; - else - __is.setstate(ios_base::failbit); - } - else if (__is) - { - __is.putback(__ch); - if (__is >> __re_x) - __x = __re_x; - else - __is.setstate(ios_base::failbit); - } - return __is; - } - - /// Insertion operator for complex values. - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x) - { - basic_ostringstream<_CharT, _Traits> __s; - __s.flags(__os.flags()); - __s.imbue(__os.getloc()); - __s.precision(__os.precision()); - __s << '(' << __x.real() << ',' << __x.imag() << ')'; - return __os << __s.str(); - } - - // Values -#if __cplusplus >= 201103L - template - constexpr _Tp - real(const complex<_Tp>& __z) - { return __z.real(); } - - template - constexpr _Tp - imag(const complex<_Tp>& __z) - { return __z.imag(); } -#else - template - inline _Tp& - real(complex<_Tp>& __z) - { return __z.real(); } - - template - inline const _Tp& - real(const complex<_Tp>& __z) - { return __z.real(); } - - template - inline _Tp& - imag(complex<_Tp>& __z) - { return __z.imag(); } - - template - inline const _Tp& - imag(const complex<_Tp>& __z) - { return __z.imag(); } -#endif - - // 26.2.7/3 abs(__z): Returns the magnitude of __z. - template - inline _Tp - __complex_abs(const complex<_Tp>& __z) - { - _Tp __x = __z.real(); - _Tp __y = __z.imag(); - const _Tp __s = std::max(abs(__x), abs(__y)); - if (__s == _Tp()) // well ... - return __s; - __x /= __s; - __y /= __s; - return __s * sqrt(__x * __x + __y * __y); - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline float - __complex_abs(__complex__ float __z) { return __builtin_cabsf(__z); } - - inline double - __complex_abs(__complex__ double __z) { return __builtin_cabs(__z); } - - inline long double - __complex_abs(const __complex__ long double& __z) - { return __builtin_cabsl(__z); } - - template - inline _Tp - abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); } -#else - template - inline _Tp - abs(const complex<_Tp>& __z) { return __complex_abs(__z); } -#endif - - - // 26.2.7/4: arg(__z): Returns the phase angle of __z. - template - inline _Tp - __complex_arg(const complex<_Tp>& __z) - { return atan2(__z.imag(), __z.real()); } - -#if _GLIBCXX_USE_C99_COMPLEX - inline float - __complex_arg(__complex__ float __z) { return __builtin_cargf(__z); } - - inline double - __complex_arg(__complex__ double __z) { return __builtin_carg(__z); } - - inline long double - __complex_arg(const __complex__ long double& __z) - { return __builtin_cargl(__z); } - - template - inline _Tp - arg(const complex<_Tp>& __z) { return __complex_arg(__z.__rep()); } -#else - template - inline _Tp - arg(const complex<_Tp>& __z) { return __complex_arg(__z); } -#endif - - // 26.2.7/5: norm(__z) returns the squared magnitude of __z. - // As defined, norm() is -not- a norm is the common mathematical - // sense used in numerics. The helper class _Norm_helper<> tries to - // distinguish between builtin floating point and the rest, so as - // to deliver an answer as close as possible to the real value. - template - struct _Norm_helper - { - template - static inline _Tp _S_do_it(const complex<_Tp>& __z) - { - const _Tp __x = __z.real(); - const _Tp __y = __z.imag(); - return __x * __x + __y * __y; - } - }; - - template<> - struct _Norm_helper - { - template - static inline _Tp _S_do_it(const complex<_Tp>& __z) - { - _Tp __res = std::abs(__z); - return __res * __res; - } - }; - - template - inline _Tp - norm(const complex<_Tp>& __z) - { - return _Norm_helper<__is_floating<_Tp>::__value - && !_GLIBCXX_FAST_MATH>::_S_do_it(__z); - } - - template - inline complex<_Tp> - polar(const _Tp& __rho, const _Tp& __theta) - { - __glibcxx_assert( __rho >= 0 ); - return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); - } - - template - inline complex<_Tp> - conj(const complex<_Tp>& __z) - { return complex<_Tp>(__z.real(), -__z.imag()); } - - // Transcendentals - - // 26.2.8/1 cos(__z): Returns the cosine of __z. - template - inline complex<_Tp> - __complex_cos(const complex<_Tp>& __z) - { - const _Tp __x = __z.real(); - const _Tp __y = __z.imag(); - return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y)); - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_cos(__complex__ float __z) { return __builtin_ccosf(__z); } - - inline __complex__ double - __complex_cos(__complex__ double __z) { return __builtin_ccos(__z); } - - inline __complex__ long double - __complex_cos(const __complex__ long double& __z) - { return __builtin_ccosl(__z); } - - template - inline complex<_Tp> - cos(const complex<_Tp>& __z) { return __complex_cos(__z.__rep()); } -#else - template - inline complex<_Tp> - cos(const complex<_Tp>& __z) { return __complex_cos(__z); } -#endif - - // 26.2.8/2 cosh(__z): Returns the hyperbolic cosine of __z. - template - inline complex<_Tp> - __complex_cosh(const complex<_Tp>& __z) - { - const _Tp __x = __z.real(); - const _Tp __y = __z.imag(); - return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y)); - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_cosh(__complex__ float __z) { return __builtin_ccoshf(__z); } - - inline __complex__ double - __complex_cosh(__complex__ double __z) { return __builtin_ccosh(__z); } - - inline __complex__ long double - __complex_cosh(const __complex__ long double& __z) - { return __builtin_ccoshl(__z); } - - template - inline complex<_Tp> - cosh(const complex<_Tp>& __z) { return __complex_cosh(__z.__rep()); } -#else - template - inline complex<_Tp> - cosh(const complex<_Tp>& __z) { return __complex_cosh(__z); } -#endif - - // 26.2.8/3 exp(__z): Returns the complex base e exponential of x - template - inline complex<_Tp> - __complex_exp(const complex<_Tp>& __z) - { return std::polar<_Tp>(exp(__z.real()), __z.imag()); } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_exp(__complex__ float __z) { return __builtin_cexpf(__z); } - - inline __complex__ double - __complex_exp(__complex__ double __z) { return __builtin_cexp(__z); } - - inline __complex__ long double - __complex_exp(const __complex__ long double& __z) - { return __builtin_cexpl(__z); } - - template - inline complex<_Tp> - exp(const complex<_Tp>& __z) { return __complex_exp(__z.__rep()); } -#else - template - inline complex<_Tp> - exp(const complex<_Tp>& __z) { return __complex_exp(__z); } -#endif - - // 26.2.8/5 log(__z): Returns the natural complex logarithm of __z. - // The branch cut is along the negative axis. - template - inline complex<_Tp> - __complex_log(const complex<_Tp>& __z) - { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_log(__complex__ float __z) { return __builtin_clogf(__z); } - - inline __complex__ double - __complex_log(__complex__ double __z) { return __builtin_clog(__z); } - - inline __complex__ long double - __complex_log(const __complex__ long double& __z) - { return __builtin_clogl(__z); } - - template - inline complex<_Tp> - log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); } -#else - template - inline complex<_Tp> - log(const complex<_Tp>& __z) { return __complex_log(__z); } -#endif - - template - inline complex<_Tp> - log10(const complex<_Tp>& __z) - { return std::log(__z) / log(_Tp(10.0)); } - - // 26.2.8/10 sin(__z): Returns the sine of __z. - template - inline complex<_Tp> - __complex_sin(const complex<_Tp>& __z) - { - const _Tp __x = __z.real(); - const _Tp __y = __z.imag(); - return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y)); - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_sin(__complex__ float __z) { return __builtin_csinf(__z); } - - inline __complex__ double - __complex_sin(__complex__ double __z) { return __builtin_csin(__z); } - - inline __complex__ long double - __complex_sin(const __complex__ long double& __z) - { return __builtin_csinl(__z); } - - template - inline complex<_Tp> - sin(const complex<_Tp>& __z) { return __complex_sin(__z.__rep()); } -#else - template - inline complex<_Tp> - sin(const complex<_Tp>& __z) { return __complex_sin(__z); } -#endif - - // 26.2.8/11 sinh(__z): Returns the hyperbolic sine of __z. - template - inline complex<_Tp> - __complex_sinh(const complex<_Tp>& __z) - { - const _Tp __x = __z.real(); - const _Tp __y = __z.imag(); - return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y)); - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_sinh(__complex__ float __z) { return __builtin_csinhf(__z); } - - inline __complex__ double - __complex_sinh(__complex__ double __z) { return __builtin_csinh(__z); } - - inline __complex__ long double - __complex_sinh(const __complex__ long double& __z) - { return __builtin_csinhl(__z); } - - template - inline complex<_Tp> - sinh(const complex<_Tp>& __z) { return __complex_sinh(__z.__rep()); } -#else - template - inline complex<_Tp> - sinh(const complex<_Tp>& __z) { return __complex_sinh(__z); } -#endif - - // 26.2.8/13 sqrt(__z): Returns the complex square root of __z. - // The branch cut is on the negative axis. - template - complex<_Tp> - __complex_sqrt(const complex<_Tp>& __z) - { - _Tp __x = __z.real(); - _Tp __y = __z.imag(); - - if (__x == _Tp()) - { - _Tp __t = sqrt(abs(__y) / 2); - return complex<_Tp>(__t, __y < _Tp() ? -__t : __t); - } - else - { - _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x))); - _Tp __u = __t / 2; - return __x > _Tp() - ? complex<_Tp>(__u, __y / __t) - : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u); - } - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_sqrt(__complex__ float __z) { return __builtin_csqrtf(__z); } - - inline __complex__ double - __complex_sqrt(__complex__ double __z) { return __builtin_csqrt(__z); } - - inline __complex__ long double - __complex_sqrt(const __complex__ long double& __z) - { return __builtin_csqrtl(__z); } - - template - inline complex<_Tp> - sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z.__rep()); } -#else - template - inline complex<_Tp> - sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z); } -#endif - - // 26.2.8/14 tan(__z): Return the complex tangent of __z. - - template - inline complex<_Tp> - __complex_tan(const complex<_Tp>& __z) - { return std::sin(__z) / std::cos(__z); } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_tan(__complex__ float __z) { return __builtin_ctanf(__z); } - - inline __complex__ double - __complex_tan(__complex__ double __z) { return __builtin_ctan(__z); } - - inline __complex__ long double - __complex_tan(const __complex__ long double& __z) - { return __builtin_ctanl(__z); } - - template - inline complex<_Tp> - tan(const complex<_Tp>& __z) { return __complex_tan(__z.__rep()); } -#else - template - inline complex<_Tp> - tan(const complex<_Tp>& __z) { return __complex_tan(__z); } -#endif - - - // 26.2.8/15 tanh(__z): Returns the hyperbolic tangent of __z. - - template - inline complex<_Tp> - __complex_tanh(const complex<_Tp>& __z) - { return std::sinh(__z) / std::cosh(__z); } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_tanh(__complex__ float __z) { return __builtin_ctanhf(__z); } - - inline __complex__ double - __complex_tanh(__complex__ double __z) { return __builtin_ctanh(__z); } - - inline __complex__ long double - __complex_tanh(const __complex__ long double& __z) - { return __builtin_ctanhl(__z); } - - template - inline complex<_Tp> - tanh(const complex<_Tp>& __z) { return __complex_tanh(__z.__rep()); } -#else - template - inline complex<_Tp> - tanh(const complex<_Tp>& __z) { return __complex_tanh(__z); } -#endif - - - // 26.2.8/9 pow(__x, __y): Returns the complex power base of __x - // raised to the __y-th power. The branch - // cut is on the negative axis. - template - complex<_Tp> - __complex_pow_unsigned(complex<_Tp> __x, unsigned __n) - { - complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1); - - while (__n >>= 1) - { - __x *= __x; - if (__n % 2) - __y *= __x; - } - - return __y; - } - - // In C++11 mode we used to implement the resolution of - // DR 844. complex pow return type is ambiguous. - // thus the following overload was disabled in that mode. However, doing - // that causes all sorts of issues, see, for example: - // http://gcc.gnu.org/ml/libstdc++/2013-01/msg00058.html - // and also PR57974. - template - inline complex<_Tp> - pow(const complex<_Tp>& __z, int __n) - { - return __n < 0 - ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n) - : std::__complex_pow_unsigned(__z, __n); - } - - template - complex<_Tp> - pow(const complex<_Tp>& __x, const _Tp& __y) - { -#if ! _GLIBCXX_USE_C99_COMPLEX - if (__x == _Tp()) - return _Tp(); -#endif - if (__x.imag() == _Tp() && __x.real() > _Tp()) - return pow(__x.real(), __y); - - complex<_Tp> __t = std::log(__x); - return std::polar<_Tp>(exp(__y * __t.real()), __y * __t.imag()); - } - - template - inline complex<_Tp> - __complex_pow(const complex<_Tp>& __x, const complex<_Tp>& __y) - { return __x == _Tp() ? _Tp() : std::exp(__y * std::log(__x)); } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_pow(__complex__ float __x, __complex__ float __y) - { return __builtin_cpowf(__x, __y); } - - inline __complex__ double - __complex_pow(__complex__ double __x, __complex__ double __y) - { return __builtin_cpow(__x, __y); } - - inline __complex__ long double - __complex_pow(const __complex__ long double& __x, - const __complex__ long double& __y) - { return __builtin_cpowl(__x, __y); } - - template - inline complex<_Tp> - pow(const complex<_Tp>& __x, const complex<_Tp>& __y) - { return __complex_pow(__x.__rep(), __y.__rep()); } -#else - template - inline complex<_Tp> - pow(const complex<_Tp>& __x, const complex<_Tp>& __y) - { return __complex_pow(__x, __y); } -#endif - - template - inline complex<_Tp> - pow(const _Tp& __x, const complex<_Tp>& __y) - { - return __x > _Tp() ? std::polar<_Tp>(pow(__x, __y.real()), - __y.imag() * log(__x)) - : std::pow(complex<_Tp>(__x), __y); - } - - /// 26.2.3 complex specializations - /// complex specialization - template<> - struct complex - { - typedef float value_type; - typedef __complex__ float _ComplexT; - - _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } - - _GLIBCXX_CONSTEXPR complex(float __r = 0.0f, float __i = 0.0f) -#if __cplusplus >= 201103L - : _M_value{ __r, __i } { } -#else - { - __real__ _M_value = __r; - __imag__ _M_value = __i; - } -#endif - - explicit _GLIBCXX_CONSTEXPR complex(const complex&); - explicit _GLIBCXX_CONSTEXPR complex(const complex&); - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - __attribute ((__abi_tag__ ("cxx11"))) - constexpr float - real() const { return __real__ _M_value; } - - __attribute ((__abi_tag__ ("cxx11"))) - constexpr float - imag() const { return __imag__ _M_value; } -#else - float& - real() { return __real__ _M_value; } - - const float& - real() const { return __real__ _M_value; } - - float& - imag() { return __imag__ _M_value; } - - const float& - imag() const { return __imag__ _M_value; } -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - void - real(float __val) { __real__ _M_value = __val; } - - void - imag(float __val) { __imag__ _M_value = __val; } - - complex& - operator=(float __f) - { - _M_value = __f; - return *this; - } - - complex& - operator+=(float __f) - { - _M_value += __f; - return *this; - } - - complex& - operator-=(float __f) - { - _M_value -= __f; - return *this; - } - - complex& - operator*=(float __f) - { - _M_value *= __f; - return *this; - } - - complex& - operator/=(float __f) - { - _M_value /= __f; - return *this; - } - - // Let the compiler synthesize the copy and assignment - // operator. It always does a pretty good job. - // complex& operator=(const complex&); - - template - complex& - operator=(const complex<_Tp>& __z) - { - __real__ _M_value = __z.real(); - __imag__ _M_value = __z.imag(); - return *this; - } - - template - complex& - operator+=(const complex<_Tp>& __z) - { - __real__ _M_value += __z.real(); - __imag__ _M_value += __z.imag(); - return *this; - } - - template - complex& - operator-=(const complex<_Tp>& __z) - { - __real__ _M_value -= __z.real(); - __imag__ _M_value -= __z.imag(); - return *this; - } - - template - complex& - operator*=(const complex<_Tp>& __z) - { - _ComplexT __t; - __real__ __t = __z.real(); - __imag__ __t = __z.imag(); - _M_value *= __t; - return *this; - } - - template - complex& - operator/=(const complex<_Tp>& __z) - { - _ComplexT __t; - __real__ __t = __z.real(); - __imag__ __t = __z.imag(); - _M_value /= __t; - return *this; - } - - _GLIBCXX_CONSTEXPR _ComplexT __rep() const { return _M_value; } - - private: - _ComplexT _M_value; - }; - - /// 26.2.3 complex specializations - /// complex specialization - template<> - struct complex - { - typedef double value_type; - typedef __complex__ double _ComplexT; - - _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } - - _GLIBCXX_CONSTEXPR complex(double __r = 0.0, double __i = 0.0) -#if __cplusplus >= 201103L - : _M_value{ __r, __i } { } -#else - { - __real__ _M_value = __r; - __imag__ _M_value = __i; - } -#endif - - _GLIBCXX_CONSTEXPR complex(const complex& __z) - : _M_value(__z.__rep()) { } - - explicit _GLIBCXX_CONSTEXPR complex(const complex&); - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - __attribute ((__abi_tag__ ("cxx11"))) - constexpr double - real() const { return __real__ _M_value; } - - __attribute ((__abi_tag__ ("cxx11"))) - constexpr double - imag() const { return __imag__ _M_value; } -#else - double& - real() { return __real__ _M_value; } - - const double& - real() const { return __real__ _M_value; } - - double& - imag() { return __imag__ _M_value; } - - const double& - imag() const { return __imag__ _M_value; } -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - void - real(double __val) { __real__ _M_value = __val; } - - void - imag(double __val) { __imag__ _M_value = __val; } - - complex& - operator=(double __d) - { - _M_value = __d; - return *this; - } - - complex& - operator+=(double __d) - { - _M_value += __d; - return *this; - } - - complex& - operator-=(double __d) - { - _M_value -= __d; - return *this; - } - - complex& - operator*=(double __d) - { - _M_value *= __d; - return *this; - } - - complex& - operator/=(double __d) - { - _M_value /= __d; - return *this; - } - - // The compiler will synthesize this, efficiently. - // complex& operator=(const complex&); - - template - complex& - operator=(const complex<_Tp>& __z) - { - __real__ _M_value = __z.real(); - __imag__ _M_value = __z.imag(); - return *this; - } - - template - complex& - operator+=(const complex<_Tp>& __z) - { - __real__ _M_value += __z.real(); - __imag__ _M_value += __z.imag(); - return *this; - } - - template - complex& - operator-=(const complex<_Tp>& __z) - { - __real__ _M_value -= __z.real(); - __imag__ _M_value -= __z.imag(); - return *this; - } - - template - complex& - operator*=(const complex<_Tp>& __z) - { - _ComplexT __t; - __real__ __t = __z.real(); - __imag__ __t = __z.imag(); - _M_value *= __t; - return *this; - } - - template - complex& - operator/=(const complex<_Tp>& __z) - { - _ComplexT __t; - __real__ __t = __z.real(); - __imag__ __t = __z.imag(); - _M_value /= __t; - return *this; - } - - _GLIBCXX_CONSTEXPR _ComplexT __rep() const { return _M_value; } - - private: - _ComplexT _M_value; - }; - - /// 26.2.3 complex specializations - /// complex specialization - template<> - struct complex - { - typedef long double value_type; - typedef __complex__ long double _ComplexT; - - _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } - - _GLIBCXX_CONSTEXPR complex(long double __r = 0.0L, - long double __i = 0.0L) -#if __cplusplus >= 201103L - : _M_value{ __r, __i } { } -#else - { - __real__ _M_value = __r; - __imag__ _M_value = __i; - } -#endif - - _GLIBCXX_CONSTEXPR complex(const complex& __z) - : _M_value(__z.__rep()) { } - - _GLIBCXX_CONSTEXPR complex(const complex& __z) - : _M_value(__z.__rep()) { } - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - __attribute ((__abi_tag__ ("cxx11"))) - constexpr long double - real() const { return __real__ _M_value; } - - __attribute ((__abi_tag__ ("cxx11"))) - constexpr long double - imag() const { return __imag__ _M_value; } -#else - long double& - real() { return __real__ _M_value; } - - const long double& - real() const { return __real__ _M_value; } - - long double& - imag() { return __imag__ _M_value; } - - const long double& - imag() const { return __imag__ _M_value; } -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 387. std::complex over-encapsulated. - void - real(long double __val) { __real__ _M_value = __val; } - - void - imag(long double __val) { __imag__ _M_value = __val; } - - complex& - operator=(long double __r) - { - _M_value = __r; - return *this; - } - - complex& - operator+=(long double __r) - { - _M_value += __r; - return *this; - } - - complex& - operator-=(long double __r) - { - _M_value -= __r; - return *this; - } - - complex& - operator*=(long double __r) - { - _M_value *= __r; - return *this; - } - - complex& - operator/=(long double __r) - { - _M_value /= __r; - return *this; - } - - // The compiler knows how to do this efficiently - // complex& operator=(const complex&); - - template - complex& - operator=(const complex<_Tp>& __z) - { - __real__ _M_value = __z.real(); - __imag__ _M_value = __z.imag(); - return *this; - } - - template - complex& - operator+=(const complex<_Tp>& __z) - { - __real__ _M_value += __z.real(); - __imag__ _M_value += __z.imag(); - return *this; - } - - template - complex& - operator-=(const complex<_Tp>& __z) - { - __real__ _M_value -= __z.real(); - __imag__ _M_value -= __z.imag(); - return *this; - } - - template - complex& - operator*=(const complex<_Tp>& __z) - { - _ComplexT __t; - __real__ __t = __z.real(); - __imag__ __t = __z.imag(); - _M_value *= __t; - return *this; - } - - template - complex& - operator/=(const complex<_Tp>& __z) - { - _ComplexT __t; - __real__ __t = __z.real(); - __imag__ __t = __z.imag(); - _M_value /= __t; - return *this; - } - - _GLIBCXX_CONSTEXPR _ComplexT __rep() const { return _M_value; } - - private: - _ComplexT _M_value; - }; - - // These bits have to be at the end of this file, so that the - // specializations have all been defined. - inline _GLIBCXX_CONSTEXPR - complex::complex(const complex& __z) - : _M_value(__z.__rep()) { } - - inline _GLIBCXX_CONSTEXPR - complex::complex(const complex& __z) - : _M_value(__z.__rep()) { } - - inline _GLIBCXX_CONSTEXPR - complex::complex(const complex& __z) - : _M_value(__z.__rep()) { } - - // Inhibit implicit instantiations for required instantiations, - // which are defined via explicit instantiations elsewhere. - // NB: This syntax is a GNU extension. -#if _GLIBCXX_EXTERN_TEMPLATE - extern template istream& operator>>(istream&, complex&); - extern template ostream& operator<<(ostream&, const complex&); - extern template istream& operator>>(istream&, complex&); - extern template ostream& operator<<(ostream&, const complex&); - extern template istream& operator>>(istream&, complex&); - extern template ostream& operator<<(ostream&, const complex&); - -#ifdef _GLIBCXX_USE_WCHAR_T - extern template wistream& operator>>(wistream&, complex&); - extern template wostream& operator<<(wostream&, const complex&); - extern template wistream& operator>>(wistream&, complex&); - extern template wostream& operator<<(wostream&, const complex&); - extern template wistream& operator>>(wistream&, complex&); - extern template wostream& operator<<(wostream&, const complex&); -#endif -#endif - - // @} group complex_numbers - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // See ext/type_traits.h for the primary template. - template - struct __promote_2, _Up> - { - public: - typedef std::complex::__type> __type; - }; - - template - struct __promote_2<_Tp, std::complex<_Up> > - { - public: - typedef std::complex::__type> __type; - }; - - template - struct __promote_2, std::complex<_Up> > - { - public: - typedef std::complex::__type> __type; - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#if __cplusplus >= 201103L - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Forward declarations. - template std::complex<_Tp> acos(const std::complex<_Tp>&); - template std::complex<_Tp> asin(const std::complex<_Tp>&); - template std::complex<_Tp> atan(const std::complex<_Tp>&); - - template std::complex<_Tp> acosh(const std::complex<_Tp>&); - template std::complex<_Tp> asinh(const std::complex<_Tp>&); - template std::complex<_Tp> atanh(const std::complex<_Tp>&); - // DR 595. - template _Tp fabs(const std::complex<_Tp>&); - - template - inline std::complex<_Tp> - __complex_acos(const std::complex<_Tp>& __z) - { - const std::complex<_Tp> __t = std::asin(__z); - const _Tp __pi_2 = 1.5707963267948966192313216916397514L; - return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag()); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_acos(__complex__ float __z) - { return __builtin_cacosf(__z); } - - inline __complex__ double - __complex_acos(__complex__ double __z) - { return __builtin_cacos(__z); } - - inline __complex__ long double - __complex_acos(const __complex__ long double& __z) - { return __builtin_cacosl(__z); } - - template - inline std::complex<_Tp> - acos(const std::complex<_Tp>& __z) - { return __complex_acos(__z.__rep()); } -#else - /// acos(__z) [8.1.2]. - // Effects: Behaves the same as C99 function cacos, defined - // in subclause 7.3.5.1. - template - inline std::complex<_Tp> - acos(const std::complex<_Tp>& __z) - { return __complex_acos(__z); } -#endif - - template - inline std::complex<_Tp> - __complex_asin(const std::complex<_Tp>& __z) - { - std::complex<_Tp> __t(-__z.imag(), __z.real()); - __t = std::asinh(__t); - return std::complex<_Tp>(__t.imag(), -__t.real()); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_asin(__complex__ float __z) - { return __builtin_casinf(__z); } - - inline __complex__ double - __complex_asin(__complex__ double __z) - { return __builtin_casin(__z); } - - inline __complex__ long double - __complex_asin(const __complex__ long double& __z) - { return __builtin_casinl(__z); } - - template - inline std::complex<_Tp> - asin(const std::complex<_Tp>& __z) - { return __complex_asin(__z.__rep()); } -#else - /// asin(__z) [8.1.3]. - // Effects: Behaves the same as C99 function casin, defined - // in subclause 7.3.5.2. - template - inline std::complex<_Tp> - asin(const std::complex<_Tp>& __z) - { return __complex_asin(__z); } -#endif - - template - std::complex<_Tp> - __complex_atan(const std::complex<_Tp>& __z) - { - const _Tp __r2 = __z.real() * __z.real(); - const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag(); - - _Tp __num = __z.imag() + _Tp(1.0); - _Tp __den = __z.imag() - _Tp(1.0); - - __num = __r2 + __num * __num; - __den = __r2 + __den * __den; - - return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x), - _Tp(0.25) * log(__num / __den)); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_atan(__complex__ float __z) - { return __builtin_catanf(__z); } - - inline __complex__ double - __complex_atan(__complex__ double __z) - { return __builtin_catan(__z); } - - inline __complex__ long double - __complex_atan(const __complex__ long double& __z) - { return __builtin_catanl(__z); } - - template - inline std::complex<_Tp> - atan(const std::complex<_Tp>& __z) - { return __complex_atan(__z.__rep()); } -#else - /// atan(__z) [8.1.4]. - // Effects: Behaves the same as C99 function catan, defined - // in subclause 7.3.5.3. - template - inline std::complex<_Tp> - atan(const std::complex<_Tp>& __z) - { return __complex_atan(__z); } -#endif - - template - std::complex<_Tp> - __complex_acosh(const std::complex<_Tp>& __z) - { - // Kahan's formula. - return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) - + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_acosh(__complex__ float __z) - { return __builtin_cacoshf(__z); } - - inline __complex__ double - __complex_acosh(__complex__ double __z) - { return __builtin_cacosh(__z); } - - inline __complex__ long double - __complex_acosh(const __complex__ long double& __z) - { return __builtin_cacoshl(__z); } - - template - inline std::complex<_Tp> - acosh(const std::complex<_Tp>& __z) - { return __complex_acosh(__z.__rep()); } -#else - /// acosh(__z) [8.1.5]. - // Effects: Behaves the same as C99 function cacosh, defined - // in subclause 7.3.6.1. - template - inline std::complex<_Tp> - acosh(const std::complex<_Tp>& __z) - { return __complex_acosh(__z); } -#endif - - template - std::complex<_Tp> - __complex_asinh(const std::complex<_Tp>& __z) - { - std::complex<_Tp> __t((__z.real() - __z.imag()) - * (__z.real() + __z.imag()) + _Tp(1.0), - _Tp(2.0) * __z.real() * __z.imag()); - __t = std::sqrt(__t); - - return std::log(__t + __z); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_asinh(__complex__ float __z) - { return __builtin_casinhf(__z); } - - inline __complex__ double - __complex_asinh(__complex__ double __z) - { return __builtin_casinh(__z); } - - inline __complex__ long double - __complex_asinh(const __complex__ long double& __z) - { return __builtin_casinhl(__z); } - - template - inline std::complex<_Tp> - asinh(const std::complex<_Tp>& __z) - { return __complex_asinh(__z.__rep()); } -#else - /// asinh(__z) [8.1.6]. - // Effects: Behaves the same as C99 function casin, defined - // in subclause 7.3.6.2. - template - inline std::complex<_Tp> - asinh(const std::complex<_Tp>& __z) - { return __complex_asinh(__z); } -#endif - - template - std::complex<_Tp> - __complex_atanh(const std::complex<_Tp>& __z) - { - const _Tp __i2 = __z.imag() * __z.imag(); - const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real(); - - _Tp __num = _Tp(1.0) + __z.real(); - _Tp __den = _Tp(1.0) - __z.real(); - - __num = __i2 + __num * __num; - __den = __i2 + __den * __den; - - return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)), - _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x)); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_atanh(__complex__ float __z) - { return __builtin_catanhf(__z); } - - inline __complex__ double - __complex_atanh(__complex__ double __z) - { return __builtin_catanh(__z); } - - inline __complex__ long double - __complex_atanh(const __complex__ long double& __z) - { return __builtin_catanhl(__z); } - - template - inline std::complex<_Tp> - atanh(const std::complex<_Tp>& __z) - { return __complex_atanh(__z.__rep()); } -#else - /// atanh(__z) [8.1.7]. - // Effects: Behaves the same as C99 function catanh, defined - // in subclause 7.3.6.3. - template - inline std::complex<_Tp> - atanh(const std::complex<_Tp>& __z) - { return __complex_atanh(__z); } -#endif - - template - inline _Tp - /// fabs(__z) [8.1.8]. - // Effects: Behaves the same as C99 function cabs, defined - // in subclause 7.3.8.1. - fabs(const std::complex<_Tp>& __z) - { return std::abs(__z); } - - /// Additional overloads [8.1.9]. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - arg(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; -#if (_GLIBCXX11_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) - return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) - : __type(); -#else - return std::arg(std::complex<__type>(__x)); -#endif - } - - template - _GLIBCXX_CONSTEXPR inline typename __gnu_cxx::__promote<_Tp>::__type - imag(_Tp) - { return _Tp(); } - - template - inline typename __gnu_cxx::__promote<_Tp>::__type - norm(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __type(__x) * __type(__x); - } - - template - _GLIBCXX_CONSTEXPR inline typename __gnu_cxx::__promote<_Tp>::__type - real(_Tp __x) - { return __x; } - - template - inline std::complex::__type> - pow(const std::complex<_Tp>& __x, const _Up& __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(std::complex<__type>(__x), __type(__y)); - } - - template - inline std::complex::__type> - pow(const _Tp& __x, const std::complex<_Up>& __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(__type(__x), std::complex<__type>(__y)); - } - - template - inline std::complex::__type> - pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(std::complex<__type>(__x), - std::complex<__type>(__y)); - } - - // Forward declarations. - // DR 781. - template std::complex<_Tp> proj(const std::complex<_Tp>&); - - template - std::complex<_Tp> - __complex_proj(const std::complex<_Tp>& __z) - { - const _Tp __den = (__z.real() * __z.real() - + __z.imag() * __z.imag() + _Tp(1.0)); - - return std::complex<_Tp>((_Tp(2.0) * __z.real()) / __den, - (_Tp(2.0) * __z.imag()) / __den); - } - -#if _GLIBCXX_USE_C99_COMPLEX - inline __complex__ float - __complex_proj(__complex__ float __z) - { return __builtin_cprojf(__z); } - - inline __complex__ double - __complex_proj(__complex__ double __z) - { return __builtin_cproj(__z); } - - inline __complex__ long double - __complex_proj(const __complex__ long double& __z) - { return __builtin_cprojl(__z); } - - template - inline std::complex<_Tp> - proj(const std::complex<_Tp>& __z) - { return __complex_proj(__z.__rep()); } -#else - template - inline std::complex<_Tp> - proj(const std::complex<_Tp>& __z) - { return __complex_proj(__z); } -#endif - - template - inline std::complex::__type> - proj(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return std::proj(std::complex<__type>(__x)); - } - - template - inline std::complex::__type> - conj(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return std::complex<__type>(__x, -__type()); - } - -_GLIBCXX_END_NAMESPACE_VERSION - -#if __cplusplus > 201103L - -inline namespace literals { -inline namespace complex_literals { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_complex_udls 201309 - - constexpr std::complex - operator""if(long double __num) - { return std::complex{0.0F, static_cast(__num)}; } - - constexpr std::complex - operator""if(unsigned long long __num) - { return std::complex{0.0F, static_cast(__num)}; } - - constexpr std::complex - operator""i(long double __num) - { return std::complex{0.0, static_cast(__num)}; } - - constexpr std::complex - operator""i(unsigned long long __num) - { return std::complex{0.0, static_cast(__num)}; } - - constexpr std::complex - operator""il(long double __num) - { return std::complex{0.0L, __num}; } - - constexpr std::complex - operator""il(unsigned long long __num) - { return std::complex{0.0L, static_cast(__num)}; } - -_GLIBCXX_END_NAMESPACE_VERSION -} // inline namespace complex_literals -} // inline namespace literals - -#endif // C++14 - -} // namespace - -#endif // C++11 - -#endif /* _GLIBCXX_COMPLEX */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/complex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/complex.h deleted file mode 100644 index b9af84725..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/complex.h +++ /dev/null @@ -1,46 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file complex.h - * This is a Standard C++ Library header. - */ - -#include - -#if __cplusplus >= 201103L -# include -#endif - -#if _GLIBCXX_HAVE_COMPLEX_H -# include_next -# ifdef _GLIBCXX_COMPLEX -// See PR56111, keep the macro in C++03 if possible. -# undef complex -# endif -#endif - -#ifndef _GLIBCXX_COMPLEX_H -#define _GLIBCXX_COMPLEX_H 1 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdarg b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdarg deleted file mode 100644 index 148d53217..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdarg +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cstdarg - * 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 stdarg.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: 20.4.6 C library -// - -#pragma GCC system_header - -#undef __need___va_list -#include -#include - -#ifndef _GLIBCXX_CSTDARG -#define _GLIBCXX_CSTDARG 1 - -// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 -#ifndef va_end -#define va_end(ap) va_end (ap) -#endif - -namespace std -{ - using ::va_list; -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdbool b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdbool deleted file mode 100644 index b6ded0790..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdbool +++ /dev/null @@ -1,44 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cstdbool - * This is a Standard C++ Library header. - */ - -#pragma GCC system_header - -#ifndef _GLIBCXX_CSTDBOOL -#define _GLIBCXX_CSTDBOOL 1 - -#if __cplusplus < 201103L -# include -#else -# include -# if _GLIBCXX_HAVE_STDBOOL_H -# include -# endif -#endif - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdint b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdint deleted file mode 100644 index 33f8193d9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdint +++ /dev/null @@ -1,89 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cstdint - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_CSTDINT -#define _GLIBCXX_CSTDINT 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include - -#if _GLIBCXX_HAVE_STDINT_H -# include -#endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - -namespace std -{ - using ::int8_t; - using ::int16_t; - using ::int32_t; - using ::int64_t; - - using ::int_fast8_t; - using ::int_fast16_t; - using ::int_fast32_t; - using ::int_fast64_t; - - using ::int_least8_t; - using ::int_least16_t; - using ::int_least32_t; - using ::int_least64_t; - - using ::intmax_t; - using ::intptr_t; - - using ::uint8_t; - using ::uint16_t; - using ::uint32_t; - using ::uint64_t; - - using ::uint_fast8_t; - using ::uint_fast16_t; - using ::uint_fast32_t; - using ::uint_fast64_t; - - using ::uint_least8_t; - using ::uint_least16_t; - using ::uint_least32_t; - using ::uint_least64_t; - - using ::uintmax_t; - using ::uintptr_t; -} // namespace std - -#endif // _GLIBCXX_USE_C99_STDINT_TR1 - -#endif // C++11 - -#endif // _GLIBCXX_CSTDINT diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdio deleted file mode 100644 index 6f3132fc2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdio +++ /dev/null @@ -1,194 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @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 -// - -#pragma GCC system_header - -#include -#include - -#ifndef _GLIBCXX_CSTDIO -#define _GLIBCXX_CSTDIO 1 - -#if __cplusplus <= 201103L && !defined(_GLIBCXX_HAVE_GETS) -extern "C" char* gets (char* __s) __attribute__((__deprecated__)); -#endif - -// Get rid of those macros defined in 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 __cplusplus <= 201103L -# undef gets -#endif -#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 __cplusplus <= 201103L - // LWG 2249 - using ::gets; -#endif - 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 _GLIBCXX_USE_TMPNAM - using ::tmpnam; -#endif - using ::ungetc; - using ::vfprintf; - using ::vprintf; - using ::vsprintf; -} // namespace - -#if _GLIBCXX_USE_C99_STDIO - -#undef snprintf -#undef vfscanf -#undef vscanf -#undef vsnprintf -#undef vsscanf - -namespace __gnu_cxx -{ -#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC - 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 - -#if !_GLIBCXX_USE_C99_DYNAMIC - using ::snprintf; - using ::vfscanf; - using ::vscanf; - using ::vsnprintf; - using ::vsscanf; -#endif -} // 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 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdlib b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdlib deleted file mode 100644 index 52d525559..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdlib +++ /dev/null @@ -1,261 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cstdlib - * 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 stdlib.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: 20.4.6 C library -// - -#pragma GCC system_header - -#include - -#ifndef _GLIBCXX_CSTDLIB -#define _GLIBCXX_CSTDLIB 1 - -#if !_GLIBCXX_HOSTED -// The C standard does not require a freestanding implementation to -// provide . However, the C++ standard does still require -// -- but only the functionality mentioned in -// [lib.support.start.term]. - -#define EXIT_SUCCESS 0 -#define EXIT_FAILURE 1 - -namespace std -{ - extern "C" void abort(void) throw () _GLIBCXX_NORETURN; - extern "C" int atexit(void (*)(void)) throw (); - extern "C" void exit(int) throw () _GLIBCXX_NORETURN; -#if __cplusplus >= 201103L -# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT - extern "C" int at_quick_exit(void (*)(void)) throw (); -# endif -# ifdef _GLIBCXX_HAVE_QUICK_EXIT - extern "C" void quick_exit(int) throw() _GLIBCXX_NORETURN; -# endif -#endif -} // namespace std - -#else - -// Need to ensure this finds the C library's not a libstdc++ -// wrapper that might already be installed later in the include search path. -#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS -#include_next -#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS -#include - -// Get rid of those macros defined in in lieu of real functions. -#undef abort -#if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) -# undef aligned_alloc -#endif -#undef atexit -#if __cplusplus >= 201103L -# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT -# undef at_quick_exit -# endif -#endif -#undef atof -#undef atoi -#undef atol -#undef bsearch -#undef calloc -#undef div -#undef exit -#undef free -#undef getenv -#undef labs -#undef ldiv -#undef malloc -#undef mblen -#undef mbstowcs -#undef mbtowc -#undef qsort -#if __cplusplus >= 201103L -# ifdef _GLIBCXX_HAVE_QUICK_EXIT -# undef quick_exit -# endif -#endif -#undef rand -#undef realloc -#undef srand -#undef strtod -#undef strtol -#undef strtoul -#undef system -#undef wcstombs -#undef wctomb - -extern "C++" -{ -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using ::div_t; - using ::ldiv_t; - - using ::abort; -#if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) - using ::aligned_alloc; -#endif - using ::atexit; -#if __cplusplus >= 201103L -# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT - using ::at_quick_exit; -# endif -#endif - using ::atof; - using ::atoi; - using ::atol; - using ::bsearch; - using ::calloc; - using ::div; - using ::exit; - using ::free; - using ::getenv; - using ::labs; - using ::ldiv; - using ::malloc; -#ifdef _GLIBCXX_HAVE_MBSTATE_T - using ::mblen; - using ::mbstowcs; - using ::mbtowc; -#endif // _GLIBCXX_HAVE_MBSTATE_T - using ::qsort; -#if __cplusplus >= 201103L -# ifdef _GLIBCXX_HAVE_QUICK_EXIT - using ::quick_exit; -# endif -#endif - using ::rand; - using ::realloc; - using ::srand; - using ::strtod; - using ::strtol; - using ::strtoul; - using ::system; -#ifdef _GLIBCXX_USE_WCHAR_T - using ::wcstombs; - using ::wctomb; -#endif // _GLIBCXX_USE_WCHAR_T - -#ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO - inline ldiv_t - div(long __i, long __j) { return ldiv(__i, __j); } -#endif - - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#if _GLIBCXX_USE_C99_STDLIB - -#undef _Exit -#undef llabs -#undef lldiv -#undef atoll -#undef strtoll -#undef strtoull -#undef strtof -#undef strtold - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::lldiv_t; -#endif -#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC - extern "C" void (_Exit)(int) throw () _GLIBCXX_NORETURN; -#endif -#if !_GLIBCXX_USE_C99_DYNAMIC - using ::_Exit; -#endif - -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::llabs; - - inline lldiv_t - div(long long __n, long long __d) - { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } - - using ::lldiv; -#endif - -#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - extern "C" long long int (atoll)(const char *) throw (); - extern "C" long long int - (strtoll)(const char * __restrict, char ** __restrict, int) throw (); - extern "C" unsigned long long int - (strtoull)(const char * __restrict, char ** __restrict, int) throw (); -#endif -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::atoll; - using ::strtoll; - using ::strtoull; -#endif - using ::strtof; - using ::strtold; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __gnu_cxx - -namespace std -{ -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::__gnu_cxx::lldiv_t; -#endif - using ::__gnu_cxx::_Exit; -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::__gnu_cxx::llabs; - using ::__gnu_cxx::div; - using ::__gnu_cxx::lldiv; -#endif - using ::__gnu_cxx::atoll; - using ::__gnu_cxx::strtof; - using ::__gnu_cxx::strtoll; - using ::__gnu_cxx::strtoull; - using ::__gnu_cxx::strtold; -} // namespace std - -#endif // _GLIBCXX_USE_C99_STDLIB - -} // extern "C++" - -#endif // !_GLIBCXX_HOSTED - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ctgmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ctgmath deleted file mode 100644 index e1fc09bf3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ctgmath +++ /dev/null @@ -1,44 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/ctgmath - * This is a Standard C++ Library header. - */ - -#pragma GCC system_header - -#ifndef _GLIBCXX_CTGMATH -#define _GLIBCXX_CTGMATH 1 - -#if __cplusplus < 201103L -# include -#else -# include -extern "C++" { -# include -} -#endif - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ctime b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ctime deleted file mode 100644 index 5b1f1d06f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ctime +++ /dev/null @@ -1,75 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/ctime - * 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 time.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: 20.5 Date and time -// - -#pragma GCC system_header - -#include -#include - -#ifndef _GLIBCXX_CTIME -#define _GLIBCXX_CTIME 1 - -// Get rid of those macros defined in in lieu of real functions. -#undef clock -#undef difftime -#undef mktime -#undef time -#undef asctime -#undef ctime -#undef gmtime -#undef localtime -#undef strftime - -namespace std -{ - using ::clock_t; - using ::time_t; - using ::tm; - - using ::clock; - using ::difftime; - using ::mktime; - using ::time; - using ::asctime; - using ::ctime; - using ::gmtime; - using ::localtime; - using ::strftime; -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cwchar b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cwchar deleted file mode 100644 index 39f88b396..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cwchar +++ /dev/null @@ -1,303 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cwchar - * This is a Standard C++ Library file. You should @c \#include this file - * in your programs, rather than any of the @a *.h implementation files. - * - * This is the C++ version of the Standard C Library header @c wchar.h, - * and its contents are (mostly) the same as that header, but are all - * contained in the namespace @c std (except for names which are defined - * as macros in C). - */ - -// -// ISO C++ 14882: 21.4 -// - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HAVE_WCHAR_H -#include -#endif - -#ifndef _GLIBCXX_CWCHAR -#define _GLIBCXX_CWCHAR 1 - -// Need to do a bit of trickery here with mbstate_t as char_traits -// assumes it is in wchar.h, regardless of wchar_t specializations. -#ifndef _GLIBCXX_HAVE_MBSTATE_T -extern "C" -{ - typedef struct - { - int __fill[6]; - } mbstate_t; -} -#endif - -namespace std -{ - using ::mbstate_t; -} // namespace std - -// Get rid of those macros defined in in lieu of real functions. -#undef btowc -#undef fgetwc -#undef fgetws -#undef fputwc -#undef fputws -#undef fwide -#undef fwprintf -#undef fwscanf -#undef getwc -#undef getwchar -#undef mbrlen -#undef mbrtowc -#undef mbsinit -#undef mbsrtowcs -#undef putwc -#undef putwchar -#undef swprintf -#undef swscanf -#undef ungetwc -#undef vfwprintf -#if _GLIBCXX_HAVE_VFWSCANF -# undef vfwscanf -#endif -#undef vswprintf -#if _GLIBCXX_HAVE_VSWSCANF -# undef vswscanf -#endif -#undef vwprintf -#if _GLIBCXX_HAVE_VWSCANF -# undef vwscanf -#endif -#undef wcrtomb -#undef wcscat -#undef wcschr -#undef wcscmp -#undef wcscoll -#undef wcscpy -#undef wcscspn -#undef wcsftime -#undef wcslen -#undef wcsncat -#undef wcsncmp -#undef wcsncpy -#undef wcspbrk -#undef wcsrchr -#undef wcsrtombs -#undef wcsspn -#undef wcsstr -#undef wcstod -#if _GLIBCXX_HAVE_WCSTOF -# undef wcstof -#endif -#undef wcstok -#undef wcstol -#undef wcstoul -#undef wcsxfrm -#undef wctob -#undef wmemchr -#undef wmemcmp -#undef wmemcpy -#undef wmemmove -#undef wmemset -#undef wprintf -#undef wscanf - -#if _GLIBCXX_USE_WCHAR_T - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using ::wint_t; - - using ::btowc; - using ::fgetwc; - using ::fgetws; - using ::fputwc; - using ::fputws; - using ::fwide; - using ::fwprintf; - using ::fwscanf; - using ::getwc; - using ::getwchar; - using ::mbrlen; - using ::mbrtowc; - using ::mbsinit; - using ::mbsrtowcs; - using ::putwc; - using ::putwchar; -#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF - using ::swprintf; -#endif - using ::swscanf; - using ::ungetwc; - using ::vfwprintf; -#if _GLIBCXX_HAVE_VFWSCANF - using ::vfwscanf; -#endif -#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF - using ::vswprintf; -#endif -#if _GLIBCXX_HAVE_VSWSCANF - using ::vswscanf; -#endif - using ::vwprintf; -#if _GLIBCXX_HAVE_VWSCANF - using ::vwscanf; -#endif - using ::wcrtomb; - using ::wcscat; - using ::wcscmp; - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; - using ::wcsftime; - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; - using ::wcsncpy; - using ::wcsrtombs; - using ::wcsspn; - using ::wcstod; -#if _GLIBCXX_HAVE_WCSTOF - using ::wcstof; -#endif - using ::wcstok; - using ::wcstol; - using ::wcstoul; - using ::wcsxfrm; - using ::wctob; - using ::wmemcmp; - using ::wmemcpy; - using ::wmemmove; - using ::wmemset; - using ::wprintf; - using ::wscanf; - using ::wcschr; - using ::wcspbrk; - using ::wcsrchr; - using ::wcsstr; - using ::wmemchr; - -#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO - inline wchar_t* - wcschr(wchar_t* __p, wchar_t __c) - { return wcschr(const_cast(__p), __c); } - - inline wchar_t* - wcspbrk(wchar_t* __s1, const wchar_t* __s2) - { return wcspbrk(const_cast(__s1), __s2); } - - inline wchar_t* - wcsrchr(wchar_t* __p, wchar_t __c) - { return wcsrchr(const_cast(__p), __c); } - - inline wchar_t* - wcsstr(wchar_t* __s1, const wchar_t* __s2) - { return wcsstr(const_cast(__s1), __s2); } - - inline wchar_t* - wmemchr(wchar_t* __p, wchar_t __c, size_t __n) - { return wmemchr(const_cast(__p), __c, __n); } -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#if _GLIBCXX_USE_C99_WCHAR - -#undef wcstold -#undef wcstoll -#undef wcstoull - -namespace __gnu_cxx -{ -#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC - extern "C" long double - (wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw (); -#endif -#if !_GLIBCXX_USE_C99_DYNAMIC - using ::wcstold; -#endif -#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - extern "C" long long int - (wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); - extern "C" unsigned long long int - (wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); -#endif -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using ::wcstoll; - using ::wcstoull; -#endif -} // namespace __gnu_cxx - -namespace std -{ - using ::__gnu_cxx::wcstold; - using ::__gnu_cxx::wcstoll; - using ::__gnu_cxx::wcstoull; -} // namespace - -#endif - -#endif //_GLIBCXX_USE_WCHAR_T - -#if __cplusplus >= 201103L - -#ifdef _GLIBCXX_USE_WCHAR_T - -namespace std -{ -#if _GLIBCXX_HAVE_WCSTOF - using std::wcstof; -#endif -#if _GLIBCXX_HAVE_VFWSCANF - using std::vfwscanf; -#endif -#if _GLIBCXX_HAVE_VSWSCANF - using std::vswscanf; -#endif -#if _GLIBCXX_HAVE_VWSCANF - using std::vwscanf; -#endif - -#if _GLIBCXX_USE_C99_WCHAR - using std::wcstold; - using std::wcstoll; - using std::wcstoull; -#endif -} // namespace - -#endif // _GLIBCXX_USE_WCHAR_T - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cwctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cwctype deleted file mode 100644 index 1180f4e2f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cwctype +++ /dev/null @@ -1,110 +0,0 @@ -// -*- C++ -*- forwarding header. - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/cwctype - * 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 wctype.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: -// - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HAVE_WCTYPE_H - -#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 10 -// Work around glibc BZ 9694 -#include -#endif - -#include -#endif // _GLIBCXX_HAVE_WCTYPE_H - -#ifndef _GLIBCXX_CWCTYPE -#define _GLIBCXX_CWCTYPE 1 - -// Get rid of those macros defined in in lieu of real functions. -#undef iswalnum -#undef iswalpha -#if _GLIBCXX_HAVE_ISWBLANK -# undef iswblank -#endif -#undef iswcntrl -#undef iswctype -#undef iswdigit -#undef iswgraph -#undef iswlower -#undef iswprint -#undef iswpunct -#undef iswspace -#undef iswupper -#undef iswxdigit -#undef towctrans -#undef towlower -#undef towupper -#undef wctrans -#undef wctype - -#if _GLIBCXX_USE_WCHAR_T - -namespace std -{ - using ::wctrans_t; - using ::wctype_t; - using ::wint_t; - - using ::iswalnum; - using ::iswalpha; -#if _GLIBCXX_HAVE_ISWBLANK - using ::iswblank; -#endif - using ::iswcntrl; - using ::iswctype; - using ::iswdigit; - using ::iswgraph; - using ::iswlower; - using ::iswprint; - using ::iswpunct; - using ::iswspace; - using ::iswupper; - using ::iswxdigit; - using ::towctrans; - using ::towlower; - using ::towupper; - using ::wctrans; - using ::wctype; -} // namespace - -#endif //_GLIBCXX_USE_WCHAR_T - -#endif // _GLIBCXX_CWCTYPE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/array deleted file mode 100644 index 9c2792210..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/array +++ /dev/null @@ -1,334 +0,0 @@ -// Debugging array implementation -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/array - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_DEBUG_ARRAY -#define _GLIBCXX_DEBUG_ARRAY 1 - -#pragma GCC system_header - -#include - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - template - struct array - { - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // Support for zero-sized arrays mandatory. - typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; - typename _AT_Type::_Type _M_elems; - - template - struct _Array_check_subscript - { - std::size_t size() { return _Size; } - - _Array_check_subscript(std::size_t __index) - { __glibcxx_check_subscript(__index); } - }; - - template - struct _Array_check_nonempty - { - bool empty() { return _Size == 0; } - - _Array_check_nonempty() - { __glibcxx_check_nonempty(); } - }; - - // No explicit construct/copy/destroy for aggregate type. - - // DR 776. - void - fill(const value_type& __u) - { std::fill_n(begin(), size(), __u); } - - void - swap(array& __other) - noexcept(_AT_Type::_Is_nothrow_swappable::value) - { std::swap_ranges(begin(), end(), __other.begin()); } - - // Iterators. - _GLIBCXX17_CONSTEXPR iterator - begin() noexcept - { return iterator(data()); } - - _GLIBCXX17_CONSTEXPR const_iterator - begin() const noexcept - { return const_iterator(data()); } - - _GLIBCXX17_CONSTEXPR iterator - end() noexcept - { return iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR const_iterator - end() const noexcept - { return const_iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR reverse_iterator - rbegin() noexcept - { return reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - rbegin() const noexcept - { return const_reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR reverse_iterator - rend() noexcept - { return reverse_iterator(begin()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - rend() const noexcept - { return const_reverse_iterator(begin()); } - - _GLIBCXX17_CONSTEXPR const_iterator - cbegin() const noexcept - { return const_iterator(data()); } - - _GLIBCXX17_CONSTEXPR const_iterator - cend() const noexcept - { return const_iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } - - // Capacity. - constexpr size_type - size() const noexcept { return _Nm; } - - constexpr size_type - max_size() const noexcept { return _Nm; } - - constexpr bool - empty() const noexcept { return size() == 0; } - - // Element access. - _GLIBCXX17_CONSTEXPR reference - operator[](size_type __n) noexcept - { - __glibcxx_check_subscript(__n); - return _AT_Type::_S_ref(_M_elems, __n); - } - - constexpr const_reference - operator[](size_type __n) const noexcept - { - return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) - : (_GLIBCXX_THROW_OR_ABORT(_Array_check_subscript<_Nm>(__n)), - _AT_Type::_S_ref(_M_elems, 0)); - } - - _GLIBCXX17_CONSTEXPR reference - at(size_type __n) - { - if (__n >= _Nm) - std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " - ">= _Nm (which is %zu)"), - __n, _Nm); - return _AT_Type::_S_ref(_M_elems, __n); - } - - constexpr const_reference - at(size_type __n) const - { - // Result of conditional expression must be an lvalue so use - // boolean ? lvalue : (throw-expr, lvalue) - return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) - : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " - ">= _Nm (which is %zu)"), - __n, _Nm), - _AT_Type::_S_ref(_M_elems, 0)); - } - - _GLIBCXX17_CONSTEXPR reference - front() noexcept - { - __glibcxx_check_nonempty(); - return *begin(); - } - - constexpr const_reference - front() const noexcept - { - return _Nm ? _AT_Type::_S_ref(_M_elems, 0) - : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()), - _AT_Type::_S_ref(_M_elems, 0)); - } - - _GLIBCXX17_CONSTEXPR reference - back() noexcept - { - __glibcxx_check_nonempty(); - return _Nm ? *(end() - 1) : *end(); - } - - constexpr const_reference - back() const noexcept - { - return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) - : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()), - _AT_Type::_S_ref(_M_elems, 0)); - } - - _GLIBCXX17_CONSTEXPR pointer - data() noexcept - { return _AT_Type::_S_ptr(_M_elems); } - - _GLIBCXX17_CONSTEXPR const_pointer - data() const noexcept - { return _AT_Type::_S_ptr(_M_elems); } - }; - -#if __cpp_deduction_guides >= 201606 - template - array(_Tp, _Up...) - -> array && ...), _Tp>, - 1 + sizeof...(_Up)>; -#endif - - // Array comparisons. - template - inline bool - operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return std::equal(__one.begin(), __one.end(), __two.begin()); } - - template - inline bool - operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one == __two); } - - template - inline bool - operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) - { - return std::lexicographical_compare(__a.begin(), __a.end(), - __b.begin(), __b.end()); - } - - template - inline bool - operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return __two < __one; } - - template - inline bool - operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one > __two); } - - template - inline bool - operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one < __two); } - - // Specialized algorithms. - -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 - template - typename enable_if< - !_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type - swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; -#endif - - template - inline void - swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) - noexcept(noexcept(__one.swap(__two))) - { __one.swap(__two); } - - template - constexpr _Tp& - get(array<_Tp, _Nm>& __arr) noexcept - { - static_assert(_Int < _Nm, "index is out of bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); - } - - template - constexpr _Tp&& - get(array<_Tp, _Nm>&& __arr) noexcept - { - static_assert(_Int < _Nm, "index is out of bounds"); - return std::move(__debug::get<_Int>(__arr)); - } - - template - constexpr const _Tp& - get(const array<_Tp, _Nm>& __arr) noexcept - { - static_assert(_Int < _Nm, "index is out of bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); - } -} // namespace __debug - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // Tuple interface to class template array. - - /// tuple_size - template - struct tuple_size> - : public integral_constant { }; - - /// tuple_element - template - struct tuple_element<_Int, std::__debug::array<_Tp, _Nm>> - { - static_assert(_Int < _Nm, "index is out of bounds"); - typedef _Tp type; - }; - - template - struct __is_tuple_like_impl> : true_type - { }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // _GLIBCXX_DEBUG_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/bitset deleted file mode 100644 index 95bf21758..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/bitset +++ /dev/null @@ -1,427 +0,0 @@ -// Debugging bitset implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/bitset - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_BITSET -#define _GLIBCXX_DEBUG_BITSET - -#pragma GCC system_header - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::bitset with additional safety/checking/debug instrumentation. - template - class bitset - : public _GLIBCXX_STD_C::bitset<_Nb> -#if __cplusplus < 201103L - , public __gnu_debug::_Safe_sequence_base -#endif - { - typedef _GLIBCXX_STD_C::bitset<_Nb> _Base; - - public: - // In C++11 we rely on normal reference type to preserve the property - // of bitset to be use as a literal. - // TODO: Find another solution. -#if __cplusplus >= 201103L - typedef typename _Base::reference reference; -#else - // bit reference: - class reference - : private _Base::reference - , public __gnu_debug::_Safe_iterator_base - { - typedef typename _Base::reference _Base_ref; - - friend class bitset; - reference(); - - reference(const _Base_ref& __base, bitset* __seq) _GLIBCXX_NOEXCEPT - : _Base_ref(__base) - , _Safe_iterator_base(__seq, false) - { } - - public: - reference(const reference& __x) _GLIBCXX_NOEXCEPT - : _Base_ref(__x) - , _Safe_iterator_base(__x, false) - { } - - reference& - operator=(bool __x) _GLIBCXX_NOEXCEPT - { - _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), - _M_message(__gnu_debug::__msg_bad_bitset_write) - ._M_iterator(*this)); - *static_cast<_Base_ref*>(this) = __x; - return *this; - } - - reference& - operator=(const reference& __x) _GLIBCXX_NOEXCEPT - { - _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(), - _M_message(__gnu_debug::__msg_bad_bitset_read) - ._M_iterator(__x)); - _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), - _M_message(__gnu_debug::__msg_bad_bitset_write) - ._M_iterator(*this)); - *static_cast<_Base_ref*>(this) = __x; - return *this; - } - - bool - operator~() const _GLIBCXX_NOEXCEPT - { - _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), - _M_message(__gnu_debug::__msg_bad_bitset_read) - ._M_iterator(*this)); - return ~(*static_cast(this)); - } - - operator bool() const _GLIBCXX_NOEXCEPT - { - _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), - _M_message(__gnu_debug::__msg_bad_bitset_read) - ._M_iterator(*this)); - return *static_cast(this); - } - - reference& - flip() _GLIBCXX_NOEXCEPT - { - _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), - _M_message(__gnu_debug::__msg_bad_bitset_flip) - ._M_iterator(*this)); - _Base_ref::flip(); - return *this; - } - }; -#endif - - // 23.3.5.1 constructors: - _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT - : _Base() { } - -#if __cplusplus >= 201103L - constexpr bitset(unsigned long long __val) noexcept -#else - bitset(unsigned long __val) -#endif - : _Base(__val) { } - - template - explicit - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __pos = 0, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos)) - : _Base(__str, __pos, __n) { } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 396. what are characters zero and one. - template - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __pos, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __n, - _CharT __zero, _CharT __one = _CharT('1')) - : _Base(__str, __pos, __n, __zero, __one) { } - - bitset(const _Base& __x) : _Base(__x) { } - -#if __cplusplus >= 201103L - template - explicit - bitset(const _CharT* __str, - typename std::basic_string<_CharT>::size_type __n - = std::basic_string<_CharT>::npos, - _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) - : _Base(__str, __n, __zero, __one) { } -#endif - - // 23.3.5.2 bitset operations: - bitset<_Nb>& - operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - _M_base() &= __rhs; - return *this; - } - - bitset<_Nb>& - operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - _M_base() |= __rhs; - return *this; - } - - bitset<_Nb>& - operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - _M_base() ^= __rhs; - return *this; - } - - bitset<_Nb>& - operator<<=(size_t __pos) _GLIBCXX_NOEXCEPT - { - _M_base() <<= __pos; - return *this; - } - - bitset<_Nb>& - operator>>=(size_t __pos) _GLIBCXX_NOEXCEPT - { - _M_base() >>= __pos; - return *this; - } - - bitset<_Nb>& - set() _GLIBCXX_NOEXCEPT - { - _Base::set(); - return *this; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 186. bitset::set() second parameter should be bool - bitset<_Nb>& - set(size_t __pos, bool __val = true) - { - _Base::set(__pos, __val); - return *this; - } - - bitset<_Nb>& - reset() _GLIBCXX_NOEXCEPT - { - _Base::reset(); - return *this; - } - - bitset<_Nb>& - reset(size_t __pos) - { - _Base::reset(__pos); - return *this; - } - - bitset<_Nb> - operator~() const _GLIBCXX_NOEXCEPT - { return bitset(~_M_base()); } - - bitset<_Nb>& - flip() _GLIBCXX_NOEXCEPT - { - _Base::flip(); - return *this; - } - - bitset<_Nb>& - flip(size_t __pos) - { - _Base::flip(__pos); - return *this; - } - - // element access: - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 11. Bitset minor problems - reference - operator[](size_t __pos) - { - __glibcxx_check_subscript(__pos); -#if __cplusplus >= 201103L - return _M_base()[__pos]; -#else - return reference(_M_base()[__pos], this); -#endif - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 11. Bitset minor problems - _GLIBCXX_CONSTEXPR bool - operator[](size_t __pos) const - { -#if __cplusplus < 201103L - // TODO: Check in debug-mode too. - __glibcxx_check_subscript(__pos); -#endif - return _Base::operator[](__pos); - } - - using _Base::to_ulong; -#if __cplusplus >= 201103L - using _Base::to_ullong; -#endif - - template - std::basic_string<_CharT, _Traits, _Alloc> - to_string() const - { return _M_base().template to_string<_CharT, _Traits, _Alloc>(); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 396. what are characters zero and one. - template - std::basic_string<_CharT, _Traits, _Alloc> - to_string(_CharT __zero, _CharT __one = _CharT('1')) const - { - return _M_base().template - to_string<_CharT, _Traits, _Alloc>(__zero, __one); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 434. bitset::to_string() hard to use. - template - std::basic_string<_CharT, _Traits, std::allocator<_CharT> > - to_string() const - { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 853. to_string needs updating with zero and one. - template - std::basic_string<_CharT, _Traits, std::allocator<_CharT> > - to_string(_CharT __zero, _CharT __one = _CharT('1')) const - { return to_string<_CharT, _Traits, - std::allocator<_CharT> >(__zero, __one); } - - template - std::basic_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> > - to_string() const - { - return to_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> >(); - } - - template - std::basic_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> > - to_string(_CharT __zero, _CharT __one = _CharT('1')) const - { - return to_string<_CharT, std::char_traits<_CharT>, - std::allocator<_CharT> >(__zero, __one); - } - - std::basic_string, std::allocator > - to_string() const - { - return to_string,std::allocator >(); - } - - std::basic_string, std::allocator > - to_string(char __zero, char __one = '1') const - { - return to_string, - std::allocator >(__zero, __one); - } - - using _Base::count; - using _Base::size; - - bool - operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT - { return _M_base() == __rhs; } - - bool - operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT - { return _M_base() != __rhs; } - - using _Base::test; - using _Base::all; - using _Base::any; - using _Base::none; - - bitset<_Nb> - operator<<(size_t __pos) const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(_M_base() << __pos); } - - bitset<_Nb> - operator>>(size_t __pos) const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(_M_base() >> __pos); } - - _Base& - _M_base() _GLIBCXX_NOEXCEPT - { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT - { return *this; } - }; - - template - bitset<_Nb> - operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(__x) &= __y; } - - template - bitset<_Nb> - operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(__x) |= __y; } - - template - bitset<_Nb> - operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(__x) ^= __y; } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) - { return __is >> __x._M_base(); } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bitset<_Nb>& __x) - { return __os << __x._M_base(); } - -} // namespace __debug - -#if __cplusplus >= 201103L - // DR 1182. - /// std::hash specialization for bitset. - template - struct hash<__debug::bitset<_Nb>> - : public __hash_base> - { - size_t - operator()(const __debug::bitset<_Nb>& __b) const noexcept - { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); } - }; -#endif - -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/deque deleted file mode 100644 index 7e3c193c1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/deque +++ /dev/null @@ -1,672 +0,0 @@ -// Debugging deque implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/deque - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_DEQUE -#define _GLIBCXX_DEBUG_DEQUE 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::deque with safety/checking/debug instrumentation. - template > - class deque - : public __gnu_debug::_Safe_container< - deque<_Tp, _Allocator>, _Allocator, - __gnu_debug::_Safe_sequence>, - public _GLIBCXX_STD_C::deque<_Tp, _Allocator> - { - typedef _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - deque, _Allocator, __gnu_debug::_Safe_sequence> _Safe; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator<_Base_iterator, deque> - iterator; - typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, deque> - const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.1.1 construct/copy/destroy: - -#if __cplusplus < 201103L - deque() - : _Base() { } - - deque(const deque& __x) - : _Base(__x) { } - - ~deque() { } -#else - deque() = default; - deque(const deque&) = default; - deque(deque&&) = default; - - deque(const deque& __d, const _Allocator& __a) - : _Base(__d, __a) { } - - deque(deque&& __d, const _Allocator& __a) - : _Safe(std::move(__d)), _Base(std::move(__d), __a) { } - - deque(initializer_list __l, - const allocator_type& __a = allocator_type()) - : _Base(__l, __a) { } - - ~deque() = default; -#endif - - explicit - deque(const _Allocator& __a) - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - deque(size_type __n, const _Allocator& __a = _Allocator()) - : _Base(__n, __a) { } - - deque(size_type __n, const _Tp& __value, - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#else - explicit - deque(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - deque(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) - { } - - deque(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - deque& - operator=(const deque& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - return *this; - } -#else - deque& - operator=(const deque&) = default; - - deque& - operator=(deque&&) = default; - - deque& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - void - assign(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::assign(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::assign(__first, __last); - - this->_M_invalidate_all(); - } - - void - assign(size_type __n, const _Tp& __t) - { - _Base::assign(__n, __t); - this->_M_invalidate_all(); - } - -#if __cplusplus >= 201103L - void - assign(initializer_list __l) - { - _Base::assign(__l); - this->_M_invalidate_all(); - } -#endif - - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - private: - void - _M_invalidate_after_nth(difference_type __n) - { - typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; - this->_M_invalidate_if(_After_nth(__n, _Base::begin())); - } - - public: - // 23.2.1.2 capacity: - using _Base::size; - using _Base::max_size; - -#if __cplusplus >= 201103L - void - resize(size_type __sz) - { - bool __invalidate_all = __sz > this->size(); - if (__sz < this->size()) - this->_M_invalidate_after_nth(__sz); - - _Base::resize(__sz); - - if (__invalidate_all) - this->_M_invalidate_all(); - } - - void - resize(size_type __sz, const _Tp& __c) - { - bool __invalidate_all = __sz > this->size(); - if (__sz < this->size()) - this->_M_invalidate_after_nth(__sz); - - _Base::resize(__sz, __c); - - if (__invalidate_all) - this->_M_invalidate_all(); - } -#else - void - resize(size_type __sz, _Tp __c = _Tp()) - { - bool __invalidate_all = __sz > this->size(); - if (__sz < this->size()) - this->_M_invalidate_after_nth(__sz); - - _Base::resize(__sz, __c); - - if (__invalidate_all) - this->_M_invalidate_all(); - } -#endif - -#if __cplusplus >= 201103L - void - shrink_to_fit() noexcept - { - if (_Base::_M_shrink_to_fit()) - this->_M_invalidate_all(); - } -#endif - - using _Base::empty; - - // element access: - reference - operator[](size_type __n) _GLIBCXX_NOEXCEPT - { - __glibcxx_check_subscript(__n); - return _M_base()[__n]; - } - - const_reference - operator[](size_type __n) const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_subscript(__n); - return _M_base()[__n]; - } - - using _Base::at; - - reference - front() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - const_reference - front() const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - reference - back() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::back(); - } - - const_reference - back() const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::back(); - } - - // 23.2.1.3 modifiers: - void - push_front(const _Tp& __x) - { - _Base::push_front(__x); - this->_M_invalidate_all(); - } - - void - push_back(const _Tp& __x) - { - _Base::push_back(__x); - this->_M_invalidate_all(); - } - -#if __cplusplus >= 201103L - void - push_front(_Tp&& __x) - { emplace_front(std::move(__x)); } - - void - push_back(_Tp&& __x) - { emplace_back(std::move(__x)); } - - template -#if __cplusplus > 201402L - reference -#else - void -#endif - emplace_front(_Args&&... __args) - { - _Base::emplace_front(std::forward<_Args>(__args)...); - this->_M_invalidate_all(); -#if __cplusplus > 201402L - return front(); -#endif - } - - template -#if __cplusplus > 201402L - reference -#else - void -#endif - emplace_back(_Args&&... __args) - { - _Base::emplace_back(std::forward<_Args>(__args)...); - this->_M_invalidate_all(); -#if __cplusplus > 201402L - return back(); -#endif - } - - template - iterator - emplace(const_iterator __position, _Args&&... __args) - { - __glibcxx_check_insert(__position); - _Base_iterator __res = _Base::emplace(__position.base(), - std::forward<_Args>(__args)...); - this->_M_invalidate_all(); - return iterator(__res, this); - } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __position, const _Tp& __x) -#else - insert(iterator __position, const _Tp& __x) -#endif - { - __glibcxx_check_insert(__position); - _Base_iterator __res = _Base::insert(__position.base(), __x); - this->_M_invalidate_all(); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, _Tp&& __x) - { return emplace(__position, std::move(__x)); } - - iterator - insert(const_iterator __position, initializer_list __l) - { - __glibcxx_check_insert(__position); - _Base_iterator __res = _Base::insert(__position.base(), __l); - this->_M_invalidate_all(); - return iterator(__res, this); - } -#endif - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - _Base_iterator __res = _Base::insert(__position.base(), __n, __x); - this->_M_invalidate_all(); - return iterator(__res, this); - } -#else - void - insert(iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - _Base::insert(__position.base(), __n, __x); - this->_M_invalidate_all(); - } -#endif - -#if __cplusplus >= 201103L - template> - iterator - insert(const_iterator __position, - _InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range(__position, __first, __last, __dist); - _Base_iterator __res; - if (__dist.second >= __gnu_debug::__dp_sign) - __res = _Base::insert(__position.base(), - __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - __res = _Base::insert(__position.base(), __first, __last); - - this->_M_invalidate_all(); - return iterator(__res, this); - } -#else - template - void - insert(iterator __position, - _InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range(__position, __first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__position.base(), - __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__position.base(), __first, __last); - - this->_M_invalidate_all(); - } -#endif - - void - pop_front() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - this->_M_invalidate_if(_Equal(_Base::begin())); - _Base::pop_front(); - } - - void - pop_back() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - this->_M_invalidate_if(_Equal(--_Base::end())); - _Base::pop_back(); - } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __position) -#else - erase(iterator __position) -#endif - { - __glibcxx_check_erase(__position); -#if __cplusplus >= 201103L - _Base_const_iterator __victim = __position.base(); -#else - _Base_iterator __victim = __position.base(); -#endif - if (__victim == _Base::begin() || __victim == _Base::end() - 1) - { - this->_M_invalidate_if(_Equal(__victim)); - return iterator(_Base::erase(__victim), this); - } - else - { - _Base_iterator __res = _Base::erase(__victim); - this->_M_invalidate_all(); - return iterator(__res, this); - } - } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __first, const_iterator __last) -#else - erase(iterator __first, iterator __last) -#endif - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - - if (__first.base() == __last.base()) -#if __cplusplus >= 201103L - return iterator(__first.base()._M_const_cast(), this); -#else - return __first; -#endif - else if (__first.base() == _Base::begin() - || __last.base() == _Base::end()) - { - this->_M_detach_singular(); - for (_Base_const_iterator __position = __first.base(); - __position != __last.base(); ++__position) - { - this->_M_invalidate_if(_Equal(__position)); - } - __try - { - return iterator(_Base::erase(__first.base(), __last.base()), - this); - } - __catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } - else - { - _Base_iterator __res = _Base::erase(__first.base(), - __last.base()); - this->_M_invalidate_all(); - return iterator(__res, this); - } - } - - void - swap(deque& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - _Base::clear(); - this->_M_invalidate_all(); - } - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __debug -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/forward_list deleted file mode 100644 index cd343302b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/forward_list +++ /dev/null @@ -1,866 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/forward_list - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_FORWARD_LIST -#define _GLIBCXX_DEBUG_FORWARD_LIST 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -// Special validity check for forward_list ranges. -#define __glibcxx_check_valid_fl_range(_First,_Last,_Dist) \ -_GLIBCXX_DEBUG_VERIFY(_First._M_valid_range(_Last, _Dist, false), \ - _M_message(__gnu_debug::__msg_valid_range) \ - ._M_iterator(_First, #_First) \ - ._M_iterator(_Last, #_Last)) - -namespace __gnu_debug -{ - /// Special iterators swap and invalidation for forward_list because of the - /// before_begin iterator. - template - class _Safe_forward_list - : public _Safe_sequence<_SafeSequence> - { - _SafeSequence& - _M_this() noexcept - { return *static_cast<_SafeSequence*>(this); } - - static void - _M_swap_aux(_Safe_sequence_base& __lhs, - _Safe_iterator_base*& __lhs_iterators, - _Safe_sequence_base& __rhs, - _Safe_iterator_base*& __rhs_iterators); - - void _M_swap_single(_Safe_sequence_base&) noexcept; - - protected: - void - _M_invalidate_all() - { - using _Base_const_iterator = __decltype(_M_this()._M_base().cend()); - this->_M_invalidate_if([this](_Base_const_iterator __it) - { - return __it != _M_this()._M_base().cbefore_begin() - && __it != _M_this()._M_base().cend(); }); - } - - void _M_swap(_Safe_sequence_base&) noexcept; - }; - - template - void - _Safe_forward_list<_SafeSequence>:: - _M_swap_aux(_Safe_sequence_base& __lhs, - _Safe_iterator_base*& __lhs_iterators, - _Safe_sequence_base& __rhs, - _Safe_iterator_base*& __rhs_iterators) - { - using const_iterator = typename _SafeSequence::const_iterator; - _Safe_iterator_base* __bbegin_its = 0; - _Safe_iterator_base* __last_bbegin = 0; - _SafeSequence& __rseq = static_cast<_SafeSequence&>(__rhs); - - for (_Safe_iterator_base* __iter = __lhs_iterators; __iter;) - { - // Even iterator is cast to const_iterator, not a problem. - _Safe_iterator_base* __victim_base = __iter; - const_iterator* __victim = - static_cast(__victim_base); - __iter = __iter->_M_next; - if (__victim->base() == __rseq._M_base().cbefore_begin()) - { - __victim->_M_unlink(); - if (__lhs_iterators == __victim_base) - __lhs_iterators = __victim_base->_M_next; - if (__bbegin_its) - { - __victim_base->_M_next = __bbegin_its; - __bbegin_its->_M_prior = __victim_base; - } - else - __last_bbegin = __victim_base; - __bbegin_its = __victim_base; - } - else - __victim_base->_M_sequence = std::__addressof(__lhs); - } - - if (__bbegin_its) - { - if (__rhs_iterators) - { - __rhs_iterators->_M_prior = __last_bbegin; - __last_bbegin->_M_next = __rhs_iterators; - } - __rhs_iterators = __bbegin_its; - } - } - - template - void - _Safe_forward_list<_SafeSequence>:: - _M_swap_single(_Safe_sequence_base& __other) noexcept - { - std::swap(_M_this()._M_iterators, __other._M_iterators); - std::swap(_M_this()._M_const_iterators, __other._M_const_iterators); - // Useless, always 1 on forward_list - //std::swap(_M_this()_M_version, __other._M_version); - _Safe_iterator_base* __this_its = _M_this()._M_iterators; - _M_swap_aux(__other, __other._M_iterators, - _M_this(), _M_this()._M_iterators); - _Safe_iterator_base* __this_const_its = _M_this()._M_const_iterators; - _M_swap_aux(__other, __other._M_const_iterators, - _M_this(), _M_this()._M_const_iterators); - _M_swap_aux(_M_this(), __this_its, - __other, __other._M_iterators); - _M_swap_aux(_M_this(), __this_const_its, - __other, __other._M_const_iterators); - } - - /* Special forward_list _M_swap version that does not swap the - * before-begin ownership.*/ - template - void - _Safe_forward_list<_SafeSequence>:: - _M_swap(_Safe_sequence_base& __other) noexcept - { - // We need to lock both sequences to swap - using namespace __gnu_cxx; - __mutex *__this_mutex = &_M_this()._M_get_mutex(); - __mutex *__other_mutex = - &static_cast<_SafeSequence&>(__other)._M_get_mutex(); - if (__this_mutex == __other_mutex) - { - __scoped_lock __lock(*__this_mutex); - _M_swap_single(__other); - } - else - { - __scoped_lock __l1(__this_mutex < __other_mutex - ? *__this_mutex : *__other_mutex); - __scoped_lock __l2(__this_mutex < __other_mutex - ? *__other_mutex : *__this_mutex); - _M_swap_single(__other); - } - } -} - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::forward_list with safety/checking/debug instrumentation. - template > - class forward_list - : public __gnu_debug::_Safe_container< - forward_list<_Tp, _Alloc>, _Alloc, __gnu_debug::_Safe_forward_list>, - public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> - { - typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base; - typedef __gnu_debug::_Safe_container< - forward_list, _Alloc, __gnu_debug::_Safe_forward_list> _Safe; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator< - _Base_iterator, forward_list> iterator; - typedef __gnu_debug::_Safe_iterator< - _Base_const_iterator, forward_list> const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - typedef _Tp value_type; - typedef typename _Base::allocator_type allocator_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - - // 23.2.3.1 construct/copy/destroy: - - forward_list() = default; - - explicit - forward_list(const allocator_type& __al) noexcept - : _Base(__al) { } - - forward_list(const forward_list& __list, const allocator_type& __al) - : _Base(__list, __al) - { } - - forward_list(forward_list&& __list, const allocator_type& __al) - : _Safe(std::move(__list._M_safe()), __al), - _Base(std::move(__list._M_base()), __al) - { } - - explicit - forward_list(size_type __n, const allocator_type& __al = allocator_type()) - : _Base(__n, __al) - { } - - forward_list(size_type __n, const _Tp& __value, - const allocator_type& __al = allocator_type()) - : _Base(__n, __value, __al) - { } - - template> - forward_list(_InputIterator __first, _InputIterator __last, - const allocator_type& __al = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __al) - { } - - forward_list(const forward_list&) = default; - - forward_list(forward_list&&) = default; - - forward_list(std::initializer_list<_Tp> __il, - const allocator_type& __al = allocator_type()) - : _Base(__il, __al) - { } - - ~forward_list() = default; - - forward_list& - operator=(const forward_list&) = default; - - forward_list& - operator=(forward_list&&) = default; - - forward_list& - operator=(std::initializer_list<_Tp> __il) - { - _M_base() = __il; - this->_M_invalidate_all(); - return *this; - } - - template> - void - assign(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::assign(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::assign(__first, __last); - - this->_M_invalidate_all(); - } - - void - assign(size_type __n, const _Tp& __val) - { - _Base::assign(__n, __val); - this->_M_invalidate_all(); - } - - void - assign(std::initializer_list<_Tp> __il) - { - _Base::assign(__il); - this->_M_invalidate_all(); - } - - using _Base::get_allocator; - - // iterators: - - iterator - before_begin() noexcept - { return iterator(_Base::before_begin(), this); } - - const_iterator - before_begin() const noexcept - { return const_iterator(_Base::before_begin(), this); } - - iterator - begin() noexcept - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const noexcept - { return const_iterator(_Base::begin(), this); } - - iterator - end() noexcept - { return iterator(_Base::end(), this); } - - const_iterator - end() const noexcept - { return const_iterator(_Base::end(), this); } - - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::cbegin(), this); } - - const_iterator - cbefore_begin() const noexcept - { return const_iterator(_Base::cbefore_begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::cend(), this); } - - using _Base::empty; - using _Base::max_size; - - // element access: - - reference - front() - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - const_reference - front() const - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - // modifiers: - - using _Base::emplace_front; - using _Base::push_front; - - void - pop_front() - { - __glibcxx_check_nonempty(); - this->_M_invalidate_if([this](_Base_const_iterator __it) - { return __it == this->_M_base().cbegin(); }); - _Base::pop_front(); - } - - template - iterator - emplace_after(const_iterator __pos, _Args&&... __args) - { - __glibcxx_check_insert_after(__pos); - return iterator(_Base::emplace_after(__pos.base(), - std::forward<_Args>(__args)...), - this); - } - - iterator - insert_after(const_iterator __pos, const _Tp& __val) - { - __glibcxx_check_insert_after(__pos); - return iterator(_Base::insert_after(__pos.base(), __val), this); - } - - iterator - insert_after(const_iterator __pos, _Tp&& __val) - { - __glibcxx_check_insert_after(__pos); - return iterator(_Base::insert_after(__pos.base(), std::move(__val)), - this); - } - - iterator - insert_after(const_iterator __pos, size_type __n, const _Tp& __val) - { - __glibcxx_check_insert_after(__pos); - return iterator(_Base::insert_after(__pos.base(), __n, __val), - this); - } - - template> - iterator - insert_after(const_iterator __pos, - _InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range_after(__pos, __first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - return - { - _Base::insert_after(__pos.base(), - __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)), - this - }; - else - return { _Base::insert_after(__pos.base(), __first, __last), this }; - } - - iterator - insert_after(const_iterator __pos, std::initializer_list<_Tp> __il) - { - __glibcxx_check_insert_after(__pos); - return iterator(_Base::insert_after(__pos.base(), __il), this); - } - - private: - _Base_iterator - _M_erase_after(_Base_const_iterator __pos) - { - _Base_const_iterator __next = std::next(__pos); - this->_M_invalidate_if([__next](_Base_const_iterator __it) - { return __it == __next; }); - return _Base::erase_after(__pos); - } - public: - iterator - erase_after(const_iterator __pos) - { - __glibcxx_check_erase_after(__pos); - return iterator(_M_erase_after(__pos.base()), this); - } - - iterator - erase_after(const_iterator __pos, const_iterator __last) - { - __glibcxx_check_erase_range_after(__pos, __last); - for (_Base_const_iterator __victim = std::next(__pos.base()); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range2) - ._M_sequence(*this, "this") - ._M_iterator(__pos, "pos") - ._M_iterator(__last, "last")); - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - } - return iterator(_Base::erase_after(__pos.base(), __last.base()), this); - } - - void - swap(forward_list& __list) - noexcept( noexcept(declval<_Base&>().swap(__list)) ) - { - _Safe::_M_swap(__list); - _Base::swap(__list); - } - - void - resize(size_type __sz) - { - this->_M_detach_singular(); - - // if __sz < size(), invalidate all iterators in [begin+__sz, end() - _Base_iterator __victim = _Base::begin(); - _Base_iterator __end = _Base::end(); - for (size_type __i = __sz; __victim != __end && __i > 0; --__i) - ++__victim; - - for (; __victim != __end; ++__victim) - { - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - } - - __try - { - _Base::resize(__sz); - } - __catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } - - void - resize(size_type __sz, const value_type& __val) - { - this->_M_detach_singular(); - - // if __sz < size(), invalidate all iterators in [begin+__sz, end()) - _Base_iterator __victim = _Base::begin(); - _Base_iterator __end = _Base::end(); - for (size_type __i = __sz; __victim != __end && __i > 0; --__i) - ++__victim; - - for (; __victim != __end; ++__victim) - { - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - } - - __try - { - _Base::resize(__sz, __val); - } - __catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } - - void - clear() noexcept - { - _Base::clear(); - this->_M_invalidate_all(); - } - - // 23.2.3.5 forward_list operations: - void - splice_after(const_iterator __pos, forward_list&& __list) - { - __glibcxx_check_insert_after(__pos); - _GLIBCXX_DEBUG_VERIFY(std::__addressof(__list) != this, - _M_message(__gnu_debug::__msg_self_splice) - ._M_sequence(*this, "this")); - _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), - _M_message(__gnu_debug::__msg_splice_alloc) - ._M_sequence(*this) - ._M_sequence(__list, "__list")); - this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it) - { - return __it != __list._M_base().cbefore_begin() - && __it != __list._M_base().end(); - }); - _Base::splice_after(__pos.base(), std::move(__list._M_base())); - } - - void - splice_after(const_iterator __pos, forward_list& __list) - { splice_after(__pos, std::move(__list)); } - - void - splice_after(const_iterator __pos, forward_list&& __list, - const_iterator __i) - { - __glibcxx_check_insert_after(__pos); - _GLIBCXX_DEBUG_VERIFY(__i._M_before_dereferenceable(), - _M_message(__gnu_debug::__msg_splice_bad) - ._M_iterator(__i, "__i")); - _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(std::__addressof(__list)), - _M_message(__gnu_debug::__msg_splice_other) - ._M_iterator(__i, "__i") - ._M_sequence(__list, "__list")); - _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), - _M_message(__gnu_debug::__msg_splice_alloc) - ._M_sequence(*this) - ._M_sequence(__list, "__list")); - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 250. splicing invalidates iterators - _Base_const_iterator __next = std::next(__i.base()); - this->_M_transfer_from_if(__list, [__next](_Base_const_iterator __it) - { return __it == __next; }); - _Base::splice_after(__pos.base(), std::move(__list._M_base()), - __i.base()); - } - - void - splice_after(const_iterator __pos, forward_list& __list, - const_iterator __i) - { splice_after(__pos, std::move(__list), __i); } - - void - splice_after(const_iterator __pos, forward_list&& __list, - const_iterator __before, const_iterator __last) - { - typename __gnu_debug::_Distance_traits::__type __dist; - auto __listptr = std::__addressof(__list); - __glibcxx_check_insert_after(__pos); - __glibcxx_check_valid_fl_range(__before, __last, __dist); - _GLIBCXX_DEBUG_VERIFY(__before._M_attached_to(__listptr), - _M_message(__gnu_debug::__msg_splice_other) - ._M_sequence(__list, "list") - ._M_iterator(__before, "before")); - _GLIBCXX_DEBUG_VERIFY(__before._M_dereferenceable() - || __before._M_is_before_begin(), - _M_message(__gnu_debug::__msg_valid_range2) - ._M_sequence(__list, "list") - ._M_iterator(__before, "before") - ._M_iterator(__last, "last")); - _GLIBCXX_DEBUG_VERIFY(__before != __last, - _M_message(__gnu_debug::__msg_valid_range2) - ._M_sequence(__list, "list") - ._M_iterator(__before, "before") - ._M_iterator(__last, "last")); - _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), - _M_message(__gnu_debug::__msg_splice_alloc) - ._M_sequence(*this) - ._M_sequence(__list, "__list")); - - for (_Base_const_iterator __tmp = std::next(__before.base()); - __tmp != __last.base(); ++__tmp) - { - _GLIBCXX_DEBUG_VERIFY(__tmp != __list._M_base().end(), - _M_message(__gnu_debug::__msg_valid_range2) - ._M_sequence(__list, "list") - ._M_iterator(__before, "before") - ._M_iterator(__last, "last")); - _GLIBCXX_DEBUG_VERIFY(__listptr != this || __tmp != __pos.base(), - _M_message(__gnu_debug::__msg_splice_overlap) - ._M_iterator(__tmp, "position") - ._M_iterator(__before, "before") - ._M_iterator(__last, "last")); - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 250. splicing invalidates iterators - this->_M_transfer_from_if(__list, [__tmp](_Base_const_iterator __it) - { return __it == __tmp; }); - } - - _Base::splice_after(__pos.base(), std::move(__list._M_base()), - __before.base(), __last.base()); - } - - void - splice_after(const_iterator __pos, forward_list& __list, - const_iterator __before, const_iterator __last) - { splice_after(__pos, std::move(__list), __before, __last); } - - void - remove(const _Tp& __val) - { - _Base_iterator __x = _Base::before_begin(); - _Base_iterator __old = __x++; - while (__x != _Base::end()) - { - if (*__x == __val) - __x = _M_erase_after(__old); - else - __old = __x++; - } - } - - template - void - remove_if(_Pred __pred) - { - _Base_iterator __x = _Base::before_begin(); - _Base_iterator __old = __x++; - while (__x != _Base::end()) - { - if (__pred(*__x)) - __x = _M_erase_after(__old); - else - __old = __x++; - } - } - - void - unique() - { - _Base_iterator __first = _Base::begin(); - _Base_iterator __last = _Base::end(); - if (__first == __last) - return; - _Base_iterator __next = std::next(__first); - while (__next != __last) - { - if (*__first == *__next) - __next = _M_erase_after(__first); - else - __first = __next++; - } - } - - template - void - unique(_BinPred __binary_pred) - { - _Base_iterator __first = _Base::begin(); - _Base_iterator __last = _Base::end(); - if (__first == __last) - return; - _Base_iterator __next = std::next(__first); - while (__next != __last) - { - if (__binary_pred(*__first, *__next)) - __next = _M_erase_after(__first); - else - __first = __next++; - } - } - - void - merge(forward_list&& __list) - { - if (this != std::__addressof(__list)) - { - __glibcxx_check_sorted(_Base::begin(), _Base::end()); - __glibcxx_check_sorted(__list._M_base().begin(), - __list._M_base().end()); - this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it) - { - return __it != __list._M_base().cbefore_begin() - && __it != __list._M_base().cend(); - }); - _Base::merge(std::move(__list._M_base())); - } - } - - void - merge(forward_list& __list) - { merge(std::move(__list)); } - - template - void - merge(forward_list&& __list, _Comp __comp) - { - if (this != std::__addressof(__list)) - { - __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp); - __glibcxx_check_sorted_pred(__list._M_base().begin(), - __list._M_base().end(), __comp); - this->_M_transfer_from_if(__list, - [&__list](_Base_const_iterator __it) - { - return __it != __list._M_base().cbefore_begin() - && __it != __list._M_base().cend(); - }); - _Base::merge(std::move(__list._M_base()), __comp); - } - } - - template - void - merge(forward_list& __list, _Comp __comp) - { merge(std::move(__list), __comp); } - - using _Base::sort; - using _Base::reverse; - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - }; - - template - bool - operator==(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return __lx._M_base() == __ly._M_base(); } - - template - inline bool - operator<(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return __lx._M_base() < __ly._M_base(); } - - template - inline bool - operator!=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return !(__lx == __ly); } - - /// Based on operator< - template - inline bool - operator>(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return (__ly < __lx); } - - /// Based on operator< - template - inline bool - operator>=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return !(__lx < __ly); } - - /// Based on operator< - template - inline bool - operator<=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return !(__ly < __lx); } - - /// See std::forward_list::swap(). - template - inline void - swap(forward_list<_Tp, _Alloc>& __lx, forward_list<_Tp, _Alloc>& __ly) - noexcept(noexcept(__lx.swap(__ly))) - { __lx.swap(__ly); } - -} // namespace __debug -} // namespace std - -namespace __gnu_debug -{ - template - struct _BeforeBeginHelper > - { - typedef std::__debug::forward_list<_Tp, _Alloc> _Sequence; - - template - static bool - _S_Is(const _Safe_iterator<_Iterator, _Sequence>& __it) - { - return - __it.base() == __it._M_get_sequence()->_M_base().before_begin(); - } - - template - static bool - _S_Is_Beginnest(const _Safe_iterator<_Iterator, _Sequence>& __it) - { return _S_Is(__it); } - }; - - template - struct _Sequence_traits > - { - typedef typename std::__debug::forward_list<_Tp, _Alloc>::iterator _It; - - static typename _Distance_traits<_It>::__type - _S_size(const std::__debug::forward_list<_Tp, _Alloc>& __seq) - { - return __seq.empty() - ? std::make_pair(0, __dp_exact) : std::make_pair(1, __dp_equality); - } - }; - -#ifndef _GLIBCXX_DEBUG_PEDANTIC - template - struct _Insert_range_from_self_is_safe< - std::__debug::forward_list<_Tp, _Alloc> > - { enum { __value = 1 }; }; -#endif -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/list deleted file mode 100644 index a45ece244..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/list +++ /dev/null @@ -1,842 +0,0 @@ -// Debugging list implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/list - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_LIST -#define _GLIBCXX_DEBUG_LIST 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::list with safety/checking/debug instrumentation. - template > - class list - : public __gnu_debug::_Safe_container< - list<_Tp, _Allocator>, _Allocator, - __gnu_debug::_Safe_node_sequence>, - public _GLIBCXX_STD_C::list<_Tp, _Allocator> - { - typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - list, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator<_Base_iterator, list> - iterator; - typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, list> - const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.2.1 construct/copy/destroy: - -#if __cplusplus < 201103L - list() - : _Base() { } - - list(const list& __x) - : _Base(__x) { } - - ~list() { } -#else - list() = default; - list(const list&) = default; - list(list&&) = default; - - list(initializer_list __l, - const allocator_type& __a = allocator_type()) - : _Base(__l, __a) { } - - ~list() = default; - - list(const list& __x, const allocator_type& __a) - : _Base(__x, __a) { } - - list(list&& __x, const allocator_type& __a) - : _Base(std::move(__x), __a) { } -#endif - - explicit - list(const _Allocator& __a) _GLIBCXX_NOEXCEPT - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - list(size_type __n, const allocator_type& __a = allocator_type()) - : _Base(__n, __a) { } - - list(size_type __n, const _Tp& __value, - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#else - explicit - list(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - list(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) - { } - - list(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - list& - operator=(const list& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - return *this; - } -#else - list& - operator=(const list&) = default; - - list& - operator=(list&&) = default; - - list& - operator=(initializer_list __l) - { - this->_M_invalidate_all(); - _M_base() = __l; - return *this; - } - - void - assign(initializer_list __l) - { - _Base::assign(__l); - this->_M_invalidate_all(); - } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - void - assign(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::assign(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::assign(__first, __last); - - this->_M_invalidate_all(); - } - - void - assign(size_type __n, const _Tp& __t) - { - _Base::assign(__n, __t); - this->_M_invalidate_all(); - } - - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // 23.2.2.2 capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - -#if __cplusplus >= 201103L - void - resize(size_type __sz) - { - this->_M_detach_singular(); - - // if __sz < size(), invalidate all iterators in [begin + __sz, end()) - _Base_iterator __victim = _Base::begin(); - _Base_iterator __end = _Base::end(); - for (size_type __i = __sz; __victim != __end && __i > 0; --__i) - ++__victim; - - for (; __victim != __end; ++__victim) - this->_M_invalidate_if(_Equal(__victim)); - - __try - { - _Base::resize(__sz); - } - __catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } - - void - resize(size_type __sz, const _Tp& __c) - { - this->_M_detach_singular(); - - // if __sz < size(), invalidate all iterators in [begin + __sz, end()) - _Base_iterator __victim = _Base::begin(); - _Base_iterator __end = _Base::end(); - for (size_type __i = __sz; __victim != __end && __i > 0; --__i) - ++__victim; - - for (; __victim != __end; ++__victim) - this->_M_invalidate_if(_Equal(__victim)); - - __try - { - _Base::resize(__sz, __c); - } - __catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } -#else - void - resize(size_type __sz, _Tp __c = _Tp()) - { - this->_M_detach_singular(); - - // if __sz < size(), invalidate all iterators in [begin + __sz, end()) - _Base_iterator __victim = _Base::begin(); - _Base_iterator __end = _Base::end(); - for (size_type __i = __sz; __victim != __end && __i > 0; --__i) - ++__victim; - - for (; __victim != __end; ++__victim) - this->_M_invalidate_if(_Equal(__victim)); - - __try - { - _Base::resize(__sz, __c); - } - __catch(...) - { - this->_M_revalidate_singular(); - __throw_exception_again; - } - } -#endif - - // element access: - reference - front() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - const_reference - front() const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - reference - back() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::back(); - } - - const_reference - back() const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::back(); - } - - // 23.2.2.3 modifiers: - using _Base::push_front; - -#if __cplusplus >= 201103L - using _Base::emplace_front; -#endif - - void - pop_front() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - this->_M_invalidate_if(_Equal(_Base::begin())); - _Base::pop_front(); - } - - using _Base::push_back; - -#if __cplusplus >= 201103L - using _Base::emplace_back; -#endif - - void - pop_back() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - this->_M_invalidate_if(_Equal(--_Base::end())); - _Base::pop_back(); - } - -#if __cplusplus >= 201103L - template - iterator - emplace(const_iterator __position, _Args&&... __args) - { - __glibcxx_check_insert(__position); - return iterator(_Base::emplace(__position.base(), - std::forward<_Args>(__args)...), this); - } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __position, const _Tp& __x) -#else - insert(iterator __position, const _Tp& __x) -#endif - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, _Tp&& __x) - { return emplace(__position, std::move(__x)); } - - iterator - insert(const_iterator __p, initializer_list __l) - { - __glibcxx_check_insert(__p); - return iterator(_Base::insert(__p.base(), __l), this); - } -#endif - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __n, __x), this); - } -#else - void - insert(iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - _Base::insert(__position.base(), __n, __x); - } -#endif - -#if __cplusplus >= 201103L - template> - iterator - insert(const_iterator __position, _InputIterator __first, - _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range(__position, __first, __last, __dist); - if (__dist.second >= __gnu_debug::__dp_sign) - return - { - _Base::insert(__position.base(), - __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)), - this - }; - else - return { _Base::insert(__position.base(), __first, __last), this }; - } -#else - template - void - insert(iterator __position, _InputIterator __first, - _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range(__position, __first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__position.base(), __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__position.base(), __first, __last); - } -#endif - - private: - _Base_iterator -#if __cplusplus >= 201103L - _M_erase(_Base_const_iterator __position) noexcept -#else - _M_erase(_Base_iterator __position) -#endif - { - this->_M_invalidate_if(_Equal(__position)); - return _Base::erase(__position); - } - - public: - iterator -#if __cplusplus >= 201103L - erase(const_iterator __position) noexcept -#else - erase(iterator __position) -#endif - { - __glibcxx_check_erase(__position); - return iterator(_M_erase(__position.base()), this); - } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __first, const_iterator __last) noexcept -#else - erase(iterator __first, iterator __last) -#endif - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "position") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - return iterator(_Base::erase(__first.base(), __last.base()), this); - } - - void - swap(list& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - _Base::clear(); - this->_M_invalidate_all(); - } - - // 23.2.2.4 list operations: - void -#if __cplusplus >= 201103L - splice(const_iterator __position, list&& __x) noexcept -#else - splice(iterator __position, list& __x) -#endif - { - _GLIBCXX_DEBUG_VERIFY(std::__addressof(__x) != this, - _M_message(__gnu_debug::__msg_self_splice) - ._M_sequence(*this, "this")); - this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); - _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base())); - } - -#if __cplusplus >= 201103L - void - splice(const_iterator __position, list& __x) noexcept - { splice(__position, std::move(__x)); } -#endif - - void -#if __cplusplus >= 201103L - splice(const_iterator __position, list&& __x, const_iterator __i) noexcept -#else - splice(iterator __position, list& __x, iterator __i) -#endif - { - __glibcxx_check_insert(__position); - - // We used to perform the splice_alloc check: not anymore, redundant - // after implementing the relevant bits of N1599. - - _GLIBCXX_DEBUG_VERIFY(__i._M_dereferenceable(), - _M_message(__gnu_debug::__msg_splice_bad) - ._M_iterator(__i, "__i")); - _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(std::__addressof(__x)), - _M_message(__gnu_debug::__msg_splice_other) - ._M_iterator(__i, "__i")._M_sequence(__x, "__x")); - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 250. splicing invalidates iterators - this->_M_transfer_from_if(__x, _Equal(__i.base())); - _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()), - __i.base()); - } - -#if __cplusplus >= 201103L - void - splice(const_iterator __position, list& __x, const_iterator __i) noexcept - { splice(__position, std::move(__x), __i); } -#endif - - void -#if __cplusplus >= 201103L - splice(const_iterator __position, list&& __x, const_iterator __first, - const_iterator __last) noexcept -#else - splice(iterator __position, list& __x, iterator __first, - iterator __last) -#endif - { - __glibcxx_check_insert(__position); - __glibcxx_check_valid_range(__first, __last); - _GLIBCXX_DEBUG_VERIFY(__first._M_attached_to(std::__addressof(__x)), - _M_message(__gnu_debug::__msg_splice_other) - ._M_sequence(__x, "x") - ._M_iterator(__first, "first")); - - // We used to perform the splice_alloc check: not anymore, redundant - // after implementing the relevant bits of N1599. - - for (_Base_const_iterator __tmp = __first.base(); - __tmp != __last.base(); ++__tmp) - { - _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - _GLIBCXX_DEBUG_VERIFY(std::__addressof(__x) != this - || __tmp != __position.base(), - _M_message(__gnu_debug::__msg_splice_overlap) - ._M_iterator(__tmp, "position") - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 250. splicing invalidates iterators - this->_M_transfer_from_if(__x, _Equal(__tmp)); - } - - _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()), - __first.base(), __last.base()); - } - -#if __cplusplus >= 201103L - void - splice(const_iterator __position, list& __x, - const_iterator __first, const_iterator __last) noexcept - { splice(__position, std::move(__x), __first, __last); } -#endif - - void - remove(const _Tp& __value) - { - for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); ) - { - if (*__x == __value) - __x = _M_erase(__x); - else - ++__x; - } - } - - template - void - remove_if(_Predicate __pred) - { - for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); ) - { - if (__pred(*__x)) - __x = _M_erase(__x); - else - ++__x; - } - } - - void - unique() - { - _Base_iterator __first = _Base::begin(); - _Base_iterator __last = _Base::end(); - if (__first == __last) - return; - _Base_iterator __next = __first; ++__next; - while (__next != __last) - { - if (*__first == *__next) - __next = _M_erase(__next); - else - __first = __next++; - } - } - - template - void - unique(_BinaryPredicate __binary_pred) - { - _Base_iterator __first = _Base::begin(); - _Base_iterator __last = _Base::end(); - if (__first == __last) - return; - _Base_iterator __next = __first; ++__next; - while (__next != __last) - { - if (__binary_pred(*__first, *__next)) - __next = _M_erase(__next); - else - __first = __next++; - } - } - - void -#if __cplusplus >= 201103L - merge(list&& __x) -#else - merge(list& __x) -#endif - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 300. list::merge() specification incomplete - if (this != std::__addressof(__x)) - { - __glibcxx_check_sorted(_Base::begin(), _Base::end()); - __glibcxx_check_sorted(__x.begin().base(), __x.end().base()); - this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); - _Base::merge(_GLIBCXX_MOVE(__x._M_base())); - } - } - -#if __cplusplus >= 201103L - void - merge(list& __x) - { merge(std::move(__x)); } -#endif - - template - void -#if __cplusplus >= 201103L - merge(list&& __x, _Compare __comp) -#else - merge(list& __x, _Compare __comp) -#endif - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 300. list::merge() specification incomplete - if (this != std::__addressof(__x)) - { - __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), - __comp); - __glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(), - __comp); - this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); - _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp); - } - } - -#if __cplusplus >= 201103L - template - void - merge(list& __x, _Compare __comp) - { merge(std::move(__x), __comp); } -#endif - - void - sort() { _Base::sort(); } - - template - void - sort(_StrictWeakOrdering __pred) { _Base::sort(__pred); } - - using _Base::reverse; - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __debug -} // namespace std - -namespace __gnu_debug -{ -#ifndef _GLIBCXX_USE_CXX11_ABI - // If not using C++11 list::size() is not in O(1) so we do not use it. - template - struct _Sequence_traits > - { - typedef typename std::__debug::list<_Tp, _Alloc>::iterator _It; - - static typename _Distance_traits<_It>::__type - _S_size(const std::__debug::list<_Tp, _Alloc>& __seq) - { - return __seq.empty() - ? std::make_pair(0, __dp_exact) : std::make_pair(1, __dp_equality); - } - }; -#endif - -#ifndef _GLIBCXX_DEBUG_PEDANTIC - template - struct _Insert_range_from_self_is_safe > - { enum { __value = 1 }; }; -#endif -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/map deleted file mode 100644 index eaa560011..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/map +++ /dev/null @@ -1,38 +0,0 @@ -// Debugging map/multimap implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/map - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_MAP -#define _GLIBCXX_DEBUG_MAP 1 - -#pragma GCC system_header - -#include -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/map.h deleted file mode 100644 index ba6a6201f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/map.h +++ /dev/null @@ -1,741 +0,0 @@ -// Debugging map implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/map.h - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_MAP_H -#define _GLIBCXX_DEBUG_MAP_H 1 - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::map with safety/checking/debug instrumentation. - template, - typename _Allocator = std::allocator > > - class map - : public __gnu_debug::_Safe_container< - map<_Key, _Tp, _Compare, _Allocator>, _Allocator, - __gnu_debug::_Safe_node_sequence>, - public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> - { - typedef _GLIBCXX_STD_C::map< - _Key, _Tp, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - map, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - - public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair value_type; - typedef _Compare key_compare; - typedef _Allocator allocator_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator<_Base_iterator, map> - iterator; - typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, map> - const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.3.1.1 construct/copy/destroy: - -#if __cplusplus < 201103L - map() : _Base() { } - - map(const map& __x) - : _Base(__x) { } - - ~map() { } -#else - map() = default; - map(const map&) = default; - map(map&&) = default; - - map(initializer_list __l, - const _Compare& __c = _Compare(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __c, __a) { } - - explicit - map(const allocator_type& __a) - : _Base(__a) { } - - map(const map& __m, const allocator_type& __a) - : _Base(__m, __a) { } - - map(map&& __m, const allocator_type& __a) - : _Safe(std::move(__m._M_safe()), __a), - _Base(std::move(__m._M_base()), __a) { } - - map(initializer_list __l, const allocator_type& __a) - : _Base(__l, __a) { } - - template - map(_InputIterator __first, _InputIterator __last, - const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) - { } - - ~map() = default; -#endif - - map(const _Base& __x) - : _Base(__x) { } - - explicit map(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - - template - map(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), - __comp, __a) { } - -#if __cplusplus < 201103L - map& - operator=(const map& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - return *this; - } -#else - map& - operator=(const map&) = default; - - map& - operator=(map&&) = default; - - map& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } -#endif - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 133. map missing get_allocator() - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // 23.3.1.2 element access: - using _Base::operator[]; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 464. Suggestion for new member functions in standard containers. - using _Base::at; - - // modifiers: -#if __cplusplus >= 201103L - template - std::pair - emplace(_Args&&... __args) - { - auto __res = _Base::emplace(std::forward<_Args>(__args)...); - return std::pair(iterator(__res.first, this), - __res.second); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - __glibcxx_check_insert(__pos); - return iterator(_Base::emplace_hint(__pos.base(), - std::forward<_Args>(__args)...), - this); - } -#endif - - std::pair - insert(const value_type& __x) - { - std::pair<_Base_iterator, bool> __res = _Base::insert(__x); - return std::pair(iterator(__res.first, this), - __res.second); - } - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - std::pair - insert(value_type&& __x) - { - auto __res = _Base::insert(std::move(__x)); - return { iterator(__res.first, this), __res.second }; - } - - template::value>::type> - std::pair - insert(_Pair&& __x) - { - std::pair<_Base_iterator, bool> __res - = _Base::insert(std::forward<_Pair>(__x)); - return std::pair(iterator(__res.first, this), - __res.second); - } -#endif - -#if __cplusplus >= 201103L - void - insert(std::initializer_list __list) - { _Base::insert(__list); } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __position, const value_type& __x) -#else - insert(iterator __position, const value_type& __x) -#endif - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(const_iterator __position, value_type&& __x) - { - __glibcxx_check_insert(__position); - return { _Base::insert(__position.base(), std::move(__x)), this }; - } - - template::value>::type> - iterator - insert(const_iterator __position, _Pair&& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), - std::forward<_Pair>(__x)), this); - } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - } - - -#if __cplusplus > 201402L - template - pair - try_emplace(const key_type& __k, _Args&&... __args) - { - auto __res = _Base::try_emplace(__k, - std::forward<_Args>(__args)...); - return { iterator(__res.first, this), __res.second }; - } - - template - pair - try_emplace(key_type&& __k, _Args&&... __args) - { - auto __res = _Base::try_emplace(std::move(__k), - std::forward<_Args>(__args)...); - return { iterator(__res.first, this), __res.second }; - } - - template - iterator - try_emplace(const_iterator __hint, const key_type& __k, - _Args&&... __args) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::try_emplace(__hint.base(), __k, - std::forward<_Args>(__args)...), - this); - } - - template - iterator - try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::try_emplace(__hint.base(), std::move(__k), - std::forward<_Args>(__args)...), - this); - } - - template - std::pair - insert_or_assign(const key_type& __k, _Obj&& __obj) - { - auto __res = _Base::insert_or_assign(__k, - std::forward<_Obj>(__obj)); - return { iterator(__res.first, this), __res.second }; - } - - template - std::pair - insert_or_assign(key_type&& __k, _Obj&& __obj) - { - auto __res = _Base::insert_or_assign(std::move(__k), - std::forward<_Obj>(__obj)); - return { iterator(__res.first, this), __res.second }; - } - - template - iterator - insert_or_assign(const_iterator __hint, - const key_type& __k, _Obj&& __obj) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert_or_assign(__hint.base(), __k, - std::forward<_Obj>(__obj)), - this); - } - - template - iterator - insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert_or_assign(__hint.base(), - std::move(__k), - std::forward<_Obj>(__obj)), - this); - } -#endif // C++17 - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - struct insert_return_type - { - bool inserted; - iterator position; - node_type node; - }; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - insert_return_type - insert(node_type&& __nh) - { - auto __ret = _Base::insert(std::move(__nh)); - iterator __pos = iterator(__ret.position, this); - return { __ret.inserted, __pos, std::move(__ret.node) }; - } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return iterator(_Base::erase(__position.base()), this); - } - - iterator - erase(iterator __position) - { return erase(const_iterator(__position)); } -#else - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - _Base::erase(__position.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - _Base_iterator __victim = _Base::find(__x); - if (__victim == _Base::end()) - return 0; - else - { - this->_M_invalidate_if(_Equal(__victim)); - _Base::erase(__victim); - return 1; - } - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - _Base::erase(__first.base(), __last.base()); - } -#endif - - void - swap(map& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_invalidate_all(); - _Base::clear(); - } - - // observers: - using _Base::key_comp; - using _Base::value_comp; - - // 23.3.1.3 map operations: - iterator - find(const key_type& __x) - { return iterator(_Base::find(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { return { _Base::find(__x), this }; } -#endif - - const_iterator - find(const key_type& __x) const - { return const_iterator(_Base::find(__x), this); } - -#if __cplusplus > 201103L - template::type> - const_iterator - find(const _Kt& __x) const - { return { _Base::find(__x), this }; } -#endif - - using _Base::count; - - iterator - lower_bound(const key_type& __x) - { return iterator(_Base::lower_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { return { _Base::lower_bound(__x), this }; } -#endif - - const_iterator - lower_bound(const key_type& __x) const - { return const_iterator(_Base::lower_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { return { _Base::lower_bound(__x), this }; } -#endif - - iterator - upper_bound(const key_type& __x) - { return iterator(_Base::upper_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { return { _Base::upper_bound(__x), this }; } -#endif - - const_iterator - upper_bound(const key_type& __x) const - { return const_iterator(_Base::upper_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { return { _Base::upper_bound(__x), this }; } -#endif - - std::pair - equal_range(const key_type& __x) - { - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - std::pair - equal_range(const key_type& __x) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) const - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs, - map<_Key, _Tp, _Compare, _Allocator>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __debug -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/multimap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/multimap.h deleted file mode 100644 index 08fc73012..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/multimap.h +++ /dev/null @@ -1,626 +0,0 @@ -// Debugging multimap implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/multimap.h - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_MULTIMAP_H -#define _GLIBCXX_DEBUG_MULTIMAP_H 1 - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::multimap with safety/checking/debug instrumentation. - template, - typename _Allocator = std::allocator > > - class multimap - : public __gnu_debug::_Safe_container< - multimap<_Key, _Tp, _Compare, _Allocator>, _Allocator, - __gnu_debug::_Safe_node_sequence>, - public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> - { - typedef _GLIBCXX_STD_C::multimap< - _Key, _Tp, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - multimap, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - - public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair value_type; - typedef _Compare key_compare; - typedef _Allocator allocator_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator<_Base_iterator, multimap> - iterator; - typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, - multimap> const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.3.1.1 construct/copy/destroy: - -#if __cplusplus < 201103L - multimap() : _Base() { } - - multimap(const multimap& __x) - : _Base(__x) { } - - ~multimap() { } -#else - multimap() = default; - multimap(const multimap&) = default; - multimap(multimap&&) = default; - - multimap(initializer_list __l, - const _Compare& __c = _Compare(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __c, __a) { } - - explicit - multimap(const allocator_type& __a) - : _Base(__a) { } - - multimap(const multimap& __m, const allocator_type& __a) - : _Base(__m, __a) { } - - multimap(multimap&& __m, const allocator_type& __a) - : _Safe(std::move(__m._M_safe()), __a), - _Base(std::move(__m._M_base()), __a) { } - - multimap(initializer_list __l, const allocator_type& __a) - : _Base(__l, __a) { } - - template - multimap(_InputIterator __first, _InputIterator __last, - const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) { } - - ~multimap() = default; -#endif - - explicit multimap(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - - template - multimap(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), - __comp, __a) { } - - multimap(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - multimap& - operator=(const multimap& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - return *this; - } -#else - multimap& - operator=(const multimap&) = default; - - multimap& - operator=(multimap&&) = default; - - multimap& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } -#endif - - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // modifiers: -#if __cplusplus >= 201103L - template - iterator - emplace(_Args&&... __args) - { - return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - __glibcxx_check_insert(__pos); - return iterator(_Base::emplace_hint(__pos.base(), - std::forward<_Args>(__args)...), - this); - } -#endif - - iterator - insert(const value_type& __x) - { return iterator(_Base::insert(__x), this); } - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(value_type&& __x) - { return { _Base::insert(std::move(__x)), this }; } - - template::value>::type> - iterator - insert(_Pair&& __x) - { return iterator(_Base::insert(std::forward<_Pair>(__x)), this); } -#endif - -#if __cplusplus >= 201103L - void - insert(std::initializer_list __list) - { _Base::insert(__list); } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __position, const value_type& __x) -#else - insert(iterator __position, const value_type& __x) -#endif - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - -#if __cplusplus >= 201103L - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(const_iterator __position, value_type&& __x) - { - __glibcxx_check_insert(__position); - return { _Base::insert(__position.base(), std::move(__x)), this }; - } - - template::value>::type> - iterator - insert(const_iterator __position, _Pair&& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), - std::forward<_Pair>(__x)), this); - } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - } - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - iterator - insert(node_type&& __nh) - { return iterator(_Base::insert(std::move(__nh)), this); } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return iterator(_Base::erase(__position.base()), this); - } - - iterator - erase(iterator __position) - { return erase(const_iterator(__position)); } -#else - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - _Base::erase(__position.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - std::pair<_Base_iterator, _Base_iterator> __victims = - _Base::equal_range(__x); - size_type __count = 0; - _Base_iterator __victim = __victims.first; - while (__victim != __victims.second) - { - this->_M_invalidate_if(_Equal(__victim)); - _Base::erase(__victim++); - ++__count; - } - return __count; - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - _Base::erase(__first.base(), __last.base()); - } -#endif - - void - swap(multimap& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_invalidate_all(); - _Base::clear(); - } - - // observers: - using _Base::key_comp; - using _Base::value_comp; - - // 23.3.1.3 multimap operations: - iterator - find(const key_type& __x) - { return iterator(_Base::find(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { return { _Base::find(__x), this }; } -#endif - - const_iterator - find(const key_type& __x) const - { return const_iterator(_Base::find(__x), this); } - -#if __cplusplus > 201103L - template::type> - const_iterator - find(const _Kt& __x) const - { return { _Base::find(__x), this }; } -#endif - - using _Base::count; - - iterator - lower_bound(const key_type& __x) - { return iterator(_Base::lower_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { return { _Base::lower_bound(__x), this }; } -#endif - - const_iterator - lower_bound(const key_type& __x) const - { return const_iterator(_Base::lower_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { return { _Base::lower_bound(__x), this }; } -#endif - - iterator - upper_bound(const key_type& __x) - { return iterator(_Base::upper_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { return { _Base::upper_bound(__x), this }; } -#endif - - const_iterator - upper_bound(const key_type& __x) const - { return const_iterator(_Base::upper_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { return { _Base::upper_bound(__x), this }; } -#endif - - std::pair - equal_range(const key_type& __x) - { - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - std::pair - equal_range(const key_type& __x) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) const - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __debug -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/multiset.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/multiset.h deleted file mode 100644 index 97c7b843f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/multiset.h +++ /dev/null @@ -1,591 +0,0 @@ -// Debugging multiset implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/multiset.h - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_MULTISET_H -#define _GLIBCXX_DEBUG_MULTISET_H 1 - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::multiset with safety/checking/debug instrumentation. - template, - typename _Allocator = std::allocator<_Key> > - class multiset - : public __gnu_debug::_Safe_container< - multiset<_Key, _Compare, _Allocator>, _Allocator, - __gnu_debug::_Safe_node_sequence>, - public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> - { - typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - multiset, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - - public: - // types: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - typedef _Allocator allocator_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator<_Base_iterator, multiset> - iterator; - typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, - multiset> const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.3.3.1 construct/copy/destroy: - -#if __cplusplus < 201103L - multiset() : _Base() { } - - multiset(const multiset& __x) - : _Base(__x) { } - - ~multiset() { } -#else - multiset() = default; - multiset(const multiset&) = default; - multiset(multiset&&) = default; - - multiset(initializer_list __l, - const _Compare& __comp = _Compare(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __comp, __a) { } - - explicit - multiset(const allocator_type& __a) - : _Base(__a) { } - - multiset(const multiset& __m, const allocator_type& __a) - : _Base(__m, __a) { } - - multiset(multiset&& __m, const allocator_type& __a) - : _Safe(std::move(__m._M_safe()), __a), - _Base(std::move(__m._M_base()), __a) { } - - multiset(initializer_list __l, const allocator_type& __a) - : _Base(__l, __a) - { } - - template - multiset(_InputIterator __first, _InputIterator __last, - const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) { } - - ~multiset() = default; -#endif - - explicit multiset(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - - template - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), - __comp, __a) { } - - multiset(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - multiset& - operator=(const multiset& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - return *this; - } -#else - multiset& - operator=(const multiset&) = default; - - multiset& - operator=(multiset&&) = default; - - multiset& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } -#endif - - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // modifiers: -#if __cplusplus >= 201103L - template - iterator - emplace(_Args&&... __args) - { - return iterator(_Base::emplace(std::forward<_Args>(__args)...), - this); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - __glibcxx_check_insert(__pos); - return iterator(_Base::emplace_hint(__pos.base(), - std::forward<_Args>(__args)...), - this); - } -#endif - - iterator - insert(const value_type& __x) - { return iterator(_Base::insert(__x), this); } - -#if __cplusplus >= 201103L - iterator - insert(value_type&& __x) - { return iterator(_Base::insert(std::move(__x)), this); } -#endif - - iterator - insert(const_iterator __position, const value_type& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, value_type&& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), std::move(__x)), - this); - } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - } - -#if __cplusplus >= 201103L - void - insert(initializer_list __l) - { _Base::insert(__l); } -#endif - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - iterator - insert(node_type&& __nh) - { return iterator(_Base::insert(std::move(__nh)), this); } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return iterator(_Base::erase(__position.base()), this); - } -#else - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - _Base::erase(__position.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - std::pair<_Base_iterator, _Base_iterator> __victims = - _Base::equal_range(__x); - size_type __count = 0; - _Base_iterator __victim = __victims.first; - while (__victim != __victims.second) - { - this->_M_invalidate_if(_Equal(__victim)); - _Base::erase(__victim++); - ++__count; - } - return __count; - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - _Base::erase(__first.base(), __last.base()); - } -#endif - - void - swap(multiset& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_invalidate_all(); - _Base::clear(); - } - - // observers: - using _Base::key_comp; - using _Base::value_comp; - - // multiset operations: - iterator - find(const key_type& __x) - { return iterator(_Base::find(__x), this); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - find(const key_type& __x) const - { return const_iterator(_Base::find(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { return { _Base::find(__x), this }; } - - template::type> - const_iterator - find(const _Kt& __x) const - { return { _Base::find(__x), this }; } -#endif - - using _Base::count; - - iterator - lower_bound(const key_type& __x) - { return iterator(_Base::lower_bound(__x), this); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - lower_bound(const key_type& __x) const - { return const_iterator(_Base::lower_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { return { _Base::lower_bound(__x), this }; } - - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { return { _Base::lower_bound(__x), this }; } -#endif - - iterator - upper_bound(const key_type& __x) - { return iterator(_Base::upper_bound(__x), this); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - upper_bound(const key_type& __x) const - { return const_iterator(_Base::upper_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { return { _Base::upper_bound(__x), this }; } - - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { return { _Base::upper_bound(__x), this }; } -#endif - - std::pair - equal_range(const key_type& __x) - { - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - std::pair - equal_range(const key_type& __x) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } - - template::type> - std::pair - equal_range(const _Kt& __x) const - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - void - swap(multiset<_Key, _Compare, _Allocator>& __x, - multiset<_Key, _Compare, _Allocator>& __y) - _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) - { return __x.swap(__y); } - -} // namespace __debug -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/set deleted file mode 100644 index 6dc489350..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/set +++ /dev/null @@ -1,38 +0,0 @@ -// Debugging set/multiset implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/set - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_SET -#define _GLIBCXX_DEBUG_SET 1 - -#pragma GCC system_header - -#include -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/set.h deleted file mode 100644 index 07032865b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/set.h +++ /dev/null @@ -1,609 +0,0 @@ -// Debugging set implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/set.h - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_SET_H -#define _GLIBCXX_DEBUG_SET_H 1 - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::set with safety/checking/debug instrumentation. - template, - typename _Allocator = std::allocator<_Key> > - class set - : public __gnu_debug::_Safe_container< - set<_Key, _Compare, _Allocator>, _Allocator, - __gnu_debug::_Safe_node_sequence>, - public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator> - { - typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - set, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - - public: - // types: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - typedef _Allocator allocator_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator<_Base_iterator, set> - iterator; - typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, set> - const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.3.3.1 construct/copy/destroy: - -#if __cplusplus < 201103L - set() : _Base() { } - - set(const set& __x) - : _Base(__x) { } - - ~set() { } -#else - set() = default; - set(const set&) = default; - set(set&&) = default; - - set(initializer_list __l, - const _Compare& __comp = _Compare(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __comp, __a) { } - - explicit - set(const allocator_type& __a) - : _Base(__a) { } - - set(const set& __x, const allocator_type& __a) - : _Base(__x, __a) { } - - set(set&& __x, const allocator_type& __a) - : _Safe(std::move(__x._M_safe()), __a), - _Base(std::move(__x._M_base()), __a) { } - - set(initializer_list __l, const allocator_type& __a) - : _Base(__l, __a) { } - - template - set(_InputIterator __first, _InputIterator __last, - const allocator_type& __a) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) { } - - ~set() = default; -#endif - - explicit set(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - - template - set(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), - __comp, __a) { } - - set(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - set& - operator=(const set& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - return *this; - } -#else - set& - operator=(const set&) = default; - - set& - operator=(set&&) = default; - - set& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } -#endif - - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // capacity: - using _Base::empty; - using _Base::size; - using _Base::max_size; - - // modifiers: -#if __cplusplus >= 201103L - template - std::pair - emplace(_Args&&... __args) - { - auto __res = _Base::emplace(std::forward<_Args>(__args)...); - return std::pair(iterator(__res.first, this), - __res.second); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - __glibcxx_check_insert(__pos); - return iterator(_Base::emplace_hint(__pos.base(), - std::forward<_Args>(__args)...), - this); - } -#endif - - std::pair - insert(const value_type& __x) - { - std::pair<_Base_iterator, bool> __res = _Base::insert(__x); - return std::pair(iterator(__res.first, this), - __res.second); - } - -#if __cplusplus >= 201103L - std::pair - insert(value_type&& __x) - { - std::pair<_Base_iterator, bool> __res - = _Base::insert(std::move(__x)); - return std::pair(iterator(__res.first, this), - __res.second); - } -#endif - - iterator - insert(const_iterator __position, const value_type& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), __x), this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, value_type&& __x) - { - __glibcxx_check_insert(__position); - return iterator(_Base::insert(__position.base(), std::move(__x)), - this); - } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - } - -#if __cplusplus >= 201103L - void - insert(initializer_list __l) - { _Base::insert(__l); } -#endif - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - struct insert_return_type - { - bool inserted; - iterator position; - node_type node; - }; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - insert_return_type - insert(node_type&& __nh) - { - auto __ret = _Base::insert(std::move(__nh)); - iterator __pos = iterator(__ret.position, this); - return { __ret.inserted, __pos, std::move(__ret.node) }; - } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - return iterator(_Base::erase(__position.base()), this); - } -#else - void - erase(iterator __position) - { - __glibcxx_check_erase(__position); - this->_M_invalidate_if(_Equal(__position.base())); - _Base::erase(__position.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - _Base_iterator __victim = _Base::find(__x); - if (__victim == _Base::end()) - return 0; - else - { - this->_M_invalidate_if(_Equal(__victim)); - _Base::erase(__victim); - return 1; - } - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - for (_Base_iterator __victim = __first.base(); - __victim != __last.base(); ++__victim) - { - _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if(_Equal(__victim)); - } - _Base::erase(__first.base(), __last.base()); - } -#endif - - void - swap(set& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_invalidate_all(); - _Base::clear(); - } - - // observers: - using _Base::key_comp; - using _Base::value_comp; - - // set operations: - iterator - find(const key_type& __x) - { return iterator(_Base::find(__x), this); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - find(const key_type& __x) const - { return const_iterator(_Base::find(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { return { _Base::find(__x), this }; } - - template::type> - const_iterator - find(const _Kt& __x) const - { return { _Base::find(__x), this }; } -#endif - - using _Base::count; - - iterator - lower_bound(const key_type& __x) - { return iterator(_Base::lower_bound(__x), this); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - lower_bound(const key_type& __x) const - { return const_iterator(_Base::lower_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { return { _Base::lower_bound(__x), this }; } - - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { return { _Base::lower_bound(__x), this }; } -#endif - - iterator - upper_bound(const key_type& __x) - { return iterator(_Base::upper_bound(__x), this); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - upper_bound(const key_type& __x) const - { return const_iterator(_Base::upper_bound(__x), this); } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { return { _Base::upper_bound(__x), this }; } - - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { return { _Base::upper_bound(__x), this }; } -#endif - - std::pair - equal_range(const key_type& __x) - { - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - std::pair - equal_range(const key_type& __x) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> __res = - _Base::equal_range(__x); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } - - template::type> - std::pair - equal_range(const _Kt& __x) const - { - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - void - swap(set<_Key, _Compare, _Allocator>& __x, - set<_Key, _Compare, _Allocator>& __y) - _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) - { return __x.swap(__y); } - -} // namespace __debug -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/stl_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/stl_iterator.h deleted file mode 100644 index 8012ee716..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/stl_iterator.h +++ /dev/null @@ -1,113 +0,0 @@ -// Debugging support implementation -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/stl_iterator.h - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_STL_ITERATOR_H -#define _GLIBCXX_DEBUG_STL_ITERATOR_H 1 - -#include - -namespace __gnu_debug -{ - // Help Debug mode to see through reverse_iterator. - template - inline bool - __valid_range(const std::reverse_iterator<_Iterator>& __first, - const std::reverse_iterator<_Iterator>& __last, - typename _Distance_traits<_Iterator>::__type& __dist) - { return __valid_range(__last.base(), __first.base(), __dist); } - - template - inline typename _Distance_traits<_Iterator>::__type - __get_distance(const std::reverse_iterator<_Iterator>& __first, - const std::reverse_iterator<_Iterator>& __last) - { return __get_distance(__last.base(), __first.base()); } - -#if __cplusplus < 201103L - template - struct __is_safe_random_iterator > - : __is_safe_random_iterator<_Iterator> - { }; - - template - struct _Unsafe_type > - { - typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType; - typedef std::reverse_iterator<_UnsafeType> _Type; - }; - - template - inline std::reverse_iterator::_Type> - __unsafe(const std::reverse_iterator<_Iterator>& __it) - { - typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType; - return std::reverse_iterator<_UnsafeType>(__unsafe(__it.base())); - } -#else - template - inline auto - __base(const std::reverse_iterator<_Iterator>& __it) - -> decltype(std::__make_reverse_iterator(__base(__it.base()))) - { return std::__make_reverse_iterator(__base(__it.base())); } - - template - inline auto - __unsafe(const std::reverse_iterator<_Iterator>& __it) - -> decltype(std::__make_reverse_iterator(__unsafe(__it.base()))) - { return std::__make_reverse_iterator(__unsafe(__it.base())); } -#endif - -#if __cplusplus >= 201103L - // Help Debug mode to see through move_iterator. - template - inline bool - __valid_range(const std::move_iterator<_Iterator>& __first, - const std::move_iterator<_Iterator>& __last, - typename _Distance_traits<_Iterator>::__type& __dist) - { return __valid_range(__first.base(), __last.base(), __dist); } - - template - inline typename _Distance_traits<_Iterator>::__type - __get_distance(const std::move_iterator<_Iterator>& __first, - const std::move_iterator<_Iterator>& __last) - { return __get_distance(__first.base(), __last.base()); } - - template - inline auto - __unsafe(const std::move_iterator<_Iterator>& __it) - -> decltype(std::make_move_iterator(__unsafe(__it.base()))) - { return std::make_move_iterator(__unsafe(__it.base())); } - - template - inline auto - __base(const std::move_iterator<_Iterator>& __it) - -> decltype(std::make_move_iterator(__base(__it.base()))) - { return std::make_move_iterator(__base(__it.base())); } -#endif -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/string b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/string deleted file mode 100644 index 9d4057b7d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/string +++ /dev/null @@ -1,1209 +0,0 @@ -// Debugging string implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/string - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_STRING -#define _GLIBCXX_DEBUG_STRING 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -namespace __gnu_debug -{ -/// Class std::basic_string with safety/checking/debug instrumentation. -template, - typename _Allocator = std::allocator<_CharT> > - class basic_string - : public __gnu_debug::_Safe_container< - basic_string<_CharT, _Traits, _Allocator>, - _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)>, - public std::basic_string<_CharT, _Traits, _Allocator> - { - typedef std::basic_string<_CharT, _Traits, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - basic_string, _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)> - _Safe; - - public: - // types: - typedef _Traits traits_type; - typedef typename _Traits::char_type value_type; - typedef _Allocator allocator_type; - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - - typedef __gnu_debug::_Safe_iterator< - typename _Base::iterator, basic_string> iterator; - typedef __gnu_debug::_Safe_iterator< - typename _Base::const_iterator, basic_string> const_iterator; - - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - using _Base::npos; - - basic_string() - _GLIBCXX_NOEXCEPT_IF(std::is_nothrow_default_constructible<_Base>::value) - : _Base() { } - - // 21.3.1 construct/copy/destroy: - explicit - basic_string(const _Allocator& __a) _GLIBCXX_NOEXCEPT - : _Base(__a) { } - -#if __cplusplus < 201103L - basic_string(const basic_string& __str) - : _Base(__str) { } - - ~basic_string() { } -#else - basic_string(const basic_string&) = default; - basic_string(basic_string&&) = default; - - basic_string(std::initializer_list<_CharT> __l, - const _Allocator& __a = _Allocator()) - : _Base(__l, __a) - { } - -#if _GLIBCXX_USE_CXX11_ABI - basic_string(const basic_string& __s, const _Allocator& __a) - : _Base(__s, __a) { } - - basic_string(basic_string&& __s, const _Allocator& __a) - : _Base(std::move(__s), __a) { } -#endif - - ~basic_string() = default; - - // Provides conversion from a normal-mode string to a debug-mode string - basic_string(_Base&& __base) noexcept - : _Base(std::move(__base)) { } -#endif // C++11 - - // Provides conversion from a normal-mode string to a debug-mode string - basic_string(const _Base& __base) - : _Base(__base) { } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 42. string ctors specify wrong default allocator - basic_string(const basic_string& __str, size_type __pos, - size_type __n = _Base::npos, - const _Allocator& __a = _Allocator()) - : _Base(__str, __pos, __n, __a) { } - - basic_string(const _CharT* __s, size_type __n, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_string(__s, __n), __n, __a) { } - - basic_string(const _CharT* __s, const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__check_string(__s), __a) - { this->assign(__s); } - - basic_string(size_type __n, _CharT __c, - const _Allocator& __a = _Allocator()) - : _Base(__n, __c, __a) { } - - template - basic_string(_InputIterator __begin, _InputIterator __end, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__begin, - __end)), - __gnu_debug::__base(__end), __a) { } - -#if __cplusplus < 201103L - basic_string& - operator=(const basic_string& __str) - { - this->_M_safe() = __str; - _M_base() = __str; - return *this; - } -#else - basic_string& - operator=(const basic_string&) = default; - - basic_string& - operator=(basic_string&&) = default; -#endif - - basic_string& - operator=(const _CharT* __s) - { - __glibcxx_check_string(__s); - _M_base() = __s; - this->_M_invalidate_all(); - return *this; - } - - basic_string& - operator=(_CharT __c) - { - _M_base() = __c; - this->_M_invalidate_all(); - return *this; - } - -#if __cplusplus >= 201103L - basic_string& - operator=(std::initializer_list<_CharT> __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } -#endif // C++11 - - // 21.3.2 iterators: - iterator - begin() // _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() // _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() // _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() // _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // 21.3.3 capacity: - using _Base::size; - using _Base::length; - using _Base::max_size; - - void - resize(size_type __n, _CharT __c) - { - _Base::resize(__n, __c); - this->_M_invalidate_all(); - } - - void - resize(size_type __n) - { this->resize(__n, _CharT()); } - -#if __cplusplus >= 201103L - void - shrink_to_fit() noexcept - { - if (capacity() > size()) - { - __try - { - reserve(0); - this->_M_invalidate_all(); - } - __catch(...) - { } - } - } -#endif - - using _Base::capacity; - using _Base::reserve; - - void - clear() // _GLIBCXX_NOEXCEPT - { - _Base::clear(); - this->_M_invalidate_all(); - } - - using _Base::empty; - - // 21.3.4 element access: - const_reference - operator[](size_type __pos) const _GLIBCXX_NOEXCEPT - { - _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(), - _M_message(__gnu_debug::__msg_subscript_oob) - ._M_sequence(*this, "this") - ._M_integer(__pos, "__pos") - ._M_integer(this->size(), "size")); - return _M_base()[__pos]; - } - - reference - operator[](size_type __pos) // _GLIBCXX_NOEXCEPT - { -#if __cplusplus < 201103L && defined(_GLIBCXX_DEBUG_PEDANTIC) - __glibcxx_check_subscript(__pos); -#else - // as an extension v3 allows s[s.size()] when s is non-const. - _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(), - _M_message(__gnu_debug::__msg_subscript_oob) - ._M_sequence(*this, "this") - ._M_integer(__pos, "__pos") - ._M_integer(this->size(), "size")); -#endif - return _M_base()[__pos]; - } - - using _Base::at; - -#if __cplusplus >= 201103L - using _Base::front; - using _Base::back; -#endif - - // 21.3.5 modifiers: - basic_string& - operator+=(const basic_string& __str) - { - _M_base() += __str; - this->_M_invalidate_all(); - return *this; - } - - basic_string& - operator+=(const _CharT* __s) - { - __glibcxx_check_string(__s); - _M_base() += __s; - this->_M_invalidate_all(); - return *this; - } - - basic_string& - operator+=(_CharT __c) - { - _M_base() += __c; - this->_M_invalidate_all(); - return *this; - } - -#if __cplusplus >= 201103L - basic_string& - operator+=(std::initializer_list<_CharT> __l) - { - _M_base() += __l; - this->_M_invalidate_all(); - return *this; - } -#endif // C++11 - - basic_string& - append(const basic_string& __str) - { - _Base::append(__str); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - append(const basic_string& __str, size_type __pos, size_type __n) - { - _Base::append(__str, __pos, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - append(const _CharT* __s, size_type __n) - { - __glibcxx_check_string_len(__s, __n); - _Base::append(__s, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - append(const _CharT* __s) - { - __glibcxx_check_string(__s); - _Base::append(__s); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - append(size_type __n, _CharT __c) - { - _Base::append(__n, __c); - this->_M_invalidate_all(); - return *this; - } - - template - basic_string& - append(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __dp_sign) - _Base::append(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::append(__first, __last); - - this->_M_invalidate_all(); - return *this; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 7. string clause minor problems - void - push_back(_CharT __c) - { - _Base::push_back(__c); - this->_M_invalidate_all(); - } - - basic_string& - assign(const basic_string& __x) - { - _Base::assign(__x); - this->_M_invalidate_all(); - return *this; - } - -#if __cplusplus >= 201103L - basic_string& - assign(basic_string&& __x) - noexcept(noexcept(std::declval<_Base&>().assign(std::move(__x)))) - { - _Base::assign(std::move(__x)); - this->_M_invalidate_all(); - return *this; - } -#endif // C++11 - - basic_string& - assign(const basic_string& __str, size_type __pos, size_type __n) - { - _Base::assign(__str, __pos, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - assign(const _CharT* __s, size_type __n) - { - __glibcxx_check_string_len(__s, __n); - _Base::assign(__s, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - assign(const _CharT* __s) - { - __glibcxx_check_string(__s); - _Base::assign(__s); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - assign(size_type __n, _CharT __c) - { - _Base::assign(__n, __c); - this->_M_invalidate_all(); - return *this; - } - - template - basic_string& - assign(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __dp_sign) - _Base::assign(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::assign(__first, __last); - - this->_M_invalidate_all(); - return *this; - } - -#if __cplusplus >= 201103L - basic_string& - assign(std::initializer_list<_CharT> __l) - { - _Base::assign(__l); - this->_M_invalidate_all(); - return *this; - } -#endif // C++11 - - basic_string& - insert(size_type __pos1, const basic_string& __str) - { - _Base::insert(__pos1, __str); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - insert(size_type __pos1, const basic_string& __str, - size_type __pos2, size_type __n) - { - _Base::insert(__pos1, __str, __pos2, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - insert(size_type __pos, const _CharT* __s, size_type __n) - { - __glibcxx_check_string(__s); - _Base::insert(__pos, __s, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - insert(size_type __pos, const _CharT* __s) - { - __glibcxx_check_string(__s); - _Base::insert(__pos, __s); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - insert(size_type __pos, size_type __n, _CharT __c) - { - _Base::insert(__pos, __n, __c); - this->_M_invalidate_all(); - return *this; - } - - iterator - insert(iterator __p, _CharT __c) - { - __glibcxx_check_insert(__p); - typename _Base::iterator __res = _Base::insert(__p.base(), __c); - this->_M_invalidate_all(); - return iterator(__res, this); - } - - void - insert(iterator __p, size_type __n, _CharT __c) - { - __glibcxx_check_insert(__p); - _Base::insert(__p.base(), __n, __c); - this->_M_invalidate_all(); - } - - template - void - insert(iterator __p, _InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range2(__p, __first, __last, __dist); - - if (__dist.second >= __dp_sign) - _Base::insert(__p.base(), __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__p.base(), __first, __last); - - this->_M_invalidate_all(); - } - -#if __cplusplus >= 201103L - void - insert(iterator __p, std::initializer_list<_CharT> __l) - { - __glibcxx_check_insert(__p); - _Base::insert(__p.base(), __l); - this->_M_invalidate_all(); - } -#endif // C++11 - - basic_string& - erase(size_type __pos = 0, size_type __n = _Base::npos) - { - _Base::erase(__pos, __n); - this->_M_invalidate_all(); - return *this; - } - - iterator - erase(iterator __position) - { - __glibcxx_check_erase(__position); - typename _Base::iterator __res = _Base::erase(__position.base()); - this->_M_invalidate_all(); - return iterator(__res, this); - } - - iterator - erase(iterator __first, iterator __last) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - typename _Base::iterator __res = _Base::erase(__first.base(), - __last.base()); - this->_M_invalidate_all(); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - void - pop_back() // noexcept - { - __glibcxx_check_nonempty(); - _Base::pop_back(); - this->_M_invalidate_all(); - } -#endif // C++11 - - basic_string& - replace(size_type __pos1, size_type __n1, const basic_string& __str) - { - _Base::replace(__pos1, __n1, __str); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(size_type __pos1, size_type __n1, const basic_string& __str, - size_type __pos2, size_type __n2) - { - _Base::replace(__pos1, __n1, __str, __pos2, __n2); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(size_type __pos, size_type __n1, const _CharT* __s, - size_type __n2) - { - __glibcxx_check_string_len(__s, __n2); - _Base::replace(__pos, __n1, __s, __n2); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(size_type __pos, size_type __n1, const _CharT* __s) - { - __glibcxx_check_string(__s); - _Base::replace(__pos, __n1, __s); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) - { - _Base::replace(__pos, __n1, __n2, __c); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(iterator __i1, iterator __i2, const basic_string& __str) - { - __glibcxx_check_erase_range(__i1, __i2); - _Base::replace(__i1.base(), __i2.base(), __str); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) - { - __glibcxx_check_erase_range(__i1, __i2); - __glibcxx_check_string_len(__s, __n); - _Base::replace(__i1.base(), __i2.base(), __s, __n); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(iterator __i1, iterator __i2, const _CharT* __s) - { - __glibcxx_check_erase_range(__i1, __i2); - __glibcxx_check_string(__s); - _Base::replace(__i1.base(), __i2.base(), __s); - this->_M_invalidate_all(); - return *this; - } - - basic_string& - replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) - { - __glibcxx_check_erase_range(__i1, __i2); - _Base::replace(__i1.base(), __i2.base(), __n, __c); - this->_M_invalidate_all(); - return *this; - } - - template - basic_string& - replace(iterator __i1, iterator __i2, - _InputIterator __j1, _InputIterator __j2) - { - __glibcxx_check_erase_range(__i1, __i2); - - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__j1, __j2, __dist); - - if (__dist.second >= __dp_sign) - _Base::replace(__i1.base(), __i2.base(), - __gnu_debug::__unsafe(__j1), - __gnu_debug::__unsafe(__j2)); - else - _Base::replace(__i1.base(), __i2.base(), __j1, __j2); - - this->_M_invalidate_all(); - return *this; - } - -#if __cplusplus >= 201103L - basic_string& replace(iterator __i1, iterator __i2, - std::initializer_list<_CharT> __l) - { - __glibcxx_check_erase_range(__i1, __i2); - _Base::replace(__i1.base(), __i2.base(), __l); - this->_M_invalidate_all(); - return *this; - } -#endif // C++11 - - size_type - copy(_CharT* __s, size_type __n, size_type __pos = 0) const - { - __glibcxx_check_string_len(__s, __n); - return _Base::copy(__s, __n, __pos); - } - - void - swap(basic_string& __x) - _GLIBCXX_NOEXCEPT_IF(std::__is_nothrow_swappable<_Base>::value) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - // 21.3.6 string operations: - const _CharT* - c_str() const _GLIBCXX_NOEXCEPT - { - const _CharT* __res = _Base::c_str(); - this->_M_invalidate_all(); - return __res; - } - - const _CharT* - data() const _GLIBCXX_NOEXCEPT - { - const _CharT* __res = _Base::data(); - this->_M_invalidate_all(); - return __res; - } - - using _Base::get_allocator; - - size_type - find(const basic_string& __str, size_type __pos = 0) const - _GLIBCXX_NOEXCEPT - { return _Base::find(__str, __pos); } - - size_type - find(const _CharT* __s, size_type __pos, size_type __n) const - { - __glibcxx_check_string(__s); - return _Base::find(__s, __pos, __n); - } - - size_type - find(const _CharT* __s, size_type __pos = 0) const - { - __glibcxx_check_string(__s); - return _Base::find(__s, __pos); - } - - size_type - find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT - { return _Base::find(__c, __pos); } - - size_type - rfind(const basic_string& __str, size_type __pos = _Base::npos) const - _GLIBCXX_NOEXCEPT - { return _Base::rfind(__str, __pos); } - - size_type - rfind(const _CharT* __s, size_type __pos, size_type __n) const - { - __glibcxx_check_string_len(__s, __n); - return _Base::rfind(__s, __pos, __n); - } - - size_type - rfind(const _CharT* __s, size_type __pos = _Base::npos) const - { - __glibcxx_check_string(__s); - return _Base::rfind(__s, __pos); - } - - size_type - rfind(_CharT __c, size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT - { return _Base::rfind(__c, __pos); } - - size_type - find_first_of(const basic_string& __str, size_type __pos = 0) const - _GLIBCXX_NOEXCEPT - { return _Base::find_first_of(__str, __pos); } - - size_type - find_first_of(const _CharT* __s, size_type __pos, size_type __n) const - { - __glibcxx_check_string(__s); - return _Base::find_first_of(__s, __pos, __n); - } - - size_type - find_first_of(const _CharT* __s, size_type __pos = 0) const - { - __glibcxx_check_string(__s); - return _Base::find_first_of(__s, __pos); - } - - size_type - find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT - { return _Base::find_first_of(__c, __pos); } - - size_type - find_last_of(const basic_string& __str, - size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT - { return _Base::find_last_of(__str, __pos); } - - size_type - find_last_of(const _CharT* __s, size_type __pos, size_type __n) const - { - __glibcxx_check_string(__s); - return _Base::find_last_of(__s, __pos, __n); - } - - size_type - find_last_of(const _CharT* __s, size_type __pos = _Base::npos) const - { - __glibcxx_check_string(__s); - return _Base::find_last_of(__s, __pos); - } - - size_type - find_last_of(_CharT __c, size_type __pos = _Base::npos) const - _GLIBCXX_NOEXCEPT - { return _Base::find_last_of(__c, __pos); } - - size_type - find_first_not_of(const basic_string& __str, size_type __pos = 0) const - _GLIBCXX_NOEXCEPT - { return _Base::find_first_not_of(__str, __pos); } - - size_type - find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const - { - __glibcxx_check_string_len(__s, __n); - return _Base::find_first_not_of(__s, __pos, __n); - } - - size_type - find_first_not_of(const _CharT* __s, size_type __pos = 0) const - { - __glibcxx_check_string(__s); - return _Base::find_first_not_of(__s, __pos); - } - - size_type - find_first_not_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT - { return _Base::find_first_not_of(__c, __pos); } - - size_type - find_last_not_of(const basic_string& __str, - size_type __pos = _Base::npos) const - _GLIBCXX_NOEXCEPT - { return _Base::find_last_not_of(__str, __pos); } - - size_type - find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const - { - __glibcxx_check_string(__s); - return _Base::find_last_not_of(__s, __pos, __n); - } - - size_type - find_last_not_of(const _CharT* __s, size_type __pos = _Base::npos) const - { - __glibcxx_check_string(__s); - return _Base::find_last_not_of(__s, __pos); - } - - size_type - find_last_not_of(_CharT __c, size_type __pos = _Base::npos) const - _GLIBCXX_NOEXCEPT - { return _Base::find_last_not_of(__c, __pos); } - - basic_string - substr(size_type __pos = 0, size_type __n = _Base::npos) const - { return basic_string(_Base::substr(__pos, __n)); } - - int - compare(const basic_string& __str) const - { return _Base::compare(__str); } - - int - compare(size_type __pos1, size_type __n1, - const basic_string& __str) const - { return _Base::compare(__pos1, __n1, __str); } - - int - compare(size_type __pos1, size_type __n1, const basic_string& __str, - size_type __pos2, size_type __n2) const - { return _Base::compare(__pos1, __n1, __str, __pos2, __n2); } - - int - compare(const _CharT* __s) const - { - __glibcxx_check_string(__s); - return _Base::compare(__s); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 5. string::compare specification questionable - int - compare(size_type __pos1, size_type __n1, const _CharT* __s) const - { - __glibcxx_check_string(__s); - return _Base::compare(__pos1, __n1, __s); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 5. string::compare specification questionable - int - compare(size_type __pos1, size_type __n1,const _CharT* __s, - size_type __n2) const - { - __glibcxx_check_string_len(__s, __n2); - return _Base::compare(__pos1, __n1, __s, __n2); - } - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - using _Safe::_M_invalidate_all; - }; - - template - inline basic_string<_CharT,_Traits,_Allocator> - operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; } - - template - inline basic_string<_CharT,_Traits,_Allocator> - operator+(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; - } - - template - inline basic_string<_CharT,_Traits,_Allocator> - operator+(_CharT __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return basic_string<_CharT,_Traits,_Allocator>(1, __lhs) += __rhs; } - - template - inline basic_string<_CharT,_Traits,_Allocator> - operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; - } - - template - inline basic_string<_CharT,_Traits,_Allocator> - operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - _CharT __rhs) - { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; } - - template - inline bool - operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator==(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs == __rhs._M_base(); - } - - template - inline bool - operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() == __rhs; - } - - template - inline bool - operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator!=(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs != __rhs._M_base(); - } - - template - inline bool - operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() != __rhs; - } - - template - inline bool - operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs < __rhs._M_base(); - } - - template - inline bool - operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() < __rhs; - } - - template - inline bool - operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator<=(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs <= __rhs._M_base(); - } - - template - inline bool - operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() <= __rhs; - } - - template - inline bool - operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>=(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs >= __rhs._M_base(); - } - - template - inline bool - operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() >= __rhs; - } - - template - inline bool - operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline bool - operator>(const _CharT* __lhs, - const basic_string<_CharT,_Traits,_Allocator>& __rhs) - { - __glibcxx_check_string(__lhs); - return __lhs > __rhs._M_base(); - } - - template - inline bool - operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs, - const _CharT* __rhs) - { - __glibcxx_check_string(__rhs); - return __lhs._M_base() > __rhs; - } - - // 21.3.7.8: - template - inline void - swap(basic_string<_CharT,_Traits,_Allocator>& __lhs, - basic_string<_CharT,_Traits,_Allocator>& __rhs) - { __lhs.swap(__rhs); } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const basic_string<_CharT, _Traits, _Allocator>& __str) - { return __os << __str._M_base(); } - - template - std::basic_istream<_CharT,_Traits>& - operator>>(std::basic_istream<_CharT,_Traits>& __is, - basic_string<_CharT,_Traits,_Allocator>& __str) - { - std::basic_istream<_CharT,_Traits>& __res = __is >> __str._M_base(); - __str._M_invalidate_all(); - return __res; - } - - template - std::basic_istream<_CharT,_Traits>& - getline(std::basic_istream<_CharT,_Traits>& __is, - basic_string<_CharT,_Traits,_Allocator>& __str, _CharT __delim) - { - std::basic_istream<_CharT,_Traits>& __res = getline(__is, - __str._M_base(), - __delim); - __str._M_invalidate_all(); - return __res; - } - - template - std::basic_istream<_CharT,_Traits>& - getline(std::basic_istream<_CharT,_Traits>& __is, - basic_string<_CharT,_Traits,_Allocator>& __str) - { - std::basic_istream<_CharT,_Traits>& __res = getline(__is, - __str._M_base()); - __str._M_invalidate_all(); - return __res; - } - - typedef basic_string string; - -#ifdef _GLIBCXX_USE_WCHAR_T - typedef basic_string wstring; -#endif - - template - struct _Insert_range_from_self_is_safe< - __gnu_debug::basic_string<_CharT, _Traits, _Allocator> > - { enum { __value = 1 }; }; - -} // namespace __gnu_debug - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/unordered_map deleted file mode 100644 index 658712815..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/unordered_map +++ /dev/null @@ -1,1186 +0,0 @@ -// Debugging unordered_map/unordered_multimap implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/unordered_map - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_UNORDERED_MAP -#define _GLIBCXX_DEBUG_UNORDERED_MAP 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else -# include - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::unordered_map with safety/checking/debug instrumentation. - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator > > - class unordered_map - : public __gnu_debug::_Safe_container< - unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>, _Alloc, - __gnu_debug::_Safe_unordered_container>, - public _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> - { - typedef _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, - _Pred, _Alloc> _Base; - typedef __gnu_debug::_Safe_container _Safe; - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_local_iterator - _Base_const_local_iterator; - typedef typename _Base::local_iterator _Base_local_iterator; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - - typedef __gnu_debug::_Safe_iterator< - _Base_iterator, unordered_map> iterator; - typedef __gnu_debug::_Safe_iterator< - _Base_const_iterator, unordered_map> const_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_local_iterator, unordered_map> local_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_const_local_iterator, unordered_map> const_local_iterator; - - unordered_map() = default; - - explicit - unordered_map(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __n, - __hf, __eql, __a) { } - - unordered_map(const unordered_map&) = default; - - unordered_map(const _Base& __x) - : _Base(__x) { } - - unordered_map(unordered_map&&) = default; - - explicit - unordered_map(const allocator_type& __a) - : _Base(__a) { } - - unordered_map(const unordered_map& __umap, - const allocator_type& __a) - : _Base(__umap, __a) { } - - unordered_map(unordered_map&& __umap, - const allocator_type& __a) - : _Safe(std::move(__umap._M_safe()), __a), - _Base(std::move(__umap._M_base()), __a) { } - - unordered_map(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) { } - - unordered_map(size_type __n, const allocator_type& __a) - : unordered_map(__n, hasher(), key_equal(), __a) - { } - - unordered_map(size_type __n, - const hasher& __hf, - const allocator_type& __a) - : unordered_map(__n, __hf, key_equal(), __a) - { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n, - const hasher& __hf, - const allocator_type& __a) - : unordered_map(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_map(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_map(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_map(initializer_list __l, - size_type __n, - const hasher& __hf, - const allocator_type& __a) - : unordered_map(__l, __n, __hf, key_equal(), __a) - { } - - ~unordered_map() = default; - - unordered_map& - operator=(const unordered_map&) = default; - - unordered_map& - operator=(unordered_map&&) = default; - - unordered_map& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } - - void - swap(unordered_map& __x) - noexcept( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() noexcept - { - _Base::clear(); - this->_M_invalidate_all(); - } - - iterator - begin() noexcept - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const noexcept - { return const_iterator(_Base::begin(), this); } - - iterator - end() noexcept - { return iterator(_Base::end(), this); } - - const_iterator - end() const noexcept - { return const_iterator(_Base::end(), this); } - - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - // local versions - local_iterator - begin(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::begin(__b), this); - } - - local_iterator - end(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::end(__b), this); - } - - const_local_iterator - begin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::begin(__b), this); - } - - const_local_iterator - end(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::end(__b), this); - } - - const_local_iterator - cbegin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cbegin(__b), this); - } - - const_local_iterator - cend(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cend(__b), this); - } - - size_type - bucket_size(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return _Base::bucket_size(__b); - } - - float - max_load_factor() const noexcept - { return _Base::max_load_factor(); } - - void - max_load_factor(float __f) - { - __glibcxx_check_max_load_factor(__f); - _Base::max_load_factor(__f); - } - - template - std::pair - emplace(_Args&&... __args) - { - size_type __bucket_count = this->bucket_count(); - std::pair<_Base_iterator, bool> __res - = _Base::emplace(std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - template - iterator - emplace_hint(const_iterator __hint, _Args&&... __args) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::emplace_hint(__hint.base(), - std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - std::pair - insert(const value_type& __obj) - { - size_type __bucket_count = this->bucket_count(); - auto __res = _Base::insert(__obj); - _M_check_rehashed(__bucket_count); - return { iterator(__res.first, this), __res.second }; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - std::pair - insert(value_type&& __x) - { - size_type __bucket_count = this->bucket_count(); - auto __res = _Base::insert(std::move(__x)); - _M_check_rehashed(__bucket_count); - return { iterator(__res.first, this), __res.second }; - } - - template::value>::type> - std::pair - insert(_Pair&& __obj) - { - size_type __bucket_count = this->bucket_count(); - std::pair<_Base_iterator, bool> __res = - _Base::insert(std::forward<_Pair>(__obj)); - _M_check_rehashed(__bucket_count); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - iterator - insert(const_iterator __hint, const value_type& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__hint.base(), __obj); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(const_iterator __hint, value_type&& __x) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - auto __it = _Base::insert(__hint.base(), std::move(__x)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - template::value>::type> - iterator - insert(const_iterator __hint, _Pair&& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = - _Base::insert(__hint.base(), std::forward<_Pair>(__obj)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - void - insert(std::initializer_list __l) - { - size_type __bucket_count = this->bucket_count(); - _Base::insert(__l); - _M_check_rehashed(__bucket_count); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - size_type __bucket_count = this->bucket_count(); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - - _M_check_rehashed(__bucket_count); - } - -#if __cplusplus > 201402L - template - pair - try_emplace(const key_type& __k, _Args&&... __args) - { - auto __res = _Base::try_emplace(__k, - std::forward<_Args>(__args)...); - return { iterator(__res.first, this), __res.second }; - } - - template - pair - try_emplace(key_type&& __k, _Args&&... __args) - { - auto __res = _Base::try_emplace(std::move(__k), - std::forward<_Args>(__args)...); - return { iterator(__res.first, this), __res.second }; - } - - template - iterator - try_emplace(const_iterator __hint, const key_type& __k, - _Args&&... __args) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::try_emplace(__hint.base(), __k, - std::forward<_Args>(__args)...), - this); - } - - template - iterator - try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::try_emplace(__hint.base(), std::move(__k), - std::forward<_Args>(__args)...), - this); - } - - template - pair - insert_or_assign(const key_type& __k, _Obj&& __obj) - { - auto __res = _Base::insert_or_assign(__k, - std::forward<_Obj>(__obj)); - return { iterator(__res.first, this), __res.second }; - } - - template - pair - insert_or_assign(key_type&& __k, _Obj&& __obj) - { - auto __res = _Base::insert_or_assign(std::move(__k), - std::forward<_Obj>(__obj)); - return { iterator(__res.first, this), __res.second }; - } - - template - iterator - insert_or_assign(const_iterator __hint, const key_type& __k, - _Obj&& __obj) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert_or_assign(__hint.base(), __k, - std::forward<_Obj>(__obj)), - this); - } - - template - iterator - insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert_or_assign(__hint.base(), - std::move(__k), - std::forward<_Obj>(__obj)), - this); - } -#endif // C++17 - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - struct insert_return_type - { - bool inserted; - iterator position; - node_type node; - }; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - _Base_const_iterator __victim = __position.base(); - this->_M_invalidate_if( - [__victim](_Base_const_iterator __it) { return __it == __victim; } - ); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) { - return __it._M_curr() == __victim._M_cur; - }); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - insert_return_type - insert(node_type&& __nh) - { - auto __ret = _Base::insert(std::move(__nh)); - iterator __pos = iterator(__ret.position, this); - return { __ret.inserted, __pos, std::move(__ret.node) }; - } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - - iterator - find(const key_type& __key) - { return iterator(_Base::find(__key), this); } - - const_iterator - find(const key_type& __key) const - { return const_iterator(_Base::find(__key), this); } - - std::pair - equal_range(const key_type& __key) - { - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__key); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - std::pair - equal_range(const key_type& __key) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> __res = - _Base::equal_range(__key); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - - size_type - erase(const key_type& __key) - { - size_type __ret(0); - _Base_iterator __victim(_Base::find(__key)); - if (__victim != _Base::end()) - { - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - size_type __bucket_count = this->bucket_count(); - _Base::erase(__victim); - _M_check_rehashed(__bucket_count); - __ret = 1; - } - return __ret; - } - - iterator - erase(const_iterator __it) - { - __glibcxx_check_erase(__it); - _Base_const_iterator __victim = __it.base(); - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __next = _Base::erase(__it.base()); - _M_check_rehashed(__bucket_count); - return iterator(__next, this); - } - - iterator - erase(iterator __it) - { return erase(const_iterator(__it)); } - - iterator - erase(const_iterator __first, const_iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __tmp = __first.base(); - __tmp != __last.base(); ++__tmp) - { - _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if([__tmp](_Base_const_iterator __it) - { return __it == __tmp; }); - this->_M_invalidate_local_if( - [__tmp](_Base_const_local_iterator __it) - { return __it._M_curr() == __tmp._M_cur; }); - } - size_type __bucket_count = this->bucket_count(); - _Base_iterator __next = _Base::erase(__first.base(), __last.base()); - _M_check_rehashed(__bucket_count); - return iterator(__next, this); - } - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - private: - void - _M_check_rehashed(size_type __prev_count) - { - if (__prev_count != this->bucket_count()) - this->_M_invalidate_locals(); - } - }; - - template - inline void - swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - - - /// Class std::unordered_multimap with safety/checking/debug instrumentation. - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator > > - class unordered_multimap - : public __gnu_debug::_Safe_container< - unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>, _Alloc, - __gnu_debug::_Safe_unordered_container>, - public _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> - { - typedef _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash, - _Pred, _Alloc> _Base; - typedef __gnu_debug::_Safe_container _Safe; - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_local_iterator _Base_const_local_iterator; - typedef typename _Base::local_iterator _Base_local_iterator; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - - typedef __gnu_debug::_Safe_iterator< - _Base_iterator, unordered_multimap> iterator; - typedef __gnu_debug::_Safe_iterator< - _Base_const_iterator, unordered_multimap> const_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_local_iterator, unordered_multimap> local_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_const_local_iterator, unordered_multimap> const_local_iterator; - - unordered_multimap() = default; - - explicit - unordered_multimap(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __n, - __hf, __eql, __a) { } - - unordered_multimap(const unordered_multimap&) = default; - - unordered_multimap(const _Base& __x) - : _Base(__x) { } - - unordered_multimap(unordered_multimap&&) = default; - - explicit - unordered_multimap(const allocator_type& __a) - : _Base(__a) { } - - unordered_multimap(const unordered_multimap& __umap, - const allocator_type& __a) - : _Base(__umap, __a) { } - - unordered_multimap(unordered_multimap&& __umap, - const allocator_type& __a) - : _Safe(std::move(__umap._M_safe()), __a), - _Base(std::move(__umap._M_base()), __a) { } - - unordered_multimap(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) { } - - unordered_multimap(size_type __n, const allocator_type& __a) - : unordered_multimap(__n, hasher(), key_equal(), __a) - { } - - unordered_multimap(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__n, __hf, key_equal(), __a) - { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_multimap(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_multimap(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_multimap(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__l, __n, __hf, key_equal(), __a) - { } - - ~unordered_multimap() = default; - - unordered_multimap& - operator=(const unordered_multimap&) = default; - - unordered_multimap& - operator=(unordered_multimap&&) = default; - - unordered_multimap& - operator=(initializer_list __l) - { - this->_M_base() = __l; - this->_M_invalidate_all(); - return *this; - } - - void - swap(unordered_multimap& __x) - noexcept( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() noexcept - { - _Base::clear(); - this->_M_invalidate_all(); - } - - iterator - begin() noexcept - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const noexcept - { return const_iterator(_Base::begin(), this); } - - iterator - end() noexcept - { return iterator(_Base::end(), this); } - - const_iterator - end() const noexcept - { return const_iterator(_Base::end(), this); } - - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - // local versions - local_iterator - begin(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::begin(__b), this); - } - - local_iterator - end(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::end(__b), this); - } - - const_local_iterator - begin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::begin(__b), this); - } - - const_local_iterator - end(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::end(__b), this); - } - - const_local_iterator - cbegin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cbegin(__b), this); - } - - const_local_iterator - cend(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cend(__b), this); - } - - size_type - bucket_size(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return _Base::bucket_size(__b); - } - - float - max_load_factor() const noexcept - { return _Base::max_load_factor(); } - - void - max_load_factor(float __f) - { - __glibcxx_check_max_load_factor(__f); - _Base::max_load_factor(__f); - } - - template - iterator - emplace(_Args&&... __args) - { - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it - = _Base::emplace(std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - template - iterator - emplace_hint(const_iterator __hint, _Args&&... __args) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::emplace_hint(__hint.base(), - std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - iterator - insert(const value_type& __obj) - { - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__obj); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(value_type&& __x) - { - size_type __bucket_count = this->bucket_count(); - auto __it = _Base::insert(std::move(__x)); - _M_check_rehashed(__bucket_count); - return { __it, this }; - } - - iterator - insert(const_iterator __hint, const value_type& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__hint.base(), __obj); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2354. Unnecessary copying when inserting into maps with braced-init - iterator - insert(const_iterator __hint, value_type&& __x) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - auto __it = _Base::insert(__hint.base(), std::move(__x)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - template::value>::type> - iterator - insert(_Pair&& __obj) - { - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(std::forward<_Pair>(__obj)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - template::value>::type> - iterator - insert(const_iterator __hint, _Pair&& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = - _Base::insert(__hint.base(), std::forward<_Pair>(__obj)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - void - insert(std::initializer_list __l) - { _Base::insert(__l); } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - size_type __bucket_count = this->bucket_count(); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - - _M_check_rehashed(__bucket_count); - } - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - _Base_const_iterator __victim = __position.base(); - this->_M_invalidate_if( - [__victim](_Base_const_iterator __it) { return __it == __victim; } - ); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) { - return __it._M_curr() == __victim._M_cur; - }); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - iterator - insert(node_type&& __nh) - { return iterator(_Base::insert(std::move(__nh)), this); } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - - iterator - find(const key_type& __key) - { return iterator(_Base::find(__key), this); } - - const_iterator - find(const key_type& __key) const - { return const_iterator(_Base::find(__key), this); } - - std::pair - equal_range(const key_type& __key) - { - std::pair<_Base_iterator, _Base_iterator> __res = - _Base::equal_range(__key); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - std::pair - equal_range(const key_type& __key) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> __res = - _Base::equal_range(__key); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - - size_type - erase(const key_type& __key) - { - size_type __ret(0); - size_type __bucket_count = this->bucket_count(); - std::pair<_Base_iterator, _Base_iterator> __pair = - _Base::equal_range(__key); - for (_Base_iterator __victim = __pair.first; __victim != __pair.second;) - { - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - _Base::erase(__victim++); - ++__ret; - } - _M_check_rehashed(__bucket_count); - return __ret; - } - - iterator - erase(const_iterator __it) - { - __glibcxx_check_erase(__it); - _Base_const_iterator __victim = __it.base(); - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __next = _Base::erase(__it.base()); - _M_check_rehashed(__bucket_count); - return iterator(__next, this); - } - - iterator - erase(iterator __it) - { return erase(const_iterator(__it)); } - - iterator - erase(const_iterator __first, const_iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __tmp = __first.base(); - __tmp != __last.base(); ++__tmp) - { - _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if([__tmp](_Base_const_iterator __it) - { return __it == __tmp; }); - this->_M_invalidate_local_if( - [__tmp](_Base_const_local_iterator __it) - { return __it._M_curr() == __tmp._M_cur; }); - } - size_type __bucket_count = this->bucket_count(); - _Base_iterator __next = _Base::erase(__first.base(), __last.base()); - _M_check_rehashed(__bucket_count); - return iterator(__next, this); - } - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - private: - void - _M_check_rehashed(size_type __prev_count) - { - if (__prev_count != this->bucket_count()) - this->_M_invalidate_locals(); - } - }; - - template - inline void - swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -} // namespace __debug -} // namespace std - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/unordered_set deleted file mode 100644 index 923ff2bc4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/unordered_set +++ /dev/null @@ -1,1039 +0,0 @@ -// Debugging unordered_set/unordered_multiset implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/unordered_set - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_UNORDERED_SET -#define _GLIBCXX_DEBUG_UNORDERED_SET 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else -# include - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::unordered_set with safety/checking/debug instrumentation. - template, - typename _Pred = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class unordered_set - : public __gnu_debug::_Safe_container< - unordered_set<_Value, _Hash, _Pred, _Alloc>, _Alloc, - __gnu_debug::_Safe_unordered_container>, - public _GLIBCXX_STD_C::unordered_set<_Value, _Hash, _Pred, _Alloc> - { - typedef _GLIBCXX_STD_C::unordered_set< - _Value, _Hash, _Pred, _Alloc> _Base; - typedef __gnu_debug::_Safe_container< - unordered_set, _Alloc, __gnu_debug::_Safe_unordered_container> _Safe; - - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_local_iterator _Base_const_local_iterator; - typedef typename _Base::local_iterator _Base_local_iterator; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - - typedef __gnu_debug::_Safe_iterator< - _Base_iterator, unordered_set> iterator; - typedef __gnu_debug::_Safe_iterator< - _Base_const_iterator, unordered_set> const_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_local_iterator, unordered_set> local_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_const_local_iterator, unordered_set> const_local_iterator; - - unordered_set() = default; - - explicit - unordered_set(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __n, - __hf, __eql, __a) { } - - unordered_set(const unordered_set&) = default; - - unordered_set(const _Base& __x) - : _Base(__x) { } - - unordered_set(unordered_set&&) = default; - - explicit - unordered_set(const allocator_type& __a) - : _Base(__a) { } - - unordered_set(const unordered_set& __uset, - const allocator_type& __a) - : _Base(__uset, __a) { } - - unordered_set(unordered_set&& __uset, - const allocator_type& __a) - : _Safe(std::move(__uset._M_safe()), __a), - _Base(std::move(__uset._M_base()), __a) { } - - unordered_set(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) { } - - unordered_set(size_type __n, const allocator_type& __a) - : unordered_set(__n, hasher(), key_equal(), __a) - { } - - unordered_set(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__n, __hf, key_equal(), __a) - { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_set(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_set(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_set(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__l, __n, __hf, key_equal(), __a) - { } - - ~unordered_set() = default; - - unordered_set& - operator=(const unordered_set&) = default; - - unordered_set& - operator=(unordered_set&&) = default; - - unordered_set& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - return *this; - } - - void - swap(unordered_set& __x) - noexcept( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() noexcept - { - _Base::clear(); - this->_M_invalidate_all(); - } - - iterator - begin() noexcept - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const noexcept - { return const_iterator(_Base::begin(), this); } - - iterator - end() noexcept - { return iterator(_Base::end(), this); } - - const_iterator - end() const noexcept - { return const_iterator(_Base::end(), this); } - - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - // local versions - local_iterator - begin(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::begin(__b), this); - } - - local_iterator - end(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::end(__b), this); - } - - const_local_iterator - begin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::begin(__b), this); - } - - const_local_iterator - end(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::end(__b), this); - } - - const_local_iterator - cbegin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cbegin(__b), this); - } - - const_local_iterator - cend(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cend(__b), this); - } - - size_type - bucket_size(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return _Base::bucket_size(__b); - } - - float - max_load_factor() const noexcept - { return _Base::max_load_factor(); } - - void - max_load_factor(float __f) - { - __glibcxx_check_max_load_factor(__f); - _Base::max_load_factor(__f); - } - - template - std::pair - emplace(_Args&&... __args) - { - size_type __bucket_count = this->bucket_count(); - std::pair<_Base_iterator, bool> __res - = _Base::emplace(std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - template - iterator - emplace_hint(const_iterator __hint, _Args&&... __args) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::emplace_hint(__hint.base(), - std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - std::pair - insert(const value_type& __obj) - { - size_type __bucket_count = this->bucket_count(); - std::pair<_Base_iterator, bool> __res - = _Base::insert(__obj); - _M_check_rehashed(__bucket_count); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - iterator - insert(const_iterator __hint, const value_type& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__hint.base(), __obj); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - std::pair - insert(value_type&& __obj) - { - size_type __bucket_count = this->bucket_count(); - std::pair<_Base_iterator, bool> __res - = _Base::insert(std::move(__obj)); - _M_check_rehashed(__bucket_count); - return std::make_pair(iterator(__res.first, this), __res.second); - } - - iterator - insert(const_iterator __hint, value_type&& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - void - insert(std::initializer_list __l) - { - size_type __bucket_count = this->bucket_count(); - _Base::insert(__l); - _M_check_rehashed(__bucket_count); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - size_type __bucket_count = this->bucket_count(); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - - _M_check_rehashed(__bucket_count); - } - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - struct insert_return_type - { - bool inserted; - iterator position; - node_type node; - }; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - _Base_const_iterator __victim = __position.base(); - this->_M_invalidate_if( - [__victim](_Base_const_iterator __it) { return __it == __victim; } - ); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) { - return __it._M_curr() == __victim._M_cur; - }); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - insert_return_type - insert(node_type&& __nh) - { - auto __ret = _Base::insert(std::move(__nh)); - iterator __pos = iterator(__ret.position, this); - return { __ret.inserted, __pos, std::move(__ret.node) }; - } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - - iterator - find(const key_type& __key) - { return iterator(_Base::find(__key), this); } - - const_iterator - find(const key_type& __key) const - { return const_iterator(_Base::find(__key), this); } - - std::pair - equal_range(const key_type& __key) - { - std::pair<_Base_iterator, _Base_iterator> __res - = _Base::equal_range(__key); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - std::pair - equal_range(const key_type& __key) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> - __res = _Base::equal_range(__key); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - - size_type - erase(const key_type& __key) - { - size_type __ret(0); - _Base_iterator __victim(_Base::find(__key)); - if (__victim != _Base::end()) - { - this->_M_invalidate_if( - [__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - size_type __bucket_count = this->bucket_count(); - _Base::erase(__victim); - _M_check_rehashed(__bucket_count); - __ret = 1; - } - return __ret; - } - - iterator - erase(const_iterator __it) - { - __glibcxx_check_erase(__it); - _Base_const_iterator __victim = __it.base(); - this->_M_invalidate_if( - [__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __next = _Base::erase(__it.base()); - _M_check_rehashed(__bucket_count); - return iterator(__next, this); - } - - iterator - erase(iterator __it) - { return erase(const_iterator(__it)); } - - iterator - erase(const_iterator __first, const_iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __tmp = __first.base(); - __tmp != __last.base(); ++__tmp) - { - _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if( - [__tmp](_Base_const_iterator __it) - { return __it == __tmp; }); - this->_M_invalidate_local_if( - [__tmp](_Base_const_local_iterator __it) - { return __it._M_curr() == __tmp._M_cur; }); - } - size_type __bucket_count = this->bucket_count(); - _Base_iterator __next = _Base::erase(__first.base(), - __last.base()); - _M_check_rehashed(__bucket_count); - return iterator(__next, this); - } - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - private: - void - _M_check_rehashed(size_type __prev_count) - { - if (__prev_count != this->bucket_count()) - this->_M_invalidate_locals(); - } - }; - - template - inline void - swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - - - /// Class std::unordered_multiset with safety/checking/debug instrumentation. - template, - typename _Pred = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class unordered_multiset - : public __gnu_debug::_Safe_container< - unordered_multiset<_Value, _Hash, _Pred, _Alloc>, _Alloc, - __gnu_debug::_Safe_unordered_container>, - public _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash, _Pred, _Alloc> - { - typedef _GLIBCXX_STD_C::unordered_multiset< - _Value, _Hash, _Pred, _Alloc> _Base; - typedef __gnu_debug::_Safe_container _Safe; - typedef typename _Base::const_iterator _Base_const_iterator; - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_local_iterator - _Base_const_local_iterator; - typedef typename _Base::local_iterator _Base_local_iterator; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - - typedef __gnu_debug::_Safe_iterator< - _Base_iterator, unordered_multiset> iterator; - typedef __gnu_debug::_Safe_iterator< - _Base_const_iterator, unordered_multiset> const_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_local_iterator, unordered_multiset> local_iterator; - typedef __gnu_debug::_Safe_local_iterator< - _Base_const_local_iterator, unordered_multiset> const_local_iterator; - - unordered_multiset() = default; - - explicit - unordered_multiset(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __n, - __hf, __eql, __a) { } - - unordered_multiset(const unordered_multiset&) = default; - - unordered_multiset(const _Base& __x) - : _Base(__x) { } - - unordered_multiset(unordered_multiset&&) = default; - - explicit - unordered_multiset(const allocator_type& __a) - : _Base(__a) { } - - unordered_multiset(const unordered_multiset& __uset, - const allocator_type& __a) - : _Base(__uset, __a) { } - - unordered_multiset(unordered_multiset&& __uset, - const allocator_type& __a) - : _Safe(std::move(__uset._M_safe()), __a), - _Base(std::move(__uset._M_base()), __a) { } - - unordered_multiset(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) { } - - unordered_multiset(size_type __n, const allocator_type& __a) - : unordered_multiset(__n, hasher(), key_equal(), __a) - { } - - unordered_multiset(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__n, __hf, key_equal(), __a) - { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_multiset(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__l, __n, __hf, key_equal(), __a) - { } - - ~unordered_multiset() = default; - - unordered_multiset& - operator=(const unordered_multiset&) = default; - - unordered_multiset& - operator=(unordered_multiset&&) = default; - - unordered_multiset& - operator=(initializer_list __l) - { - this->_M_base() = __l; - this->_M_invalidate_all(); - return *this; - } - - void - swap(unordered_multiset& __x) - noexcept( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - } - - void - clear() noexcept - { - _Base::clear(); - this->_M_invalidate_all(); - } - - iterator - begin() noexcept - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const noexcept - { return const_iterator(_Base::begin(), this); } - - iterator - end() noexcept - { return iterator(_Base::end(), this); } - - const_iterator - end() const noexcept - { return const_iterator(_Base::end(), this); } - - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - // local versions - local_iterator - begin(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::begin(__b), this); - } - - local_iterator - end(size_type __b) - { - __glibcxx_check_bucket_index(__b); - return local_iterator(_Base::end(__b), this); - } - - const_local_iterator - begin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::begin(__b), this); - } - - const_local_iterator - end(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::end(__b), this); - } - - const_local_iterator - cbegin(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cbegin(__b), this); - } - - const_local_iterator - cend(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return const_local_iterator(_Base::cend(__b), this); - } - - size_type - bucket_size(size_type __b) const - { - __glibcxx_check_bucket_index(__b); - return _Base::bucket_size(__b); - } - - float - max_load_factor() const noexcept - { return _Base::max_load_factor(); } - - void - max_load_factor(float __f) - { - __glibcxx_check_max_load_factor(__f); - _Base::max_load_factor(__f); - } - - template - iterator - emplace(_Args&&... __args) - { - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it - = _Base::emplace(std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - template - iterator - emplace_hint(const_iterator __hint, _Args&&... __args) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::emplace_hint(__hint.base(), - std::forward<_Args>(__args)...); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - iterator - insert(const value_type& __obj) - { - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__obj); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - iterator - insert(const_iterator __hint, const value_type& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__hint.base(), __obj); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - iterator - insert(value_type&& __obj) - { - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(std::move(__obj)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - iterator - insert(const_iterator __hint, value_type&& __obj) - { - __glibcxx_check_insert(__hint); - size_type __bucket_count = this->bucket_count(); - _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj)); - _M_check_rehashed(__bucket_count); - return iterator(__it, this); - } - - void - insert(std::initializer_list __l) - { - size_type __bucket_count = this->bucket_count(); - _Base::insert(__l); - _M_check_rehashed(__bucket_count); - } - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - size_type __bucket_count = this->bucket_count(); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__first, __last); - - _M_check_rehashed(__bucket_count); - } - -#if __cplusplus > 201402L - using node_type = typename _Base::node_type; - - node_type - extract(const_iterator __position) - { - __glibcxx_check_erase(__position); - _Base_const_iterator __victim = __position.base(); - this->_M_invalidate_if( - [__victim](_Base_const_iterator __it) { return __it == __victim; } - ); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) { - return __it._M_curr() == __victim._M_cur; - }); - return _Base::extract(__position.base()); - } - - node_type - extract(const key_type& __key) - { - const auto __position = find(__key); - if (__position != end()) - return extract(__position); - return {}; - } - - iterator - insert(node_type&& __nh) - { return iterator(_Base::insert(std::move(__nh)), this); } - - iterator - insert(const_iterator __hint, node_type&& __nh) - { - __glibcxx_check_insert(__hint); - return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); - } - - using _Base::merge; -#endif // C++17 - - iterator - find(const key_type& __key) - { return iterator(_Base::find(__key), this); } - - const_iterator - find(const key_type& __key) const - { return const_iterator(_Base::find(__key), this); } - - std::pair - equal_range(const key_type& __key) - { - std::pair<_Base_iterator, _Base_iterator> __res - = _Base::equal_range(__key); - return std::make_pair(iterator(__res.first, this), - iterator(__res.second, this)); - } - - std::pair - equal_range(const key_type& __key) const - { - std::pair<_Base_const_iterator, _Base_const_iterator> - __res = _Base::equal_range(__key); - return std::make_pair(const_iterator(__res.first, this), - const_iterator(__res.second, this)); - } - - size_type - erase(const key_type& __key) - { - size_type __ret(0); - std::pair<_Base_iterator, _Base_iterator> __pair = - _Base::equal_range(__key); - for (_Base_iterator __victim = __pair.first; __victim != __pair.second;) - { - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - _Base::erase(__victim++); - ++__ret; - } - return __ret; - } - - iterator - erase(const_iterator __it) - { - __glibcxx_check_erase(__it); - _Base_const_iterator __victim = __it.base(); - this->_M_invalidate_if([__victim](_Base_const_iterator __it) - { return __it == __victim; }); - this->_M_invalidate_local_if( - [__victim](_Base_const_local_iterator __it) - { return __it._M_curr() == __victim._M_cur; }); - return iterator(_Base::erase(__it.base()), this); - } - - iterator - erase(iterator __it) - { return erase(const_iterator(__it)); } - - iterator - erase(const_iterator __first, const_iterator __last) - { - __glibcxx_check_erase_range(__first, __last); - for (_Base_const_iterator __tmp = __first.base(); - __tmp != __last.base(); ++__tmp) - { - _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), - _M_message(__gnu_debug::__msg_valid_range) - ._M_iterator(__first, "first") - ._M_iterator(__last, "last")); - this->_M_invalidate_if([__tmp](_Base_const_iterator __it) - { return __it == __tmp; }); - this->_M_invalidate_local_if( - [__tmp](_Base_const_local_iterator __it) - { return __it._M_curr() == __tmp._M_cur; }); - } - return iterator(_Base::erase(__first.base(), - __last.base()), this); - } - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - private: - void - _M_check_rehashed(size_type __prev_count) - { - if (__prev_count != this->bucket_count()) - this->_M_invalidate_locals(); - } - }; - - template - inline void - swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { return __x._M_base() == __y._M_base(); } - - template - inline bool - operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -} // namespace __debug -} // namespace std - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/vector deleted file mode 100644 index a6d18d945..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/vector +++ /dev/null @@ -1,790 +0,0 @@ -// Debugging vector implementation -*- C++ -*- - -// Copyright (C) 2003-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file debug/vector - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_DEBUG_VECTOR -#define _GLIBCXX_DEBUG_VECTOR 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include - -namespace __gnu_debug -{ - /** @brief Base class for Debug Mode vector. - * - * Adds information about the guaranteed capacity, which is useful for - * detecting code which relies on non-portable implementation details of - * the libstdc++ reallocation policy. - */ - template - class _Safe_vector - { - typedef typename _BaseSequence::size_type size_type; - - const _SafeSequence& - _M_seq() const { return *static_cast(this); } - - protected: - _Safe_vector() _GLIBCXX_NOEXCEPT - : _M_guaranteed_capacity(0) - { _M_update_guaranteed_capacity(); } - - _Safe_vector(const _Safe_vector&) _GLIBCXX_NOEXCEPT - : _M_guaranteed_capacity(0) - { _M_update_guaranteed_capacity(); } - - _Safe_vector(size_type __n) _GLIBCXX_NOEXCEPT - : _M_guaranteed_capacity(__n) - { } - -#if __cplusplus >= 201103L - _Safe_vector(_Safe_vector&& __x) noexcept - : _Safe_vector() - { __x._M_guaranteed_capacity = 0; } - - _Safe_vector& - operator=(const _Safe_vector&) noexcept - { - _M_update_guaranteed_capacity(); - return *this; - } - - _Safe_vector& - operator=(_Safe_vector&& __x) noexcept - { - _M_update_guaranteed_capacity(); - __x._M_guaranteed_capacity = 0; - return *this; - } -#endif - - size_type _M_guaranteed_capacity; - - bool - _M_requires_reallocation(size_type __elements) const _GLIBCXX_NOEXCEPT - { return __elements > _M_seq().capacity(); } - - void - _M_update_guaranteed_capacity() _GLIBCXX_NOEXCEPT - { - if (_M_seq().size() > _M_guaranteed_capacity) - _M_guaranteed_capacity = _M_seq().size(); - } - }; -} - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __debug -{ - /// Class std::vector with safety/checking/debug instrumentation. - template > - class vector - : public __gnu_debug::_Safe_container< - vector<_Tp, _Allocator>, _Allocator, __gnu_debug::_Safe_sequence>, - public _GLIBCXX_STD_C::vector<_Tp, _Allocator>, - public __gnu_debug::_Safe_vector< - vector<_Tp, _Allocator>, - _GLIBCXX_STD_C::vector<_Tp, _Allocator> > - { - typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base; - typedef __gnu_debug::_Safe_container< - vector, _Allocator, __gnu_debug::_Safe_sequence> _Safe; - typedef __gnu_debug::_Safe_vector _Safe_vector; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __gnu_debug::_Safe_iterator< - _Base_iterator, vector> iterator; - typedef __gnu_debug::_Safe_iterator< - _Base_const_iterator, vector> const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.4.1 construct/copy/destroy: - -#if __cplusplus < 201103L - vector() _GLIBCXX_NOEXCEPT - : _Base() { } -#else - vector() = default; -#endif - - explicit - vector(const _Allocator& __a) _GLIBCXX_NOEXCEPT - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - vector(size_type __n, const _Allocator& __a = _Allocator()) - : _Base(__n, __a), _Safe_vector(__n) { } - - vector(size_type __n, const _Tp& __value, - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#else - explicit - vector(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - vector(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, - __last)), - __gnu_debug::__base(__last), __a) { } - -#if __cplusplus < 201103L - vector(const vector& __x) - : _Base(__x) { } - - ~vector() _GLIBCXX_NOEXCEPT { } -#else - vector(const vector&) = default; - vector(vector&&) = default; - - vector(const vector& __x, const allocator_type& __a) - : _Base(__x, __a) { } - - vector(vector&& __x, const allocator_type& __a) - : _Safe(std::move(__x._M_safe()), __a), - _Base(std::move(__x._M_base()), __a), - _Safe_vector(std::move(__x)) { } - - vector(initializer_list __l, - const allocator_type& __a = allocator_type()) - : _Base(__l, __a) { } - - ~vector() = default; -#endif - - /// Construction from a normal-mode vector - vector(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - vector& - operator=(const vector& __x) - { - this->_M_safe() = __x; - _M_base() = __x; - this->_M_update_guaranteed_capacity(); - return *this; - } -#else - vector& - operator=(const vector&) = default; - - vector& - operator=(vector&&) = default; - - vector& - operator=(initializer_list __l) - { - _M_base() = __l; - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - return *this; - } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - void - assign(_InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_valid_range2(__first, __last, __dist); - - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::assign(__gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::assign(__first, __last); - - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } - - void - assign(size_type __n, const _Tp& __u) - { - _Base::assign(__n, __u); - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } - -#if __cplusplus >= 201103L - void - assign(initializer_list __l) - { - _Base::assign(__l); - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } -#endif - - using _Base::get_allocator; - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // 23.2.4.2 capacity: - using _Base::size; - using _Base::max_size; - -#if __cplusplus >= 201103L - void - resize(size_type __sz) - { - bool __realloc = this->_M_requires_reallocation(__sz); - if (__sz < this->size()) - this->_M_invalidate_after_nth(__sz); - _Base::resize(__sz); - if (__realloc) - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } - - void - resize(size_type __sz, const _Tp& __c) - { - bool __realloc = this->_M_requires_reallocation(__sz); - if (__sz < this->size()) - this->_M_invalidate_after_nth(__sz); - _Base::resize(__sz, __c); - if (__realloc) - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } -#else - void - resize(size_type __sz, _Tp __c = _Tp()) - { - bool __realloc = this->_M_requires_reallocation(__sz); - if (__sz < this->size()) - this->_M_invalidate_after_nth(__sz); - _Base::resize(__sz, __c); - if (__realloc) - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } -#endif - -#if __cplusplus >= 201103L - void - shrink_to_fit() - { - if (_Base::_M_shrink_to_fit()) - { - this->_M_guaranteed_capacity = _Base::capacity(); - this->_M_invalidate_all(); - } - } -#endif - - size_type - capacity() const _GLIBCXX_NOEXCEPT - { -#ifdef _GLIBCXX_DEBUG_PEDANTIC - return this->_M_guaranteed_capacity; -#else - return _Base::capacity(); -#endif - } - - using _Base::empty; - - void - reserve(size_type __n) - { - bool __realloc = this->_M_requires_reallocation(__n); - _Base::reserve(__n); - if (__n > this->_M_guaranteed_capacity) - this->_M_guaranteed_capacity = __n; - if (__realloc) - this->_M_invalidate_all(); - } - - // element access: - reference - operator[](size_type __n) _GLIBCXX_NOEXCEPT - { - __glibcxx_check_subscript(__n); - return _M_base()[__n]; - } - - const_reference - operator[](size_type __n) const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_subscript(__n); - return _M_base()[__n]; - } - - using _Base::at; - - reference - front() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - const_reference - front() const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::front(); - } - - reference - back() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::back(); - } - - const_reference - back() const _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - return _Base::back(); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // DR 464. Suggestion for new member functions in standard containers. - using _Base::data; - - // 23.2.4.3 modifiers: - void - push_back(const _Tp& __x) - { - bool __realloc = this->_M_requires_reallocation(this->size() + 1); - _Base::push_back(__x); - if (__realloc) - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); - } - -#if __cplusplus >= 201103L - template - typename __gnu_cxx::__enable_if::__value, - void>::__type - push_back(_Tp&& __x) - { emplace_back(std::move(__x)); } - - template -#if __cplusplus > 201402L - reference -#else - void -#endif - emplace_back(_Args&&... __args) - { - bool __realloc = this->_M_requires_reallocation(this->size() + 1); - _Base::emplace_back(std::forward<_Args>(__args)...); - if (__realloc) - this->_M_invalidate_all(); - this->_M_update_guaranteed_capacity(); -#if __cplusplus > 201402L - return back(); -#endif - } -#endif - - void - pop_back() _GLIBCXX_NOEXCEPT - { - __glibcxx_check_nonempty(); - this->_M_invalidate_if(_Equal(--_Base::end())); - _Base::pop_back(); - } - -#if __cplusplus >= 201103L - template - iterator - emplace(const_iterator __position, _Args&&... __args) - { - __glibcxx_check_insert(__position); - bool __realloc = this->_M_requires_reallocation(this->size() + 1); - difference_type __offset = __position.base() - _Base::begin(); - _Base_iterator __res = _Base::emplace(__position.base(), - std::forward<_Args>(__args)...); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_after_nth(__offset); - this->_M_update_guaranteed_capacity(); - return iterator(__res, this); - } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __position, const _Tp& __x) -#else - insert(iterator __position, const _Tp& __x) -#endif - { - __glibcxx_check_insert(__position); - bool __realloc = this->_M_requires_reallocation(this->size() + 1); - difference_type __offset = __position.base() - _Base::begin(); - _Base_iterator __res = _Base::insert(__position.base(), __x); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_after_nth(__offset); - this->_M_update_guaranteed_capacity(); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - template - typename __gnu_cxx::__enable_if::__value, - iterator>::__type - insert(const_iterator __position, _Tp&& __x) - { return emplace(__position, std::move(__x)); } - - iterator - insert(const_iterator __position, initializer_list __l) - { return this->insert(__position, __l.begin(), __l.end()); } -#endif - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - bool __realloc = this->_M_requires_reallocation(this->size() + __n); - difference_type __offset = __position.base() - _Base::cbegin(); - _Base_iterator __res = _Base::insert(__position.base(), __n, __x); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_after_nth(__offset); - this->_M_update_guaranteed_capacity(); - return iterator(__res, this); - } -#else - void - insert(iterator __position, size_type __n, const _Tp& __x) - { - __glibcxx_check_insert(__position); - bool __realloc = this->_M_requires_reallocation(this->size() + __n); - difference_type __offset = __position.base() - _Base::begin(); - _Base::insert(__position.base(), __n, __x); - if (__realloc) - this->_M_invalidate_all(); - else - this->_M_invalidate_after_nth(__offset); - this->_M_update_guaranteed_capacity(); - } -#endif - -#if __cplusplus >= 201103L - template> - iterator - insert(const_iterator __position, - _InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range(__position, __first, __last, __dist); - - /* Hard to guess if invalidation will occur, because __last - - __first can't be calculated in all cases, so we just - punt here by checking if it did occur. */ - _Base_iterator __old_begin = _M_base().begin(); - difference_type __offset = __position.base() - _Base::cbegin(); - _Base_iterator __res; - if (__dist.second >= __gnu_debug::__dp_sign) - __res = _Base::insert(__position.base(), - __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - __res = _Base::insert(__position.base(), __first, __last); - - if (_M_base().begin() != __old_begin) - this->_M_invalidate_all(); - else - this->_M_invalidate_after_nth(__offset); - this->_M_update_guaranteed_capacity(); - return iterator(__res, this); - } -#else - template - void - insert(iterator __position, - _InputIterator __first, _InputIterator __last) - { - typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; - __glibcxx_check_insert_range(__position, __first, __last, __dist); - - /* Hard to guess if invalidation will occur, because __last - - __first can't be calculated in all cases, so we just - punt here by checking if it did occur. */ - _Base_iterator __old_begin = _M_base().begin(); - difference_type __offset = __position.base() - _Base::begin(); - if (__dist.second >= __gnu_debug::__dp_sign) - _Base::insert(__position.base(), __gnu_debug::__unsafe(__first), - __gnu_debug::__unsafe(__last)); - else - _Base::insert(__position.base(), __first, __last); - - if (_M_base().begin() != __old_begin) - this->_M_invalidate_all(); - else - this->_M_invalidate_after_nth(__offset); - this->_M_update_guaranteed_capacity(); - } -#endif - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __position) -#else - erase(iterator __position) -#endif - { - __glibcxx_check_erase(__position); - difference_type __offset = __position.base() - _Base::begin(); - _Base_iterator __res = _Base::erase(__position.base()); - this->_M_invalidate_after_nth(__offset); - return iterator(__res, this); - } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __first, const_iterator __last) -#else - erase(iterator __first, iterator __last) -#endif - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - __glibcxx_check_erase_range(__first, __last); - - if (__first.base() != __last.base()) - { - difference_type __offset = __first.base() - _Base::begin(); - _Base_iterator __res = _Base::erase(__first.base(), - __last.base()); - this->_M_invalidate_after_nth(__offset); - return iterator(__res, this); - } - else -#if __cplusplus >= 201103L - return begin() + (__first.base() - cbegin().base()); -#else - return __first; -#endif - } - - void - swap(vector& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Safe::_M_swap(__x); - _Base::swap(__x); - std::swap(this->_M_guaranteed_capacity, __x._M_guaranteed_capacity); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - _Base::clear(); - this->_M_invalidate_all(); - } - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - private: - void - _M_invalidate_after_nth(difference_type __n) _GLIBCXX_NOEXCEPT - { - typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; - this->_M_invalidate_if(_After_nth(__n, _Base::begin())); - } - }; - - template - inline bool - operator==(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __debug - -#if __cplusplus >= 201103L - // DR 1182. - /// std::hash specialization for vector. - template - struct hash<__debug::vector> - : public __hash_base> - { - size_t - operator()(const __debug::vector& __b) const noexcept - { return std::hash<_GLIBCXX_STD_C::vector>()(__b); } - }; -#endif - -} // namespace std - -namespace __gnu_debug -{ - template - struct _Is_contiguous_sequence > - : std::__true_type - { }; - - template - struct _Is_contiguous_sequence > - : std::__false_type - { }; -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/deque deleted file mode 100644 index f4fb2b026..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/deque +++ /dev/null @@ -1,76 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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) 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/deque - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_DEQUE -#define _GLIBCXX_DEQUE 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif /* _GLIBCXX_DEQUE */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/algorithm deleted file mode 100644 index a7ab0e84c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/algorithm +++ /dev/null @@ -1,92 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/algorithm - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_ALGORITHM -#define _GLIBCXX_EXPERIMENTAL_ALGORITHM 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline _ForwardIterator - search(_ForwardIterator __first, _ForwardIterator __last, - const _Searcher& __searcher) - { return __searcher(__first, __last); } - -#define __cpp_lib_experimental_sample 201402 - - /// Take a random sample from a population. - template - _SampleIterator - sample(_PopulationIterator __first, _PopulationIterator __last, - _SampleIterator __out, _Distance __n, - _UniformRandomNumberGenerator&& __g) - { - using __pop_cat = typename - std::iterator_traits<_PopulationIterator>::iterator_category; - using __samp_cat = typename - std::iterator_traits<_SampleIterator>::iterator_category; - - static_assert( - __or_, - is_convertible<__samp_cat, random_access_iterator_tag>>::value, - "output range must use a RandomAccessIterator when input range" - " does not meet the ForwardIterator requirements"); - - static_assert(is_integral<_Distance>::value, - "sample size must be an integer type"); - - typename iterator_traits<_PopulationIterator>::difference_type __d = __n; - return std::__sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, - __d, - std::forward<_UniformRandomNumberGenerator>(__g)); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_ALGORITHM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/any b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/any deleted file mode 100644 index 36c0680c2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/any +++ /dev/null @@ -1,530 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/any - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_ANY -#define _GLIBCXX_EXPERIMENTAL_ANY 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup any Type-safe container of any type - * @ingroup experimental - * - * A type-safe container for single values of value types, as - * described in n3804 "Any Library Proposal (Revision 3)". - * - * @{ - */ - -#define __cpp_lib_experimental_any 201411 - - /** - * @brief Exception class thrown by a failed @c any_cast - * @ingroup exceptions - */ - class bad_any_cast : public bad_cast - { - public: - virtual const char* what() const noexcept { return "bad any_cast"; } - }; - - [[gnu::noreturn]] inline void __throw_bad_any_cast() - { -#if __cpp_exceptions - throw bad_any_cast{}; -#else - __builtin_abort(); -#endif - } - - /** - * @brief A type-safe container of any type. - * - * An @c any object's state is either empty or it stores a contained object - * of CopyConstructible type. - */ - class any - { - // Holds either pointer to a heap object or the contained object itself. - union _Storage - { - // This constructor intentionally doesn't initialize anything. - _Storage() = default; - - // Prevent trivial copies of this type, buffer might hold a non-POD. - _Storage(const _Storage&) = delete; - _Storage& operator=(const _Storage&) = delete; - - void* _M_ptr; - aligned_storage::type _M_buffer; - }; - - template, - bool _Fits = (sizeof(_Tp) <= sizeof(_Storage)) - && (alignof(_Tp) <= alignof(_Storage))> - using _Internal = std::integral_constant; - - template - struct _Manager_internal; // uses small-object optimization - - template - struct _Manager_external; // creates contained object on the heap - - template - using _Manager = conditional_t<_Internal<_Tp>::value, - _Manager_internal<_Tp>, - _Manager_external<_Tp>>; - - template> - using _Decay = enable_if_t::value, _Decayed>; - - public: - // construct/destruct - - /// Default constructor, creates an empty object. - any() noexcept : _M_manager(nullptr) { } - - /// Copy constructor, copies the state of @p __other - any(const any& __other) - { - if (__other.empty()) - _M_manager = nullptr; - else - { - _Arg __arg; - __arg._M_any = this; - __other._M_manager(_Op_clone, &__other, &__arg); - } - } - - /** - * @brief Move constructor, transfer the state from @p __other - * - * @post @c __other.empty() (this postcondition is a GNU extension) - */ - any(any&& __other) noexcept - { - if (__other.empty()) - _M_manager = nullptr; - else - { - _Arg __arg; - __arg._M_any = this; - __other._M_manager(_Op_xfer, &__other, &__arg); - } - } - - /// Construct with a copy of @p __value as the contained object. - template , - typename _Mgr = _Manager<_Tp>, - typename enable_if::value, - bool>::type = true> - any(_ValueType&& __value) - : _M_manager(&_Mgr::_S_manage) - { - _Mgr::_S_create(_M_storage, std::forward<_ValueType>(__value)); - static_assert(is_copy_constructible<_Tp>::value, - "The contained object must be CopyConstructible"); - } - - /// Construct with a copy of @p __value as the contained object. - template , - typename _Mgr = _Manager<_Tp>, - typename enable_if::value, - bool>::type = false> - any(_ValueType&& __value) - : _M_manager(&_Mgr::_S_manage) - { - _Mgr::_S_create(_M_storage, __value); - static_assert(is_copy_constructible<_Tp>::value, - "The contained object must be CopyConstructible"); - } - - /// Destructor, calls @c clear() - ~any() { clear(); } - - // assignments - - /// Copy the state of another object. - any& operator=(const any& __rhs) - { - *this = any(__rhs); - return *this; - } - - /** - * @brief Move assignment operator - * - * @post @c __rhs.empty() (not guaranteed for other implementations) - */ - any& operator=(any&& __rhs) noexcept - { - if (__rhs.empty()) - clear(); - else if (this != &__rhs) - { - clear(); - _Arg __arg; - __arg._M_any = this; - __rhs._M_manager(_Op_xfer, &__rhs, &__arg); - } - return *this; - } - - /// Store a copy of @p __rhs as the contained object. - template - enable_if_t>::value, any&> - operator=(_ValueType&& __rhs) - { - *this = any(std::forward<_ValueType>(__rhs)); - return *this; - } - - // modifiers - - /// If not empty, destroy the contained object. - void clear() noexcept - { - if (!empty()) - { - _M_manager(_Op_destroy, this, nullptr); - _M_manager = nullptr; - } - } - - /// Exchange state with another object. - void swap(any& __rhs) noexcept - { - if (empty() && __rhs.empty()) - return; - - if (!empty() && !__rhs.empty()) - { - if (this == &__rhs) - return; - - any __tmp; - _Arg __arg; - __arg._M_any = &__tmp; - __rhs._M_manager(_Op_xfer, &__rhs, &__arg); - __arg._M_any = &__rhs; - _M_manager(_Op_xfer, this, &__arg); - __arg._M_any = this; - __tmp._M_manager(_Op_xfer, &__tmp, &__arg); - } - else - { - any* __empty = empty() ? this : &__rhs; - any* __full = empty() ? &__rhs : this; - _Arg __arg; - __arg._M_any = __empty; - __full->_M_manager(_Op_xfer, __full, &__arg); - } - } - - // observers - - /// Reports whether there is a contained object or not. - bool empty() const noexcept { return _M_manager == nullptr; } - -#if __cpp_rtti - /// The @c typeid of the contained object, or @c typeid(void) if empty. - const type_info& type() const noexcept - { - if (empty()) - return typeid(void); - _Arg __arg; - _M_manager(_Op_get_type_info, this, &__arg); - return *__arg._M_typeinfo; - } -#endif - - template - static constexpr bool __is_valid_cast() - { return __or_, is_copy_constructible<_Tp>>::value; } - - private: - enum _Op { - _Op_access, _Op_get_type_info, _Op_clone, _Op_destroy, _Op_xfer - }; - - union _Arg - { - void* _M_obj; - const std::type_info* _M_typeinfo; - any* _M_any; - }; - - void (*_M_manager)(_Op, const any*, _Arg*); - _Storage _M_storage; - - template - friend void* __any_caster(const any* __any); - - // Manage in-place contained object. - template - struct _Manager_internal - { - static void - _S_manage(_Op __which, const any* __anyp, _Arg* __arg); - - template - static void - _S_create(_Storage& __storage, _Up&& __value) - { - void* __addr = &__storage._M_buffer; - ::new (__addr) _Tp(std::forward<_Up>(__value)); - } - }; - - // Manage external contained object. - template - struct _Manager_external - { - static void - _S_manage(_Op __which, const any* __anyp, _Arg* __arg); - - template - static void - _S_create(_Storage& __storage, _Up&& __value) - { - __storage._M_ptr = new _Tp(std::forward<_Up>(__value)); - } - }; - }; - - /// Exchange the states of two @c any objects. - inline void swap(any& __x, any& __y) noexcept { __x.swap(__y); } - - /** - * @brief Access the contained object. - * - * @tparam _ValueType A const-reference or CopyConstructible type. - * @param __any The object to access. - * @return The contained object. - * @throw bad_any_cast If - * __any.type() != typeid(remove_reference_t<_ValueType>) - * - */ - template - inline _ValueType any_cast(const any& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast>>(&__any); - if (__p) - return *__p; - __throw_bad_any_cast(); - } - - /** - * @brief Access the contained object. - * - * @tparam _ValueType A reference or CopyConstructible type. - * @param __any The object to access. - * @return The contained object. - * @throw bad_any_cast If - * __any.type() != typeid(remove_reference_t<_ValueType>) - * - * - * @{ - */ - template - inline _ValueType any_cast(any& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast>(&__any); - if (__p) - return *__p; - __throw_bad_any_cast(); - } - - template::value - || is_lvalue_reference<_ValueType>::value, - bool>::type = true> - inline _ValueType any_cast(any&& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast>(&__any); - if (__p) - return *__p; - __throw_bad_any_cast(); - } - - template::value - && !is_lvalue_reference<_ValueType>::value, - bool>::type = false> - inline _ValueType any_cast(any&& __any) - { - static_assert(any::__is_valid_cast<_ValueType>(), - "Template argument must be a reference or CopyConstructible type"); - auto __p = any_cast>(&__any); - if (__p) - return std::move(*__p); - __throw_bad_any_cast(); - } - // @} - - template - void* __any_caster(const any* __any) - { - struct _None { }; - using _Up = decay_t<_Tp>; - using _Vp = conditional_t::value, _Up, _None>; - if (__any->_M_manager != &any::_Manager<_Vp>::_S_manage) - return nullptr; - any::_Arg __arg; - __any->_M_manager(any::_Op_access, __any, &__arg); - return __arg._M_obj; - } - - /** - * @brief Access the contained object. - * - * @tparam _ValueType The type of the contained object. - * @param __any A pointer to the object to access. - * @return The address of the contained object if - * __any != nullptr && __any.type() == typeid(_ValueType) - * , otherwise a null pointer. - * - * @{ - */ - template - inline const _ValueType* any_cast(const any* __any) noexcept - { - if (__any) - return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); - return nullptr; - } - - template - inline _ValueType* any_cast(any* __any) noexcept - { - if (__any) - return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); - return nullptr; - } - // @} - - template - void - any::_Manager_internal<_Tp>:: - _S_manage(_Op __which, const any* __any, _Arg* __arg) - { - // The contained object is in _M_storage._M_buffer - auto __ptr = reinterpret_cast(&__any->_M_storage._M_buffer); - switch (__which) - { - case _Op_access: - __arg->_M_obj = const_cast<_Tp*>(__ptr); - break; - case _Op_get_type_info: -#if __cpp_rtti - __arg->_M_typeinfo = &typeid(_Tp); -#endif - break; - case _Op_clone: - ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp(*__ptr); - __arg->_M_any->_M_manager = __any->_M_manager; - break; - case _Op_destroy: - __ptr->~_Tp(); - break; - case _Op_xfer: - ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp - (std::move(*const_cast<_Tp*>(__ptr))); - __ptr->~_Tp(); - __arg->_M_any->_M_manager = __any->_M_manager; - const_cast(__any)->_M_manager = nullptr; - break; - } - } - - template - void - any::_Manager_external<_Tp>:: - _S_manage(_Op __which, const any* __any, _Arg* __arg) - { - // The contained object is *_M_storage._M_ptr - auto __ptr = static_cast(__any->_M_storage._M_ptr); - switch (__which) - { - case _Op_access: - __arg->_M_obj = const_cast<_Tp*>(__ptr); - break; - case _Op_get_type_info: -#if __cpp_rtti - __arg->_M_typeinfo = &typeid(_Tp); -#endif - break; - case _Op_clone: - __arg->_M_any->_M_storage._M_ptr = new _Tp(*__ptr); - __arg->_M_any->_M_manager = __any->_M_manager; - break; - case _Op_destroy: - delete __ptr; - break; - case _Op_xfer: - __arg->_M_any->_M_storage._M_ptr = __any->_M_storage._M_ptr; - __arg->_M_any->_M_manager = __any->_M_manager; - const_cast(__any)->_M_manager = nullptr; - break; - } - } - - // @} group any -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_ANY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/array deleted file mode 100644 index 11cb924e0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/array +++ /dev/null @@ -1,115 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/array - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_ARRAY -#define _GLIBCXX_EXPERIMENTAL_ARRAY 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_make_array 201505 - /** - * @defgroup make_array Array creation functions - * @ingroup experimental - * - * Array creation functions as described in N4529, - * Working Draft, C++ Extensions for Library Fundamentals, Version 2 - * - * @{ - */ - -template - struct __make_array_elem - { - using type = _Dest; - }; - -template - struct __make_array_elem - : common_type<_Types...> - { - template - struct __is_reference_wrapper : false_type - {}; - - template - struct __is_reference_wrapper> : true_type - {}; - - static_assert(!__or_<__is_reference_wrapper>...>::value, - "make_array must be used with an explicit target type when" - "any of the arguments is a reference_wrapper"); - }; - -template - constexpr - array::type, sizeof...(_Types)> - make_array(_Types&&... __t) - { - return {{ std::forward<_Types>(__t)... }}; - } - -template - constexpr array, _Nm> - __to_array(_Tp (&__a)[_Nm], index_sequence<_Idx...>) - { - return {{__a[_Idx]...}}; - } - -template - constexpr array, _Nm> - to_array(_Tp (&__a)[_Nm]) - noexcept(is_nothrow_constructible, _Tp&>::value) - { - return __to_array(__a, make_index_sequence<_Nm>{}); - } - - // @} group make_array - _GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental - -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/lfts_config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/lfts_config.h deleted file mode 100644 index a9faa47a8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/lfts_config.h +++ /dev/null @@ -1,64 +0,0 @@ -// Namespace declarations for Library Fundamentals TS -*- C++ -*- - -// Copyright (C) 2016-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/bits/lfts_config.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. - */ - -#if __cplusplus <= 201103L -# include -#else -#include - -#if _GLIBCXX_INLINE_VERSION -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace chrono -{ -namespace experimental -{ -inline namespace fundamentals_v1 { inline namespace __7 { } } -inline namespace fundamentals_v2 { inline namespace __7 { } } -} // namespace experimental -} // namespace chrono - -namespace experimental -{ -inline namespace fundamentals_v1 { - inline namespace __7 { } - namespace __detail { inline namespace __7 { } } -} -inline namespace fundamentals_v2 { - inline namespace __7 { } - namespace pmr { inline namespace __7 { } } - namespace __detail { inline namespace __7 { } } -} // namespace fundamentals_v2 -inline namespace literals { inline namespace string_view_literals { - inline namespace __7 { } -} } // namespace literals::string_view_literals -} // namespace experimental -} // namespace std -#endif -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/shared_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/shared_ptr.h deleted file mode 100644 index 27f22d236..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/shared_ptr.h +++ /dev/null @@ -1,684 +0,0 @@ -// Experimental shared_ptr with array support -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/bits/shared_ptr.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{experimental/memory} - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H -#define _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // 8.2.1 - - template class shared_ptr; - template class weak_ptr; - template class enable_shared_from_this; - - template - constexpr bool __sp_compatible_v - = std::__sp_compatible_with<_Yp*, _Tp*>::value; - - template - constexpr bool __sp_is_constructible_v - = std::__sp_is_constructible<_Tp, _Yp>::value; - - template - class shared_ptr : public __shared_ptr<_Tp> - { - using _Base_type = __shared_ptr<_Tp>; - - public: - using element_type = typename _Base_type::element_type; - - private: - // Constraint for construction from a pointer of type _Yp*: - template - using _SafeConv = enable_if_t<__sp_is_constructible_v<_Tp, _Yp>>; - - template - using _Compatible - = enable_if_t<__sp_compatible_v<_Tp1, _Tp>, _Res>; - - template::pointer, - typename _Res = void> - using _UniqCompatible = enable_if_t< - __sp_compatible_v<_Tp1, _Tp> - && experimental::is_convertible_v<_Ptr, element_type*>, - _Res>; - - public: - - // 8.2.1.1, shared_ptr constructors - constexpr shared_ptr() noexcept = default; - - template> - explicit - shared_ptr(_Tp1* __p) : _Base_type(__p) - { _M_enable_shared_from_this_with(__p); } - - template> - shared_ptr(_Tp1* __p, _Deleter __d) - : _Base_type(__p, __d) - { _M_enable_shared_from_this_with(__p); } - - template> - shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a) - : _Base_type(__p, __d, __a) - { _M_enable_shared_from_this_with(__p); } - - template - shared_ptr(nullptr_t __p, _Deleter __d) - : _Base_type(__p, __d) { } - - template - shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) - : _Base_type(__p, __d, __a) { } - - template - shared_ptr(const shared_ptr<_Tp1>& __r, element_type* __p) noexcept - : _Base_type(__r, __p) { } - - shared_ptr(const shared_ptr& __r) noexcept - : _Base_type(__r) { } - - template> - shared_ptr(const shared_ptr<_Tp1>& __r) noexcept - : _Base_type(__r) { } - - shared_ptr(shared_ptr&& __r) noexcept - : _Base_type(std::move(__r)) { } - - template> - shared_ptr(shared_ptr<_Tp1>&& __r) noexcept - : _Base_type(std::move(__r)) { } - - template> - explicit - shared_ptr(const weak_ptr<_Tp1>& __r) - : _Base_type(__r) { } - -#if _GLIBCXX_USE_DEPRECATED - template> - shared_ptr(std::auto_ptr<_Tp1>&& __r) - : _Base_type(std::move(__r)) - { _M_enable_shared_from_this_with(static_cast<_Tp1*>(this->get())); } -#endif - - template> - shared_ptr(unique_ptr<_Tp1, _Del>&& __r) - : _Base_type(std::move(__r)) - { - // XXX assume conversion from __r.get() to this->get() to __elem_t* - // is a round trip, which might not be true in all cases. - using __elem_t = typename unique_ptr<_Tp1, _Del>::element_type; - _M_enable_shared_from_this_with(static_cast<__elem_t*>(this->get())); - } - - constexpr shared_ptr(nullptr_t __p) - : _Base_type(__p) { } - - // C++14 §20.8.2.2 - ~shared_ptr() = default; - - // C++14 §20.8.2.3 - shared_ptr& operator=(const shared_ptr&) noexcept = default; - - template - _Compatible<_Tp1, shared_ptr&> - operator=(const shared_ptr<_Tp1>& __r) noexcept - { - _Base_type::operator=(__r); - return *this; - } - - shared_ptr& - operator=(shared_ptr&& __r) noexcept - { - _Base_type::operator=(std::move(__r)); - return *this; - } - - template - _Compatible<_Tp1, shared_ptr&> - operator=(shared_ptr<_Tp1>&& __r) noexcept - { - _Base_type::operator=(std::move(__r)); - return *this; - } - -#if _GLIBCXX_USE_DEPRECATED - template - _Compatible<_Tp1, shared_ptr&> - operator=(std::auto_ptr<_Tp1>&& __r) - { - __shared_ptr<_Tp>::operator=(std::move(__r)); - return *this; - } -#endif - - template - _UniqCompatible<_Tp1, _Del, shared_ptr&> - operator=(unique_ptr<_Tp1, _Del>&& __r) - { - _Base_type::operator=(std::move(__r)); - return *this; - } - - // C++14 §20.8.2.2.4 - // swap & reset - // 8.2.1.2 shared_ptr observers - // in __shared_ptr - - private: - template - shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, - _Args&&... __args) - : _Base_type(__tag, __a, std::forward<_Args>(__args)...) - { _M_enable_shared_from_this_with(this->get()); } - - template - friend shared_ptr<_Tp1> - allocate_shared(const _Alloc& __a, _Args&&... __args); - - shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) - : _Base_type(__r, std::nothrow) { } - - friend class weak_ptr<_Tp>; - - template - using __esft_base_t = - decltype(__expt_enable_shared_from_this_base(std::declval<_Yp*>())); - - // Detect an accessible and unambiguous enable_shared_from_this base. - template - struct __has_esft_base - : false_type { }; - - template - struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> - : __bool_constant> { }; // ignore base for arrays - - template - typename enable_if<__has_esft_base<_Yp>::value>::type - _M_enable_shared_from_this_with(const _Yp* __p) noexcept - { - if (auto __base = __expt_enable_shared_from_this_base(__p)) - { - __base->_M_weak_this - = shared_ptr<_Yp>(*this, const_cast<_Yp*>(__p)); - } - } - - template - typename enable_if::value>::type - _M_enable_shared_from_this_with(const _Yp*) noexcept - { } - }; - - // C++14 §20.8.2.2.7 //DOING - template - bool operator==(const shared_ptr<_Tp1>& __a, - const shared_ptr<_Tp2>& __b) noexcept - { return __a.get() == __b.get(); } - - template - inline bool - operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return !__a; } - - template - inline bool - operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return !__a; } - - template - inline bool - operator!=(const shared_ptr<_Tp1>& __a, - const shared_ptr<_Tp2>& __b) noexcept - { return __a.get() != __b.get(); } - - template - inline bool - operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return (bool)__a; } - - template - inline bool - operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return (bool)__a; } - - template - inline bool - operator<(const shared_ptr<_Tp1>& __a, - const shared_ptr<_Tp2>& __b) noexcept - { - using __elem_t1 = typename shared_ptr<_Tp1>::element_type; - using __elem_t2 = typename shared_ptr<_Tp2>::element_type; - using _CT = common_type_t<__elem_t1*, __elem_t2*>; - return std::less<_CT>()(__a.get(), __b.get()); - } - - template - inline bool - operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return std::less<__elem_t*>()(__a.get(), nullptr); - } - - template - inline bool - operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return std::less<__elem_t*>()(nullptr, __a.get()); - } - - template - inline bool - operator<=(const shared_ptr<_Tp1>& __a, - const shared_ptr<_Tp2>& __b) noexcept - { return !(__b < __a); } - - template - inline bool - operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return !(nullptr < __a); } - - template - inline bool - operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return !(__a < nullptr); } - - template - inline bool - operator>(const shared_ptr<_Tp1>& __a, - const shared_ptr<_Tp2>& __b) noexcept - { return (__b < __a); } - - template - inline bool - operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return std::less<__elem_t*>()(nullptr, __a.get()); - } - - template - inline bool - operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return std::less<__elem_t*>()(__a.get(), nullptr); - } - - template - inline bool - operator>=(const shared_ptr<_Tp1>& __a, - const shared_ptr<_Tp2>& __b) noexcept - { return !(__a < __b); } - - template - inline bool - operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept - { return !(__a < nullptr); } - - template - inline bool - operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept - { return !(nullptr < __a); } - - // C++14 §20.8.2.2.8 - template - inline void - swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept - { __a.swap(__b); } - - // 8.2.1.3, shared_ptr casts - template - inline shared_ptr<_Tp> - static_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return shared_ptr<_Tp>(__r, static_cast<__elem_t*>(__r.get())); - } - - template - inline shared_ptr<_Tp> - dynamic_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - if (_Tp* __p = dynamic_cast<__elem_t*>(__r.get())) - return shared_ptr<_Tp>(__r, __p); - return shared_ptr<_Tp>(); - } - - template - inline shared_ptr<_Tp> - const_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return shared_ptr<_Tp>(__r, const_cast<__elem_t*>(__r.get())); - } - - template - inline shared_ptr<_Tp> - reinterpret_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept - { - using __elem_t = typename shared_ptr<_Tp>::element_type; - return shared_ptr<_Tp>(__r, reinterpret_cast<__elem_t*>(__r.get())); - } - - // C++14 §20.8.2.3 - template - class weak_ptr : public __weak_ptr<_Tp> - { - template - using _Compatible = enable_if_t<__sp_compatible_v<_Tp1, _Tp>, _Res>; - - using _Base_type = __weak_ptr<_Tp>; - - public: - constexpr weak_ptr() noexcept = default; - - template> - weak_ptr(const shared_ptr<_Tp1>& __r) noexcept - : _Base_type(__r) { } - - weak_ptr(const weak_ptr&) noexcept = default; - - template> - weak_ptr(const weak_ptr<_Tp1>& __r) noexcept - : _Base_type(__r) { } - - weak_ptr(weak_ptr&&) noexcept = default; - - template> - weak_ptr(weak_ptr<_Tp1>&& __r) noexcept - : _Base_type(std::move(__r)) { } - - weak_ptr& - operator=(const weak_ptr& __r) noexcept = default; - - template - _Compatible<_Tp1, weak_ptr&> - operator=(const weak_ptr<_Tp1>& __r) noexcept - { - this->_Base_type::operator=(__r); - return *this; - } - - template - _Compatible<_Tp1, weak_ptr&> - operator=(const shared_ptr<_Tp1>& __r) noexcept - { - this->_Base_type::operator=(__r); - return *this; - } - - weak_ptr& - operator=(weak_ptr&& __r) noexcept = default; - - template - _Compatible<_Tp1, weak_ptr&> - operator=(weak_ptr<_Tp1>&& __r) noexcept - { - this->_Base_type::operator=(std::move(__r)); - return *this; - } - - shared_ptr<_Tp> - lock() const noexcept - { return shared_ptr<_Tp>(*this, std::nothrow); } - - friend class enable_shared_from_this<_Tp>; - }; - - // C++14 §20.8.2.3.6 - template - inline void - swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept - { __a.swap(__b); } - - /// C++14 §20.8.2.2.10 - template - inline _Del* - get_deleter(const shared_ptr<_Tp>& __p) noexcept - { return std::get_deleter<_Del>(__p); } - - // C++14 §20.8.2.2.11 - template - inline std::basic_ostream<_Ch, _Tr>& - operator<<(std::basic_ostream<_Ch, _Tr>& __os, const shared_ptr<_Tp>& __p) - { - __os << __p.get(); - return __os; - } - - // C++14 §20.8.2.4 - template class owner_less; - - /// Partial specialization of owner_less for shared_ptr. - template - struct owner_less> - : public _Sp_owner_less, weak_ptr<_Tp>> - { }; - - /// Partial specialization of owner_less for weak_ptr. - template - struct owner_less> - : public _Sp_owner_less, shared_ptr<_Tp>> - { }; - - template<> - class owner_less - { - template - bool - operator()(shared_ptr<_Tp> const& __lhs, - shared_ptr<_Up> const& __rhs) const - { return __lhs.owner_before(__rhs); } - - template - bool - operator()(shared_ptr<_Tp> const& __lhs, - weak_ptr<_Up> const& __rhs) const - { return __lhs.owner_before(__rhs); } - - template - bool - operator()(weak_ptr<_Tp> const& __lhs, - shared_ptr<_Up> const& __rhs) const - { return __lhs.owner_before(__rhs); } - - template - bool - operator()(weak_ptr<_Tp> const& __lhs, - weak_ptr<_Up> const& __rhs) const - { return __lhs.owner_before(__rhs); } - - typedef void is_transparent; - }; - - // C++14 §20.8.2.6 - template - inline bool - atomic_is_lock_free(const shared_ptr<_Tp>* __p) - { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } - - template - shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) - { return std::atomic_load<_Tp>(__p); } - - template - shared_ptr<_Tp> - atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order __mo) - { return std::atomic_load_explicit<_Tp>(__p, __mo); } - - template - void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) - { return std::atomic_store<_Tp>(__p, __r); } - - template - shared_ptr<_Tp> - atomic_store_explicit(const shared_ptr<_Tp>* __p, - shared_ptr<_Tp> __r, - memory_order __mo) - { return std::atomic_store_explicit<_Tp>(__p, __r, __mo); } - - template - void atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) - { return std::atomic_exchange<_Tp>(__p, __r); } - - template - shared_ptr<_Tp> - atomic_exchange_explicit(const shared_ptr<_Tp>* __p, - shared_ptr<_Tp> __r, - memory_order __mo) - { return std::atomic_exchange_explicit<_Tp>(__p, __r, __mo); } - - template - bool atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, - shared_ptr<_Tp>* __v, - shared_ptr<_Tp> __w) - { return std::atomic_compare_exchange_weak<_Tp>(__p, __v, __w); } - - template - bool atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, - shared_ptr<_Tp>* __v, - shared_ptr<_Tp> __w) - { return std::atomic_compare_exchange_strong<_Tp>(__p, __v, __w); } - - template - bool atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, - shared_ptr<_Tp>* __v, - shared_ptr<_Tp> __w, - memory_order __success, - memory_order __failure) - { return std::atomic_compare_exchange_weak_explicit<_Tp>(__p, __v, __w, - __success, - __failure); } - - template - bool atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, - shared_ptr<_Tp>* __v, - shared_ptr<_Tp> __w, - memory_order __success, - memory_order __failure) - { return std::atomic_compare_exchange_strong_explicit<_Tp>(__p, __v, __w, - __success, - __failure); } - - //enable_shared_from_this - template - class enable_shared_from_this - { - protected: - constexpr enable_shared_from_this() noexcept { } - - enable_shared_from_this(const enable_shared_from_this&) noexcept { } - - enable_shared_from_this& - operator=(const enable_shared_from_this&) noexcept - { return *this; } - - ~enable_shared_from_this() { } - - public: - shared_ptr<_Tp> - shared_from_this() - { return shared_ptr<_Tp>(this->_M_weak_this); } - - shared_ptr - shared_from_this() const - { return shared_ptr(this->_M_weak_this); } - - weak_ptr<_Tp> - weak_from_this() noexcept - { return _M_weak_this; } - - weak_ptr - weak_from_this() const noexcept - { return _M_weak_this; } - - private: - template - void - _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept - { _M_weak_this._M_assign(__p, __n); } - - // Found by ADL when this is an associated class. - friend const enable_shared_from_this* - __expt_enable_shared_from_this_base(const enable_shared_from_this* __p) - { return __p; } - - template - friend class shared_ptr; - - mutable weak_ptr<_Tp> _M_weak_this; - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// std::hash specialization for shared_ptr. - template - struct hash> - : public __hash_base> - { - size_t - operator()(const experimental::shared_ptr<_Tp>& __s) const noexcept - { return std::hash<_Tp*>()(__s.get()); } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/string_view.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/string_view.tcc deleted file mode 100644 index 30968fc6b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/string_view.tcc +++ /dev/null @@ -1,233 +0,0 @@ -// Components for manipulating non-owning sequences of characters -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/bits/string_view.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{experimental/string_view} - */ - -// -// N3762 basic_string_view library -// - -#ifndef _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC -#define _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find(const _CharT* __str, size_type __pos, size_type __n) const noexcept - { - __glibcxx_requires_string_len(__str, __n); - - if (__n == 0) - return __pos <= this->_M_len ? __pos : npos; - - if (__n <= this->_M_len) - { - for (; __pos <= this->_M_len - __n; ++__pos) - if (traits_type::eq(this->_M_str[__pos], __str[0]) - && traits_type::compare(this->_M_str + __pos + 1, - __str + 1, __n - 1) == 0) - return __pos; - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find(_CharT __c, size_type __pos) const noexcept - { - size_type __ret = npos; - if (__pos < this->_M_len) - { - const size_type __n = this->_M_len - __pos; - const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); - if (__p) - __ret = __p - this->_M_str; - } - return __ret; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept - { - __glibcxx_requires_string_len(__str, __n); - - if (__n <= this->_M_len) - { - __pos = std::min(size_type(this->_M_len - __n), __pos); - do - { - if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) - return __pos; - } - while (__pos-- > 0); - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - rfind(_CharT __c, size_type __pos) const noexcept - { - size_type __size = this->_M_len; - if (__size > 0) - { - if (--__size > __pos) - __size = __pos; - for (++__size; __size-- > 0; ) - if (traits_type::eq(this->_M_str[__size], __c)) - return __size; - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_first_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - for (; __n && __pos < this->_M_len; ++__pos) - { - const _CharT* __p = traits_type::find(__str, __n, - this->_M_str[__pos]); - if (__p) - return __pos; - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_last_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - size_type __size = this->size(); - if (__size && __n) - { - if (--__size > __pos) - __size = __pos; - do - { - if (traits_type::find(__str, __n, this->_M_str[__size])) - return __size; - } - while (__size-- != 0); - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - for (; __pos < this->_M_len; ++__pos) - if (!traits_type::find(__str, __n, this->_M_str[__pos])) - return __pos; - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_first_not_of(_CharT __c, size_type __pos) const noexcept - { - for (; __pos < this->_M_len; ++__pos) - if (!traits_type::eq(this->_M_str[__pos], __c)) - return __pos; - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const - { - __glibcxx_requires_string_len(__str, __n); - size_type __size = this->_M_len; - if (__size) - { - if (--__size > __pos) - __size = __pos; - do - { - if (!traits_type::find(__str, __n, this->_M_str[__size])) - return __size; - } - while (__size--); - } - return npos; - } - - template - constexpr typename basic_string_view<_CharT, _Traits>::size_type - basic_string_view<_CharT, _Traits>:: - find_last_not_of(_CharT __c, size_type __pos) const noexcept - { - size_type __size = this->_M_len; - if (__size) - { - if (--__size > __pos) - __size = __pos; - do - { - if (!traits_type::eq(this->_M_str[__size], __c)) - return __size; - } - while (__size--); - } - return npos; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/chrono b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/chrono deleted file mode 100644 index 4247c9df7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/chrono +++ /dev/null @@ -1,65 +0,0 @@ -// Variable Templates For chrono -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/chrono - * This is a TS C++ Library header. - */ - -// -// N3932 Variable Templates For Type Traits (Revision 1) -// - -#ifndef _GLIBCXX_EXPERIMENTAL_CHRONO -#define _GLIBCXX_EXPERIMENTAL_CHRONO 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace chrono { -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION -// See C++14 §20.12.4, customization traits -template - constexpr bool treat_as_floating_point_v = - treat_as_floating_point<_Rep>::value; -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace chrono -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_CHRONO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/deque deleted file mode 100644 index c92476f91..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/deque +++ /dev/null @@ -1,83 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/deque - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_DEQUE -#define _GLIBCXX_EXPERIMENTAL_DEQUE 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - void - erase_if(deque<_Tp, _Alloc>& __cont, _Predicate __pred) - { - __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), - __cont.end()); - } - - template - void - erase(deque<_Tp, _Alloc>& __cont, const _Up& __value) - { - __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), - __cont.end()); - } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - using deque = std::deque<_Tp, polymorphic_allocator<_Tp>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_DEQUE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/forward_list deleted file mode 100644 index 1c835aca0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/forward_list +++ /dev/null @@ -1,79 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/forward_list - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_FORWARD_LIST -#define _GLIBCXX_EXPERIMENTAL_FORWARD_LIST 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(forward_list<_Tp, _Alloc>& __cont, _Predicate __pred) - { __cont.remove_if(__pred); } - - template - inline void - erase(forward_list<_Tp, _Alloc>& __cont, const _Up& __value) - { - using __elem_type = typename forward_list<_Tp, _Alloc>::value_type; - erase_if(__cont, [&](__elem_type& __elem) { return __elem == __value; }); - } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - using forward_list = std::forward_list<_Tp, polymorphic_allocator<_Tp>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_FORWARD_LIST diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/functional deleted file mode 100644 index 4639e6f6c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/functional +++ /dev/null @@ -1,397 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/functional - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_FUNCTIONAL -#define _GLIBCXX_EXPERIMENTAL_FUNCTIONAL 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include -#include -#include -#include -#include -#ifdef _GLIBCXX_PARALLEL -# include // For std::__parallel::search -#endif -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // See C++14 §20.9.9, Function object binders - - /// Variable template for std::is_bind_expression - template - constexpr bool is_bind_expression_v = std::is_bind_expression<_Tp>::value; - - /// Variable template for std::is_placeholder - template - constexpr int is_placeholder_v = std::is_placeholder<_Tp>::value; - -#define __cpp_lib_experimental_boyer_moore_searching 201411 - - // Searchers - - template> - class default_searcher - { - public: - default_searcher(_ForwardIterator1 __pat_first, - _ForwardIterator1 __pat_last, - _BinaryPredicate __pred = _BinaryPredicate()) - : _M_m(__pat_first, __pat_last, std::move(__pred)) - { } - - template - _ForwardIterator2 - operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const - { - return std::search(__first, __last, - std::get<0>(_M_m), std::get<1>(_M_m), - std::get<2>(_M_m)); - } - - private: - std::tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; - }; - - template - struct __boyer_moore_map_base - { - template - __boyer_moore_map_base(_RAIter __pat, size_t __patlen, - _Hash&& __hf, _Pred&& __pred) - : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } - { - if (__patlen > 0) - for (__diff_type __i = 0; __i < __patlen - 1; ++__i) - _M_bad_char[__pat[__i]] = __patlen - 1 - __i; - } - - using __diff_type = _Tp; - - __diff_type - _M_lookup(_Key __key, __diff_type __not_found) const - { - auto __iter = _M_bad_char.find(__key); - if (__iter == _M_bad_char.end()) - return __not_found; - return __iter->second; - } - - _Pred - _M_pred() const { return _M_bad_char.key_eq(); } - - _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; - }; - - template - struct __boyer_moore_array_base - { - template - __boyer_moore_array_base(_RAIter __pat, size_t __patlen, - _Unused&&, _Pred&& __pred) - : _M_bad_char{ _GLIBCXX_STD_C::array<_Tp, _Len>{}, std::move(__pred) } - { - std::get<0>(_M_bad_char).fill(__patlen); - if (__patlen > 0) - for (__diff_type __i = 0; __i < __patlen - 1; ++__i) - { - auto __ch = __pat[__i]; - using _UCh = std::make_unsigned_t; - auto __uch = static_cast<_UCh>(__ch); - std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; - } - } - - using __diff_type = _Tp; - - template - __diff_type - _M_lookup(_Key __key, __diff_type __not_found) const - { - auto __ukey = static_cast>(__key); - if (__ukey >= _Len) - return __not_found; - return std::get<0>(_M_bad_char)[__ukey]; - } - - const _Pred& - _M_pred() const { return std::get<1>(_M_bad_char); } - - std::tuple<_GLIBCXX_STD_C::array<_Tp, _Len>, _Pred> _M_bad_char; - }; - - template - struct __is_std_equal_to : std::false_type { }; - - template<> - struct __is_std_equal_to> : std::true_type { }; - - // Use __boyer_moore_array_base when pattern consists of narrow characters - // and uses std::equal_to as the predicate. - template::value_type, - typename _Diff = typename iterator_traits<_RAIter>::difference_type> - using __boyer_moore_base_t - = std::conditional_t::value - && __is_std_equal_to<_Pred>::value, - __boyer_moore_array_base<_Diff, 256, _Pred>, - __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; - - template::value_type>, - typename _BinaryPredicate = std::equal_to<>> - class boyer_moore_searcher - : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> - { - using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; - using typename _Base::__diff_type; - - public: - boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, - _Hash __hf = _Hash(), - _BinaryPredicate __pred = _BinaryPredicate()); - - template - _RandomAccessIterator2 - operator()(_RandomAccessIterator2 __first, - _RandomAccessIterator2 __last) const; - - private: - bool - _M_is_prefix(_RAIter __word, __diff_type __len, - __diff_type __pos) - { - const auto& __pred = this->_M_pred(); - __diff_type __suffixlen = __len - __pos; - for (__diff_type __i = 0; __i < __suffixlen; ++__i) - if (!__pred(__word[__i], __word[__pos + __i])) - return false; - return true; - } - - __diff_type - _M_suffix_length(_RAIter __word, __diff_type __len, - __diff_type __pos) - { - const auto& __pred = this->_M_pred(); - __diff_type __i = 0; - while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) - && __i < __pos) - { - ++__i; - } - return __i; - } - - template - __diff_type - _M_bad_char_shift(_Tp __c) const - { return this->_M_lookup(__c, _M_pat_end - _M_pat); } - - _RAIter _M_pat; - _RAIter _M_pat_end; - _GLIBCXX_STD_C::vector<__diff_type> _M_good_suffix; - }; - - template::value_type>, - typename _BinaryPredicate = std::equal_to<>> - class boyer_moore_horspool_searcher - : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> - { - using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; - using typename _Base::__diff_type; - - public: - boyer_moore_horspool_searcher(_RAIter __pat, - _RAIter __pat_end, - _Hash __hf = _Hash(), - _BinaryPredicate __pred - = _BinaryPredicate()) - : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), - _M_pat(__pat), _M_pat_end(__pat_end) - { } - - template - _RandomAccessIterator2 - operator()(_RandomAccessIterator2 __first, - _RandomAccessIterator2 __last) const - { - const auto& __pred = this->_M_pred(); - auto __patlen = _M_pat_end - _M_pat; - if (__patlen == 0) - return __first; - auto __len = __last - __first; - while (__len >= __patlen) - { - for (auto __scan = __patlen - 1; - __pred(__first[__scan], _M_pat[__scan]); --__scan) - if (__scan == 0) - return __first; - auto __shift = _M_bad_char_shift(__first[__patlen - 1]); - __len -= __shift; - __first += __shift; - } - return __last; - } - - private: - template - __diff_type - _M_bad_char_shift(_Tp __c) const - { return this->_M_lookup(__c, _M_pat_end - _M_pat); } - - _RAIter _M_pat; - _RAIter _M_pat_end; - }; - - /// Generator function for default_searcher - template> - inline default_searcher<_ForwardIterator, _BinaryPredicate> - make_default_searcher(_ForwardIterator __pat_first, - _ForwardIterator __pat_last, - _BinaryPredicate __pred = _BinaryPredicate()) - { return { __pat_first, __pat_last, __pred }; } - - /// Generator function for boyer_moore_searcher - template::value_type>, - typename _BinaryPredicate = equal_to<>> - inline boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate> - make_boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, - _Hash __hf = _Hash(), - _BinaryPredicate __pred = _BinaryPredicate()) - { return { __pat_first, __pat_last, std::move(__hf), std::move(__pred) }; } - - /// Generator function for boyer_moore_horspool_searcher - template::value_type>, - typename _BinaryPredicate = equal_to<>> - inline boyer_moore_horspool_searcher<_RAIter, _Hash, _BinaryPredicate> - make_boyer_moore_horspool_searcher(_RAIter __pat_first, _RAIter __pat_last, - _Hash __hf = _Hash(), - _BinaryPredicate __pred - = _BinaryPredicate()) - { return { __pat_first, __pat_last, std::move(__hf), std::move(__pred) }; } - - template - boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: - boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, - _Hash __hf, _BinaryPredicate __pred) - : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), - _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) - { - auto __patlen = __pat_end - __pat; - if (__patlen == 0) - return; - __diff_type __last_prefix = __patlen - 1; - for (__diff_type __p = __patlen - 1; __p >= 0; --__p) - { - if (_M_is_prefix(__pat, __patlen, __p + 1)) - __last_prefix = __p + 1; - _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); - } - for (__diff_type __p = 0; __p < __patlen - 1; ++__p) - { - auto __slen = _M_suffix_length(__pat, __patlen, __p); - auto __pos = __patlen - 1 - __slen; - if (!__pred(__pat[__p - __slen], __pat[__pos])) - _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; - } - } - - template - template - _RandomAccessIterator2 - boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: - operator()(_RandomAccessIterator2 __first, - _RandomAccessIterator2 __last) const - { - auto __patlen = _M_pat_end - _M_pat; - if (__patlen == 0) - return __first; - const auto& __pred = this->_M_pred(); - __diff_type __i = __patlen - 1; - auto __stringlen = __last - __first; - while (__i < __stringlen) - { - __diff_type __j = __patlen - 1; - while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) - { - --__i; - --__j; - } - if (__j < 0) - return __first + __i + 1; - __i += std::max(_M_bad_char_shift(__first[__i]), - _M_good_suffix[__j]); - } - return __last; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 - -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_not_fn 201406 - - /// [func.not_fn] Function template not_fn - template - inline auto - not_fn(_Fn&& __fn) - noexcept(std::is_nothrow_constructible, _Fn&&>::value) - { - return std::_Not_fn>{std::forward<_Fn>(__fn), 0}; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_FUNCTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/iterator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/iterator deleted file mode 100644 index 8a8395da7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/iterator +++ /dev/null @@ -1,116 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/iterator - * This is a TS C++ Library header. - */ - -// -// N4336 Working Draft, C++ Extensions for Library Fundamentals, Version 2 -// - -#ifndef _GLIBCXX_EXPERIMENTAL_ITERATOR -#define _GLIBCXX_EXPERIMENTAL_ITERATOR 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_ostream_joiner 201411 - - /// Output iterator that inserts a delimiter between elements. - template> - class ostream_joiner - { - public: - typedef _CharT char_type; - typedef _Traits traits_type; - typedef basic_ostream<_CharT, _Traits> ostream_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - ostream_joiner(ostream_type& __os, const _DelimT& __delimiter) - noexcept(is_nothrow_copy_constructible_v<_DelimT>) - : _M_out(std::__addressof(__os)), _M_delim(__delimiter) - { } - - ostream_joiner(ostream_type& __os, _DelimT&& __delimiter) - noexcept(is_nothrow_move_constructible_v<_DelimT>) - : _M_out(std::__addressof(__os)), _M_delim(std::move(__delimiter)) - { } - - template - ostream_joiner& - operator=(const _Tp& __value) - { - if (!_M_first) - *_M_out << _M_delim; - _M_first = false; - *_M_out << __value; - return *this; - } - - ostream_joiner& operator*() noexcept { return *this; } - ostream_joiner& operator++() noexcept { return *this; } - ostream_joiner& operator++(int) noexcept { return *this; } - - private: - ostream_type* _M_out; - _DelimT _M_delim; - bool _M_first = true; - }; - - /// Object generator for ostream_joiner. - template - inline ostream_joiner, _CharT, _Traits> - make_ostream_joiner(basic_ostream<_CharT, _Traits>& __os, - _DelimT&& __delimiter) - { return { __os, std::forward<_DelimT>(__delimiter) }; } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_ITERATOR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/list deleted file mode 100644 index 9409431c4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/list +++ /dev/null @@ -1,79 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/list - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_LIST -#define _GLIBCXX_EXPERIMENTAL_LIST 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(list<_Tp, _Alloc>& __cont, _Predicate __pred) - { __cont.remove_if(__pred); } - - template - inline void - erase(list<_Tp, _Alloc>& __cont, const _Up& __value) - { - using __elem_type = typename list<_Tp, _Alloc>::value_type; - erase_if(__cont, [&](__elem_type& __elem) { return __elem == __value; }); - } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - using list = std::list<_Tp, polymorphic_allocator<_Tp>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_LIST diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/map deleted file mode 100644 index 2bbc1bd5a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/map +++ /dev/null @@ -1,86 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/map - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_MAP -#define _GLIBCXX_EXPERIMENTAL_MAP 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(map<_Key, _Tp, _Compare, _Alloc>& __cont, _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - - template - inline void - erase_if(multimap<_Key, _Tp, _Compare, _Alloc>& __cont, _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template> - using map - = std::map<_Key, _Tp, _Compare, - polymorphic_allocator>>; - - template> - using multimap - = std::multimap<_Key, _Tp, _Compare, - polymorphic_allocator>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/memory deleted file mode 100644 index 7467674db..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/memory +++ /dev/null @@ -1,257 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/memory - * This is a TS C++ Library header. - */ - -// -// N4336 Working Draft, C++ Extensions for Library Fundamentals, Version 2 -// - -#ifndef _GLIBCXX_EXPERIMENTAL_MEMORY -#define _GLIBCXX_EXPERIMENTAL_MEMORY 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_observer_ptr 201411 - - template - class observer_ptr - { - public: - // publish our template parameter and variations thereof - using element_type = _Tp; - using __pointer = add_pointer_t<_Tp>; // exposition-only - using __reference = add_lvalue_reference_t<_Tp>; // exposition-only - - // 3.2.2, observer_ptr constructors - // default c’tor - constexpr observer_ptr() noexcept - : __t() - { } - - // pointer-accepting c’tors - constexpr observer_ptr(nullptr_t) noexcept - : __t() - { } - - constexpr explicit observer_ptr(__pointer __p) noexcept - : __t(__p) - { } - - // copying c’tors (in addition to compiler-generated copy c’tor) - template ::type, __pointer - >::value - >::type> - constexpr observer_ptr(observer_ptr<_Up> __p) noexcept - : __t(__p.get()) - { - } - - // 3.2.3, observer_ptr observers - constexpr __pointer - get() const noexcept - { - return __t; - } - - constexpr __reference - operator*() const - { - return *get(); - } - - constexpr __pointer - operator->() const noexcept - { - return get(); - } - - constexpr explicit operator bool() const noexcept - { - return get() != nullptr; - } - - // 3.2.4, observer_ptr conversions - constexpr explicit operator __pointer() const noexcept - { - return get(); - } - - // 3.2.5, observer_ptr modifiers - constexpr __pointer - release() noexcept - { - __pointer __tmp = get(); - reset(); - return __tmp; - } - - constexpr void - reset(__pointer __p = nullptr) noexcept - { - __t = __p; - } - - constexpr void - swap(observer_ptr& __p) noexcept - { - std::swap(__t, __p.__t); - } - - private: - __pointer __t; - }; // observer_ptr<> - - template - void - swap(observer_ptr<_Tp>& __p1, observer_ptr<_Tp>& __p2) noexcept - { - __p1.swap(__p2); - } - - template - observer_ptr<_Tp> - make_observer(_Tp* __p) noexcept - { - return observer_ptr<_Tp>(__p); - } - - template - bool - operator==(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) - { - return __p1.get() == __p2.get(); - } - - template - bool - operator!=(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) - { - return !(__p1 == __p2); - } - - template - bool - operator==(observer_ptr<_Tp> __p, nullptr_t) noexcept - { - return !__p; - } - - template - bool - operator==(nullptr_t, observer_ptr<_Tp> __p) noexcept - { - return !__p; - } - - template - bool - operator!=(observer_ptr<_Tp> __p, nullptr_t) noexcept - { - return bool(__p); - } - - template - bool - operator!=(nullptr_t, observer_ptr<_Tp> __p) noexcept - { - return bool(__p); - } - - template - bool - operator<(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) - { - return std::less::type, - typename add_pointer<_Up>::type - >::type - >{}(__p1.get(), __p2.get()); - } - - template - bool - operator>(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) - { - return __p2 < __p1; - } - - template - bool - operator<=(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) - { - return !(__p2 < __p1); - } - - template - bool - operator>=(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) - { - return !(__p1 < __p2); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental - -template - struct hash> - { - using result_type = size_t; - using argument_type = experimental::observer_ptr<_Tp>; - - size_t - operator()(const experimental::observer_ptr<_Tp>& __t) const - noexcept(noexcept(hash::type> {}(__t.get()))) - { - return hash::type> {}(__t.get()); - } - }; - -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_MEMORY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/numeric deleted file mode 100644 index b7b820706..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/numeric +++ /dev/null @@ -1,86 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/numeric - * This is a TS C++ Library header. - */ - -// -// N4336 Working Draft, C++ Extensions for Library Fundamentals, Version 2 -// - -#ifndef _GLIBCXX_EXPERIMENTAL_NUMERIC -#define _GLIBCXX_EXPERIMENTAL_NUMERIC 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_gcd_lcm 201411 - - /// Greatest common divisor - template - constexpr common_type_t<_Mn, _Nn> - gcd(_Mn __m, _Nn __n) - { - static_assert(is_integral<_Mn>::value, "gcd arguments are integers"); - static_assert(is_integral<_Nn>::value, "gcd arguments are integers"); - static_assert(!is_same<_Mn, bool>::value, "gcd arguments are not bools"); - static_assert(!is_same<_Nn, bool>::value, "gcd arguments are not bools"); - return std::__detail::__gcd(__m, __n); - } - - /// Least common multiple - template - constexpr common_type_t<_Mn, _Nn> - lcm(_Mn __m, _Nn __n) - { - static_assert(is_integral<_Mn>::value, "lcm arguments are integers"); - static_assert(is_integral<_Nn>::value, "lcm arguments are integers"); - static_assert(!is_same<_Mn, bool>::value, "lcm arguments are not bools"); - static_assert(!is_same<_Nn, bool>::value, "lcm arguments are not bools"); - return std::__detail::__lcm(__m, __n); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_NUMERIC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/optional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/optional deleted file mode 100644 index 197a1fc76..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/optional +++ /dev/null @@ -1,1008 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/optional - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_OPTIONAL -#define _GLIBCXX_EXPERIMENTAL_OPTIONAL 1 - -/** - * @defgroup experimental Experimental - * - * Components specified by various Technical Specifications. - * - * As indicated by the std::experimental namespace and the header paths, - * the contents of these Technical Specifications are experimental and not - * part of the C++ standard. As such the interfaces and implementations may - * change in the future, and there is no guarantee of compatibility - * between different GCC releases for these features. - */ - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup optional Optional values - * @ingroup experimental - * - * Class template for optional values and surrounding facilities, as - * described in n3793 "A proposal to add a utility class to represent - * optional objects (Revision 5)". - * - * @{ - */ - -#define __cpp_lib_experimental_optional 201411 - - // All subsequent [X.Y.n] references are against n3793. - - // [X.Y.4] - template - class optional; - - // [X.Y.5] - /// Tag type for in-place construction. - struct in_place_t { }; - - /// Tag for in-place construction. - constexpr in_place_t in_place { }; - - // [X.Y.6] - /// Tag type to disengage optional objects. - struct nullopt_t - { - // Do not user-declare default constructor at all for - // optional_value = {} syntax to work. - // nullopt_t() = delete; - - // Used for constructing nullopt. - enum class _Construct { _Token }; - - // Must be constexpr for nullopt_t to be literal. - explicit constexpr nullopt_t(_Construct) { } - }; - - // [X.Y.6] - /// Tag to disengage optional objects. - constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; - - // [X.Y.7] - /** - * @brief Exception class thrown when a disengaged optional object is - * dereferenced. - * @ingroup exceptions - */ - class bad_optional_access : public logic_error - { - public: - bad_optional_access() : logic_error("bad optional access") { } - - // XXX This constructor is non-standard. Should not be inline - explicit bad_optional_access(const char* __arg) : logic_error(__arg) { } - - virtual ~bad_optional_access() noexcept = default; - }; - - void - __throw_bad_optional_access(const char*) - __attribute__((__noreturn__)); - - // XXX Does not belong here. - inline void - __throw_bad_optional_access(const char* __s) - { _GLIBCXX_THROW_OR_ABORT(bad_optional_access(__s)); } - -#ifndef __cpp_lib_addressof_constexpr - template - struct _Has_addressof_mem : std::false_type { }; - - template - struct _Has_addressof_mem<_Tp, - __void_t().operator&() )> - > - : std::true_type { }; - - template - struct _Has_addressof_free : std::false_type { }; - - template - struct _Has_addressof_free<_Tp, - __void_t()) )> - > - : std::true_type { }; - - /** - * @brief Trait that detects the presence of an overloaded unary operator&. - * - * Practically speaking this detects the presence of such an operator when - * called on a const-qualified lvalue (e.g. - * declval().operator&()). - */ - template - struct _Has_addressof - : std::__or_<_Has_addressof_mem<_Tp>, _Has_addressof_free<_Tp>>::type - { }; - - /** - * @brief An overload that attempts to take the address of an lvalue as a - * constant expression. Falls back to __addressof in the presence of an - * overloaded addressof operator (unary operator&), in which case the call - * will not be a constant expression. - */ - template - constexpr - enable_if_t::value, _Tp*> - __constexpr_addressof(_Tp& __t) - { return &__t; } - - /** - * @brief Fallback overload that defers to __addressof. - */ - template - inline - enable_if_t<_Has_addressof<_Tp>::value, _Tp*> - __constexpr_addressof(_Tp& __t) - { return std::__addressof(__t); } -#endif // __cpp_lib_addressof_constexpr - - /** - * @brief Class template that holds the necessary state for @ref optional - * and that has the responsibility for construction and the special members. - * - * Such a separate base class template is necessary in order to - * conditionally enable the special members (e.g. copy/move constructors). - * Note that this means that @ref _Optional_base implements the - * functionality for copy and move assignment, but not for converting - * assignment. - * - * @see optional, _Enable_special_members - */ - template::value> - class _Optional_base - { - private: - // Remove const to avoid prohibition of reusing object storage for - // const-qualified types in [3.8/9]. This is strictly internal - // and even optional itself is oblivious to it. - using _Stored_type = remove_const_t<_Tp>; - - public: - // [X.Y.4.1] Constructors. - - // Constructors for disengaged optionals. - constexpr _Optional_base() noexcept - : _M_empty{} { } - - constexpr _Optional_base(nullopt_t) noexcept - : _Optional_base{} { } - - // Constructors for engaged optionals. - template - constexpr explicit _Optional_base(in_place_t, _Args&&... __args) - : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) { } - - template&, - _Args&&...>::value, - int>...> - constexpr explicit _Optional_base(in_place_t, - initializer_list<_Up> __il, - _Args&&... __args) - : _M_payload(__il, std::forward<_Args>(__args)...), - _M_engaged(true) { } - - // Copy and move constructors. - _Optional_base(const _Optional_base& __other) - { - if (__other._M_engaged) - this->_M_construct(__other._M_get()); - } - - _Optional_base(_Optional_base&& __other) - noexcept(is_nothrow_move_constructible<_Tp>()) - { - if (__other._M_engaged) - this->_M_construct(std::move(__other._M_get())); - } - - // [X.Y.4.3] (partly) Assignment. - _Optional_base& - operator=(const _Optional_base& __other) - { - if (this->_M_engaged && __other._M_engaged) - this->_M_get() = __other._M_get(); - else - { - if (__other._M_engaged) - this->_M_construct(__other._M_get()); - else - this->_M_reset(); - } - - return *this; - } - - _Optional_base& - operator=(_Optional_base&& __other) - noexcept(__and_, - is_nothrow_move_assignable<_Tp>>()) - { - if (this->_M_engaged && __other._M_engaged) - this->_M_get() = std::move(__other._M_get()); - else - { - if (__other._M_engaged) - this->_M_construct(std::move(__other._M_get())); - else - this->_M_reset(); - } - return *this; - } - - // [X.Y.4.2] Destructor. - ~_Optional_base() - { - if (this->_M_engaged) - this->_M_payload.~_Stored_type(); - } - - // The following functionality is also needed by optional, hence the - // protected accessibility. - protected: - constexpr bool _M_is_engaged() const noexcept - { return this->_M_engaged; } - - // The _M_get operations have _M_engaged as a precondition. - constexpr _Tp& - _M_get() noexcept - { return _M_payload; } - - constexpr const _Tp& - _M_get() const noexcept - { return _M_payload; } - - // The _M_construct operation has !_M_engaged as a precondition - // while _M_destruct has _M_engaged as a precondition. - template - void - _M_construct(_Args&&... __args) - noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) - { - ::new (std::__addressof(this->_M_payload)) - _Stored_type(std::forward<_Args>(__args)...); - this->_M_engaged = true; - } - - void - _M_destruct() - { - this->_M_engaged = false; - this->_M_payload.~_Stored_type(); - } - - // _M_reset is a 'safe' operation with no precondition. - void - _M_reset() - { - if (this->_M_engaged) - this->_M_destruct(); - } - - private: - struct _Empty_byte { }; - union { - _Empty_byte _M_empty; - _Stored_type _M_payload; - }; - bool _M_engaged = false; - }; - - /// Partial specialization that is exactly identical to the primary template - /// save for not providing a destructor, to fulfill triviality requirements. - template - class _Optional_base<_Tp, false> - { - private: - using _Stored_type = remove_const_t<_Tp>; - - public: - constexpr _Optional_base() noexcept - : _M_empty{} { } - - constexpr _Optional_base(nullopt_t) noexcept - : _Optional_base{} { } - - template - constexpr explicit _Optional_base(in_place_t, _Args&&... __args) - : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) { } - - template&, - _Args&&...>::value, - int>...> - constexpr explicit _Optional_base(in_place_t, - initializer_list<_Up> __il, - _Args&&... __args) - : _M_payload(__il, std::forward<_Args>(__args)...), - _M_engaged(true) { } - - _Optional_base(const _Optional_base& __other) - { - if (__other._M_engaged) - this->_M_construct(__other._M_get()); - } - - _Optional_base(_Optional_base&& __other) - noexcept(is_nothrow_move_constructible<_Tp>()) - { - if (__other._M_engaged) - this->_M_construct(std::move(__other._M_get())); - } - - _Optional_base& - operator=(const _Optional_base& __other) - { - if (this->_M_engaged && __other._M_engaged) - this->_M_get() = __other._M_get(); - else - { - if (__other._M_engaged) - this->_M_construct(__other._M_get()); - else - this->_M_reset(); - } - return *this; - } - - _Optional_base& - operator=(_Optional_base&& __other) - noexcept(__and_, - is_nothrow_move_assignable<_Tp>>()) - { - if (this->_M_engaged && __other._M_engaged) - this->_M_get() = std::move(__other._M_get()); - else - { - if (__other._M_engaged) - this->_M_construct(std::move(__other._M_get())); - else - this->_M_reset(); - } - return *this; - } - - // Sole difference - // ~_Optional_base() noexcept = default; - - protected: - constexpr bool _M_is_engaged() const noexcept - { return this->_M_engaged; } - - _Tp& - _M_get() noexcept - { return _M_payload; } - - constexpr const _Tp& - _M_get() const noexcept - { return _M_payload; } - - template - void - _M_construct(_Args&&... __args) - noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) - { - ::new (std::__addressof(this->_M_payload)) - _Stored_type(std::forward<_Args>(__args)...); - this->_M_engaged = true; - } - - void - _M_destruct() - { - this->_M_engaged = false; - this->_M_payload.~_Stored_type(); - } - - void - _M_reset() - { - if (this->_M_engaged) - this->_M_destruct(); - } - - private: - struct _Empty_byte { }; - union - { - _Empty_byte _M_empty; - _Stored_type _M_payload; - }; - bool _M_engaged = false; - }; - - template - class optional; - - template - using __converts_from_optional = - __or_&>, - is_constructible<_Tp, optional<_Up>&>, - is_constructible<_Tp, const optional<_Up>&&>, - is_constructible<_Tp, optional<_Up>&&>, - is_convertible&, _Tp>, - is_convertible&, _Tp>, - is_convertible&&, _Tp>, - is_convertible&&, _Tp>>; - - template - using __assigns_from_optional = - __or_&>, - is_assignable<_Tp&, optional<_Up>&>, - is_assignable<_Tp&, const optional<_Up>&&>, - is_assignable<_Tp&, optional<_Up>&&>>; - - /** - * @brief Class template for optional values. - */ - template - class optional - : private _Optional_base<_Tp>, - private _Enable_copy_move< - // Copy constructor. - is_copy_constructible<_Tp>::value, - // Copy assignment. - __and_, is_copy_assignable<_Tp>>::value, - // Move constructor. - is_move_constructible<_Tp>::value, - // Move assignment. - __and_, is_move_assignable<_Tp>>::value, - // Unique tag type. - optional<_Tp>> - { - static_assert(__and_<__not_, nullopt_t>>, - __not_, in_place_t>>, - __not_>>(), - "Invalid instantiation of optional"); - - private: - using _Base = _Optional_base<_Tp>; - - public: - using value_type = _Tp; - - // _Optional_base has the responsibility for construction. - using _Base::_Base; - - constexpr optional() = default; - // Converting constructors for engaged optionals. - template , decay_t<_Up>>>, - is_constructible<_Tp, _Up&&>, - is_convertible<_Up&&, _Tp> - >::value, bool> = true> - constexpr optional(_Up&& __t) - : _Base(in_place, std::forward<_Up>(__t)) { } - - template , decay_t<_Up>>>, - is_constructible<_Tp, _Up&&>, - __not_> - >::value, bool> = false> - explicit constexpr optional(_Up&& __t) - : _Base(in_place, std::forward<_Up>(__t)) { } - - template >, - is_constructible<_Tp, const _Up&>, - is_convertible, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = true> - constexpr optional(const optional<_Up>& __t) - { - if (__t) - emplace(*__t); - } - - template >, - is_constructible<_Tp, const _Up&>, - __not_>, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = false> - explicit constexpr optional(const optional<_Up>& __t) - { - if (__t) - emplace(*__t); - } - - template >, - is_constructible<_Tp, _Up&&>, - is_convertible<_Up&&, _Tp>, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = true> - constexpr optional(optional<_Up>&& __t) - { - if (__t) - emplace(std::move(*__t)); - } - - template >, - is_constructible<_Tp, _Up&&>, - __not_>, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = false> - explicit constexpr optional(optional<_Up>&& __t) - { - if (__t) - emplace(std::move(*__t)); - } - - // [X.Y.4.3] (partly) Assignment. - optional& - operator=(nullopt_t) noexcept - { - this->_M_reset(); - return *this; - } - - template - enable_if_t<__and_< - __not_, decay_t<_Up>>>, - is_constructible<_Tp, _Up>, - __not_<__and_, - is_same<_Tp, decay_t<_Up>>>>, - is_assignable<_Tp&, _Up>>::value, - optional&> - operator=(_Up&& __u) - { - if (this->_M_is_engaged()) - this->_M_get() = std::forward<_Up>(__u); - else - this->_M_construct(std::forward<_Up>(__u)); - - return *this; - } - - template - enable_if_t<__and_< - __not_>, - is_constructible<_Tp, const _Up&>, - is_assignable<_Tp&, _Up>, - __not_<__converts_from_optional<_Tp, _Up>>, - __not_<__assigns_from_optional<_Tp, _Up>> - >::value, - optional&> - operator=(const optional<_Up>& __u) - { - if (__u) - { - if (this->_M_is_engaged()) - this->_M_get() = *__u; - else - this->_M_construct(*__u); - } - else - { - this->_M_reset(); - } - return *this; - } - - template - enable_if_t<__and_< - __not_>, - is_constructible<_Tp, _Up>, - is_assignable<_Tp&, _Up>, - __not_<__converts_from_optional<_Tp, _Up>>, - __not_<__assigns_from_optional<_Tp, _Up>> - >::value, - optional&> - operator=(optional<_Up>&& __u) - { - if (__u) - { - if (this->_M_is_engaged()) - this->_M_get() = std::move(*__u); - else - this->_M_construct(std::move(*__u)); - } - else - { - this->_M_reset(); - } - - return *this; - } - - template - enable_if_t::value> - emplace(_Args&&... __args) - { - this->_M_reset(); - this->_M_construct(std::forward<_Args>(__args)...); - } - - template - enable_if_t&, - _Args&&...>::value> - emplace(initializer_list<_Up> __il, _Args&&... __args) - { - this->_M_reset(); - this->_M_construct(__il, std::forward<_Args>(__args)...); - } - - // [X.Y.4.2] Destructor is implicit, implemented in _Optional_base. - - // [X.Y.4.4] Swap. - void - swap(optional& __other) - noexcept(is_nothrow_move_constructible<_Tp>() - && noexcept(swap(declval<_Tp&>(), declval<_Tp&>()))) - { - using std::swap; - - if (this->_M_is_engaged() && __other._M_is_engaged()) - swap(this->_M_get(), __other._M_get()); - else if (this->_M_is_engaged()) - { - __other._M_construct(std::move(this->_M_get())); - this->_M_destruct(); - } - else if (__other._M_is_engaged()) - { - this->_M_construct(std::move(__other._M_get())); - __other._M_destruct(); - } - } - - // [X.Y.4.5] Observers. - constexpr const _Tp* - operator->() const - { -#ifndef __cpp_lib_addressof_constexpr - return __constexpr_addressof(this->_M_get()); -#else - return std::__addressof(this->_M_get()); -#endif - } - - _Tp* - operator->() - { return std::__addressof(this->_M_get()); } - - constexpr const _Tp& - operator*() const& - { return this->_M_get(); } - - constexpr _Tp& - operator*()& - { return this->_M_get(); } - - constexpr _Tp&& - operator*()&& - { return std::move(this->_M_get()); } - - constexpr const _Tp&& - operator*() const&& - { return std::move(this->_M_get()); } - - constexpr explicit operator bool() const noexcept - { return this->_M_is_engaged(); } - - constexpr const _Tp& - value() const& - { - return this->_M_is_engaged() - ? this->_M_get() - : (__throw_bad_optional_access("Attempt to access value of a " - "disengaged optional object"), - this->_M_get()); - } - - constexpr _Tp& - value()& - { - return this->_M_is_engaged() - ? this->_M_get() - : (__throw_bad_optional_access("Attempt to access value of a " - "disengaged optional object"), - this->_M_get()); - } - - constexpr _Tp&& - value()&& - { - return this->_M_is_engaged() - ? std::move(this->_M_get()) - : (__throw_bad_optional_access("Attempt to access value of a " - "disengaged optional object"), - std::move(this->_M_get())); - } - - constexpr const _Tp&& - value() const&& - { - return this->_M_is_engaged() - ? std::move(this->_M_get()) - : (__throw_bad_optional_access("Attempt to access value of a " - "disengaged optional object"), - std::move(this->_M_get())); - } - - template - constexpr _Tp - value_or(_Up&& __u) const& - { - static_assert(__and_, - is_convertible<_Up&&, _Tp>>(), - "Cannot return value"); - - return this->_M_is_engaged() - ? this->_M_get() - : static_cast<_Tp>(std::forward<_Up>(__u)); - } - - template - _Tp - value_or(_Up&& __u) && - { - static_assert(__and_, - is_convertible<_Up&&, _Tp>>(), - "Cannot return value" ); - - return this->_M_is_engaged() - ? std::move(this->_M_get()) - : static_cast<_Tp>(std::forward<_Up>(__u)); - } - }; - - // [X.Y.8] Comparisons between optional values. - template - constexpr bool - operator==(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) - { - return static_cast(__lhs) == static_cast(__rhs) - && (!__lhs || *__lhs == *__rhs); - } - - template - constexpr bool - operator!=(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) - { return !(__lhs == __rhs); } - - template - constexpr bool - operator<(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) - { - return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); - } - - template - constexpr bool - operator>(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) - { return __rhs < __lhs; } - - template - constexpr bool - operator<=(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) - { return !(__rhs < __lhs); } - - template - constexpr bool - operator>=(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) - { return !(__lhs < __rhs); } - - // [X.Y.9] Comparisons with nullopt. - template - constexpr bool - operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return !__lhs; } - - template - constexpr bool - operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return !__rhs; } - - template - constexpr bool - operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return static_cast(__lhs); } - - template - constexpr bool - operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return static_cast(__rhs); } - - template - constexpr bool - operator<(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept - { return false; } - - template - constexpr bool - operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return static_cast(__rhs); } - - template - constexpr bool - operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return static_cast(__lhs); } - - template - constexpr bool - operator>(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept - { return false; } - - template - constexpr bool - operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return !__lhs; } - - template - constexpr bool - operator<=(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept - { return true; } - - template - constexpr bool - operator>=(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept - { return true; } - - template - constexpr bool - operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return !__rhs; } - - // [X.Y.10] Comparisons with value type. - template - constexpr bool - operator==(const optional<_Tp>& __lhs, const _Tp& __rhs) - { return __lhs && *__lhs == __rhs; } - - template - constexpr bool - operator==(const _Tp& __lhs, const optional<_Tp>& __rhs) - { return __rhs && __lhs == *__rhs; } - - template - constexpr bool - operator!=(const optional<_Tp>& __lhs, _Tp const& __rhs) - { return !__lhs || !(*__lhs == __rhs); } - - template - constexpr bool - operator!=(const _Tp& __lhs, const optional<_Tp>& __rhs) - { return !__rhs || !(__lhs == *__rhs); } - - template - constexpr bool - operator<(const optional<_Tp>& __lhs, const _Tp& __rhs) - { return !__lhs || *__lhs < __rhs; } - - template - constexpr bool - operator<(const _Tp& __lhs, const optional<_Tp>& __rhs) - { return __rhs && __lhs < *__rhs; } - - template - constexpr bool - operator>(const optional<_Tp>& __lhs, const _Tp& __rhs) - { return __lhs && __rhs < *__lhs; } - - template - constexpr bool - operator>(const _Tp& __lhs, const optional<_Tp>& __rhs) - { return !__rhs || *__rhs < __lhs; } - - template - constexpr bool - operator<=(const optional<_Tp>& __lhs, const _Tp& __rhs) - { return !__lhs || !(__rhs < *__lhs); } - - template - constexpr bool - operator<=(const _Tp& __lhs, const optional<_Tp>& __rhs) - { return __rhs && !(*__rhs < __lhs); } - - template - constexpr bool - operator>=(const optional<_Tp>& __lhs, const _Tp& __rhs) - { return __lhs && !(*__lhs < __rhs); } - - template - constexpr bool - operator>=(const _Tp& __lhs, const optional<_Tp>& __rhs) - { return !__rhs || !(__lhs < *__rhs); } - - // [X.Y.11] - template - inline void - swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) - noexcept(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - - template - constexpr optional> - make_optional(_Tp&& __t) - { return optional> { std::forward<_Tp>(__t) }; } - - // @} group optional -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} - - // [X.Y.12] - template - struct hash> - { - using result_type = size_t; - using argument_type = experimental::optional<_Tp>; - - size_t - operator()(const experimental::optional<_Tp>& __t) const - noexcept(noexcept(hash<_Tp> {}(*__t))) - { - // We pick an arbitrary hash for disengaged optionals which hopefully - // usual values of _Tp won't typically hash to. - constexpr size_t __magic_disengaged_hash = static_cast(-3333); - return __t ? hash<_Tp> {}(*__t) : __magic_disengaged_hash; - } - }; -} - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_OPTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/random deleted file mode 100644 index e28df5df7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/random +++ /dev/null @@ -1,80 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/random - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_RANDOM -#define _GLIBCXX_EXPERIMENTAL_RANDOM 1 - -#include -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v2 { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_randint 201511 - - inline std::default_random_engine& - _S_randint_engine() - { - static thread_local default_random_engine __eng{random_device{}()}; - return __eng; - } - - // 13.2.2.1, Function template randint - template - inline _IntType - randint(_IntType __a, _IntType __b) - { - static_assert(is_integral<_IntType>::value && sizeof(_IntType) > 1, - "argument must be an integer type"); - using _Dist = std::uniform_int_distribution<_IntType>; - // This relies on the fact our uniform_int_distribution is stateless, - // otherwise we'd need a static thread_local _Dist and pass it - // _Dist::param_type{__a, __b}. - return _Dist(__a, __b)(_S_randint_engine()); - } - - inline void - reseed() - { - _S_randint_engine().seed(random_device{}()); - } - - inline void - reseed(default_random_engine::result_type __value) - { - _S_randint_engine().seed(__value); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/ratio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/ratio deleted file mode 100644 index ffbae76ca..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/ratio +++ /dev/null @@ -1,74 +0,0 @@ -// Variable Templates For ratio -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/ratio - * This is a TS C++ Library header. - */ - -// -// N3932 Variable Templates For Type Traits (Revision 1) -// - -#ifndef _GLIBCXX_EXPERIMENTAL_RATIO -#define _GLIBCXX_EXPERIMENTAL_RATIO 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -// See C++14 §20.11.5, ratio comparison -template - constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; -template - constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; -template - constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; -template - constexpr bool ratio_less_equal_v = ratio_less_equal<_R1, _R2>::value; -template - constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; -template - constexpr bool ratio_greater_equal_v = ratio_greater_equal<_R1, _R2>::value; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_RATIO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/regex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/regex deleted file mode 100644 index 9b5679fc7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/regex +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/regex - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_REGEX -#define _GLIBCXX_EXPERIMENTAL_REGEX 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -namespace pmr -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION -_GLIBCXX_BEGIN_NAMESPACE_CXX11 - - template - using match_results - = std::match_results<_BidirectionalIterator, polymorphic_allocator< - sub_match<_BidirectionalIterator>>>; - - typedef match_results cmatch; - typedef match_results wcmatch; - typedef match_results smatch; - typedef match_results wsmatch; - -_GLIBCXX_END_NAMESPACE_CXX11 -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_REGEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/set deleted file mode 100644 index a10617bb2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/set +++ /dev/null @@ -1,83 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/set - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_SET -#define _GLIBCXX_EXPERIMENTAL_SET 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(set<_Key, _Compare, _Alloc>& __cont, _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - - template - inline void - erase_if(multiset<_Key, _Compare, _Alloc>& __cont, _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template> - using set = std::set<_Key, _Compare, polymorphic_allocator<_Key>>; - - template> - using multiset = std::multiset<_Key, _Compare, - polymorphic_allocator<_Key>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/string b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/string deleted file mode 100644 index 534799195..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/string +++ /dev/null @@ -1,95 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/string - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_STRING -#define _GLIBCXX_EXPERIMENTAL_STRING 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(basic_string<_CharT, _Traits, _Alloc>& __cont, _Predicate __pred) - { - __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), - __cont.end()); - } - - template - inline void - erase(basic_string<_CharT, _Traits, _Alloc>& __cont, const _Up& __value) - { - __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), - __cont.end()); - } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION -_GLIBCXX_BEGIN_NAMESPACE_CXX11 - - // basic_string using polymorphic allocator in namespace pmr - template> - using basic_string = - std::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>; - - // basic_string typedef names using polymorphic allocator in namespace - // std::experimental::pmr - typedef basic_string string; - typedef basic_string u16string; - typedef basic_string u32string; - typedef basic_string wstring; - -_GLIBCXX_END_NAMESPACE_CXX11 -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_STRING diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/string_view b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/string_view deleted file mode 100644 index 2235a51ea..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/string_view +++ /dev/null @@ -1,692 +0,0 @@ -// Components for manipulating non-owning sequences of characters -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/string_view - * This is a TS C++ Library header. - */ - -// -// N3762 basic_string_view library -// - -#ifndef _GLIBCXX_EXPERIMENTAL_STRING_VIEW -#define _GLIBCXX_EXPERIMENTAL_STRING_VIEW 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_string_view 201411 - - /** - * @class basic_string_view - * @brief A non-owning reference to a string. - * - * @ingroup strings - * @ingroup sequences - * @ingroup experimental - * - * @tparam _CharT Type of character - * @tparam _Traits Traits for character type, defaults to - * char_traits<_CharT>. - * - * A basic_string_view looks like this: - * - * @code - * _CharT* _M_str - * size_t _M_len - * @endcode - */ - template> - class basic_string_view - { - public: - - // types - using traits_type = _Traits; - using value_type = _CharT; - using pointer = const _CharT*; - using const_pointer = const _CharT*; - using reference = const _CharT&; - using const_reference = const _CharT&; - using const_iterator = const _CharT*; - using iterator = const_iterator; - using const_reverse_iterator = std::reverse_iterator; - using reverse_iterator = const_reverse_iterator; - using size_type = size_t; - using difference_type = ptrdiff_t; - static constexpr size_type npos = size_type(-1); - - // [string.view.cons], construct/copy - - constexpr - basic_string_view() noexcept - : _M_len{0}, _M_str{nullptr} - { } - - constexpr basic_string_view(const basic_string_view&) noexcept = default; - - template - basic_string_view(const basic_string<_CharT, _Traits, - _Allocator>& __str) noexcept - : _M_len{__str.length()}, _M_str{__str.data()} - { } - - constexpr basic_string_view(const _CharT* __str) - : _M_len{__str == nullptr ? 0 : traits_type::length(__str)}, - _M_str{__str} - { } - - constexpr basic_string_view(const _CharT* __str, size_type __len) - : _M_len{__len}, - _M_str{__str} - { } - - basic_string_view& - operator=(const basic_string_view&) noexcept = default; - - // [string.view.iterators], iterators - - constexpr const_iterator - begin() const noexcept - { return this->_M_str; } - - constexpr const_iterator - end() const noexcept - { return this->_M_str + this->_M_len; } - - constexpr const_iterator - cbegin() const noexcept - { return this->_M_str; } - - constexpr const_iterator - cend() const noexcept - { return this->_M_str + this->_M_len; } - - const_reverse_iterator - rbegin() const noexcept - { return const_reverse_iterator(this->end()); } - - const_reverse_iterator - rend() const noexcept - { return const_reverse_iterator(this->begin()); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(this->end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(this->begin()); } - - // [string.view.capacity], capacity - - constexpr size_type - size() const noexcept - { return this->_M_len; } - - constexpr size_type - length() const noexcept - { return _M_len; } - - constexpr size_type - max_size() const noexcept - { - return (npos - sizeof(size_type) - sizeof(void*)) - / sizeof(value_type) / 4; - } - - constexpr bool - empty() const noexcept - { return this->_M_len == 0; } - - // [string.view.access], element access - - constexpr const _CharT& - operator[](size_type __pos) const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(__pos < this->_M_len); - return *(this->_M_str + __pos); - } - - constexpr const _CharT& - at(size_type __pos) const - { - return __pos < this->_M_len - ? *(this->_M_str + __pos) - : (__throw_out_of_range_fmt(__N("basic_string_view::at: __pos " - "(which is %zu) >= this->size() " - "(which is %zu)"), - __pos, this->size()), - *this->_M_str); - } - - constexpr const _CharT& - front() const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(this->_M_len > 0); - return *this->_M_str; - } - - constexpr const _CharT& - back() const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(this->_M_len > 0); - return *(this->_M_str + this->_M_len - 1); - } - - constexpr const _CharT* - data() const noexcept - { return this->_M_str; } - - // [string.view.modifiers], modifiers: - - constexpr void - remove_prefix(size_type __n) - { - __glibcxx_assert(this->_M_len >= __n); - this->_M_str += __n; - this->_M_len -= __n; - } - - constexpr void - remove_suffix(size_type __n) - { this->_M_len -= __n; } - - constexpr void - swap(basic_string_view& __sv) noexcept - { - auto __tmp = *this; - *this = __sv; - __sv = __tmp; - } - - - // [string.view.ops], string operations: - - template - explicit operator basic_string<_CharT, _Traits, _Allocator>() const - { - return { this->_M_str, this->_M_len }; - } - - template> - basic_string<_CharT, _Traits, _Allocator> - to_string(const _Allocator& __alloc = _Allocator()) const - { - return { this->_M_str, this->_M_len, __alloc }; - } - - size_type - copy(_CharT* __str, size_type __n, size_type __pos = 0) const - { - __glibcxx_requires_string_len(__str, __n); - if (__pos > this->_M_len) - __throw_out_of_range_fmt(__N("basic_string_view::copy: __pos " - "(which is %zu) > this->size() " - "(which is %zu)"), - __pos, this->size()); - size_type __rlen{std::min(__n, size_type{this->_M_len - __pos})}; - for (auto __begin = this->_M_str + __pos, - __end = __begin + __rlen; __begin != __end;) - *__str++ = *__begin++; - return __rlen; - } - - - // [string.view.ops], string operations: - - constexpr basic_string_view - substr(size_type __pos, size_type __n=npos) const - { - return __pos <= this->_M_len - ? basic_string_view{this->_M_str + __pos, - std::min(__n, size_type{this->_M_len - __pos})} - : (__throw_out_of_range_fmt(__N("basic_string_view::substr: __pos " - "(which is %zu) > this->size() " - "(which is %zu)"), - __pos, this->size()), basic_string_view{}); - } - - constexpr int - compare(basic_string_view __str) const noexcept - { - int __ret = traits_type::compare(this->_M_str, __str._M_str, - std::min(this->_M_len, __str._M_len)); - if (__ret == 0) - __ret = _S_compare(this->_M_len, __str._M_len); - return __ret; - } - - constexpr int - compare(size_type __pos1, size_type __n1, basic_string_view __str) const - { return this->substr(__pos1, __n1).compare(__str); } - - constexpr int - compare(size_type __pos1, size_type __n1, - basic_string_view __str, size_type __pos2, size_type __n2) const - { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); } - - constexpr int - compare(const _CharT* __str) const noexcept - { return this->compare(basic_string_view{__str}); } - - constexpr int - compare(size_type __pos1, size_type __n1, const _CharT* __str) const - { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } - - constexpr int - compare(size_type __pos1, size_type __n1, - const _CharT* __str, size_type __n2) const - { - return this->substr(__pos1, __n1) - .compare(basic_string_view(__str, __n2)); - } - - constexpr size_type - find(basic_string_view __str, size_type __pos = 0) const noexcept - { return this->find(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find(_CharT __c, size_type __pos=0) const noexcept; - - constexpr size_type - find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - - constexpr size_type - find(const _CharT* __str, size_type __pos=0) const noexcept - { return this->find(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - rfind(basic_string_view __str, size_type __pos = npos) const noexcept - { return this->rfind(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - rfind(_CharT __c, size_type __pos = npos) const noexcept; - - constexpr size_type - rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - - constexpr size_type - rfind(const _CharT* __str, size_type __pos = npos) const noexcept - { return this->rfind(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept - { return this->find_first_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_first_of(_CharT __c, size_type __pos = 0) const noexcept - { return this->find(__c, __pos); } - - constexpr size_type - find_first_of(const _CharT* __str, size_type __pos, size_type __n) const; - - constexpr size_type - find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept - { return this->find_first_of(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - find_last_of(basic_string_view __str, - size_type __pos = npos) const noexcept - { return this->find_last_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_last_of(_CharT __c, size_type __pos=npos) const noexcept - { return this->rfind(__c, __pos); } - - constexpr size_type - find_last_of(const _CharT* __str, size_type __pos, size_type __n) const; - - constexpr size_type - find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept - { return this->find_last_of(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - find_first_not_of(basic_string_view __str, - size_type __pos = 0) const noexcept - { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; - - constexpr size_type - find_first_not_of(const _CharT* __str, - size_type __pos, size_type __n) const; - - constexpr size_type - find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept - { - return this->find_first_not_of(__str, __pos, - traits_type::length(__str)); - } - - constexpr size_type - find_last_not_of(basic_string_view __str, - size_type __pos = npos) const noexcept - { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; - - constexpr size_type - find_last_not_of(const _CharT* __str, - size_type __pos, size_type __n) const; - - constexpr size_type - find_last_not_of(const _CharT* __str, - size_type __pos = npos) const noexcept - { - return this->find_last_not_of(__str, __pos, - traits_type::length(__str)); - } - - private: - - static constexpr int - _S_compare(size_type __n1, size_type __n2) noexcept - { - return difference_type{__n1 - __n2} > std::numeric_limits::max() - ? std::numeric_limits::max() - : difference_type{__n1 - __n2} < std::numeric_limits::min() - ? std::numeric_limits::min() - : static_cast(difference_type{__n1 - __n2}); - } - - size_t _M_len; - const _CharT* _M_str; - }; - -_GLIBCXX_END_NAMESPACE_VERSION - - // [string.view.comparison], non-member basic_string_view comparison functions - - namespace __detail - { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // Identity transform to create a non-deduced context, so that only one - // argument participates in template argument deduction and the other - // argument gets implicitly converted to the deduced type. See n3766.html. - template - using __idt = common_type_t<_Tp>; -_GLIBCXX_END_NAMESPACE_VERSION - } - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - constexpr bool - operator==(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template - constexpr bool - operator==(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template - constexpr bool - operator==(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template - constexpr bool - operator!=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return !(__x == __y); } - - template - constexpr bool - operator!=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return !(__x == __y); } - - template - constexpr bool - operator!=(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return !(__x == __y); } - - template - constexpr bool - operator< (basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) < 0; } - - template - constexpr bool - operator< (basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) < 0; } - - template - constexpr bool - operator< (__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) < 0; } - - template - constexpr bool - operator> (basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) > 0; } - - template - constexpr bool - operator> (basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) > 0; } - - template - constexpr bool - operator> (__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) > 0; } - - template - constexpr bool - operator<=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) <= 0; } - - template - constexpr bool - operator<=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) <= 0; } - - template - constexpr bool - operator<=(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) <= 0; } - - template - constexpr bool - operator>=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) >= 0; } - - template - constexpr bool - operator>=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) >= 0; } - - template - constexpr bool - operator>=(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) >= 0; } - - // [string.view.io], Inserters and extractors - template - inline basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, - basic_string_view<_CharT,_Traits> __str) - { return __ostream_insert(__os, __str.data(), __str.size()); } - - - // basic_string_view typedef names - - using string_view = basic_string_view; -#ifdef _GLIBCXX_USE_WCHAR_T - using wstring_view = basic_string_view; -#endif -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - using u16string_view = basic_string_view; - using u32string_view = basic_string_view; -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental - - - // [string.view.hash], hash support: - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template - struct hash; - - template<> - struct hash - : public __hash_base - { - size_t - operator()(const experimental::string_view& __str) const noexcept - { return std::_Hash_impl::hash(__str.data(), __str.length()); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - struct hash - : public __hash_base - { - size_t - operator()(const experimental::wstring_view& __s) const noexcept - { return std::_Hash_impl::hash(__s.data(), - __s.length() * sizeof(wchar_t)); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; -#endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - template<> - struct hash - : public __hash_base - { - size_t - operator()(const experimental::u16string_view& __s) const noexcept - { return std::_Hash_impl::hash(__s.data(), - __s.length() * sizeof(char16_t)); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; - - template<> - struct hash - : public __hash_base - { - size_t - operator()(const experimental::u32string_view& __s) const noexcept - { return std::_Hash_impl::hash(__s.data(), - __s.length() * sizeof(char32_t)); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; -#endif -_GLIBCXX_END_NAMESPACE_VERSION - -namespace experimental -{ - // I added these EMSR. - inline namespace literals - { - inline namespace string_view_literals - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - inline constexpr basic_string_view - operator""sv(const char* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } - -#ifdef _GLIBCXX_USE_WCHAR_T - inline constexpr basic_string_view - operator""sv(const wchar_t* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } -#endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - inline constexpr basic_string_view - operator""sv(const char16_t* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } - - inline constexpr basic_string_view - operator""sv(const char32_t* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } -#endif - - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace string_literals - } // namespace literals -} // namespace experimental -} // namespace std - -#include - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/system_error b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/system_error deleted file mode 100644 index 2b4855dba..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/system_error +++ /dev/null @@ -1,67 +0,0 @@ -// Variable Templates For system_error -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/system_error - * This is a TS C++ Library header. - */ - -// -// N3932 Variable Templates For Type Traits (Revision 1) -// - -#ifndef _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR -#define _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -// See C++14 §19.5, System error support -template - constexpr bool is_error_code_enum_v = is_error_code_enum<_Tp>::value; -template - constexpr bool is_error_condition_enum_v = - is_error_condition_enum<_Tp>::value; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/tuple b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/tuple deleted file mode 100644 index 879636eec..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/tuple +++ /dev/null @@ -1,82 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/tuple - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_TUPLE -#define _GLIBCXX_EXPERIMENTAL_TUPLE 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // See C++14 §20.4.2.5, tuple helper classes - template - constexpr size_t tuple_size_v = tuple_size<_Tp>::value; - -#define __cpp_lib_experimental_tuple 201402 - - template - constexpr decltype(auto) - __apply_impl(_Fn&& __f, _Tuple&& __t, std::index_sequence<_Idx...>) - { - return std::__invoke(std::forward<_Fn>(__f), - std::get<_Idx>(std::forward<_Tuple>(__t))...); - } - - template - constexpr decltype(auto) - apply(_Fn&& __f, _Tuple&& __t) - { - using _Indices = - std::make_index_sequence>>; - return experimental::__apply_impl(std::forward<_Fn>(__f), - std::forward<_Tuple>(__t), - _Indices{}); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_TUPLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/type_traits deleted file mode 100644 index 7ec06308b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/type_traits +++ /dev/null @@ -1,310 +0,0 @@ -// Variable Templates For Type Traits -*- C++ -*- - -// Copyright (C) 2014-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/type_traits - * This is a TS C++ Library header. - */ - -// -// N3932 Variable Templates For Type Traits (Revision 1) -// - -#ifndef _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS -#define _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_type_trait_variable_templates 201402 - -// See C++14 §20.10.4.1, primary type categories -template - constexpr bool is_void_v = is_void<_Tp>::value; -template - constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; -template - constexpr bool is_integral_v = is_integral<_Tp>::value; -template - constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; -template - constexpr bool is_array_v = is_array<_Tp>::value; -template - constexpr bool is_pointer_v = is_pointer<_Tp>::value; -template - constexpr bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value; -template - constexpr bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value; -template - constexpr bool is_member_object_pointer_v = - is_member_object_pointer<_Tp>::value; -template - constexpr bool is_member_function_pointer_v = - is_member_function_pointer<_Tp>::value; -template - constexpr bool is_enum_v = is_enum<_Tp>::value; -template - constexpr bool is_union_v = is_union<_Tp>::value; -template - constexpr bool is_class_v = is_class<_Tp>::value; -template - constexpr bool is_function_v = is_function<_Tp>::value; - -// See C++14 §20.10.4.2, composite type categories -template - constexpr bool is_reference_v = is_reference<_Tp>::value; -template - constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; -template - constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; -template - constexpr bool is_object_v = is_object<_Tp>::value; -template - constexpr bool is_scalar_v = is_scalar<_Tp>::value; -template - constexpr bool is_compound_v = is_compound<_Tp>::value; -template - constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; - -// See C++14 §20.10.4.3, type properties -template - constexpr bool is_const_v = is_const<_Tp>::value; -template - constexpr bool is_volatile_v = is_volatile<_Tp>::value; -template - constexpr bool is_trivial_v = is_trivial<_Tp>::value; -template - constexpr bool is_trivially_copyable_v = is_trivially_copyable<_Tp>::value; -template - constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value; -template - constexpr bool is_pod_v = is_pod<_Tp>::value; -template - constexpr bool is_literal_type_v = is_literal_type<_Tp>::value; -template - constexpr bool is_empty_v = is_empty<_Tp>::value; -template - constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value; -template - constexpr bool is_abstract_v = is_abstract<_Tp>::value; -template - constexpr bool is_final_v = is_final<_Tp>::value; -template - constexpr bool is_signed_v = is_signed<_Tp>::value; -template - constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; -template - constexpr bool is_constructible_v = is_constructible<_Tp, _Args...>::value; -template - constexpr bool is_default_constructible_v = - is_default_constructible<_Tp>::value; -template - constexpr bool is_copy_constructible_v = is_copy_constructible<_Tp>::value; -template - constexpr bool is_move_constructible_v = is_move_constructible<_Tp>::value; -template - constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value; -template - constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; -template - constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; -template - constexpr bool is_destructible_v = is_destructible<_Tp>::value; -template - constexpr bool is_trivially_constructible_v = - is_trivially_constructible<_Tp, _Args...>::value; -template - constexpr bool is_trivially_default_constructible_v = - is_trivially_default_constructible<_Tp>::value; -template - constexpr bool is_trivially_copy_constructible_v = - is_trivially_copy_constructible<_Tp>::value; -template - constexpr bool is_trivially_move_constructible_v = - is_trivially_move_constructible<_Tp>::value; -template - constexpr bool is_trivially_assignable_v = - is_trivially_assignable<_Tp, _Up>::value; -template - constexpr bool is_trivially_copy_assignable_v = - is_trivially_copy_assignable<_Tp>::value; -template - constexpr bool is_trivially_move_assignable_v = - is_trivially_move_assignable<_Tp>::value; -template - constexpr bool is_trivially_destructible_v = - is_trivially_destructible<_Tp>::value; -template - constexpr bool is_nothrow_constructible_v = - is_nothrow_constructible<_Tp, _Args...>::value; -template - constexpr bool is_nothrow_default_constructible_v = - is_nothrow_default_constructible<_Tp>::value; -template - constexpr bool is_nothrow_copy_constructible_v = - is_nothrow_copy_constructible<_Tp>::value; -template - constexpr bool is_nothrow_move_constructible_v = - is_nothrow_move_constructible<_Tp>::value; -template - constexpr bool is_nothrow_assignable_v = - is_nothrow_assignable<_Tp, _Up>::value; -template - constexpr bool is_nothrow_copy_assignable_v = - is_nothrow_copy_assignable<_Tp>::value; -template - constexpr bool is_nothrow_move_assignable_v = - is_nothrow_move_assignable<_Tp>::value; -template - constexpr bool is_nothrow_destructible_v = - is_nothrow_destructible<_Tp>::value; -template - constexpr bool has_virtual_destructor_v = - has_virtual_destructor<_Tp>::value; - -// See C++14 §20.10.5, type property queries -template - constexpr size_t alignment_of_v = alignment_of<_Tp>::value; -template - constexpr size_t rank_v = rank<_Tp>::value; -template - constexpr size_t extent_v = extent<_Tp, _Idx>::value; - -// See C++14 §20.10.6, type relations -template - constexpr bool is_same_v = is_same<_Tp, _Up>::value; -template - constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value; -template - constexpr bool is_convertible_v = is_convertible<_From, _To>::value; - - - // 3.3.2, Other type transformations - // invocation_type (still unimplemented) - // raw_invocation_type (still unimplemented) - // invocation_type_t (still unimplemented) - // raw_invocation_type_t (still unimplemented) -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v1 - -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_detect 201505 - -// [meta.detect] - -template using void_t = void; - -struct nonesuch -{ - nonesuch() = delete; - ~nonesuch() = delete; - nonesuch(nonesuch const&) = delete; - void operator=(nonesuch const&) = delete; -}; - -template class _Op, typename... _Args> - using is_detected - = typename std::__detector::value_t; - -template class _Op, typename... _Args> - constexpr bool is_detected_v = is_detected<_Op, _Args...>::value; - -template class _Op, typename... _Args> - using detected_t - = typename std::__detector::type; - -template class _Op, typename... _Args> - using detected_or = std::__detected_or<_Default, _Op, _Args...>; - -template class _Op, typename... _Args> - using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type; - -template class _Op, typename... _Args> - using is_detected_exact = is_same>; - -template class _Op, typename... _Args> - constexpr bool is_detected_exact_v - = is_detected_exact::value; - -template class _Op, typename... _Args> - using is_detected_convertible - = is_convertible, _To>; - -template class _Op, typename... _Args> - constexpr bool is_detected_convertible_v - = is_detected_convertible<_To, _Op, _Args...>::value; - -#define __cpp_lib_experimental_logical_traits 201511 - -template - struct conjunction - : __and_<_Bn...> - { }; - -template - struct disjunction - : __or_<_Bn...> - { }; - -template - struct negation - : __not_<_Pp> - { }; - -template - constexpr bool conjunction_v - = conjunction<_Bn...>::value; - -template - constexpr bool disjunction_v - = disjunction<_Bn...>::value; - -template - constexpr bool negation_v - = negation<_Pp>::value; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // __cplusplus <= 201103L - -#endif // _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/unordered_map deleted file mode 100644 index fbc44b267..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/unordered_map +++ /dev/null @@ -1,90 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/unordered_map - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP -#define _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(unordered_map<_Key, _Tp, _Hash, _CPred, _Alloc>& __cont, - _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - - template - inline void - erase_if(unordered_multimap<_Key, _Tp, _Hash, _CPred, _Alloc>& __cont, - _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template, - typename _Pred = equal_to<_Key>> - using unordered_map - = std::unordered_map<_Key, _Tp, _Hash, _Pred, - polymorphic_allocator>>; - - template, - typename _Pred = equal_to<_Key>> - using unordered_multimap - = std::unordered_multimap<_Key, _Tp, _Hash, _Pred, - polymorphic_allocator>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/unordered_set deleted file mode 100644 index 3c8fe2552..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/unordered_set +++ /dev/null @@ -1,89 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/unordered_set - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_UNORDERED_SET -#define _GLIBCXX_EXPERIMENTAL_UNORDERED_SET 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - inline void - erase_if(unordered_set<_Key, _Hash, _CPred, _Alloc>& __cont, - _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - - template - inline void - erase_if(unordered_multiset<_Key, _Hash, _CPred, _Alloc>& __cont, - _Predicate __pred) - { __detail::__erase_nodes_if(__cont, __pred); } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template, - typename _Pred = equal_to<_Key>> - using unordered_set - = std::unordered_set<_Key, _Hash, _Pred, polymorphic_allocator<_Key>>; - - template, - typename _Pred = equal_to<_Key>> - using unordered_multiset - = std::unordered_multiset<_Key, _Hash, _Pred, - polymorphic_allocator<_Key>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_UNORDERED_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/utility b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/utility deleted file mode 100644 index db85c5cc6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/utility +++ /dev/null @@ -1,49 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/utility - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_UTILITY -#define _GLIBCXX_EXPERIMENTAL_UTILITY 1 - -#include -#include -#include - -namespace std { -namespace experimental { -inline namespace fundamentals_v2 { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // 3.1.2, erased-type placeholder - using erased_type = std::__erased_type; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/vector deleted file mode 100644 index b75a3bc7c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/vector +++ /dev/null @@ -1,85 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2015-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file experimental/vector - * This is a TS C++ Library header. - */ - -#ifndef _GLIBCXX_EXPERIMENTAL_VECTOR -#define _GLIBCXX_EXPERIMENTAL_VECTOR 1 - -#pragma GCC system_header - -#if __cplusplus <= 201103L -# include -#else - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace experimental -{ -inline namespace fundamentals_v2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_experimental_erase_if 201411 - - template - inline void - erase_if(vector<_Tp, _Alloc>& __cont, _Predicate __pred) - { - __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), - __cont.end()); - } - - template - inline void - erase(vector<_Tp, _Alloc>& __cont, const _Up& __value) - { - __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), - __cont.end()); - } - -_GLIBCXX_END_NAMESPACE_VERSION - -namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace pmr - -} // namespace fundamentals_v2 -} // namespace experimental -} // namespace std - -#endif // C++14 - -#endif // _GLIBCXX_EXPERIMENTAL_VECTOR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/algorithm deleted file mode 100644 index 823456cf6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/algorithm +++ /dev/null @@ -1,603 +0,0 @@ -// Algorithm extensions -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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 - * 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 ext/algorithm - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _EXT_ALGORITHM -#define _EXT_ALGORITHM 1 - -#pragma GCC system_header - -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::ptrdiff_t; - using std::min; - using std::pair; - using std::input_iterator_tag; - using std::random_access_iterator_tag; - using std::iterator_traits; - - //-------------------------------------------------- - // copy_n (not part of the C++ standard) - - template - pair<_InputIterator, _OutputIterator> - __copy_n(_InputIterator __first, _Size __count, - _OutputIterator __result, - input_iterator_tag) - { - for ( ; __count > 0; --__count) - { - *__result = *__first; - ++__first; - ++__result; - } - return pair<_InputIterator, _OutputIterator>(__first, __result); - } - - template - inline pair<_RAIterator, _OutputIterator> - __copy_n(_RAIterator __first, _Size __count, - _OutputIterator __result, - random_access_iterator_tag) - { - _RAIterator __last = __first + __count; - return pair<_RAIterator, _OutputIterator>(__last, std::copy(__first, - __last, - __result)); - } - - /** - * @brief Copies the range [first,first+count) into [result,result+count). - * @param __first An input iterator. - * @param __count The number of elements to copy. - * @param __result An output iterator. - * @return A std::pair composed of first+count and result+count. - * - * This is an SGI extension. - * This inline function will boil down to a call to @c memmove whenever - * possible. Failing that, if random access iterators are passed, then the - * loop count will be known (and therefore a candidate for compiler - * optimizations such as unrolling). - * @ingroup SGIextensions - */ - template - inline pair<_InputIterator, _OutputIterator> - copy_n(_InputIterator __first, _Size __count, _OutputIterator __result) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_InputIterator>::value_type>) - - return __gnu_cxx::__copy_n(__first, __count, __result, - std::__iterator_category(__first)); - } - - template - int - __lexicographical_compare_3way(_InputIterator1 __first1, - _InputIterator1 __last1, - _InputIterator2 __first2, - _InputIterator2 __last2) - { - while (__first1 != __last1 && __first2 != __last2) - { - if (*__first1 < *__first2) - return -1; - if (*__first2 < *__first1) - return 1; - ++__first1; - ++__first2; - } - if (__first2 == __last2) - return !(__first1 == __last1); - else - return -1; - } - - inline int - __lexicographical_compare_3way(const unsigned char* __first1, - const unsigned char* __last1, - const unsigned char* __first2, - const unsigned char* __last2) - { - const ptrdiff_t __len1 = __last1 - __first1; - const ptrdiff_t __len2 = __last2 - __first2; - const int __result = __builtin_memcmp(__first1, __first2, - min(__len1, __len2)); - return __result != 0 ? __result - : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1)); - } - - inline int - __lexicographical_compare_3way(const char* __first1, const char* __last1, - const char* __first2, const char* __last2) - { -#if CHAR_MAX == SCHAR_MAX - return __lexicographical_compare_3way((const signed char*) __first1, - (const signed char*) __last1, - (const signed char*) __first2, - (const signed char*) __last2); -#else - return __lexicographical_compare_3way((const unsigned char*) __first1, - (const unsigned char*) __last1, - (const unsigned char*) __first2, - (const unsigned char*) __last2); -#endif - } - - /** - * @brief @c memcmp on steroids. - * @param __first1 An input iterator. - * @param __last1 An input iterator. - * @param __first2 An input iterator. - * @param __last2 An input iterator. - * @return An int, as with @c memcmp. - * - * The return value will be less than zero if the first range is - * lexigraphically less than the second, greater than zero - * if the second range is lexigraphically less than the - * first, and zero otherwise. - * This is an SGI extension. - * @ingroup SGIextensions - */ - template - int - lexicographical_compare_3way(_InputIterator1 __first1, - _InputIterator1 __last1, - _InputIterator2 __first2, - _InputIterator2 __last2) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator1>::value_type>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_InputIterator2>::value_type>) - __glibcxx_requires_valid_range(__first1, __last1); - __glibcxx_requires_valid_range(__first2, __last2); - - return __lexicographical_compare_3way(__first1, __last1, __first2, - __last2); - } - - // count and count_if: this version, whose return type is void, was present - // in the HP STL, and is retained as an extension for backward compatibility. - template - void - count(_InputIterator __first, _InputIterator __last, - const _Tp& __value, - _Size& __n) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - __glibcxx_function_requires(_EqualityComparableConcept< - typename iterator_traits<_InputIterator>::value_type >) - __glibcxx_function_requires(_EqualityComparableConcept<_Tp>) - __glibcxx_requires_valid_range(__first, __last); - - for ( ; __first != __last; ++__first) - if (*__first == __value) - ++__n; - } - - template - void - count_if(_InputIterator __first, _InputIterator __last, - _Predicate __pred, - _Size& __n) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, - typename iterator_traits<_InputIterator>::value_type>) - __glibcxx_requires_valid_range(__first, __last); - - for ( ; __first != __last; ++__first) - if (__pred(*__first)) - ++__n; - } - - // random_sample and random_sample_n (extensions, not part of the standard). - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - _OutputIterator - random_sample_n(_ForwardIterator __first, _ForwardIterator __last, - _OutputIterator __out, const _Distance __n) - { - // concept requirements - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_ForwardIterator>::value_type>) - __glibcxx_requires_valid_range(__first, __last); - - _Distance __remaining = std::distance(__first, __last); - _Distance __m = min(__n, __remaining); - - while (__m > 0) - { - if ((std::rand() % __remaining) < __m) - { - *__out = *__first; - ++__out; - --__m; - } - --__remaining; - ++__first; - } - return __out; - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - _OutputIterator - random_sample_n(_ForwardIterator __first, _ForwardIterator __last, - _OutputIterator __out, const _Distance __n, - _RandomNumberGenerator& __rand) - { - // concept requirements - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - typename iterator_traits<_ForwardIterator>::value_type>) - __glibcxx_function_requires(_UnaryFunctionConcept< - _RandomNumberGenerator, _Distance, _Distance>) - __glibcxx_requires_valid_range(__first, __last); - - _Distance __remaining = std::distance(__first, __last); - _Distance __m = min(__n, __remaining); - - while (__m > 0) - { - if (__rand(__remaining) < __m) - { - *__out = *__first; - ++__out; - --__m; - } - --__remaining; - ++__first; - } - return __out; - } - - template - _RandomAccessIterator - __random_sample(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __out, - const _Distance __n) - { - _Distance __m = 0; - _Distance __t = __n; - for ( ; __first != __last && __m < __n; ++__m, ++__first) - __out[__m] = *__first; - - while (__first != __last) - { - ++__t; - _Distance __M = std::rand() % (__t); - if (__M < __n) - __out[__M] = *__first; - ++__first; - } - return __out + __m; - } - - template - _RandomAccessIterator - __random_sample(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __out, - _RandomNumberGenerator& __rand, - const _Distance __n) - { - // concept requirements - __glibcxx_function_requires(_UnaryFunctionConcept< - _RandomNumberGenerator, _Distance, _Distance>) - - _Distance __m = 0; - _Distance __t = __n; - for ( ; __first != __last && __m < __n; ++__m, ++__first) - __out[__m] = *__first; - - while (__first != __last) - { - ++__t; - _Distance __M = __rand(__t); - if (__M < __n) - __out[__M] = *__first; - ++__first; - } - return __out + __m; - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - inline _RandomAccessIterator - random_sample(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __out_first, - _RandomAccessIterator __out_last) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< - _RandomAccessIterator>) - __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_valid_range(__out_first, __out_last); - - return __random_sample(__first, __last, - __out_first, __out_last - __out_first); - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - inline _RandomAccessIterator - random_sample(_InputIterator __first, _InputIterator __last, - _RandomAccessIterator __out_first, - _RandomAccessIterator __out_last, - _RandomNumberGenerator& __rand) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< - _RandomAccessIterator>) - __glibcxx_requires_valid_range(__first, __last); - __glibcxx_requires_valid_range(__out_first, __out_last); - - return __random_sample(__first, __last, - __out_first, __rand, - __out_last - __out_first); - } - -#if __cplusplus >= 201103L - using std::is_heap; -#else - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - inline bool - is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) - { - // concept requirements - __glibcxx_function_requires(_RandomAccessIteratorConcept< - _RandomAccessIterator>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_RandomAccessIterator>::value_type>) - __glibcxx_requires_valid_range(__first, __last); - - return std::__is_heap(__first, __last - __first); - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - inline bool - is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, - _StrictWeakOrdering __comp) - { - // concept requirements - __glibcxx_function_requires(_RandomAccessIteratorConcept< - _RandomAccessIterator>) - __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering, - typename iterator_traits<_RandomAccessIterator>::value_type, - typename iterator_traits<_RandomAccessIterator>::value_type>) - __glibcxx_requires_valid_range(__first, __last); - - return std::__is_heap(__first, __comp, __last - __first); - } -#endif - -#if __cplusplus >= 201103L - using std::is_sorted; -#else - // is_sorted, a predicated testing whether a range is sorted in - // nondescending order. This is an extension, not part of the C++ - // standard. - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - bool - is_sorted(_ForwardIterator __first, _ForwardIterator __last) - { - // concept requirements - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_LessThanComparableConcept< - typename iterator_traits<_ForwardIterator>::value_type>) - __glibcxx_requires_valid_range(__first, __last); - - if (__first == __last) - return true; - - _ForwardIterator __next = __first; - for (++__next; __next != __last; __first = __next, ++__next) - if (*__next < *__first) - return false; - return true; - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - bool - is_sorted(_ForwardIterator __first, _ForwardIterator __last, - _StrictWeakOrdering __comp) - { - // concept requirements - __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) - __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering, - typename iterator_traits<_ForwardIterator>::value_type, - typename iterator_traits<_ForwardIterator>::value_type>) - __glibcxx_requires_valid_range(__first, __last); - - if (__first == __last) - return true; - - _ForwardIterator __next = __first; - for (++__next; __next != __last; __first = __next, ++__next) - if (__comp(*__next, *__first)) - return false; - return true; - } -#endif // C++11 - - /** - * @brief Find the median of three values. - * @param __a A value. - * @param __b A value. - * @param __c A value. - * @return One of @p a, @p b or @p c. - * - * If @c {l,m,n} is some convolution of @p {a,b,c} such that @c l<=m<=n - * then the value returned will be @c m. - * This is an SGI extension. - * @ingroup SGIextensions - */ - template - const _Tp& - __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) - { - // concept requirements - __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) - if (__a < __b) - if (__b < __c) - return __b; - else if (__a < __c) - return __c; - else - return __a; - else if (__a < __c) - return __a; - else if (__b < __c) - return __c; - else - return __b; - } - - /** - * @brief Find the median of three values using a predicate for comparison. - * @param __a A value. - * @param __b A value. - * @param __c A value. - * @param __comp A binary predicate. - * @return One of @p a, @p b or @p c. - * - * If @c {l,m,n} is some convolution of @p {a,b,c} such that @p comp(l,m) - * and @p comp(m,n) are both true then the value returned will be @c m. - * This is an SGI extension. - * @ingroup SGIextensions - */ - template - const _Tp& - __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) - { - // concept requirements - __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool, - _Tp, _Tp>) - if (__comp(__a, __b)) - if (__comp(__b, __c)) - return __b; - else if (__comp(__a, __c)) - return __c; - else - return __a; - else if (__comp(__a, __c)) - return __a; - else if (__comp(__b, __c)) - return __c; - else - return __b; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif /* _EXT_ALGORITHM */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/alloc_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/alloc_traits.h deleted file mode 100644 index f4435ce00..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/alloc_traits.h +++ /dev/null @@ -1,163 +0,0 @@ -// Allocator traits -*- C++ -*- - -// Copyright (C) 2011-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/alloc_traits.h - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _EXT_ALLOC_TRAITS_H -#define _EXT_ALLOC_TRAITS_H 1 - -#pragma GCC system_header - -#if __cplusplus >= 201103L -# include -# include -#else -# include // for __alloc_swap -#endif - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -/** - * @brief Uniform interface to C++98 and C++11 allocators. - * @ingroup allocators -*/ -template - struct __alloc_traits -#if __cplusplus >= 201103L - : std::allocator_traits<_Alloc> -#endif - { - typedef _Alloc allocator_type; -#if __cplusplus >= 201103L - typedef std::allocator_traits<_Alloc> _Base_type; - typedef typename _Base_type::value_type value_type; - typedef typename _Base_type::pointer pointer; - typedef typename _Base_type::const_pointer const_pointer; - typedef typename _Base_type::size_type size_type; - typedef typename _Base_type::difference_type difference_type; - // C++11 allocators do not define reference or const_reference - typedef value_type& reference; - typedef const value_type& const_reference; - using _Base_type::allocate; - using _Base_type::deallocate; - using _Base_type::construct; - using _Base_type::destroy; - using _Base_type::max_size; - - private: - template - using __is_custom_pointer - = std::__and_, - std::__not_>>; - - public: - // overload construct for non-standard pointer types - template - static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type - construct(_Alloc& __a, _Ptr __p, _Args&&... __args) - { - _Base_type::construct(__a, std::addressof(*__p), - std::forward<_Args>(__args)...); - } - - // overload destroy for non-standard pointer types - template - static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type - destroy(_Alloc& __a, _Ptr __p) - { _Base_type::destroy(__a, std::addressof(*__p)); } - - static _Alloc _S_select_on_copy(const _Alloc& __a) - { return _Base_type::select_on_container_copy_construction(__a); } - - static void _S_on_swap(_Alloc& __a, _Alloc& __b) - { std::__alloc_on_swap(__a, __b); } - - static constexpr bool _S_propagate_on_copy_assign() - { return _Base_type::propagate_on_container_copy_assignment::value; } - - static constexpr bool _S_propagate_on_move_assign() - { return _Base_type::propagate_on_container_move_assignment::value; } - - static constexpr bool _S_propagate_on_swap() - { return _Base_type::propagate_on_container_swap::value; } - - static constexpr bool _S_always_equal() - { return _Base_type::is_always_equal::value; } - - static constexpr bool _S_nothrow_move() - { return _S_propagate_on_move_assign() || _S_always_equal(); } - - template - struct rebind - { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; -#else - - typedef typename _Alloc::pointer pointer; - typedef typename _Alloc::const_pointer const_pointer; - typedef typename _Alloc::value_type value_type; - typedef typename _Alloc::reference reference; - typedef typename _Alloc::const_reference const_reference; - typedef typename _Alloc::size_type size_type; - typedef typename _Alloc::difference_type difference_type; - - static pointer - allocate(_Alloc& __a, size_type __n) - { return __a.allocate(__n); } - - static void deallocate(_Alloc& __a, pointer __p, size_type __n) - { __a.deallocate(__p, __n); } - - template - static void construct(_Alloc& __a, pointer __p, const _Tp& __arg) - { __a.construct(__p, __arg); } - - static void destroy(_Alloc& __a, pointer __p) - { __a.destroy(__p); } - - static size_type max_size(const _Alloc& __a) - { return __a.max_size(); } - - static const _Alloc& _S_select_on_copy(const _Alloc& __a) { return __a; } - - static void _S_on_swap(_Alloc& __a, _Alloc& __b) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 431. Swapping containers with unequal allocators. - std::__alloc_swap<_Alloc>::_S_do_it(__a, __b); - } - - template - struct rebind - { typedef typename _Alloc::template rebind<_Tp>::other other; }; -#endif - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __gnu_cxx - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/cmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/cmath deleted file mode 100644 index 3236a8a67..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/cmath +++ /dev/null @@ -1,152 +0,0 @@ -// Math extensions -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/cmath - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _EXT_CMATH -#define _EXT_CMATH 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // A class for math constants. - template - struct __math_constants - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - // Constant @f$ \pi @f$. - static constexpr _RealType __pi = 3.1415926535897932384626433832795029L; - // Constant @f$ \pi / 2 @f$. - static constexpr _RealType __pi_half = 1.5707963267948966192313216916397514L; - // Constant @f$ \pi / 3 @f$. - static constexpr _RealType __pi_third = 1.0471975511965977461542144610931676L; - // Constant @f$ \pi / 4 @f$. - static constexpr _RealType __pi_quarter = 0.7853981633974483096156608458198757L; - // Constant @f$ \sqrt(\pi / 2) @f$. - static constexpr _RealType __root_pi_div_2 = 1.2533141373155002512078826424055226L; - // Constant @f$ 1 / \pi @f$. - static constexpr _RealType __one_div_pi = 0.3183098861837906715377675267450287L; - // Constant @f$ 2 / \pi @f$. - static constexpr _RealType __two_div_pi = 0.6366197723675813430755350534900574L; - // Constant @f$ 2 / \sqrt(\pi) @f$. - static constexpr _RealType __two_div_root_pi = 1.1283791670955125738961589031215452L; - - // Constant Euler's number @f$ e @f$. - static constexpr _RealType __e = 2.7182818284590452353602874713526625L; - // Constant @f$ 1 / e @f$. - static constexpr _RealType __one_div_e = 0.36787944117144232159552377016146087L; - // Constant @f$ \log_2(e) @f$. - static constexpr _RealType __log2_e = 1.4426950408889634073599246810018921L; - // Constant @f$ \log_10(e) @f$. - static constexpr _RealType __log10_e = 0.4342944819032518276511289189166051L; - // Constant @f$ \ln(2) @f$. - static constexpr _RealType __ln_2 = 0.6931471805599453094172321214581766L; - // Constant @f$ \ln(3) @f$. - static constexpr _RealType __ln_3 = 1.0986122886681096913952452369225257L; - // Constant @f$ \ln(10) @f$. - static constexpr _RealType __ln_10 = 2.3025850929940456840179914546843642L; - - // Constant Euler-Mascheroni @f$ \gamma_E @f$. - static constexpr _RealType __gamma_e = 0.5772156649015328606065120900824024L; - // Constant Golden Ratio @f$ \phi @f$. - static constexpr _RealType __phi = 1.6180339887498948482045868343656381L; - - // Constant @f$ \sqrt(2) @f$. - static constexpr _RealType __root_2 = 1.4142135623730950488016887242096981L; - // Constant @f$ \sqrt(3) @f$. - static constexpr _RealType __root_3 = 1.7320508075688772935274463415058724L; - // Constant @f$ \sqrt(5) @f$. - static constexpr _RealType __root_5 = 2.2360679774997896964091736687312762L; - // Constant @f$ \sqrt(7) @f$. - static constexpr _RealType __root_7 = 2.6457513110645905905016157536392604L; - // Constant @f$ 1 / \sqrt(2) @f$. - static constexpr _RealType __one_div_root_2 = 0.7071067811865475244008443621048490L; - }; - - // And the template definitions for the constants. - template - constexpr _RealType __math_constants<_RealType>::__pi; - template - constexpr _RealType __math_constants<_RealType>::__pi_half; - template - constexpr _RealType __math_constants<_RealType>::__pi_third; - template - constexpr _RealType __math_constants<_RealType>::__pi_quarter; - template - constexpr _RealType __math_constants<_RealType>::__root_pi_div_2; - template - constexpr _RealType __math_constants<_RealType>::__one_div_pi; - template - constexpr _RealType __math_constants<_RealType>::__two_div_pi; - template - constexpr _RealType __math_constants<_RealType>::__two_div_root_pi; - template - constexpr _RealType __math_constants<_RealType>::__e; - template - constexpr _RealType __math_constants<_RealType>::__one_div_e; - template - constexpr _RealType __math_constants<_RealType>::__log2_e; - template - constexpr _RealType __math_constants<_RealType>::__log10_e; - template - constexpr _RealType __math_constants<_RealType>::__ln_2; - template - constexpr _RealType __math_constants<_RealType>::__ln_3; - template - constexpr _RealType __math_constants<_RealType>::__ln_10; - template - constexpr _RealType __math_constants<_RealType>::__gamma_e; - template - constexpr _RealType __math_constants<_RealType>::__phi; - template - constexpr _RealType __math_constants<_RealType>::__root_2; - template - constexpr _RealType __math_constants<_RealType>::__root_3; - template - constexpr _RealType __math_constants<_RealType>::__root_5; - template - constexpr _RealType __math_constants<_RealType>::__root_7; - template - constexpr _RealType __math_constants<_RealType>::__one_div_root_2; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __gnu_cxx - -#endif // C++11 - -#endif // _EXT_CMATH diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/functional deleted file mode 100644 index ce7d868dd..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/functional +++ /dev/null @@ -1,430 +0,0 @@ -// Functional extensions -*- C++ -*- - -// Copyright (C) 2002-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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 - * 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 ext/functional - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _EXT_FUNCTIONAL -#define _EXT_FUNCTIONAL 1 - -#pragma GCC system_header - -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::size_t; - using std::unary_function; - using std::binary_function; - using std::mem_fun1_t; - using std::const_mem_fun1_t; - using std::mem_fun1_ref_t; - using std::const_mem_fun1_ref_t; - - /** The @c identity_element functions are not part of the C++ - * standard; SGI provided them as an extension. Its argument is an - * operation, and its return value is the identity element for that - * operation. It is overloaded for addition and multiplication, - * and you can overload it for your own nefarious operations. - * - * @addtogroup SGIextensions - * @{ - */ - /// An \link SGIextensions SGI extension \endlink. - template - inline _Tp - identity_element(std::plus<_Tp>) - { return _Tp(0); } - - /// An \link SGIextensions SGI extension \endlink. - template - inline _Tp - identity_element(std::multiplies<_Tp>) - { return _Tp(1); } - /** @} */ - - /** As an extension to the binders, SGI provided composition functors and - * wrapper functions to aid in their creation. The @c unary_compose - * functor is constructed from two functions/functors, @c f and @c g. - * Calling @c operator() with a single argument @c x returns @c f(g(x)). - * The function @c compose1 takes the two functions and constructs a - * @c unary_compose variable for you. - * - * @c binary_compose is constructed from three functors, @c f, @c g1, - * and @c g2. Its @c operator() returns @c f(g1(x),g2(x)). The function - * compose2 takes f, g1, and g2, and constructs the @c binary_compose - * instance for you. For example, if @c f returns an int, then - * \code - * int answer = (compose2(f,g1,g2))(x); - * \endcode - * is equivalent to - * \code - * int temp1 = g1(x); - * int temp2 = g2(x); - * int answer = f(temp1,temp2); - * \endcode - * But the first form is more compact, and can be passed around as a - * functor to other algorithms. - * - * @addtogroup SGIextensions - * @{ - */ - /// An \link SGIextensions SGI extension \endlink. - template - class unary_compose - : public unary_function - { - protected: - _Operation1 _M_fn1; - _Operation2 _M_fn2; - - public: - unary_compose(const _Operation1& __x, const _Operation2& __y) - : _M_fn1(__x), _M_fn2(__y) {} - - typename _Operation1::result_type - operator()(const typename _Operation2::argument_type& __x) const - { return _M_fn1(_M_fn2(__x)); } - }; - - /// An \link SGIextensions SGI extension \endlink. - template - inline unary_compose<_Operation1, _Operation2> - compose1(const _Operation1& __fn1, const _Operation2& __fn2) - { return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); } - - /// An \link SGIextensions SGI extension \endlink. - template - class binary_compose - : public unary_function - { - protected: - _Operation1 _M_fn1; - _Operation2 _M_fn2; - _Operation3 _M_fn3; - - public: - binary_compose(const _Operation1& __x, const _Operation2& __y, - const _Operation3& __z) - : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { } - - typename _Operation1::result_type - operator()(const typename _Operation2::argument_type& __x) const - { return _M_fn1(_M_fn2(__x), _M_fn3(__x)); } - }; - - /// An \link SGIextensions SGI extension \endlink. - template - inline binary_compose<_Operation1, _Operation2, _Operation3> - compose2(const _Operation1& __fn1, const _Operation2& __fn2, - const _Operation3& __fn3) - { return binary_compose<_Operation1, _Operation2, _Operation3> - (__fn1, __fn2, __fn3); } - /** @} */ - - /** As an extension, SGI provided a functor called @c identity. When a - * functor is required but no operations are desired, this can be used as a - * pass-through. Its @c operator() returns its argument unchanged. - * - * @addtogroup SGIextensions - */ - template - struct identity - : public std::_Identity<_Tp> {}; - - /** @c select1st and @c select2nd are extensions provided by SGI. Their - * @c operator()s - * take a @c std::pair as an argument, and return either the first member - * or the second member, respectively. They can be used (especially with - * the composition functors) to @a strip data from a sequence before - * performing the remainder of an algorithm. - * - * @addtogroup SGIextensions - * @{ - */ - /// An \link SGIextensions SGI extension \endlink. - template - struct select1st - : public std::_Select1st<_Pair> {}; - - /// An \link SGIextensions SGI extension \endlink. - template - struct select2nd - : public std::_Select2nd<_Pair> {}; - - /** @} */ - - // extension documented next - template - struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> - { - _Arg1 - operator()(const _Arg1& __x, const _Arg2&) const - { return __x; } - }; - - template - struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> - { - _Arg2 - operator()(const _Arg1&, const _Arg2& __y) const - { return __y; } - }; - - /** The @c operator() of the @c project1st functor takes two arbitrary - * arguments and returns the first one, while @c project2nd returns the - * second one. They are extensions provided by SGI. - * - * @addtogroup SGIextensions - * @{ - */ - - /// An \link SGIextensions SGI extension \endlink. - template - struct project1st : public _Project1st<_Arg1, _Arg2> {}; - - /// An \link SGIextensions SGI extension \endlink. - template - struct project2nd : public _Project2nd<_Arg1, _Arg2> {}; - /** @} */ - - // extension documented next - template - struct _Constant_void_fun - { - typedef _Result result_type; - result_type _M_val; - - _Constant_void_fun(const result_type& __v) : _M_val(__v) {} - - const result_type& - operator()() const - { return _M_val; } - }; - - template - struct _Constant_unary_fun - { - typedef _Argument argument_type; - typedef _Result result_type; - result_type _M_val; - - _Constant_unary_fun(const result_type& __v) : _M_val(__v) {} - - const result_type& - operator()(const _Argument&) const - { return _M_val; } - }; - - template - struct _Constant_binary_fun - { - typedef _Arg1 first_argument_type; - typedef _Arg2 second_argument_type; - typedef _Result result_type; - _Result _M_val; - - _Constant_binary_fun(const _Result& __v) : _M_val(__v) {} - - const result_type& - operator()(const _Arg1&, const _Arg2&) const - { return _M_val; } - }; - - /** These three functors are each constructed from a single arbitrary - * variable/value. Later, their @c operator()s completely ignore any - * arguments passed, and return the stored value. - * - @c constant_void_fun's @c operator() takes no arguments - * - @c constant_unary_fun's @c operator() takes one argument (ignored) - * - @c constant_binary_fun's @c operator() takes two arguments (ignored) - * - * The helper creator functions @c constant0, @c constant1, and - * @c constant2 each take a @a result argument and construct variables of - * the appropriate functor type. - * - * @addtogroup SGIextensions - * @{ - */ - /// An \link SGIextensions SGI extension \endlink. - template - struct constant_void_fun - : public _Constant_void_fun<_Result> - { - constant_void_fun(const _Result& __v) - : _Constant_void_fun<_Result>(__v) {} - }; - - /// An \link SGIextensions SGI extension \endlink. - template - struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument> - { - constant_unary_fun(const _Result& __v) - : _Constant_unary_fun<_Result, _Argument>(__v) {} - }; - - /// An \link SGIextensions SGI extension \endlink. - template - struct constant_binary_fun - : public _Constant_binary_fun<_Result, _Arg1, _Arg2> - { - constant_binary_fun(const _Result& __v) - : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {} - }; - - /// An \link SGIextensions SGI extension \endlink. - template - inline constant_void_fun<_Result> - constant0(const _Result& __val) - { return constant_void_fun<_Result>(__val); } - - /// An \link SGIextensions SGI extension \endlink. - template - inline constant_unary_fun<_Result, _Result> - constant1(const _Result& __val) - { return constant_unary_fun<_Result, _Result>(__val); } - - /// An \link SGIextensions SGI extension \endlink. - template - inline constant_binary_fun<_Result,_Result,_Result> - constant2(const _Result& __val) - { return constant_binary_fun<_Result, _Result, _Result>(__val); } - /** @} */ - - /** The @c subtractive_rng class is documented on - * SGI's site. - * Note that this code assumes that @c int is 32 bits. - * - * @ingroup SGIextensions - */ - class subtractive_rng - : public unary_function - { - private: - unsigned int _M_table[55]; - size_t _M_index1; - size_t _M_index2; - - public: - /// Returns a number less than the argument. - unsigned int - operator()(unsigned int __limit) - { - _M_index1 = (_M_index1 + 1) % 55; - _M_index2 = (_M_index2 + 1) % 55; - _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2]; - return _M_table[_M_index1] % __limit; - } - - void - _M_initialize(unsigned int __seed) - { - unsigned int __k = 1; - _M_table[54] = __seed; - size_t __i; - for (__i = 0; __i < 54; __i++) - { - size_t __ii = (21 * (__i + 1) % 55) - 1; - _M_table[__ii] = __k; - __k = __seed - __k; - __seed = _M_table[__ii]; - } - for (int __loop = 0; __loop < 4; __loop++) - { - for (__i = 0; __i < 55; __i++) - _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55]; - } - _M_index1 = 0; - _M_index2 = 31; - } - - /// Ctor allowing you to initialize the seed. - subtractive_rng(unsigned int __seed) - { _M_initialize(__seed); } - - /// Default ctor; initializes its state with some number you don't see. - subtractive_rng() - { _M_initialize(161803398u); } - }; - - // Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref, - // provided for backward compatibility, they are no longer part of - // the C++ standard. - - template - inline mem_fun1_t<_Ret, _Tp, _Arg> - mem_fun1(_Ret (_Tp::*__f)(_Arg)) - { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } - - template - inline const_mem_fun1_t<_Ret, _Tp, _Arg> - mem_fun1(_Ret (_Tp::*__f)(_Arg) const) - { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } - - template - inline mem_fun1_ref_t<_Ret, _Tp, _Arg> - mem_fun1_ref(_Ret (_Tp::*__f)(_Arg)) - { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } - - template - inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> - mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const) - { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/hash_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/hash_map deleted file mode 100644 index dcd0b71cc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/hash_map +++ /dev/null @@ -1,599 +0,0 @@ -// Hashing map implementation -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 1996 - * 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. - * - * - * 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. - * - */ - -/** @file backward/hash_map - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _BACKWARD_HASH_MAP -#define _BACKWARD_HASH_MAP 1 - -#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH -#include "backward_warning.h" -#endif - -#include -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::equal_to; - using std::allocator; - using std::pair; - using std::_Select1st; - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > - class hash_map - { - private: - typedef hashtable,_Key, _HashFn, - _Select1st >, - _EqualKey, _Alloc> _Ht; - - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_map() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_map(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_map(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_map(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_map(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_map& __hs) - { _M_ht.swap(__hs._M_ht); } - - template - friend bool - operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&, - const hash_map<_K1, _T1, _HF, _EqK, _Al>&); - - iterator - begin() - { return _M_ht.begin(); } - - iterator - end() - { return _M_ht.end(); } - - const_iterator - begin() const - { return _M_ht.begin(); } - - const_iterator - end() const - { return _M_ht.end(); } - - pair - insert(const value_type& __obj) - { return _M_ht.insert_unique(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f, __l); } - - pair - insert_noresize(const value_type& __obj) - { return _M_ht.insert_unique_noresize(__obj); } - - iterator - find(const key_type& __key) - { return _M_ht.find(__key); } - - const_iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - _Tp& - operator[](const key_type& __key) - { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - {return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { return __hm1._M_ht == __hm2._M_ht; } - - template - inline bool - operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { return !(__hm1 == __hm2); } - - template - inline void - swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { __hm1.swap(__hm2); } - - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Key>, - class _Alloc = allocator<_Tp> > - class hash_multimap - { - // concept requirements - __glibcxx_class_requires(_Key, _SGIAssignableConcept) - __glibcxx_class_requires(_Tp, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) - - private: - typedef hashtable, _Key, _HashFn, - _Select1st >, _EqualKey, _Alloc> - _Ht; - - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef _Tp data_type; - typedef _Tp mapped_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Ht::pointer pointer; - typedef typename _Ht::const_pointer const_pointer; - typedef typename _Ht::reference reference; - typedef typename _Ht::const_reference const_reference; - - typedef typename _Ht::iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_multimap() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_multimap(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_multimap(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_multimap(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_multimap& __hs) - { _M_ht.swap(__hs._M_ht); } - - template - friend bool - operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&, - const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&); - - iterator - begin() - { return _M_ht.begin(); } - - iterator - end() - { return _M_ht.end(); } - - const_iterator - begin() const - { return _M_ht.begin(); } - - const_iterator - end() const - { return _M_ht.end(); } - - iterator - insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_equal(__f,__l); } - - iterator - insert_noresize(const value_type& __obj) - { return _M_ht.insert_equal_noresize(__obj); } - - iterator - find(const key_type& __key) - { return _M_ht.find(__key); } - - const_iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) - { return _M_ht.equal_range(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - { return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, - const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) - { return __hm1._M_ht == __hm2._M_ht; } - - template - inline bool - operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, - const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) - { return !(__hm1 == __hm2); } - - template - inline void - swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, - hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) - { __hm1.swap(__hm2); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Specialization of insert_iterator so that it will work for hash_map - // and hash_multimap. - template - class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, - _EqKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> - _Container; - _Container* container; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() { return *this; } - - insert_iterator<_Container>& - operator++(int) - { return *this; } - }; - - template - class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, - _EqKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> - _Container; - _Container* container; - typename _Container::iterator iter; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() - { return *this; } - - insert_iterator<_Container>& - operator++(int) - { return *this; } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/hash_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/hash_set deleted file mode 100644 index 242cca194..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/hash_set +++ /dev/null @@ -1,567 +0,0 @@ -// Hashing set implementation -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 1996 - * 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. - * - * - * 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. - * - */ - -/** @file backward/hash_set - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _BACKWARD_HASH_SET -#define _BACKWARD_HASH_SET 1 - -#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH -#include "backward_warning.h" -#endif - -#include -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::equal_to; - using std::allocator; - using std::pair; - using std::_Identity; - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Value>, - class _Alloc = allocator<_Value> > - class hash_set - { - // concept requirements - __glibcxx_class_requires(_Value, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) - - private: - typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, - _EqualKey, _Alloc> _Ht; - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Alloc::pointer pointer; - typedef typename _Alloc::const_pointer const_pointer; - typedef typename _Alloc::reference reference; - typedef typename _Alloc::const_reference const_reference; - - typedef typename _Ht::const_iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_set() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_set(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_set(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_set(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_unique(__f, __l); } - - template - hash_set(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_unique(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_set& __hs) - { _M_ht.swap(__hs._M_ht); } - - template - friend bool - operator==(const hash_set<_Val, _HF, _EqK, _Al>&, - const hash_set<_Val, _HF, _EqK, _Al>&); - - iterator - begin() const - { return _M_ht.begin(); } - - iterator - end() const - { return _M_ht.end(); } - - pair - insert(const value_type& __obj) - { - pair __p = _M_ht.insert_unique(__obj); - return pair(__p.first, __p.second); - } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_unique(__f, __l); } - - pair - insert_noresize(const value_type& __obj) - { - pair __p - = _M_ht.insert_unique_noresize(__obj); - return pair(__p.first, __p.second); - } - - iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - {return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return __hs1._M_ht == __hs2._M_ht; } - - template - inline bool - operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return !(__hs1 == __hs2); } - - template - inline void - swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { __hs1.swap(__hs2); } - - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template, - class _EqualKey = equal_to<_Value>, - class _Alloc = allocator<_Value> > - class hash_multiset - { - // concept requirements - __glibcxx_class_requires(_Value, _SGIAssignableConcept) - __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) - __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) - - private: - typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, - _EqualKey, _Alloc> _Ht; - _Ht _M_ht; - - public: - typedef typename _Ht::key_type key_type; - typedef typename _Ht::value_type value_type; - typedef typename _Ht::hasher hasher; - typedef typename _Ht::key_equal key_equal; - - typedef typename _Ht::size_type size_type; - typedef typename _Ht::difference_type difference_type; - typedef typename _Alloc::pointer pointer; - typedef typename _Alloc::const_pointer const_pointer; - typedef typename _Alloc::reference reference; - typedef typename _Alloc::const_reference const_reference; - - typedef typename _Ht::const_iterator iterator; - typedef typename _Ht::const_iterator const_iterator; - - typedef typename _Ht::allocator_type allocator_type; - - hasher - hash_funct() const - { return _M_ht.hash_funct(); } - - key_equal - key_eq() const - { return _M_ht.key_eq(); } - - allocator_type - get_allocator() const - { return _M_ht.get_allocator(); } - - hash_multiset() - : _M_ht(100, hasher(), key_equal(), allocator_type()) {} - - explicit - hash_multiset(size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} - - hash_multiset(size_type __n, const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) {} - - hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) {} - - template - hash_multiset(_InputIterator __f, _InputIterator __l) - : _M_ht(100, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) - : _M_ht(__n, hasher(), key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf) - : _M_ht(__n, __hf, key_equal(), allocator_type()) - { _M_ht.insert_equal(__f, __l); } - - template - hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, - const hasher& __hf, const key_equal& __eql, - const allocator_type& __a = allocator_type()) - : _M_ht(__n, __hf, __eql, __a) - { _M_ht.insert_equal(__f, __l); } - - size_type - size() const - { return _M_ht.size(); } - - size_type - max_size() const - { return _M_ht.max_size(); } - - bool - empty() const - { return _M_ht.empty(); } - - void - swap(hash_multiset& hs) - { _M_ht.swap(hs._M_ht); } - - template - friend bool - operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&, - const hash_multiset<_Val, _HF, _EqK, _Al>&); - - iterator - begin() const - { return _M_ht.begin(); } - - iterator - end() const - { return _M_ht.end(); } - - iterator - insert(const value_type& __obj) - { return _M_ht.insert_equal(__obj); } - - template - void - insert(_InputIterator __f, _InputIterator __l) - { _M_ht.insert_equal(__f,__l); } - - iterator - insert_noresize(const value_type& __obj) - { return _M_ht.insert_equal_noresize(__obj); } - - iterator - find(const key_type& __key) const - { return _M_ht.find(__key); } - - size_type - count(const key_type& __key) const - { return _M_ht.count(__key); } - - pair - equal_range(const key_type& __key) const - { return _M_ht.equal_range(__key); } - - size_type - erase(const key_type& __key) - { return _M_ht.erase(__key); } - - void - erase(iterator __it) - { _M_ht.erase(__it); } - - void - erase(iterator __f, iterator __l) - { _M_ht.erase(__f, __l); } - - void - clear() - { _M_ht.clear(); } - - void - resize(size_type __hint) - { _M_ht.resize(__hint); } - - size_type - bucket_count() const - { return _M_ht.bucket_count(); } - - size_type - max_bucket_count() const - { return _M_ht.max_bucket_count(); } - - size_type - elems_in_bucket(size_type __n) const - { return _M_ht.elems_in_bucket(__n); } - }; - - template - inline bool - operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return __hs1._M_ht == __hs2._M_ht; } - - template - inline bool - operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { return !(__hs1 == __hs2); } - - template - inline void - swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, - hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) - { __hs1.swap(__hs2); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Specialization of insert_iterator so that it will work for hash_set - // and hash_multiset. - template - class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn, - _EqualKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> - _Container; - _Container* container; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() - { return *this; } - - insert_iterator<_Container>& - operator++(int) - { return *this; } - }; - - template - class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn, - _EqualKey, _Alloc> > - { - protected: - typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> - _Container; - _Container* container; - typename _Container::iterator iter; - - public: - typedef _Container container_type; - typedef output_iterator_tag iterator_category; - typedef void value_type; - typedef void difference_type; - typedef void pointer; - typedef void reference; - - insert_iterator(_Container& __x) - : container(&__x) {} - - insert_iterator(_Container& __x, typename _Container::iterator) - : container(&__x) {} - - insert_iterator<_Container>& - operator=(const typename _Container::value_type& __value) - { - container->insert(__value); - return *this; - } - - insert_iterator<_Container>& - operator*() - { return *this; } - - insert_iterator<_Container>& - operator++() - { return *this; } - - insert_iterator<_Container>& - operator++(int) { return *this; } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/iterator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/iterator deleted file mode 100644 index e00cc4495..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/iterator +++ /dev/null @@ -1,116 +0,0 @@ -// HP/SGI iterator extensions -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * Copyright (c) 1994 - * Hewlett-Packard Company - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Hewlett-Packard Company makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * - * Copyright (c) 1996-1998 - * Silicon Graphics Computer Systems, Inc. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. Silicon Graphics makes no - * representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - */ - -/** @file ext/iterator - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _EXT_ITERATOR -#define _EXT_ITERATOR 1 - -#pragma GCC system_header - -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // There are two signatures for distance. In addition to the one - // taking two iterators and returning a result, there is another - // taking two iterators and a reference-to-result variable, and - // returning nothing. The latter seems to be an SGI extension. - // -- pedwards - template - inline void - __distance(_InputIterator __first, _InputIterator __last, - _Distance& __n, std::input_iterator_tag) - { - // concept requirements - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) - while (__first != __last) - { - ++__first; - ++__n; - } - } - - template - inline void - __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, - _Distance& __n, std::random_access_iterator_tag) - { - // concept requirements - __glibcxx_function_requires(_RandomAccessIteratorConcept< - _RandomAccessIterator>) - __n += __last - __first; - } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - inline void - distance(_InputIterator __first, _InputIterator __last, - _Distance& __n) - { - // concept requirements -- taken care of in __distance - __distance(__first, __last, __n, std::__iterator_category(__first)); - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/memory deleted file mode 100644 index fd3c18bd9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/memory +++ /dev/null @@ -1,197 +0,0 @@ -// Memory extensions -*- C++ -*- - -// Copyright (C) 2002-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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 - * 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 ext/memory - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _EXT_MEMORY -#define _EXT_MEMORY 1 - -#pragma GCC system_header - -#include -#include - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - using std::ptrdiff_t; - using std::pair; - using std::__iterator_category; - using std::_Temporary_buffer; - - template - pair<_InputIter, _ForwardIter> - __uninitialized_copy_n(_InputIter __first, _Size __count, - _ForwardIter __result, std::input_iterator_tag) - { - _ForwardIter __cur = __result; - __try - { - for (; __count > 0 ; --__count, ++__first, ++__cur) - std::_Construct(&*__cur, *__first); - return pair<_InputIter, _ForwardIter>(__first, __cur); - } - __catch(...) - { - std::_Destroy(__result, __cur); - __throw_exception_again; - } - } - - template - inline pair<_RandomAccessIter, _ForwardIter> - __uninitialized_copy_n(_RandomAccessIter __first, _Size __count, - _ForwardIter __result, - std::random_access_iterator_tag) - { - _RandomAccessIter __last = __first + __count; - return (pair<_RandomAccessIter, _ForwardIter> - (__last, std::uninitialized_copy(__first, __last, __result))); - } - - template - inline pair<_InputIter, _ForwardIter> - __uninitialized_copy_n(_InputIter __first, _Size __count, - _ForwardIter __result) - { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, - __iterator_category(__first)); } - - /** - * @brief Copies the range [first,last) into result. - * @param __first An input iterator. - * @param __count Length - * @param __result An output iterator. - * @return __result + (__first + __count) - * @ingroup SGIextensions - * - * Like copy(), but does not require an initialized output range. - */ - template - inline pair<_InputIter, _ForwardIter> - uninitialized_copy_n(_InputIter __first, _Size __count, - _ForwardIter __result) - { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, - __iterator_category(__first)); } - - - // An alternative version of uninitialized_copy_n that constructs - // and destroys objects with a user-provided allocator. - template - pair<_InputIter, _ForwardIter> - __uninitialized_copy_n_a(_InputIter __first, _Size __count, - _ForwardIter __result, - _Allocator __alloc) - { - _ForwardIter __cur = __result; - __try - { - for (; __count > 0 ; --__count, ++__first, ++__cur) - __alloc.construct(&*__cur, *__first); - return pair<_InputIter, _ForwardIter>(__first, __cur); - } - __catch(...) - { - std::_Destroy(__result, __cur, __alloc); - __throw_exception_again; - } - } - - template - inline pair<_InputIter, _ForwardIter> - __uninitialized_copy_n_a(_InputIter __first, _Size __count, - _ForwardIter __result, - std::allocator<_Tp>) - { - return __gnu_cxx::uninitialized_copy_n(__first, __count, __result); - } - - /** - * This class provides similar behavior and semantics of the standard - * functions get_temporary_buffer() and return_temporary_buffer(), but - * encapsulated in a type vaguely resembling a standard container. - * - * By default, a temporary_buffer stores space for objects of - * whatever type the Iter iterator points to. It is constructed from a - * typical [first,last) range, and provides the begin(), end(), size() - * functions, as well as requested_size(). For non-trivial types, copies - * of *first will be used to initialize the storage. - * - * @c malloc is used to obtain underlying storage. - * - * Like get_temporary_buffer(), not all the requested memory may be - * available. Ideally, the created buffer will be large enough to hold a - * copy of [first,last), but if size() is less than requested_size(), - * then this didn't happen. - * - * @ingroup SGIextensions - */ - template ::value_type > - struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp> - { - /// Requests storage large enough to hold a copy of [first,last). - temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) - : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) { } - - /// Destroys objects and frees storage. - ~temporary_buffer() { } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/numeric deleted file mode 100644 index e8e8f86ae..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/numeric +++ /dev/null @@ -1,152 +0,0 @@ -// Numeric extensions -*- C++ -*- - -// Copyright (C) 2002-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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 - * 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 ext/numeric - * This file is a GNU extension to the Standard C++ Library (possibly - * containing extensions from the HP/SGI STL subset). - */ - -#ifndef _EXT_NUMERIC -#define _EXT_NUMERIC 1 - -#pragma GCC system_header - -#include -#include - -#include // For identity_element - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Returns __x ** __n, where __n >= 0. _Note that "multiplication" - // is required to be associative, but not necessarily commutative. - template - _Tp - __power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op) - { - if (__n == 0) - return identity_element(__monoid_op); - else - { - while ((__n & 1) == 0) - { - __n >>= 1; - __x = __monoid_op(__x, __x); - } - - _Tp __result = __x; - __n >>= 1; - while (__n != 0) - { - __x = __monoid_op(__x, __x); - if ((__n & 1) != 0) - __result = __monoid_op(__result, __x); - __n >>= 1; - } - return __result; - } - } - - template - inline _Tp - __power(_Tp __x, _Integer __n) - { return __power(__x, __n, std::multiplies<_Tp>()); } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - // Alias for the internal name __power. Note that power is an extension, - // not part of the C++ standard. - template - inline _Tp - power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op) - { return __power(__x, __n, __monoid_op); } - - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - template - inline _Tp - power(_Tp __x, _Integer __n) - { return __power(__x, __n); } - -#if __cplusplus >= 201103L - using std::iota; -#else - /** - * This is an SGI extension. - * @ingroup SGIextensions - * @doctodo - */ - // iota is not part of the C++ standard. It is an extension. - template - void - iota(_ForwardIter __first, _ForwardIter __last, _Tp __value) - { - // concept requirements - __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>) - __glibcxx_function_requires(_ConvertibleConcept<_Tp, - typename std::iterator_traits<_ForwardIter>::value_type>) - - while (__first != __last) - *__first++ = __value++; - } -#endif // C++11 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 8f9a0e2fb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,218 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_allocator -PB_DS_CLASS_C_DEC::s_node_allocator; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_BIN_TREE_NAME() : m_p_head(s_node_allocator.allocate(1)), m_size(0) -{ - initialize(); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_BIN_TREE_NAME(const Cmp_Fn& r_cmp_fn) : - Cmp_Fn(r_cmp_fn), m_p_head(s_node_allocator.allocate(1)), m_size(0) -{ - initialize(); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_BIN_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : - Cmp_Fn(r_cmp_fn), - node_update(r_node_update), - m_p_head(s_node_allocator.allocate(1)), - m_size(0) -{ - initialize(); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_BIN_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(other), -#endif -#ifdef PB_DS_TREE_TRACE - PB_DS_TREE_TRACE_BASE_C_DEC(other), -#endif - Cmp_Fn(other), - node_update(other), - m_p_head(s_node_allocator.allocate(1)), - m_size(0) -{ - initialize(); - m_size = other.m_size; - PB_DS_STRUCT_ONLY_ASSERT_VALID(other) - - __try - { - m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent); - if (m_p_head->m_p_parent != 0) - m_p_head->m_p_parent->m_p_parent = m_p_head; - m_size = other.m_size; - initialize_min_max(); - } - __catch(...) - { - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - s_node_allocator.deallocate(m_p_head, 1); - __throw_exception_again; - } - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - PB_DS_STRUCT_ONLY_ASSERT_VALID(other) - value_swap(other); - std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - PB_DS_STRUCT_ONLY_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_p_head, other.m_p_head); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_BIN_TREE_NAME() -{ - clear(); - s_node_allocator.deallocate(m_p_head, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - m_p_head->m_p_parent = 0; - m_p_head->m_p_left = m_p_head; - m_p_head->m_p_right = m_p_head; - m_size = 0; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -recursive_copy_node(const node_pointer p_nd) -{ - if (p_nd == 0) - return (0); - - node_pointer p_ret = s_node_allocator.allocate(1); - __try - { - new (p_ret) node(*p_nd); - } - __catch(...) - { - s_node_allocator.deallocate(p_ret, 1); - __throw_exception_again; - } - - p_ret->m_p_left = p_ret->m_p_right = 0; - - __try - { - p_ret->m_p_left = recursive_copy_node(p_nd->m_p_left); - p_ret->m_p_right = recursive_copy_node(p_nd->m_p_right); - } - __catch(...) - { - clear_imp(p_ret); - __throw_exception_again; - } - - if (p_ret->m_p_left != 0) - p_ret->m_p_left->m_p_parent = p_ret; - - if (p_ret->m_p_right != 0) - p_ret->m_p_right->m_p_parent = p_ret; - - PB_DS_ASSERT_NODE_CONSISTENT(p_ret) - return p_ret; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize_min_max() -{ - if (m_p_head->m_p_parent == 0) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - return; - } - - { - node_pointer p_min = m_p_head->m_p_parent; - while (p_min->m_p_left != 0) - p_min = p_min->m_p_left; - m_p_head->m_p_left = p_min; - } - - { - node_pointer p_max = m_p_head->m_p_parent; - while (p_max->m_p_right != 0) - p_max = p_max->m_p_right; - m_p_head->m_p_right = p_max; - } -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp deleted file mode 100644 index d3c433e67..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp +++ /dev/null @@ -1,277 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/debug_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - structure_only_assert_valid(__file, __line); - assert_consistent_with_debug_base(__file, __line); - assert_size(__file, __line); - assert_iterators(__file, __line); - if (m_p_head->m_p_parent == 0) - { - PB_DS_DEBUG_VERIFY(m_size == 0); - } - else - { - PB_DS_DEBUG_VERIFY(m_size > 0); - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -structure_only_assert_valid(const char* __file, int __line) const -{ - PB_DS_DEBUG_VERIFY(m_p_head != 0); - if (m_p_head->m_p_parent == 0) - { - PB_DS_DEBUG_VERIFY(m_p_head->m_p_left == m_p_head); - PB_DS_DEBUG_VERIFY(m_p_head->m_p_right == m_p_head); - } - else - { - PB_DS_DEBUG_VERIFY(m_p_head->m_p_parent->m_p_parent == m_p_head); - PB_DS_DEBUG_VERIFY(m_p_head->m_p_left != m_p_head); - PB_DS_DEBUG_VERIFY(m_p_head->m_p_right != m_p_head); - } - - if (m_p_head->m_p_parent != 0) - assert_node_consistent(m_p_head->m_p_parent, __file, __line); - assert_min(__file, __line); - assert_max(__file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const node_pointer p_nd, - const char* __file, int __line) const -{ - assert_node_consistent_(p_nd, __file, __line); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_consistent_t -PB_DS_CLASS_C_DEC:: -assert_node_consistent_(const node_pointer p_nd, - const char* __file, int __line) const -{ - if (p_nd == 0) - return (std::make_pair((const_pointer)0,(const_pointer)0)); - - assert_node_consistent_with_left(p_nd, __file, __line); - assert_node_consistent_with_right(p_nd, __file, __line); - - const std::pair - l_range = assert_node_consistent_(p_nd->m_p_left, __file, __line); - - if (l_range.second != 0) - PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(*l_range.second), - PB_DS_V2F(p_nd->m_value))); - - const std::pair - r_range = assert_node_consistent_(p_nd->m_p_right, __file, __line); - - if (r_range.first != 0) - PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(*r_range.first))); - - return std::make_pair((l_range.first != 0) ? l_range.first : &p_nd->m_value, - (r_range.second != 0)? r_range.second : &p_nd->m_value); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent_with_left(const node_pointer p_nd, - const char* __file, int __line) const -{ - if (p_nd->m_p_left == 0) - return; - PB_DS_DEBUG_VERIFY(p_nd->m_p_left->m_p_parent == p_nd); - PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(p_nd->m_p_left->m_value))); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent_with_right(const node_pointer p_nd, - const char* __file, int __line) const -{ - if (p_nd->m_p_right == 0) - return; - PB_DS_DEBUG_VERIFY(p_nd->m_p_right->m_p_parent == p_nd); - PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_p_right->m_value), - PB_DS_V2F(p_nd->m_value))); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_min(const char* __file, int __line) const -{ - assert_min_imp(m_p_head->m_p_parent, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_min_imp(const node_pointer p_nd, const char* __file, int __line) const -{ - if (p_nd == 0) - { - PB_DS_DEBUG_VERIFY(m_p_head->m_p_left == m_p_head); - return; - } - - if (p_nd->m_p_left == 0) - { - PB_DS_DEBUG_VERIFY(p_nd == m_p_head->m_p_left); - return; - } - assert_min_imp(p_nd->m_p_left, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max(const char* __file, int __line) const -{ - assert_max_imp(m_p_head->m_p_parent, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max_imp(const node_pointer p_nd, - const char* __file, int __line) const -{ - if (p_nd == 0) - { - PB_DS_DEBUG_VERIFY(m_p_head->m_p_right == m_p_head); - return; - } - - if (p_nd->m_p_right == 0) - { - PB_DS_DEBUG_VERIFY(p_nd == m_p_head->m_p_right); - return; - } - - assert_max_imp(p_nd->m_p_right, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators(const char* __file, int __line) const -{ - size_type iterated_num = 0; - const_iterator prev_it = end(); - for (const_iterator it = begin(); it != end(); ++it) - { - ++iterated_num; - PB_DS_DEBUG_VERIFY(lower_bound(PB_DS_V2F(*it)).m_p_nd == it.m_p_nd); - const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it)); - --upper_bound_it; - PB_DS_DEBUG_VERIFY(upper_bound_it.m_p_nd == it.m_p_nd); - - if (prev_it != end()) - PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(*prev_it), - PB_DS_V2F(*it))); - prev_it = it; - } - - PB_DS_DEBUG_VERIFY(iterated_num == m_size); - size_type reverse_iterated_num = 0; - const_reverse_iterator reverse_prev_it = rend(); - for (const_reverse_iterator reverse_it = rbegin(); reverse_it != rend(); - ++reverse_it) - { - ++reverse_iterated_num; - PB_DS_DEBUG_VERIFY(lower_bound( - PB_DS_V2F(*reverse_it)).m_p_nd == reverse_it.m_p_nd); - - const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*reverse_it)); - --upper_bound_it; - PB_DS_DEBUG_VERIFY(upper_bound_it.m_p_nd == reverse_it.m_p_nd); - if (reverse_prev_it != rend()) - PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(PB_DS_V2F(*reverse_prev_it), - PB_DS_V2F(*reverse_it))); - reverse_prev_it = reverse_it; - } - PB_DS_DEBUG_VERIFY(reverse_iterated_num == m_size); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_consistent_with_debug_base(const char* __file, int __line) const -{ - debug_base::check_size(m_size, __file, __line); - assert_consistent_with_debug_base(m_p_head->m_p_parent, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_consistent_with_debug_base(const node_pointer p_nd, - const char* __file, int __line) const -{ - if (p_nd == 0) - return; - debug_base::check_key_exists(PB_DS_V2F(p_nd->m_value), __file, __line); - assert_consistent_with_debug_base(p_nd->m_p_left, __file, __line); - assert_consistent_with_debug_base(p_nd->m_p_right, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_size(const char* __file, int __line) const -{ PB_DS_DEBUG_VERIFY(recursive_count(m_p_head->m_p_parent) == m_size); } - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp deleted file mode 100644 index 7063e6318..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/erase_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_z) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_z->m_value));) - p_z->~node(); - s_node_allocator.deallocate(p_z, 1); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_node(node_pointer p_z) -{ - if (m_size == 1) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - return; - } - - if (m_p_head->m_p_left == p_z) - { - iterator it(p_z); - ++it; - m_p_head->m_p_left = it.m_p_nd; - } - else if (m_p_head->m_p_right == p_z) - { - iterator it(p_z); - --it; - m_p_head->m_p_right = it.m_p_nd; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - clear_imp(m_p_head->m_p_parent); - m_size = 0; - initialize(); - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd == 0) - return; - - clear_imp(p_nd->m_p_left); - clear_imp(p_nd->m_p_right); - p_nd->~node(); - s_node_allocator.deallocate(p_nd, 1); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp deleted file mode 100644 index 71962935d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp +++ /dev/null @@ -1,171 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/find_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(key_const_reference r_key) const -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != 0) - if (Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - p_nd = p_nd->m_p_right; - else - { - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - return iterator(p_pot); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(key_const_reference r_key) -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != 0) - if (Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - p_nd = p_nd->m_p_right; - else - { - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - return iterator(p_pot); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(key_const_reference r_key) const -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != 0) - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - { - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - return const_iterator(p_pot); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(key_const_reference r_key) -{ - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != 0) - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - { - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - return point_iterator(p_pot); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) -{ - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != 0) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - node_pointer ret = p_pot; - if (p_pot != m_p_head) - { - const bool __cmp = Cmp_Fn::operator()(r_key, PB_DS_V2F(p_pot->m_value)); - if (__cmp) - ret = m_p_head; - } - return point_iterator(ret); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) const -{ - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - node_pointer p_pot = m_p_head; - node_pointer p_nd = m_p_head->m_p_parent; - - while (p_nd != 0) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - node_pointer ret = p_pot; - if (p_pot != m_p_head) - { - const bool __cmp = Cmp_Fn::operator()(r_key, PB_DS_V2F(p_pot->m_value)); - if (__cmp) - ret = m_p_head; - } - return point_const_iterator(ret); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp deleted file mode 100644 index c71a94105..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/info_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ - return (m_size == 0); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ - return (m_size); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ - return (s_node_allocator.max_size()); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp deleted file mode 100644 index 9d9a64406..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp +++ /dev/null @@ -1,180 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/insert_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert_leaf(const_reference r_value) -{ - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - - if (m_size == 0) - return std::make_pair(insert_imp_empty(r_value), - true); - - node_pointer p_nd = m_p_head->m_p_parent; - node_pointer p_pot = m_p_head; - - while (p_nd != 0) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(r_value))) - { - p_pot = p_nd; - - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - if (p_pot == m_p_head) - return std::make_pair(insert_leaf_new(r_value, m_p_head->m_p_right, false), - true); - - if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), - PB_DS_V2F(p_pot->m_value))) - { - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(r_value)) - return std::make_pair(p_pot, false); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(PB_DS_V2F(r_value)) - - p_nd = p_pot->m_p_left; - if (p_nd == 0) - return std::make_pair(insert_leaf_new(r_value, p_pot, true), - true); - - while (p_nd->m_p_right != 0) - p_nd = p_nd->m_p_right; - - return std::make_pair(insert_leaf_new(r_value, p_nd, false), - true); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd) -{ - node_pointer p_new_nd = - get_new_node_for_leaf_insert(r_value, - traits_base::m_no_throw_copies_indicator); - - if (left_nd) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == 0); - _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(r_value), - PB_DS_V2F(p_nd->m_value))); - - p_nd->m_p_left = p_new_nd; - if (m_p_head->m_p_left == p_nd) - m_p_head->m_p_left = p_new_nd; - } - else - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right == 0); - _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), - PB_DS_V2F(r_value))); - - p_nd->m_p_right = p_new_nd; - if (m_p_head->m_p_right == p_nd) - m_p_head->m_p_right = p_new_nd; - } - - p_new_nd->m_p_parent = p_nd; - p_new_nd->m_p_left = p_new_nd->m_p_right = 0; - PB_DS_ASSERT_NODE_CONSISTENT(p_nd) - - update_to_top(p_new_nd, (node_update* )this); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value));) - return iterator(p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -insert_imp_empty(const_reference r_value) -{ - node_pointer p_new_node = - get_new_node_for_leaf_insert(r_value, traits_base::m_no_throw_copies_indicator); - - m_p_head->m_p_left = m_p_head->m_p_right = - m_p_head->m_p_parent = p_new_node; - - p_new_node->m_p_parent = m_p_head; - p_new_node->m_p_left = p_new_node->m_p_right = 0; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value));) - - update_to_top(m_p_head->m_p_parent, (node_update*)this); - return iterator(p_new_node); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_leaf_insert(const_reference r_val, false_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - cond_dealtor_t cond(p_new_nd); - - new (const_cast(static_cast(&p_new_nd->m_value))) - typename node::value_type(r_val); - - cond.set_no_action(); - p_new_nd->m_p_left = p_new_nd->m_p_right = 0; - ++m_size; - return p_new_nd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_leaf_insert(const_reference r_val, true_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - new (const_cast(static_cast(&p_new_nd->m_value))) - typename node::value_type(r_val); - - p_new_nd->m_p_left = p_new_nd->m_p_right = 0; - ++m_size; - return p_new_nd; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp deleted file mode 100644 index 485f088b7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp +++ /dev/null @@ -1,136 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/iterators_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - return (iterator(m_p_head->m_p_left)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - return (const_iterator(m_p_head->m_p_left)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ - return (iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return (const_iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() const -{ - return (const_reverse_iterator(m_p_head->m_p_right)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() -{ - return (reverse_iterator(m_p_head->m_p_right)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() -{ - return (reverse_iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() const -{ - return (const_reverse_iterator(m_p_head)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -node_begin() const -{ - return (node_const_iterator(m_p_head->m_p_parent)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() -{ - return (node_iterator(m_p_head->m_p_parent)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -node_end() const -{ - return (node_const_iterator(0)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_end() -{ - return (node_iterator(0)); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp deleted file mode 100644 index c5c7dffc6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp +++ /dev/null @@ -1,189 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/node_iterators.hpp - * Contains an implementation class for bin_search_tree_. - */ - -#ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP -#define PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP - -#include - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC \ - bin_search_tree_const_node_it_ - - /// Const node iterator. - template - class bin_search_tree_const_node_it_ - { - private: - typedef - typename _Alloc::template rebind< - Node>::other::pointer - node_pointer; - - public: - /// Category. - typedef trivial_iterator_tag iterator_category; - - /// Difference type. - typedef trivial_iterator_difference_type difference_type; - - /// Iterator's value type. - typedef Const_Iterator value_type; - - /// Iterator's reference type. - typedef Const_Iterator reference; - - /// Iterator's __const reference type. - typedef Const_Iterator const_reference; - - /// Metadata type. - typedef typename Node::metadata_type metadata_type; - - /// Const metadata reference type. - typedef - typename _Alloc::template rebind::other::const_reference - metadata_const_reference; - - - bin_search_tree_const_node_it_(const node_pointer p_nd = 0) - : m_p_nd(const_cast(p_nd)) - { } - - /// Access. - const_reference - operator*() const - { return Const_Iterator(m_p_nd); } - - /// Metadata access. - metadata_const_reference - get_metadata() const - { return m_p_nd->get_metadata(); } - - /// Returns the __const node iterator associated with the left node. - PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - get_l_child() const - { return PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_left); } - - /// Returns the __const node iterator associated with the right node. - PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - get_r_child() const - { return PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_right); } - - /// Compares to a different iterator object. - bool - operator==(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const - { return m_p_nd == other.m_p_nd; } - - /// Compares (negatively) to a different iterator object. - bool - operator!=(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const - { return m_p_nd != other.m_p_nd; } - - node_pointer m_p_nd; - }; - -#define PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC \ - bin_search_tree_node_it_ - - /// Node iterator. - template - class bin_search_tree_node_it_ - : public PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC - { - private: - typedef - typename _Alloc::template rebind< - Node>::other::pointer - node_pointer; - - public: - /// Iterator's value type. - typedef Iterator value_type; - - /// Iterator's reference type. - typedef Iterator reference; - - /// Iterator's __const reference type. - typedef Iterator const_reference; - - inline - bin_search_tree_node_it_(const node_pointer p_nd = 0) - : PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(const_cast(p_nd)) - { } - - /// Access. - Iterator - operator*() const - { return Iterator(PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd); } - - /// Returns the node iterator associated with the left node. - PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC - get_l_child() const - { - return PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC( - PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_left); - } - - /// Returns the node iterator associated with the right node. - PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC - get_r_child() const - { - return PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC( - PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_right); - } - - }; - -#undef PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC -#undef PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp deleted file mode 100644 index e721ae996..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/policy_access_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() -{ return (*this); } - -PB_DS_CLASS_T_DEC -const Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() const -{ return (*this); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp deleted file mode 100644 index 414ee23d9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/r_erase_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_z) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value));) - p_z->~node(); - s_node_allocator.deallocate(p_z, 1); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_node(node_pointer p_z) -{ - if (m_size == 1) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - return; - } - - if (m_p_head->m_p_left == p_z) - { - iterator it(p_z); - ++it; - m_p_head->m_p_left = it.m_p_nd; - } - else if (m_p_head->m_p_right == p_z) - { - iterator it(p_z); - --it; - m_p_head->m_p_right = it.m_p_nd; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - clear_imp(m_p_head->m_p_parent); - m_size = 0; - initialize(); - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd == 0) - return; - - clear_imp(p_nd->m_p_left); - clear_imp(p_nd->m_p_right); - p_nd->~Node(); - s_node_allocator.deallocate(p_nd, 1); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp deleted file mode 100644 index 66848f6ba..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp +++ /dev/null @@ -1,155 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/rotate_fn_imps.hpp - * Contains imps for rotating nodes. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_left(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_right; - - p_x->m_p_right = p_y->m_p_left; - - if (p_y->m_p_left != 0) - p_y->m_p_left->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_left) - p_x->m_p_parent->m_p_left = p_y; - else - p_x->m_p_parent->m_p_right = p_y; - - p_y->m_p_left = p_x; - p_x->m_p_parent = p_y; - - PB_DS_ASSERT_NODE_CONSISTENT(p_x) - PB_DS_ASSERT_NODE_CONSISTENT(p_y) - - apply_update(p_x, (node_update* )this); - apply_update(p_x->m_p_parent, (node_update* )this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_right(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_left; - - p_x->m_p_left = p_y->m_p_right; - - if (p_y->m_p_right != 0) - p_y->m_p_right->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_right) - p_x->m_p_parent->m_p_right = p_y; - else - p_x->m_p_parent->m_p_left = p_y; - - p_y->m_p_right = p_x; - p_x->m_p_parent = p_y; - - PB_DS_ASSERT_NODE_CONSISTENT(p_x) - PB_DS_ASSERT_NODE_CONSISTENT(p_y) - - apply_update(p_x, (node_update* )this); - apply_update(p_x->m_p_parent, (node_update* )this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_parent(node_pointer p_nd) -{ - node_pointer p_parent = p_nd->m_p_parent; - - if (p_nd == p_parent->m_p_left) - rotate_right(p_parent); - else - rotate_left(p_parent); - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || - p_nd->m_p_right == p_parent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/) -{ } - -PB_DS_CLASS_T_DEC -template -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer p_nd, Node_Update_* /*p_update*/) -{ - node_update::operator()(node_iterator(p_nd), - node_const_iterator(static_cast(0))); -} - -PB_DS_CLASS_T_DEC -template -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer p_nd, Node_Update_* p_update) -{ - while (p_nd != m_p_head) - { - apply_update(p_nd, p_update); - - p_nd = p_nd->m_p_parent; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/) -{ } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp deleted file mode 100644 index 0fc22a6c5..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/split_join_fn_imps.hpp - * Contains an implementation class for bin_search_tree_. - */ - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -join_prep(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - if (other.m_size == 0) - return false; - - if (m_size == 0) - { - value_swap(other); - return false; - } - - const bool greater = - Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value), - PB_DS_V2F(other.m_p_head->m_p_left->m_value)); - - const bool lesser = - Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value), - PB_DS_V2F(m_p_head->m_p_left->m_value)); - - if (!greater && !lesser) - __throw_join_error(); - - if (lesser) - value_swap(other); - - m_size += other.m_size; - _GLIBCXX_DEBUG_ONLY(debug_base::join(other);) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -join_finish(PB_DS_CLASS_C_DEC& other) -{ - initialize_min_max(); - other.initialize(); -} - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -split_prep(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - other.clear(); - - if (m_size == 0) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return false; - } - - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value))) - { - value_swap(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return false; - } - - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value))) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return false; - } - - if (m_size == 1) - { - value_swap(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return false; - } - - _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split_finish(PB_DS_CLASS_C_DEC& other) -{ - other.initialize_min_max(); - other.m_size = std::distance(other.begin(), other.end()); - m_size -= other.m_size; - initialize_min_max(); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -recursive_count(node_pointer p) const -{ - if (p == 0) - return 0; - return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/traits.hpp deleted file mode 100644 index b54c543cc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/traits.hpp +++ /dev/null @@ -1,236 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file bin_search_tree_/traits.hpp - * Contains an implementation for bin_search_tree_. - */ - -#ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Binary search tree traits, primary template - /// @ingroup traits - template - class Node_Update, - class Node, - typename _Alloc> - struct bin_search_tree_traits - { - private: - typedef types_traits type_traits; - - public: - typedef Node node; - - typedef - bin_search_tree_const_it_< - typename _Alloc::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - true, - _Alloc> - point_const_iterator; - - typedef - bin_search_tree_it_< - typename _Alloc::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - true, - _Alloc> - point_iterator; - - typedef - bin_search_tree_const_it_< - typename _Alloc::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - false, - _Alloc> - const_reverse_iterator; - - typedef - bin_search_tree_it_< - typename _Alloc::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - false, - _Alloc> - reverse_iterator; - - /// This is an iterator to an iterator: it iterates over nodes, - /// and de-referencing it returns one of the tree's iterators. - typedef - bin_search_tree_const_node_it_< - Node, - point_const_iterator, - point_iterator, - _Alloc> - node_const_iterator; - - typedef - bin_search_tree_node_it_< - Node, - point_const_iterator, - point_iterator, - _Alloc> - node_iterator; - - typedef - Node_Update< - node_const_iterator, - node_iterator, - Cmp_Fn, - _Alloc> - node_update; - - typedef - __gnu_pbds::null_node_update< - node_const_iterator, - node_iterator, - Cmp_Fn, - _Alloc>* - null_node_update_pointer; - }; - - /// Specialization. - /// @ingroup traits - template - class Node_Update, - class Node, - typename _Alloc> - struct - bin_search_tree_traits - { - private: - typedef types_traits type_traits; - - public: - typedef Node node; - - typedef - bin_search_tree_const_it_< - typename _Alloc::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - true, - _Alloc> - point_const_iterator; - - typedef point_const_iterator point_iterator; - - typedef - bin_search_tree_const_it_< - typename _Alloc::template rebind< - node>::other::pointer, - typename type_traits::value_type, - typename type_traits::pointer, - typename type_traits::const_pointer, - typename type_traits::reference, - typename type_traits::const_reference, - false, - _Alloc> - const_reverse_iterator; - - typedef const_reverse_iterator reverse_iterator; - - /// This is an iterator to an iterator: it iterates over nodes, - /// and de-referencing it returns one of the tree's iterators. - typedef - bin_search_tree_const_node_it_< - Node, - point_const_iterator, - point_iterator, - _Alloc> - node_const_iterator; - - typedef node_const_iterator node_iterator; - - typedef - Node_Update - node_update; - - typedef - __gnu_pbds::null_node_update< - node_const_iterator, - node_iterator, - Cmp_Fn, - _Alloc>* - null_node_update_pointer; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/const_iterator.hpp deleted file mode 100644 index d2013fba4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/const_iterator.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/const_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP -#define PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_BIN_HEAP_CIT_BASE \ - binary_heap_point_const_iterator_ - - /// Const point-type iterator. - template - class binary_heap_const_iterator_ : public PB_DS_BIN_HEAP_CIT_BASE - { - private: - typedef PB_DS_BIN_HEAP_CIT_BASE base_type; - typedef typename base_type::entry_pointer entry_pointer; - - public: - /// Category. - typedef std::forward_iterator_tag iterator_category; - - /// Difference type. - typedef typename _Alloc::difference_type difference_type; - - /// Iterator's value type. - typedef typename base_type::value_type value_type; - - /// Iterator's pointer type. - typedef typename base_type::pointer pointer; - - /// Iterator's const pointer type. - typedef typename base_type::const_pointer const_pointer; - - /// Iterator's reference type. - typedef typename base_type::reference reference; - - /// Iterator's const reference type. - typedef typename base_type::const_reference const_reference; - - inline - binary_heap_const_iterator_(entry_pointer p_e) : base_type(p_e) - { } - - /// Default constructor. - inline - binary_heap_const_iterator_() - { } - - /// Copy constructor. - inline - binary_heap_const_iterator_(const binary_heap_const_iterator_& other) - : base_type(other) - { } - - /// Compares content to a different iterator object. - inline bool - operator==(const binary_heap_const_iterator_& other) const - { return base_type::m_p_e == other.m_p_e; } - - /// Compares content (negatively) to a different iterator object. - inline bool - operator!=(const binary_heap_const_iterator_& other) const - { return base_type::m_p_e != other.m_p_e; } - - inline binary_heap_const_iterator_& - operator++() - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_e != 0); - inc(); - return *this; - } - - inline binary_heap_const_iterator_ - operator++(int) - { - binary_heap_const_iterator_ ret_it(base_type::m_p_e); - operator++(); - return ret_it; - } - - private: - void - inc() - { ++base_type::m_p_e; } - }; - -#undef PB_DS_BIN_HEAP_CIT_BASE - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index e6c17553e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for binary_heap_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::value_allocator -PB_DS_CLASS_C_DEC::s_value_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::no_throw_copies_t -PB_DS_CLASS_C_DEC::s_no_throw_copies_ind; - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - { - insert_value(*first_it, s_no_throw_copies_ind); - ++first_it; - } - make_heap(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binary_heap() -: m_size(0), m_actual_size(resize_policy::min_size), - m_a_entries(s_entry_allocator.allocate(m_actual_size)) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binary_heap(const Cmp_Fn& r_cmp_fn) -: entry_cmp(r_cmp_fn), m_size(0), m_actual_size(resize_policy::min_size), - m_a_entries(s_entry_allocator.allocate(m_actual_size)) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binary_heap(const PB_DS_CLASS_C_DEC& other) -: entry_cmp(other), resize_policy(other), m_size(0), - m_actual_size(other.m_actual_size), - m_a_entries(s_entry_allocator.allocate(m_actual_size)) -{ - PB_DS_ASSERT_VALID(other) - _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries); - - __try - { - copy_from_range(other.begin(), other.end()); - } - __catch(...) - { - for (size_type i = 0; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - __throw_exception_again; - } - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries); - value_swap(other); - std::swap((entry_cmp&)(*this), (entry_cmp&)other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - std::swap(m_a_entries, other.m_a_entries); - std::swap(m_size, other.m_size); - std::swap(m_actual_size, other.m_actual_size); - static_cast(this)->swap(other); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~binary_heap() -{ - for (size_type i = 0; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp deleted file mode 100644 index 719b2e151..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/debug_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ -#ifdef PB_DS_REGRESSION - s_entry_allocator.check_allocated(m_a_entries, m_actual_size); -#endif - - resize_policy::assert_valid(__file, __line); - PB_DS_DEBUG_VERIFY(m_size <= m_actual_size); - for (size_type i = 0; i < m_size; ++i) - { -#ifdef PB_DS_REGRESSION - s_value_allocator.check_allocated(m_a_entries[i], 1); -#endif - - if (left_child(i) < m_size) - PB_DS_DEBUG_VERIFY(!entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child(i)])); - - PB_DS_DEBUG_VERIFY(parent(left_child(i)) == i); - - if (right_child(i) < m_size) - PB_DS_DEBUG_VERIFY(!entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child(i)])); - - PB_DS_DEBUG_VERIFY(parent(right_child(i)) == i); - } -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp deleted file mode 100644 index 3f11de810..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,208 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/erase_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - for (size_type i = 0; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - - __try - { - const size_type new_size = resize_policy::get_new_size_for_arbitrary(0); - entry_pointer new_entries = s_entry_allocator.allocate(new_size); - resize_policy::notify_arbitrary(new_size); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_actual_size = new_size; - m_a_entries = new_entries; - } - __catch(...) - { } - - m_size = 0; - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_at(entry_pointer a_entries, size_type i, false_type) -{ - a_entries[i]->~value_type(); - s_value_allocator.deallocate(a_entries[i], 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_at(entry_pointer, size_type, true_type) -{ } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -pop() -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!empty()); - - pop_heap(); - erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind); - resize_for_erase_if_needed(); - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - - typedef typename entry_pred::type - pred_t; - - const size_type left = partition(pred_t(pred)); - _GLIBCXX_DEBUG_ASSERT(m_size >= left); - const size_type ersd = m_size - left; - for (size_type i = left; i < m_size; ++i) - erase_at(m_a_entries, i, s_no_throw_copies_ind); - - __try - { - const size_type new_size = - resize_policy::get_new_size_for_arbitrary(left); - - entry_pointer new_entries = s_entry_allocator.allocate(new_size); - std::copy(m_a_entries, m_a_entries + left, new_entries); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_actual_size = new_size; - resize_policy::notify_arbitrary(m_actual_size); - } - __catch(...) - { }; - - m_size = left; - make_heap(); - PB_DS_ASSERT_VALID((*this)) - return ersd; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!empty()); - - const size_type fix_pos = it.m_p_e - m_a_entries; - std::swap(*it.m_p_e, m_a_entries[m_size - 1]); - erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind); - resize_for_erase_if_needed(); - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ASSERT(fix_pos <= m_size); - - if (fix_pos != m_size) - fix(m_a_entries + fix_pos); - - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_for_erase_if_needed() -{ - if (!resize_policy::resize_needed_for_shrink(m_size)) - return; - - __try - { - const size_type new_size = resize_policy::get_new_size_for_shrink(); - entry_pointer new_entries = s_entry_allocator.allocate(new_size); - resize_policy::notify_shrink_resize(); - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - std::copy(m_a_entries, m_a_entries + m_size - 1, new_entries); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_actual_size = new_size; - m_a_entries = new_entries; - } - __catch(...) - { } -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -partition(Pred pred) -{ - size_type left = 0; - size_type right = m_size - 1; - - while (right + 1 != left) - { - _GLIBCXX_DEBUG_ASSERT(left <= m_size); - - if (!pred(m_a_entries[left])) - ++left; - else if (pred(m_a_entries[right])) - --right; - else - { - _GLIBCXX_DEBUG_ASSERT(left < right); - std::swap(m_a_entries[left], m_a_entries[right]); - ++left; - --right; - } - } - - return left; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp deleted file mode 100644 index b4a954045..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/find_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!empty()); - return top_imp(s_no_throw_copies_ind); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top_imp(true_type) const -{ return *m_a_entries; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top_imp(false_type) const -{ return **m_a_entries; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -left_child(size_type i) -{ return i * 2 + 1; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -right_child(size_type i) -{ return i * 2 + 2; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -parent(size_type i) -{ return (i - 1) / 2; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp deleted file mode 100644 index 158c4f87c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/info_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return m_size == 0; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_size; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_entry_allocator.max_size(); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp deleted file mode 100644 index d21fe3c30..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,173 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/insert_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - PB_DS_ASSERT_VALID((*this)) - insert_value(r_val, s_no_throw_copies_ind); - push_heap(); - PB_DS_ASSERT_VALID((*this)) - return point_iterator(m_a_entries); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_value(value_type val, true_type) -{ - resize_for_insert_if_needed(); - m_a_entries[m_size++] = val; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_value(const_reference r_val, false_type) -{ - resize_for_insert_if_needed(); - pointer p_new = s_value_allocator.allocate(1); - cond_dealtor_t cond(p_new); - new (p_new) value_type(r_val); - cond.set_no_action(); - m_a_entries[m_size++] = p_new; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_for_insert_if_needed() -{ - if (!resize_policy::resize_needed_for_grow(m_size)) - { - _GLIBCXX_DEBUG_ASSERT(m_size < m_actual_size); - return; - } - - const size_type new_size = resize_policy::get_new_size_for_grow(); - entry_pointer new_entries = s_entry_allocator.allocate(new_size); - resize_policy::notify_grow_resize(); - - std::copy(m_a_entries, m_a_entries + m_size, new_entries); - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_actual_size = new_size; - m_a_entries = new_entries; - make_heap(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - PB_DS_ASSERT_VALID((*this)) - swap_value_imp(it.m_p_e, r_new_val, s_no_throw_copies_ind); - fix(it.m_p_e); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -fix(entry_pointer p_e) -{ - size_type i = p_e - m_a_entries; - if (i > 0 && entry_cmp::operator()(m_a_entries[parent(i)], m_a_entries[i])) - { - size_type parent_i = parent(i); - while (i > 0 - && entry_cmp::operator()(m_a_entries[parent_i], m_a_entries[i])) - { - std::swap(m_a_entries[i], m_a_entries[parent_i]); - i = parent_i; - parent_i = parent(i); - } - - PB_DS_ASSERT_VALID((*this)) - return; - } - - while (i < m_size) - { - const size_type lchild_i = left_child(i); - const size_type rchild_i = right_child(i); - _GLIBCXX_DEBUG_ASSERT(rchild_i > lchild_i); - - const bool smaller_than_lchild = lchild_i < m_size && - entry_cmp::operator()(m_a_entries[i], m_a_entries[lchild_i]); - - const bool smaller_than_rchild = rchild_i < m_size && - entry_cmp::operator()(m_a_entries[i], m_a_entries[rchild_i]); - - const bool swap_with_rchild = smaller_than_rchild && (!smaller_than_lchild || entry_cmp::operator()(m_a_entries[lchild_i], m_a_entries[rchild_i])); - - const bool swap_with_lchild = !swap_with_rchild && smaller_than_lchild; - - if (swap_with_lchild) - { - std::swap(m_a_entries[i], m_a_entries[lchild_i]); - i = lchild_i; - } - else if (swap_with_rchild) - { - std::swap(m_a_entries[i], m_a_entries[rchild_i]); - i = rchild_i; - } - else - i = m_size; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap_value_imp(entry_pointer p_e, value_type new_val, true_type) -{ *p_e = new_val; } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type) -{ - value_type tmp(r_new_val); - (*p_e)->swap(tmp); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp deleted file mode 100644 index 62dfcf663..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/iterators_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ return iterator(m_a_entries); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ return const_iterator(m_a_entries); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return iterator(m_a_entries + m_size); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ return const_iterator(m_a_entries + m_size); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp deleted file mode 100644 index 2bb96aada..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp +++ /dev/null @@ -1,144 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/point_const_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP -#define PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Const point-type iterator. - template - class binary_heap_point_const_iterator_ - { - protected: - typedef typename _Alloc::template rebind::other::pointer entry_pointer; - - public: - /// Category. - typedef trivial_iterator_tag iterator_category; - - /// Difference type. - typedef trivial_iterator_difference_type difference_type; - - /// Iterator's value type. - typedef Value_Type value_type; - - /// Iterator's pointer type. - typedef typename _Alloc::template rebind::other::pointer - pointer; - - /// Iterator's const pointer type. - typedef - typename _Alloc::template rebind::other::const_pointer - const_pointer; - - /// Iterator's reference type. - typedef - typename _Alloc::template rebind::other::reference - reference; - - /// Iterator's const reference type. - typedef - typename _Alloc::template rebind::other::const_reference - const_reference; - - inline - binary_heap_point_const_iterator_(entry_pointer p_e) : m_p_e(p_e) - { } - - /// Default constructor. - inline - binary_heap_point_const_iterator_() : m_p_e(0) { } - - /// Copy constructor. - inline - binary_heap_point_const_iterator_(const binary_heap_point_const_iterator_& other) - : m_p_e(other.m_p_e) - { } - - /// Access. - inline const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_e != 0); - return to_ptr(integral_constant()); - } - - /// Access. - inline const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_e != 0); - return *to_ptr(integral_constant()); - } - - /// Compares content to a different iterator object. - inline bool - operator==(const binary_heap_point_const_iterator_& other) const - { return m_p_e == other.m_p_e; } - - /// Compares content (negatively) to a different iterator object. - inline bool - operator!=(const binary_heap_point_const_iterator_& other) const - { return m_p_e != other.m_p_e; } - - private: - inline const_pointer - to_ptr(true_type) const - { return m_p_e; } - - inline const_pointer - to_ptr(false_type) const - { return *m_p_e; } - - public: - entry_pointer m_p_e; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp deleted file mode 100644 index f9b73b20a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/policy_access_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() -{ - return (*this); -} - -PB_DS_CLASS_T_DEC -const Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() const -{ - return (*this); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 492a2b7a2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,160 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/split_join_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - - typedef - typename entry_pred::type - pred_t; - - const size_type left = partition(pred_t(pred)); - _GLIBCXX_DEBUG_ASSERT(m_size >= left); - - const size_type ersd = m_size - left; - _GLIBCXX_DEBUG_ASSERT(m_size >= ersd); - - const size_type new_size = resize_policy::get_new_size_for_arbitrary(left); - const size_type other_actual_size = other.get_new_size_for_arbitrary(ersd); - - entry_pointer a_entries = 0; - entry_pointer a_other_entries = 0; - - __try - { - a_entries = s_entry_allocator.allocate(new_size); - a_other_entries = s_entry_allocator.allocate(other_actual_size); - } - __catch(...) - { - if (a_entries != 0) - s_entry_allocator.deallocate(a_entries, new_size); - - if (a_other_entries != 0) - s_entry_allocator.deallocate(a_other_entries, other_actual_size); - - __throw_exception_again; - }; - - for (size_type i = 0; i < other.m_size; ++i) - erase_at(other.m_a_entries, i, s_no_throw_copies_ind); - - _GLIBCXX_DEBUG_ASSERT(new_size >= left); - std::copy(m_a_entries, m_a_entries + left, a_entries); - std::copy(m_a_entries + left, m_a_entries + m_size, a_other_entries); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size); - - m_actual_size = new_size; - other.m_actual_size = other_actual_size; - - m_size = left; - other.m_size = ersd; - - m_a_entries = a_entries; - other.m_a_entries = a_other_entries; - - make_heap(); - other.make_heap(); - - resize_policy::notify_arbitrary(m_actual_size); - other.notify_arbitrary(other.m_actual_size); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - const size_type len = m_size + other.m_size; - const size_type new_size = resize_policy::get_new_size_for_arbitrary(len); - - entry_pointer a_entries = 0; - entry_pointer a_other_entries = 0; - - __try - { - a_entries = s_entry_allocator.allocate(new_size); - a_other_entries = s_entry_allocator.allocate(resize_policy::min_size); - } - __catch(...) - { - if (a_entries != 0) - s_entry_allocator.deallocate(a_entries, new_size); - - if (a_other_entries != 0) - s_entry_allocator.deallocate(a_other_entries, resize_policy::min_size); - - __throw_exception_again; - } - - std::copy(m_a_entries, m_a_entries + m_size, a_entries); - std::copy(other.m_a_entries, other.m_a_entries + other.m_size, - a_entries + m_size); - - s_entry_allocator.deallocate(m_a_entries, m_actual_size); - m_a_entries = a_entries; - m_size = len; - m_actual_size = new_size; - resize_policy::notify_arbitrary(new_size); - make_heap(); - - s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size); - other.m_a_entries = a_other_entries; - other.m_size = 0; - other.m_actual_size = resize_policy::min_size; - other.notify_arbitrary(resize_policy::min_size); - other.make_heap(); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp deleted file mode 100644 index db7d3a114..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binary_heap_/trace_fn_imps.hpp - * Contains an implementation class for a binary_heap. - */ - -#ifdef PB_DS_BINARY_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << this << std::endl; - - std::cerr << m_a_entries << std::endl; - - for (size_type i = 0; i < m_size; ++i) - trace_entry(m_a_entries[i], s_no_throw_copies_ind); - - std::cerr << std::endl; - - std::cerr << "size = " << m_size << " " << "actual_size = " << m_actual_size << std::endl; - - resize_policy::trace(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_entry(const entry& r_e, false_type) const -{ - std::cout << r_e << " " <<* r_e << std::endl; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_entry(const entry& r_e, true_type) const -{ - std::cout << r_e << std::endl; -} - -#endif // #ifdef PB_DS_BINARY_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 6f10a87de..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file detail/binomial_heap_/constructors_destructor_fn_imps.hpp - * Contains an implementation for binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap() -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap(const Cmp_Fn& r_cmp_fn) -: base_type(r_cmp_fn) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap(const PB_DS_CLASS_C_DEC& other) -: base_type(other) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~binomial_heap() { } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp deleted file mode 100644 index 69a794b46..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file detail/binomial_heap_/debug_fn_imps.hpp - * Contains an implementation for binomial_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ base_type::assert_valid(true, __file, __line); } - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 3e96b78b9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binomial_heap_base_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - push(*(first_it++)); - PB_DS_ASSERT_VALID_COND((*this),false) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_base() : m_p_max(0) -{ - PB_DS_ASSERT_VALID_COND((*this),false) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_base(const Cmp_Fn& r_cmp_fn) -: base_type(r_cmp_fn), m_p_max(0) -{ PB_DS_ASSERT_VALID_COND((*this),false) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -binomial_heap_base(const PB_DS_CLASS_C_DEC& other) -: base_type(other), m_p_max(0) -{ PB_DS_ASSERT_VALID_COND((*this),false) } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID_COND((*this),false) - base_type::swap(other); - std::swap(m_p_max, other.m_p_max); - PB_DS_ASSERT_VALID_COND((*this),false) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~binomial_heap_base() -{ } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp deleted file mode 100644 index f350d52d2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binomial_heap_base_/debug_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(bool strictly_binomial, const char* __file, int __line) const -{ - base_type::assert_valid(__file, __line); - assert_node_consistent(base_type::m_p_root, strictly_binomial, true, - __file, __line); - assert_max(__file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max(const char* __file, int __line) const -{ - if (m_p_max == 0) - return; - PB_DS_DEBUG_VERIFY(base_type::parent(m_p_max) == 0); - for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) - PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(m_p_max->m_value, - it.m_p_nd->m_value)); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(node_const_pointer p_nd, bool strictly_binomial, - bool increasing, const char* __file, int __line) const -{ - PB_DS_DEBUG_VERIFY(increasing || strictly_binomial); - base_type::assert_node_consistent(p_nd, false, __file, __line); - if (p_nd == 0) - return; - PB_DS_DEBUG_VERIFY(p_nd->m_metadata == base_type::degree(p_nd)); - PB_DS_DEBUG_VERIFY(base_type::size_under_node(p_nd) == - static_cast(1 << p_nd->m_metadata)); - assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing, - __file, __line); - assert_node_consistent(p_nd->m_p_l_child, true, false, __file, __line); - if (p_nd->m_p_next_sibling != 0) - { - if (increasing) - { - if (strictly_binomial) - PB_DS_DEBUG_VERIFY(p_nd->m_metadata - < p_nd->m_p_next_sibling->m_metadata); - else - PB_DS_DEBUG_VERIFY(p_nd->m_metadata - <= p_nd->m_p_next_sibling->m_metadata); - } - else - PB_DS_DEBUG_VERIFY(p_nd->m_metadata - > p_nd->m_p_next_sibling->m_metadata); - } -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp deleted file mode 100644 index 88a305dda..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp +++ /dev/null @@ -1,161 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binomial_heap_base_/erase_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -pop() -{ - PB_DS_ASSERT_VALID_COND((*this),true) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - if (m_p_max == 0) - find_max(); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); - node_pointer p_nd = m_p_max; - remove_parentless_node(m_p_max); - base_type::actual_erase_node(p_nd); - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_parentless_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - _GLIBCXX_DEBUG_ASSERT(base_type::parent(p_nd) == 0); - - node_pointer p_cur_root = p_nd == base_type::m_p_root? - p_nd->m_p_next_sibling : base_type::m_p_root; - - if (p_cur_root != 0) - p_cur_root->m_p_prev_or_parent = 0; - - if (p_nd->m_p_prev_or_parent != 0) - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling; - - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - - node_pointer p_child = p_nd->m_p_l_child; - if (p_child != 0) - { - p_child->m_p_prev_or_parent = 0; - while (p_child->m_p_next_sibling != 0) - p_child = p_child->m_p_next_sibling; - } - - m_p_max = 0; - base_type::m_p_root = join(p_cur_root, p_child); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -clear() -{ - base_type::clear(); - m_p_max = 0; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - PB_DS_ASSERT_VALID_COND((*this),true) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - base_type::bubble_to_top(it.m_p_nd); - remove_parentless_node(it.m_p_nd); - base_type::actual_erase_node(it.m_p_nd); - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID_COND((*this),true) - - if (base_type::empty()) - { - PB_DS_ASSERT_VALID_COND((*this),true) - return 0; - } - - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - size_type ersd = 0; - while (p_out != 0) - { - ++ersd; - node_pointer p_next = p_out->m_p_next_sibling; - base_type::actual_erase_node(p_out); - p_out = p_next; - } - - node_pointer p_cur = base_type::m_p_root; - base_type::m_p_root = 0; - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = 0; - p_cur->m_metadata = 0; - p_cur->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != 0) - base_type::m_p_root->m_p_prev_or_parent = p_cur; - - base_type::m_p_root = p_cur; - base_type::m_p_root = fix(base_type::m_p_root); - p_cur = p_next; - } - - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) - return ersd; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp deleted file mode 100644 index 02d1733fc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binomial_heap_base_/find_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - PB_DS_ASSERT_VALID_COND((*this),false) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - if (m_p_max == 0) - const_cast(this)->find_max(); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); - return m_p_max->m_value; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -find_max() -{ - node_pointer p_cur = base_type::m_p_root; - m_p_max = p_cur; - while (p_cur != 0) - { - if (Cmp_Fn::operator()(m_p_max->m_value, p_cur->m_value)) - m_p_max = p_cur; - p_cur = p_cur->m_p_next_sibling; - } -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp deleted file mode 100644 index baa31b373..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp +++ /dev/null @@ -1,178 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binomial_heap_base_/insert_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - PB_DS_ASSERT_VALID_COND((*this),true) - node_pointer p_nd = base_type::get_new_node_for_insert(r_val); - insert_node(p_nd); - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) - return point_iterator(p_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_node(node_pointer p_nd) -{ - if (base_type::m_p_root == 0) - { - p_nd->m_p_next_sibling = 0; - p_nd->m_p_prev_or_parent = 0; - p_nd->m_p_l_child = 0; - p_nd->m_metadata = 0; - base_type::m_p_root = p_nd; - return; - } - - if (base_type::m_p_root->m_metadata > 0) - { - p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = 0; - p_nd->m_p_next_sibling = base_type::m_p_root; - base_type::m_p_root->m_p_prev_or_parent = p_nd; - base_type::m_p_root = p_nd; - p_nd->m_metadata = 0; - return; - } - - if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value)) - { - p_nd->m_p_next_sibling = base_type::m_p_root->m_p_next_sibling; - p_nd->m_p_prev_or_parent = 0; - p_nd->m_metadata = 1; - p_nd->m_p_l_child = base_type::m_p_root; - base_type::m_p_root->m_p_prev_or_parent = p_nd; - base_type::m_p_root->m_p_next_sibling = 0; - base_type::m_p_root = p_nd; - } - else - { - p_nd->m_p_next_sibling = 0; - p_nd->m_p_l_child = 0; - p_nd->m_p_prev_or_parent = base_type::m_p_root; - p_nd->m_metadata = 0; - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root->m_p_l_child == 0); - base_type::m_p_root->m_p_l_child = p_nd; - base_type::m_p_root->m_metadata = 1; - } - - base_type::m_p_root = fix(base_type::m_p_root); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -fix(node_pointer p_nd) const -{ - while (p_nd->m_p_next_sibling != 0 && - p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata) - { - node_pointer p_next = p_nd->m_p_next_sibling; - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - - if (p_nd->m_p_prev_or_parent != 0) - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_next; - - base_type::make_child_of(p_nd, p_next); - ++p_next->m_metadata; - p_nd = p_next; - } - else - { - p_nd->m_p_next_sibling = p_next->m_p_next_sibling; - - if (p_nd->m_p_next_sibling != 0) - p_next->m_p_next_sibling = 0; - - base_type::make_child_of(p_next, p_nd); - ++p_nd->m_metadata; - } - } - - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; - - return p_nd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - PB_DS_ASSERT_VALID_COND((*this),true) - node_pointer p_nd = it.m_p_nd; - - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - PB_DS_ASSERT_BASE_NODE_CONSISTENT(p_nd, false) - - const bool bubble_up = Cmp_Fn::operator()(p_nd->m_value, r_new_val); - p_nd->m_value = r_new_val; - - if (bubble_up) - { - node_pointer p_parent = base_type::parent(p_nd); - while (p_parent != 0 && - Cmp_Fn::operator()(p_parent->m_value, p_nd->m_value)) - { - base_type::swap_with_parent(p_nd, p_parent); - p_parent = base_type::parent(p_nd); - } - - if (p_nd->m_p_prev_or_parent == 0) - base_type::m_p_root = p_nd; - - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) - return; - } - - base_type::bubble_to_top(p_nd); - remove_parentless_node(p_nd); - insert_node(p_nd); - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp deleted file mode 100644 index 25e02c795..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp +++ /dev/null @@ -1,197 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file binomial_heap_base_/split_join_fn_imps.hpp - * Contains an implementation class for a base of binomial heaps. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID_COND((*this),true) - PB_DS_ASSERT_VALID_COND(other,true) - - other.clear(); - if (base_type::empty()) - { - PB_DS_ASSERT_VALID_COND((*this),true) - PB_DS_ASSERT_VALID_COND(other,true) - return; - } - - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - while (p_out != 0) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); - --base_type::m_size; - ++other.m_size; - - node_pointer p_next = p_out->m_p_next_sibling; - p_out->m_p_l_child = p_out->m_p_prev_or_parent = 0; - p_out->m_metadata = 0; - - p_out->m_p_next_sibling = other.m_p_root; - if (other.m_p_root != 0) - other.m_p_root->m_p_prev_or_parent = p_out; - - other.m_p_root = p_out; - other.m_p_root = other.fix(other.m_p_root); - p_out = p_next; - } - - PB_DS_ASSERT_VALID_COND(other,true) - node_pointer p_cur = base_type::m_p_root; - base_type::m_p_root = 0; - - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = 0; - p_cur->m_metadata = 0; - p_cur->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != 0) - base_type::m_p_root->m_p_prev_or_parent = p_cur; - - base_type::m_p_root = p_cur; - base_type::m_p_root = fix(base_type::m_p_root); - p_cur = p_next; - } - - m_p_max = 0; - PB_DS_ASSERT_VALID_COND((*this),true) - PB_DS_ASSERT_VALID_COND(other,true) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID_COND((*this),true) - PB_DS_ASSERT_VALID_COND(other,true) - - node_pointer p_other = other.m_p_root; - if (p_other != 0) - do - { - node_pointer p_next = p_other->m_p_next_sibling; - std::swap(p_other->m_p_next_sibling, p_other->m_p_prev_or_parent); - p_other = p_next; - } - while (p_other != 0); - - base_type::m_p_root = join(base_type::m_p_root, other.m_p_root); - base_type::m_size += other.m_size; - m_p_max = 0; - - other.m_p_root = 0; - other.m_size = 0; - other.m_p_max = 0; - - PB_DS_ASSERT_VALID_COND((*this),true) - PB_DS_ASSERT_VALID_COND(other,true) -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -join(node_pointer p_lhs, node_pointer p_rhs) const -{ - node_pointer p_ret = 0; - node_pointer p_cur = 0; - - while (p_lhs != 0 || p_rhs != 0) - { - if (p_rhs == 0) - { - if (p_cur == 0) - p_ret = p_cur = p_lhs; - else - { - p_cur->m_p_next_sibling = p_lhs; - p_lhs->m_p_prev_or_parent = p_cur; - } - p_cur = p_lhs = 0; - } - else if (p_lhs == 0 || p_rhs->m_metadata < p_lhs->m_metadata) - { - if (p_cur == 0) - { - p_ret = p_cur = p_rhs; - p_rhs = p_rhs->m_p_prev_or_parent; - } - else - { - p_cur->m_p_next_sibling = p_rhs; - p_rhs = p_rhs->m_p_prev_or_parent; - p_cur->m_p_next_sibling->m_p_prev_or_parent = p_cur; - p_cur = p_cur->m_p_next_sibling; - } - } - else if (p_lhs->m_metadata < p_rhs->m_metadata) - { - if (p_cur == 0) - p_ret = p_cur = p_lhs; - else - { - p_cur->m_p_next_sibling = p_lhs; - p_lhs->m_p_prev_or_parent = p_cur; - p_cur = p_cur->m_p_next_sibling; - } - p_lhs = p_cur->m_p_next_sibling; - } - else - { - node_pointer p_next_rhs = p_rhs->m_p_prev_or_parent; - p_rhs->m_p_next_sibling = p_lhs; - p_lhs = fix(p_rhs); - p_rhs = p_next_rhs; - } - } - - if (p_cur != 0) - p_cur->m_p_next_sibling = 0; - - if (p_ret != 0) - p_ret->m_p_prev_or_parent = 0; - - return p_ret; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/traits.hpp deleted file mode 100644 index 6bbb3c106..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/traits.hpp +++ /dev/null @@ -1,95 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file branch_policy/traits.hpp - * Contains an implementation class for tree-like classes. - */ - -#ifndef PB_DS_NODE_AND_IT_TRAITS_HPP -#define PB_DS_NODE_AND_IT_TRAITS_HPP - -#include -#include -#include -#include - -#define PB_DS_DEBUG_VERIFY(_Cond) \ - _GLIBCXX_DEBUG_VERIFY_AT(_Cond, \ - _M_message(#_Cond" assertion from %1;:%2;") \ - ._M_string(__FILE__)._M_integer(__LINE__) \ - ,__file,__line) - -namespace __gnu_pbds -{ - namespace detail - { - /// Tree traits class, primary template. - template - class Node_Update, - typename Tag, - typename _Alloc> - struct tree_traits; - - /// Trie traits class, primary template. - template - class Node_Update, - typename Tag, - typename _Alloc> - struct trie_traits; - - } // namespace detail -} // namespace __gnu_pbds - -#include -#include -#include -#include - -#undef PB_DS_DEBUG_VERIFY - -#endif // #ifndef PB_DS_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp deleted file mode 100644 index a64887d3d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp +++ /dev/null @@ -1,191 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/constructor_destructor_fn_imps.hpp - * Contains implementations of cc_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_pointer_allocator -PB_DS_CLASS_C_DEC::s_entry_pointer_allocator; - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CC_HASH_NAME() : - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1)), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn) : - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) : - PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - std::fill(m_entries, m_entries + m_num_e, (entry_pointer)0); - Resize_Policy::notify_cleared(); - ranged_hash_fn_base::notify_resized(m_num_e); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Hash_Fn& r_comb_hash_fn) : - PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, r_comb_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Hash_Fn& r_comb_hash_fn, - const Resize_Policy& r_resize_policy) : - PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), - Resize_Policy(r_resize_policy), - ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, r_comb_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_CC_HASH_NAME(const PB_DS_CLASS_C_DEC& other) : - PB_DS_HASH_EQ_FN_C_DEC(other), - resize_base(other), ranged_hash_fn_base(other), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_pointer_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) - __try - { - copy_from_range(other.begin(), other.end()); - } - __catch(...) - { - deallocate_all(); - __throw_exception_again; - } - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_CC_HASH_NAME() -{ deallocate_all(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - std::swap(m_entries, other.m_entries); - std::swap(m_num_e, other.m_num_e); - std::swap(m_num_used_e, other.m_num_used_e); - ranged_hash_fn_base::swap(other); - hash_eq_fn_base::swap(other); - resize_base::swap(other); - - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other)); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_all() -{ - clear(); - s_entry_pointer_allocator.deallocate(m_entries, m_num_e); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - std::fill(m_entries, m_entries + m_num_e, entry_pointer(0)); - Resize_Policy::notify_resized(m_num_e); - Resize_Policy::notify_cleared(); - ranged_hash_fn_base::notify_resized(m_num_e); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp deleted file mode 100644 index 2616bd0ca..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,55 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(mapped_const_reference r_val, size_type pos, - false_type) -{ - // Following lines might throw an exception. - entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator); - - // At this point no exceptions can be thrown. - p->m_p_next = m_entries[pos]; - m_entries[pos] = p; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp deleted file mode 100644 index ebe262465..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(const_reference r_val, size_type pos, true_type) -{ - // Following lines might throw an exception. - entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator); - - // At this point no exceptions can be thrown. - p->m_p_next = m_entries[pos]; - p->m_hash = ranged_hash_fn_base::operator()((key_const_reference)(PB_DS_V2F(p->m_value))).second; - - m_entries[pos] = p; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp deleted file mode 100644 index 07d0266df..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,76 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/debug_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - debug_base::check_size(m_num_used_e, __file, __line); - assert_entry_pointer_array_valid(m_entries, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_pointer_array_valid(const entry_pointer_array a_p_entries, - const char* __file, int __line) const -{ - size_type iterated_num_used_e = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - entry_pointer p_e = a_p_entries[pos]; - while (p_e != 0) - { - ++iterated_num_used_e; - assert_entry_pointer_valid(p_e, traits_base::m_store_extra_indicator, - __file, __line); - p_e = p_e->m_p_next; - } - } - PB_DS_DEBUG_VERIFY(iterated_num_used_e == m_num_used_e); -} - -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp deleted file mode 100644 index 39072fb0e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,50 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_pointer_valid(const entry_pointer p, false_type, - const char* __file, int __line) const -{ debug_base::check_key_exists(PB_DS_V2F(p->m_value), __file, __line); } - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp deleted file mode 100644 index a6b39a737..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/debug_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_pointer_valid(const entry_pointer p_e, true_type, - const char* __file, int __line) const -{ - debug_base::check_key_exists(PB_DS_V2F(p_e->m_value), __file, __line); - comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value)); - PB_DS_DEBUG_VERIFY(p_e->m_hash == pos_hash_pair.second); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp deleted file mode 100644 index 9e27692d8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/erase_fn_imps.hpp - * Contains implementations of cc_ht_map_'s erase related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -erase_entry_pointer(entry_pointer& r_p_e) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(r_p_e->m_value))); - - entry_pointer p_e = r_p_e; - r_p_e = r_p_e->m_p_next; - rels_entry(p_e); - _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0); - resize_base::notify_erased(--m_num_used_e); -} - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - size_type num_ersd = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - while (m_entries[pos] != 0 && pred(m_entries[pos]->m_value)) - { - ++num_ersd; - entry_pointer p_next_e = m_entries[pos]->m_p_next; - erase_entry_pointer(m_entries[pos]); - m_entries[pos] = p_next_e; - } - - entry_pointer p_e = m_entries[pos]; - while (p_e != 0 && p_e->m_p_next != 0) - { - if (pred(p_e->m_p_next->m_value)) - { - ++num_ersd; - erase_entry_pointer(p_e->m_p_next); - } - else - p_e = p_e->m_p_next; - } - } - - do_resize_if_needed_no_throw(); - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - for (size_type pos = 0; pos < m_num_e; ++pos) - while (m_entries[pos] != 0) - erase_entry_pointer(m_entries[pos]); - do_resize_if_needed_no_throw(); - resize_base::notify_cleared(); -} - -#include -#include - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp deleted file mode 100644 index 09891abac..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s erase related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ - PB_DS_ASSERT_VALID((*this)) - return erase_in_pos_imp(r_key, ranged_hash_fn_base::operator()(r_key)); -} - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_in_pos_imp(key_const_reference r_key, size_type pos) -{ - PB_DS_ASSERT_VALID((*this)) - entry_pointer p_e = m_entries[pos]; - resize_base::notify_erase_search_start(); - if (p_e == 0) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - PB_DS_ASSERT_VALID((*this)) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_EXISTS(r_key) - erase_entry_pointer(m_entries[pos]); - do_resize_if_needed_no_throw(); - PB_DS_ASSERT_VALID((*this)) - return true; - } - - while (true) - { - entry_pointer p_next_e = p_e->m_p_next; - if (p_next_e == 0) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - PB_DS_ASSERT_VALID((*this)) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), r_key)) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_EXISTS(r_key) - erase_entry_pointer(p_e->m_p_next); - do_resize_if_needed_no_throw(); - PB_DS_ASSERT_VALID((*this)) - return true; - } - resize_base::notify_erase_search_collision(); - p_e = p_next_e; - } -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp deleted file mode 100644 index 97034c8c0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/erase_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s erase related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_in_pos_imp(key_const_reference r_key, const comp_hash& r_pos_hash_pair) -{ - PB_DS_ASSERT_VALID((*this)) - entry_pointer p_e = m_entries[r_pos_hash_pair.first]; - resize_base::notify_erase_search_start(); - if (p_e == 0) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - PB_DS_ASSERT_VALID((*this)) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, - r_key, r_pos_hash_pair.second)) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_EXISTS(r_key) - erase_entry_pointer(m_entries[r_pos_hash_pair.first]); - do_resize_if_needed_no_throw(); - PB_DS_ASSERT_VALID((*this)) - return true; - } - - while (true) - { - entry_pointer p_next_e = p_e->m_p_next; - if (p_next_e == 0) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - PB_DS_ASSERT_VALID((*this)) - return false; - } - - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), - p_next_e->m_hash, r_key, - r_pos_hash_pair.second)) - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_EXISTS(r_key) - erase_entry_pointer(p_e->m_p_next); - do_resize_if_needed_no_throw(); - PB_DS_ASSERT_VALID((*this)) - return true; - } - resize_base::notify_erase_search_collision(); - p_e = p_next_e; - } -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp deleted file mode 100644 index 218f40eef..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/find_fn_imps.hpp - * Contains implementations of cc_ht_map_'s find related functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) -{ - PB_DS_ASSERT_VALID((*this)) - return find_key_pointer(r_key, traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) const -{ - PB_DS_ASSERT_VALID((*this)) - return const_cast(*this).find_key_pointer(r_key, - traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find_end() -{ return 0; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find_end() const -{ return 0; } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp deleted file mode 100644 index 569533ec5..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp +++ /dev/null @@ -1,41 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/find_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s find related functions, - * when the hash value is stored. - */ - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp deleted file mode 100644 index 7a22e5d3e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/info_fn_imps.hpp - * Contains implementations of cc_ht_map_'s entire container info related - * functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_num_used_e; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return m_entry_allocator.max_size(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (size() == 0); } - -PB_DS_CLASS_T_DEC -template -bool -PB_DS_CLASS_C_DEC:: -operator==(const Other_HT_Map_Type& other) const -{ return cmp_with_other(other); } - -PB_DS_CLASS_T_DEC -template -bool -PB_DS_CLASS_C_DEC:: -cmp_with_other(const Other_Map_Type& other) const -{ - if (size() != other.size()) - return false; - - for (typename Other_Map_Type::const_iterator it = other.begin(); - it != other.end(); ++it) - { - key_const_reference r_key =(key_const_reference)PB_DS_V2F(*it); - mapped_const_pointer p_mapped_value = - const_cast(*this). - find_key_pointer(r_key, traits_base::m_store_extra_indicator); - - if (p_mapped_value == 0) - return false; - -#ifdef PB_DS_DATA_TRUE_INDICATOR - if (p_mapped_value->second != it->second) - return false; -#endif - } - return true; -} - -PB_DS_CLASS_T_DEC -template -bool -PB_DS_CLASS_C_DEC:: -operator!=(const Other_HT_Map_Type& other) const -{ return !operator==(other); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp deleted file mode 100644 index 0d624e34d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,43 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/insert_fn_imps.hpp - * Contains implementations of cc_ht_map_'s insert related functions. - */ - -#include -#include - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp deleted file mode 100644 index 389cde82c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s insert related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, false_type) -{ - PB_DS_ASSERT_VALID((*this)) - key_const_reference r_key = PB_DS_V2F(r_val); - const size_type pos = ranged_hash_fn_base::operator()(r_key); - entry_pointer p_e = m_entries[pos]; - resize_base::notify_insert_search_start(); - - while (p_e != 0 && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), - r_key)) - { - resize_base::notify_insert_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_insert_search_end(); - if (p_e != 0) - { - PB_DS_CHECK_KEY_EXISTS(r_key) - return std::make_pair(&p_e->m_value, false); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return std::make_pair(insert_new_imp(r_val, pos), true); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp deleted file mode 100644 index bd70bcd82..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp +++ /dev/null @@ -1,71 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/insert_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s insert related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, true_type) -{ - PB_DS_ASSERT_VALID((*this)) - key_const_reference key = PB_DS_V2F(r_val); - comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(key); - entry_pointer p_e = m_entries[pos_hash_pair.first]; - resize_base::notify_insert_search_start(); - - while (p_e != 0 && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), - p_e->m_hash, - key, pos_hash_pair.second)) - { - resize_base::notify_insert_search_collision(); - p_e = p_e->m_p_next; - } - - resize_base::notify_insert_search_end(); - if (p_e != 0) - { - PB_DS_CHECK_KEY_EXISTS(key) - return std::make_pair(&p_e->m_value, false); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(key) - return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp deleted file mode 100644 index 697b0a6c0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp +++ /dev/null @@ -1,83 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/iterators_fn_imps.hpp - * Contains implementations of cc_ht_map_'s iterators related functions, e.g., - * begin(). - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC::s_end_it; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC::s_const_end_it; - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - pointer p_value; - std::pair pos; - get_start_it_state(p_value, pos); - return iterator(p_value, pos, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return s_end_it; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - pointer p_value; - std::pair pos; - get_start_it_state(p_value, pos); - return const_iterator(p_value, pos, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ return s_const_end_it; } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp deleted file mode 100644 index 97f6bf88a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/policy_access_fn_imps.hpp - * Contains implementations of cc_ht_map_'s policy access - * functions. - */ - -PB_DS_CLASS_T_DEC -Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Comb_Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_hash_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Comb_Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_hash_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() const -{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp deleted file mode 100644 index 1d038a644..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp +++ /dev/null @@ -1,134 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/resize_fn_imps.hpp - * Contains implementations of cc_ht_map_'s resize related functions. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -do_resize_if_needed() -{ - if (!resize_base::is_resize_needed()) - return false; - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -do_resize(size_type len) -{ resize_imp(resize_base::get_nearest_larger_size(len)); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -do_resize_if_needed_no_throw() -{ - if (!resize_base::is_resize_needed()) - return; - - __try - { - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - } - __catch(...) - { } - - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp(size_type new_size) -{ - PB_DS_ASSERT_VALID((*this)) - if (new_size == m_num_e) - return; - - const size_type old_size = m_num_e; - entry_pointer_array a_p_entries_resized; - - // Following line might throw an exception. - ranged_hash_fn_base::notify_resized(new_size); - - __try - { - // Following line might throw an exception. - a_p_entries_resized = s_entry_pointer_allocator.allocate(new_size); - m_num_e = new_size; - } - __catch(...) - { - ranged_hash_fn_base::notify_resized(old_size); - __throw_exception_again; - } - - // At this point no exceptions can be thrown. - resize_imp_no_exceptions(new_size, a_p_entries_resized, old_size); - Resize_Policy::notify_resized(new_size); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp_no_exceptions(size_type new_size, entry_pointer_array a_p_entries_resized, size_type old_size) -{ - std::fill(a_p_entries_resized, a_p_entries_resized + m_num_e, - entry_pointer(0)); - - for (size_type pos = 0; pos < old_size; ++pos) - { - entry_pointer p_e = m_entries[pos]; - while (p_e != 0) - p_e = resize_imp_no_exceptions_reassign_pointer(p_e, a_p_entries_resized, traits_base::m_store_extra_indicator); - } - - m_num_e = new_size; - _GLIBCXX_DEBUG_ONLY(assert_entry_pointer_array_valid(a_p_entries_resized, - __FILE__, __LINE__);) - s_entry_pointer_allocator.deallocate(m_entries, old_size); - m_entries = a_p_entries_resized; - PB_DS_ASSERT_VALID((*this)) -} - -#include -#include - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp deleted file mode 100644 index 88c1a83df..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s resize related functions, when the - * hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, false_type) -{ - const size_type hash_pos = - ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value)); - - entry_pointer const p_next_e = p_e->m_p_next; - p_e->m_p_next = a_p_entries_resized[hash_pos]; - a_p_entries_resized[hash_pos] = p_e; - return p_next_e; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp deleted file mode 100644 index 7f344f59c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/resize_store_hash_fn_imps.hpp - * Contains implementations of cc_ht_map_'s resize related functions, when the - * hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, true_type) -{ - const comp_hash pos_hash_pair = - ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash); - - entry_pointer const p_next_e = p_e->m_p_next; - p_e->m_p_next = a_p_entries_resized[pos_hash_pair.first]; - a_p_entries_resized[pos_hash_pair.first] = p_e; - return p_next_e; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp deleted file mode 100644 index d20f67720..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file cc_hash_table_map_/trace_fn_imps.hpp - * Contains implementations of cc_ht_map_'s trace-mode functions. - */ - -#ifdef PB_DS_HT_MAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << static_cast(m_num_e) << " " - << static_cast(m_num_used_e) << std::endl; - - for (size_type i = 0; i < m_num_e; ++i) - { - std::cerr << static_cast(i) << " "; - trace_list(m_entries[i]); - std::cerr << std::endl; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_list(const_entry_pointer p_l) const -{ - size_type iterated_num_used_e = 0; - while (p_l != 0) - { - std::cerr << PB_DS_V2F(p_l->m_value) << " "; - p_l = p_l->m_p_next; - } -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp deleted file mode 100644 index 955af0c12..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp +++ /dev/null @@ -1,223 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/constructor_destructor_fn_imps.hpp - * Contains implementations of gp_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME() -: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1)), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn) -: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) -: hash_eq_fn_base(r_eq_fn), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Probe_Fn& r_comb_hash_fn) -: hash_eq_fn_base(r_eq_fn), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, r_comb_hash_fn), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober) -: hash_eq_fn_base(r_eq_fn), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, comb_hash_fn, prober), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, - const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober, - const Resize_Policy& r_resize_policy) -: hash_eq_fn_base(r_eq_fn), resize_base(r_resize_policy), - ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), - r_hash_fn, comb_hash_fn, prober), - m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_GP_HASH_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(other), -#endif - hash_eq_fn_base(other), - resize_base(other), - ranged_probe_fn_base(other), - m_num_e(other.m_num_e), - m_num_used_e(other.m_num_used_e), - m_entries(s_entry_allocator.allocate(m_num_e)) -{ - for (size_type i = 0; i < m_num_e; ++i) - m_entries[i].m_stat = (entry_status)empty_entry_status; - - __try - { - for (size_type i = 0; i < m_num_e; ++i) - { - m_entries[i].m_stat = other.m_entries[i].m_stat; - if (m_entries[i].m_stat == valid_entry_status) - new (m_entries + i) entry(other.m_entries[i]); - } - } - __catch(...) - { - deallocate_all(); - __throw_exception_again; - } - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_GP_HASH_NAME() -{ deallocate_all(); } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - std::swap(m_num_e, other.m_num_e); - std::swap(m_num_used_e, other.m_num_used_e); - std::swap(m_entries, other.m_entries); - ranged_probe_fn_base::swap(other); - hash_eq_fn_base::swap(other); - resize_base::swap(other); - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other)); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_all() -{ - clear(); - erase_all_valid_entries(m_entries, m_num_e); - s_entry_allocator.deallocate(m_entries, m_num_e); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_all_valid_entries(entry_array a_entries_resized, size_type len) -{ - for (size_type pos = 0; pos < len; ++pos) - { - entry_pointer p_e = &a_entries_resized[pos]; - if (p_e->m_stat == valid_entry_status) - p_e->m_value.~value_type(); - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - Resize_Policy::notify_resized(m_num_e); - Resize_Policy::notify_cleared(); - ranged_probe_fn_base::notify_resized(m_num_e); - for (size_type i = 0; i < m_num_e; ++i) - m_entries[i].m_stat = empty_entry_status; -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp deleted file mode 100644 index 74b6576c6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(mapped_const_reference r_val, size_type pos, - false_type) -{ - _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status)k; - entry* const p_e = m_entries + pos; - new (&p_e->m_value) mapped_value_type(r_val); - p_e->m_stat = valid_entry_status; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp deleted file mode 100644 index 12ef330e3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp +++ /dev/null @@ -1,54 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s constructors, destructor, - * and related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -constructor_insert_new_imp(mapped_const_reference r_val, size_type pos, - true_type) -{ - _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status); - entry* const p_e = m_entries + pos; - new (&p_e->m_value) mapped_value_type(r_val); - p_e->m_hash = ranged_probe_fn_base::operator()(PB_DS_V2F(r_val)).second; - p_e->m_stat = valid_entry_status; - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp deleted file mode 100644 index be4a96c4a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,56 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/debug_fn_imps.hpp - * Contains implementations of gp_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - debug_base::check_size(m_num_used_e, __file, __line); - assert_entry_array_valid(m_entries, traits_base::m_store_extra_indicator, - __file, __line); -} - -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp deleted file mode 100644 index ecbda2b9b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_array_valid(const entry_array a_entries, false_type, - const char* __file, int __line) const -{ - size_type iterated_num_used_e = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - const_entry_pointer p_e = &a_entries[pos]; - switch(p_e->m_stat) - { - case empty_entry_status: - case erased_entry_status: - break; - case valid_entry_status: - { - key_const_reference r_key = PB_DS_V2F(p_e->m_value); - debug_base::check_key_exists(r_key, __file, __line); - ++iterated_num_used_e; - break; - } - default: - PB_DS_DEBUG_VERIFY(0); - }; - } - PB_DS_DEBUG_VERIFY(iterated_num_used_e == m_num_used_e); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp deleted file mode 100644 index 55134eb4a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp +++ /dev/null @@ -1,78 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/debug_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_entry_array_valid(const entry_array a_entries, true_type, - const char* __file, int __line) const -{ - size_type iterated_num_used_e = 0; - - for (size_type pos = 0; pos < m_num_e; ++pos) - { - const_entry_pointer p_e =& a_entries[pos]; - switch(p_e->m_stat) - { - case empty_entry_status: - case erased_entry_status: - break; - case valid_entry_status: - { - key_const_reference r_key = PB_DS_V2F(p_e->m_value); - debug_base::check_key_exists(r_key, __file, __line); - - const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); - - PB_DS_DEBUG_VERIFY(p_e->m_hash == pos_hash_pair.second); - ++iterated_num_used_e; - break; - } - default: - PB_DS_DEBUG_VERIFY(0); - }; - } - - PB_DS_DEBUG_VERIFY(iterated_num_used_e == m_num_used_e); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp deleted file mode 100644 index 2f99b0de9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/erase_fn_imps.hpp - * Contains implementations of gp_ht_map_'s erase related functions. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -erase_entry(entry_pointer p_e) -{ - _GLIBCXX_DEBUG_ASSERT(p_e->m_stat = valid_entry_status); - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_e->m_value));) - p_e->m_value.~value_type(); - p_e->m_stat = erased_entry_status; - _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0); - resize_base::notify_erased(--m_num_used_e); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - for (size_type pos = 0; pos < m_num_e; ++pos) - { - entry_pointer p_e = &m_entries[pos]; - if (p_e->m_stat == valid_entry_status) - erase_entry(p_e); - } - do_resize_if_needed_no_throw(); - resize_base::notify_cleared(); -} - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - size_type num_ersd = 0; - for (size_type pos = 0; pos < m_num_e; ++pos) - { - entry_pointer p_e = &m_entries[pos]; - if (p_e->m_stat == valid_entry_status) - if (pred(p_e->m_value)) - { - ++num_ersd; - erase_entry(p_e); - } - } - - do_resize_if_needed_no_throw(); - PB_DS_ASSERT_VALID((*this)) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ return erase_imp(r_key, traits_base::m_store_extra_indicator); } - -#include -#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp deleted file mode 100644 index 57d20fc02..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s erase related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_imp(key_const_reference r_key, false_type) -{ - PB_DS_ASSERT_VALID((*this)) - size_type hash = ranged_probe_fn_base::operator()(r_key); - size_type i; - resize_base::notify_erase_search_start(); - - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return false; - } - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_erase_search_end(); - erase_entry(p_e); - do_resize_if_needed_no_throw(); - return true; - } - break; - case erased_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - resize_base::notify_erase_search_collision(); - } - resize_base::notify_erase_search_end(); - return false; -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp deleted file mode 100644 index e7ad710b8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp +++ /dev/null @@ -1,85 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/erase_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s erase related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase_imp(key_const_reference r_key, true_type) -{ - const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); - size_type i; - resize_base::notify_erase_search_start(); - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i); - - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_erase_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return false; - } - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, - r_key, pos_hash_pair.second)) - { - resize_base::notify_erase_search_end(); - erase_entry(p_e); - do_resize_if_needed_no_throw(); - return true; - } - break; - case erased_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - resize_base::notify_erase_search_collision(); - } - resize_base::notify_erase_search_end(); - return false; -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp deleted file mode 100644 index 8fdb7bffc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp +++ /dev/null @@ -1,70 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/find_fn_imps.hpp - * Contains implementations of gp_ht_map_'s find related functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) -{ - PB_DS_ASSERT_VALID((*this)) - return find_key_pointer(r_key, traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) const -{ - PB_DS_ASSERT_VALID((*this)) - return const_cast(*this).find_key_pointer(r_key, traits_base::m_store_extra_indicator); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find_end() -{ return 0; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find_end() const -{ return 0; } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp deleted file mode 100644 index 03089eedf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp +++ /dev/null @@ -1,40 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/find_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s insert related functions, - * when the hash value is stored. - */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp deleted file mode 100644 index 0c2577c61..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/info_fn_imps.hpp - * Contains implementations of gp_ht_map_'s entire container info related - * functions. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_num_used_e; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_entry_allocator.max_size(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (size() == 0); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp deleted file mode 100644 index 84ca7e013..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,43 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/insert_fn_imps.hpp - * Contains implementations of gp_ht_map_'s insert related functions. - */ - -#include -#include - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp deleted file mode 100644 index aa5b70472..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,111 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s insert related functions, - * when the hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -find_ins_pos(key_const_reference r_key, false_type) -{ - size_type hash = ranged_probe_fn_base::operator()(r_key); - size_type i; - - /* The insertion position is initted to a non-legal value to indicate - * that it has not been initted yet. - */ - size_type ins_pos = m_num_e; - resize_base::notify_insert_search_start(); - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - _GLIBCXX_DEBUG_ASSERT(pos < m_num_e); - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_insert_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return (ins_pos == m_num_e) ? pos : ins_pos; - } - break; - case erased_entry_status: - if (ins_pos == m_num_e) - ins_pos = pos; - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) - { - resize_base::notify_insert_search_end(); - PB_DS_CHECK_KEY_EXISTS(r_key) - return pos; - } - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - resize_base::notify_insert_search_collision(); - } - resize_base::notify_insert_search_end(); - if (ins_pos == m_num_e) - __throw_insert_error(); - return ins_pos; -} - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, false_type) -{ - key_const_reference r_key = PB_DS_V2F(r_val); - const size_type pos = find_ins_pos(r_key, - traits_base::m_store_extra_indicator); - - if (m_entries[pos].m_stat == valid_entry_status) - { - PB_DS_CHECK_KEY_EXISTS(r_key) - return std::make_pair(&(m_entries + pos)->m_value, false); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return std::make_pair(insert_new_imp(r_val, pos), true); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp deleted file mode 100644 index f54ac2ad6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp +++ /dev/null @@ -1,118 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/insert_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s find related functions, - * when the hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::comp_hash -PB_DS_CLASS_C_DEC:: -find_ins_pos(key_const_reference r_key, true_type) -{ - PB_DS_ASSERT_VALID((*this)) - comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); - - size_type i; - - /* The insertion position is initted to a non-legal value to indicate - * that it has not been initted yet. - */ - size_type ins_pos = m_num_e; - resize_base::notify_insert_search_start(); - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i); - - entry* const p_e = m_entries + pos; - switch(p_e->m_stat) - { - case empty_entry_status: - { - resize_base::notify_insert_search_end(); - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - - return ((ins_pos == m_num_e) ? - std::make_pair(pos, pos_hash_pair.second) : - std::make_pair(ins_pos, pos_hash_pair.second)); - } - break; - case erased_entry_status: - if (ins_pos == m_num_e) - ins_pos = pos; - break; - case valid_entry_status: - if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, - r_key, pos_hash_pair.second)) - { - resize_base::notify_insert_search_end(); - PB_DS_CHECK_KEY_EXISTS(r_key) - return std::make_pair(pos, pos_hash_pair.second); - } - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - resize_base::notify_insert_search_collision(); - } - resize_base::notify_insert_search_end(); - if (ins_pos == m_num_e) - __throw_insert_error(); - return std::make_pair(ins_pos, pos_hash_pair.second); -} - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert_imp(const_reference r_val, true_type) -{ - key_const_reference r_key = PB_DS_V2F(r_val); - comp_hash pos_hash_pair = find_ins_pos(r_key, - traits_base::m_store_extra_indicator); - - _GLIBCXX_DEBUG_ASSERT(pos_hash_pair.first < m_num_e); - entry_pointer p_e =& m_entries[pos_hash_pair.first]; - if (p_e->m_stat == valid_entry_status) - { - PB_DS_CHECK_KEY_EXISTS(r_key) - return std::make_pair(&p_e->m_value, false); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp deleted file mode 100644 index 436182822..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/policy_access_fn_imps.hpp - * Contains implementations of gp_ht_map_'s policy agpess - * functions. - */ - -PB_DS_CLASS_T_DEC -Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Hash_Fn& -PB_DS_CLASS_C_DEC:: -get_hash_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Eq_Fn& -PB_DS_CLASS_C_DEC:: -get_eq_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_probe_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_probe_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Comb_Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_probe_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Comb_Probe_Fn& -PB_DS_CLASS_C_DEC:: -get_comb_probe_fn() const -{ return *this; } - -PB_DS_CLASS_T_DEC -Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Resize_Policy& -PB_DS_CLASS_C_DEC:: -get_resize_policy() const -{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp deleted file mode 100644 index 00a71063c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/resize_fn_imps.hpp - * Contains implementations of gp_ht_map_'s resize related functions. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -do_resize_if_needed() -{ - if (!resize_base::is_resize_needed()) - return false; - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -do_resize(size_type n) -{ resize_imp(resize_base::get_nearest_larger_size(n)); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -do_resize_if_needed_no_throw() -{ - if (!resize_base::is_resize_needed()) - return; - - __try - { - resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); - } - __catch(...) - { } - - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp(size_type new_size) -{ -#ifdef PB_DS_REGRESSION - typename _Alloc::group_adjustor adjust(m_num_e); -#endif - - if (new_size == m_num_e) - return; - - PB_DS_ASSERT_VALID((*this)) - const size_type old_size = m_num_e; - entry_array a_entries_resized = 0; - - // Following line might throw an exception. - a_entries_resized = s_entry_allocator.allocate(new_size); - - ranged_probe_fn_base::notify_resized(new_size); - m_num_e = new_size; - - for (size_type i = 0; i < m_num_e; ++i) - a_entries_resized[i].m_stat = empty_entry_status; - - __try - { - resize_imp(a_entries_resized, old_size); - } - __catch(...) - { - erase_all_valid_entries(a_entries_resized, new_size); - m_num_e = old_size; - s_entry_allocator.deallocate(a_entries_resized, new_size); - ranged_probe_fn_base::notify_resized(old_size); - __throw_exception_again; - } - - // At this point no exceptions can be thrown. - _GLIBCXX_DEBUG_ONLY(assert_entry_array_valid(a_entries_resized, - traits_base::m_store_extra_indicator, - __FILE__, __LINE__);) - - Resize_Policy::notify_resized(new_size); - erase_all_valid_entries(m_entries, old_size); - s_entry_allocator.deallocate(m_entries, old_size); - m_entries = a_entries_resized; - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -resize_imp(entry_array a_entries_resized, size_type old_size) -{ - for (size_type pos = 0; pos < old_size; ++pos) - if (m_entries[pos].m_stat == valid_entry_status) - resize_imp_reassign(m_entries + pos, a_entries_resized, - traits_base::m_store_extra_indicator); -} - -#include -#include - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp deleted file mode 100644 index c63be3252..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp +++ /dev/null @@ -1,72 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s resize related functions, when the - * hash value is not stored. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, - false_type) -{ - key_const_reference r_key = PB_DS_V2F(p_e->m_value); - size_type hash = ranged_probe_fn_base::operator()(r_key); - size_type i; - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - entry_pointer p_new_e = a_entries_resized + pos; - switch(p_new_e->m_stat) - { - case empty_entry_status: - new (&p_new_e->m_value) value_type(p_e->m_value); - p_new_e->m_stat = valid_entry_status; - return; - case erased_entry_status: - _GLIBCXX_DEBUG_ASSERT(0); - break; - case valid_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - } - __throw_insert_error(); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp deleted file mode 100644 index 4b0b0729b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/resize_store_hash_fn_imps.hpp - * Contains implementations of gp_ht_map_'s resize related functions, when the - * hash value is stored. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, - true_type) -{ - key_const_reference r_key = PB_DS_V2F(p_e->m_value); - size_type hash = ranged_probe_fn_base::operator()(r_key, p_e->m_hash); - - size_type i; - for (i = 0; i < m_num_e; ++i) - { - const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); - entry_pointer p_new_e = a_entries_resized + pos; - switch(p_new_e->m_stat) - { - case empty_entry_status: - new (&p_new_e->m_value) value_type(p_e->m_value); - p_new_e->m_hash = hash; - p_new_e->m_stat = valid_entry_status; - return; - case erased_entry_status: - _GLIBCXX_DEBUG_ASSERT(0); - break; - case valid_entry_status: - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - } - __throw_insert_error(); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp deleted file mode 100644 index 98a992465..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp +++ /dev/null @@ -1,74 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file gp_hash_table_map_/trace_fn_imps.hpp - * Contains implementations of gp_ht_map_'s trace-mode functions. - */ - -#ifdef PB_DS_HT_MAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << static_cast(m_num_e) << " " << - static_cast(m_num_used_e) << std::endl; - - for (size_type i = 0; i < m_num_e; ++i) - { - std::cerr << static_cast(i) << " "; - - switch(m_entries[i].m_stat) - { - case empty_entry_status: - std::cerr << ""; - break; - case erased_entry_status: - std::cerr << ""; - break; - case valid_entry_status: - std::cerr << PB_DS_V2F(m_entries[i].m_value); - break; - default: - _GLIBCXX_DEBUG_ASSERT(0); - }; - - std::cerr << std::endl; - } -} - -#endif // #ifdef PB_DS_HT_MAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp deleted file mode 100644 index 89f1018d9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp +++ /dev/null @@ -1,159 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/const_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_CLASS_C_DEC \ - left_child_next_sibling_heap_const_iterator_ - -#define PB_DS_BASIC_HEAP_CIT_BASE \ - left_child_next_sibling_heap_node_point_const_iterator_ - - /// Const point-type iterator. - template - class left_child_next_sibling_heap_const_iterator_ - : public PB_DS_BASIC_HEAP_CIT_BASE - { - private: - typedef PB_DS_BASIC_HEAP_CIT_BASE base_type; - typedef typename base_type::node_pointer node_pointer; - - public: - /// Category. - typedef std::forward_iterator_tag iterator_category; - - /// Difference type. - typedef typename _Alloc::difference_type difference_type; - - /// Iterator's value type. - typedef typename base_type::value_type value_type; - - /// Iterator's pointer type. - typedef typename base_type::pointer pointer; - - /// Iterator's const pointer type. - typedef typename base_type::const_pointer const_pointer; - - /// Iterator's reference type. - typedef typename base_type::reference reference; - - /// Iterator's const reference type. - typedef typename base_type::const_reference const_reference; - - inline - left_child_next_sibling_heap_const_iterator_(node_pointer p_nd) - : base_type(p_nd) - { } - - /// Default constructor. - inline - left_child_next_sibling_heap_const_iterator_() - { } - - /// Copy constructor. - inline - left_child_next_sibling_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other) - { } - - /// Compares content to a different iterator object. - bool - operator==(const PB_DS_CLASS_C_DEC& other) const - { return (base_type::m_p_nd == other.m_p_nd); } - - /// Compares content (negatively) to a different iterator object. - bool - operator!=(const PB_DS_CLASS_C_DEC& other) const - { return (base_type::m_p_nd != other.m_p_nd); } - - PB_DS_CLASS_C_DEC& - operator++() - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd != 0); - inc(); - return (*this); - } - - PB_DS_CLASS_C_DEC - operator++(int) - { - PB_DS_CLASS_C_DEC ret_it(base_type::m_p_nd); - operator++(); - return (ret_it); - } - - private: - void - inc() - { - if (base_type::m_p_nd->m_p_next_sibling != 0) - { - base_type::m_p_nd = base_type::m_p_nd->m_p_next_sibling; - while (base_type::m_p_nd->m_p_l_child != 0) - base_type::m_p_nd = base_type::m_p_nd->m_p_l_child; - return; - } - - while (true) - { - node_pointer p_next = base_type::m_p_nd; - base_type::m_p_nd = base_type::m_p_nd->m_p_prev_or_parent; - if (base_type::m_p_nd == 0 - || base_type::m_p_nd->m_p_l_child == p_next) - return; - } - } - }; - -#undef PB_DS_CLASS_C_DEC -#undef PB_DS_BASIC_HEAP_CIT_BASE - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index ac028e2c1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,152 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_allocator -PB_DS_CLASS_C_DEC::s_node_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::no_throw_copies_t -PB_DS_CLASS_C_DEC::s_no_throw_copies_ind; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -left_child_next_sibling_heap() : - m_p_root(0), - m_size(0) -{ - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -left_child_next_sibling_heap(const Cmp_Fn& r_cmp_fn) : - Cmp_Fn(r_cmp_fn), - m_p_root(0), - m_size(0) -{ - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -left_child_next_sibling_heap(const PB_DS_CLASS_C_DEC& other) -: Cmp_Fn(other), m_p_root(0), m_size(0) -{ - m_size = other.m_size; - PB_DS_ASSERT_VALID(other) - m_p_root = recursive_copy_node(other.m_p_root); - m_size = other.m_size; - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - value_swap(other); - std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - std::swap(m_p_root, other.m_p_root); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~left_child_next_sibling_heap() -{ - clear(); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -recursive_copy_node(node_const_pointer p_nd) -{ - if (p_nd == 0) - return (0); - - node_pointer p_ret = s_node_allocator.allocate(1); - - __try - { - new (p_ret) node(*p_nd); - } - __catch(...) - { - s_node_allocator.deallocate(p_ret, 1); - __throw_exception_again; - } - - p_ret->m_p_l_child = p_ret->m_p_next_sibling = - p_ret->m_p_prev_or_parent = 0; - - __try - { - p_ret->m_p_l_child = recursive_copy_node(p_nd->m_p_l_child); - p_ret->m_p_next_sibling = recursive_copy_node(p_nd->m_p_next_sibling); - } - __catch(...) - { - clear_imp(p_ret); - __throw_exception_again; - } - - if (p_ret->m_p_l_child != 0) - p_ret->m_p_l_child->m_p_prev_or_parent = p_ret; - - if (p_ret->m_p_next_sibling != 0) - p_ret->m_p_next_sibling->m_p_prev_or_parent = - p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd ? p_ret : 0; - - return p_ret; -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp deleted file mode 100644 index 6d93b511d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,137 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/debug_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - PB_DS_DEBUG_VERIFY(m_p_root == 0 || m_p_root->m_p_prev_or_parent == 0); - - if (m_p_root != 0) - assert_node_consistent(m_p_root, Single_Link_Roots, __file, __line); - assert_size(__file, __line); - assert_iterators(__file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(node_const_pointer p_nd, bool single_link, - const char* __file, int __line) const -{ - if (p_nd == 0) - return; - - assert_node_consistent(p_nd->m_p_l_child, false, __file, __line); - assert_node_consistent(p_nd->m_p_next_sibling, single_link, __file, __line); - - if (single_link) - PB_DS_DEBUG_VERIFY(p_nd->m_p_prev_or_parent == 0); - else if (p_nd->m_p_next_sibling != 0) - PB_DS_DEBUG_VERIFY(p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd); - - if (p_nd->m_p_l_child == 0) - return; - - node_const_pointer p_child = p_nd->m_p_l_child; - while (p_child != 0) - { - node_const_pointer p_next_child = p_child->m_p_next_sibling; - PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(p_nd->m_value, p_child->m_value)); - p_child = p_next_child; - } - PB_DS_DEBUG_VERIFY(p_nd->m_p_l_child->m_p_prev_or_parent == p_nd); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators(const char* __file, int __line) const -{ - PB_DS_DEBUG_VERIFY(std::distance(begin(), end()) == size()); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_size(const char* __file, int __line) const -{ - PB_DS_DEBUG_VERIFY(size_from_node(m_p_root) == m_size); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size_under_node(node_const_pointer p_nd) -{ return 1 + size_from_node(p_nd->m_p_l_child); } - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size_from_node(node_const_pointer p_nd) -{ - size_type ret = 0; - while (p_nd != 0) - { - ret += 1 + size_from_node(p_nd->m_p_l_child); - p_nd = p_nd->m_p_next_sibling; - } - return ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -degree(node_const_pointer p_nd) -{ - size_type ret = 0; - node_const_pointer p_child = p_nd->m_p_l_child; - while (p_child != 0) - { - ++ret; - p_child = p_child->m_p_next_sibling; - } - return ret; -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp deleted file mode 100644 index 496483dda..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/erase_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - clear_imp(m_p_root); - _GLIBCXX_DEBUG_ASSERT(m_size == 0); - m_p_root = 0; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - p_nd->~node(); - s_node_allocator.deallocate(p_nd, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - while (p_nd != 0) - { - clear_imp(p_nd->m_p_l_child); - node_pointer p_next = p_nd->m_p_next_sibling; - actual_erase_node(p_nd); - p_nd = p_next; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -to_linked_list() -{ - PB_DS_ASSERT_VALID((*this)) - node_pointer p_cur = m_p_root; - while (p_cur != 0) - if (p_cur->m_p_l_child != 0) - { - node_pointer p_child_next = p_cur->m_p_l_child->m_p_next_sibling; - p_cur->m_p_l_child->m_p_next_sibling = p_cur->m_p_next_sibling; - p_cur->m_p_next_sibling = p_cur->m_p_l_child; - p_cur->m_p_l_child = p_child_next; - } - else - p_cur = p_cur->m_p_next_sibling; - -#ifdef _GLIBCXX_DEBUG - node_const_pointer p_counter = m_p_root; - size_type count = 0; - while (p_counter != 0) - { - ++count; - _GLIBCXX_DEBUG_ASSERT(p_counter->m_p_l_child == 0); - p_counter = p_counter->m_p_next_sibling; - } - _GLIBCXX_DEBUG_ASSERT(count == m_size); -#endif -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -prune(Pred pred) -{ - node_pointer p_cur = m_p_root; - m_p_root = 0; - node_pointer p_out = 0; - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - if (pred(p_cur->m_value)) - { - p_cur->m_p_next_sibling = p_out; - if (p_out != 0) - p_out->m_p_prev_or_parent = p_cur; - p_out = p_cur; - } - else - { - p_cur->m_p_next_sibling = m_p_root; - if (m_p_root != 0) - m_p_root->m_p_prev_or_parent = p_cur; - m_p_root = p_cur; - } - p_cur = p_next; - } - return p_out; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -bubble_to_top(node_pointer p_nd) -{ - node_pointer p_parent = parent(p_nd); - while (p_parent != 0) - { - swap_with_parent(p_nd, p_parent); - p_parent = parent(p_nd); - } -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp deleted file mode 100644 index 24e0c713d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp +++ /dev/null @@ -1,64 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/info_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ - return (m_size == 0); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ - return (m_size); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ - return (s_node_allocator.max_size()); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp deleted file mode 100644 index 68a3fb4b6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,175 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/insert_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_insert(const_reference r_val) -{ - return get_new_node_for_insert(r_val, s_no_throw_copies_ind); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_insert(const_reference r_val, false_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - cond_dealtor_t cond(p_new_nd); - - new (const_cast( - static_cast(&p_new_nd->m_value))) - typename node::value_type(r_val); - - cond.set_no_action(); - - ++m_size; - - return (p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -get_new_node_for_insert(const_reference r_val, true_type) -{ - node_pointer p_new_nd = s_node_allocator.allocate(1); - - new (const_cast( - static_cast(&p_new_nd->m_value))) - typename node::value_type(r_val); - - ++m_size; - - return (p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_child_of(node_pointer p_nd, node_pointer p_new_parent) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - _GLIBCXX_DEBUG_ASSERT(p_new_parent != 0); - - p_nd->m_p_next_sibling = p_new_parent->m_p_l_child; - - if (p_new_parent->m_p_l_child != 0) - p_new_parent->m_p_l_child->m_p_prev_or_parent = p_nd; - - p_nd->m_p_prev_or_parent = p_new_parent; - - p_new_parent->m_p_l_child = p_nd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -parent(node_pointer p_nd) -{ - while (true) - { - node_pointer p_pot = p_nd->m_p_prev_or_parent; - - if (p_pot == 0 || p_pot->m_p_l_child == p_nd) - return p_pot; - - p_nd = p_pot; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -swap_with_parent(node_pointer p_nd, node_pointer p_parent) -{ - if (p_parent == m_p_root) - m_p_root = p_nd; - - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - _GLIBCXX_DEBUG_ASSERT(p_parent != 0); - _GLIBCXX_DEBUG_ASSERT(parent(p_nd) == p_parent); - - const bool nd_direct_child = p_parent->m_p_l_child == p_nd; - const bool parent_root = p_parent->m_p_prev_or_parent == 0; - const bool parent_direct_child = - !parent_root&& p_parent->m_p_prev_or_parent->m_p_l_child == p_parent; - - std::swap(p_parent->m_p_prev_or_parent, p_nd->m_p_prev_or_parent); - std::swap(p_parent->m_p_next_sibling, p_nd->m_p_next_sibling); - std::swap(p_parent->m_p_l_child, p_nd->m_p_l_child); - std::swap(p_parent->m_metadata, p_nd->m_metadata); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child != 0); - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent != 0); - - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; - - if (p_parent->m_p_next_sibling != 0) - p_parent->m_p_next_sibling->m_p_prev_or_parent = p_parent; - - if (p_parent->m_p_l_child != 0) - p_parent->m_p_l_child->m_p_prev_or_parent = p_parent; - - if (parent_direct_child) - p_nd->m_p_prev_or_parent->m_p_l_child = p_nd; - else if (!parent_root) - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd; - - if (!nd_direct_child) - { - p_nd->m_p_l_child->m_p_prev_or_parent = p_nd; - - p_parent->m_p_prev_or_parent->m_p_next_sibling = p_parent; - } - else - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child == p_nd); - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent == p_parent); - - p_nd->m_p_l_child = p_parent; - p_parent->m_p_prev_or_parent = p_nd; - } - - _GLIBCXX_DEBUG_ASSERT(parent(p_parent) == p_nd); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp deleted file mode 100644 index de9d67b3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/iterators_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - node_pointer p_nd = m_p_root; - - if (p_nd == 0) - return (iterator(0)); - - while (p_nd->m_p_l_child != 0) - p_nd = p_nd->m_p_l_child; - - return (iterator(p_nd)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - node_pointer p_nd = m_p_root; - - if (p_nd == 0) - return (const_iterator(0)); - - while (p_nd->m_p_l_child != 0) - p_nd = p_nd->m_p_l_child; - - return (const_iterator(p_nd)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ - return (iterator(0)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return (const_iterator(0)); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp deleted file mode 100644 index adb4a79f0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/node.hpp - * Contains an implementation struct for this type of heap's node. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP - -namespace __gnu_pbds -{ - namespace detail - { - /// Node. - template - struct left_child_next_sibling_heap_node_ - { - private: - typedef left_child_next_sibling_heap_node_<_Value, _Metadata, _Alloc> this_type; - - public: - typedef _Value value_type; - typedef typename _Alloc::size_type size_type; - typedef _Metadata metadata_type; - - typedef typename _Alloc::template rebind::other::pointer node_pointer; - - value_type m_value; - metadata_type m_metadata; - node_pointer m_p_l_child; - node_pointer m_p_next_sibling; - node_pointer m_p_prev_or_parent; - }; - - template - struct left_child_next_sibling_heap_node_<_Value, null_type, _Alloc> - { - private: - typedef left_child_next_sibling_heap_node_<_Value, null_type, _Alloc> this_type; - - public: - typedef _Value value_type; - typedef typename _Alloc::size_type size_type; - - typedef typename _Alloc::template rebind::other::pointer node_pointer; - - value_type m_value; - node_pointer m_p_l_child; - node_pointer m_p_next_sibling; - node_pointer m_p_prev_or_parent; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp deleted file mode 100644 index 012871856..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp +++ /dev/null @@ -1,149 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/point_const_iterator.hpp - * Contains an iterator class returned by the table's const find and insert - * methods. - */ - -#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP -#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { - -#define PB_DS_CLASS_T_DEC \ - template - -#define PB_DS_CLASS_C_DEC \ - left_child_next_sibling_heap_node_point_const_iterator_ - - /// Const point-type iterator. - template - class left_child_next_sibling_heap_node_point_const_iterator_ - { - protected: - typedef typename _Alloc::template rebind::other::pointer node_pointer; - - public: - /// Category. - typedef trivial_iterator_tag iterator_category; - - /// Difference type. - typedef trivial_iterator_difference_type difference_type; - - /// Iterator's value type. - typedef typename Node::value_type value_type; - - /// Iterator's pointer type. - typedef - typename _Alloc::template rebind< - value_type>::other::pointer - pointer; - - /// Iterator's const pointer type. - typedef - typename _Alloc::template rebind< - value_type>::other::const_pointer - const_pointer; - - /// Iterator's reference type. - typedef - typename _Alloc::template rebind< - value_type>::other::reference - reference; - - /// Iterator's const reference type. - typedef - typename _Alloc::template rebind< - value_type>::other::const_reference - const_reference; - - inline - left_child_next_sibling_heap_node_point_const_iterator_(node_pointer p_nd) : m_p_nd(p_nd) - { } - - /// Default constructor. - inline - left_child_next_sibling_heap_node_point_const_iterator_() : m_p_nd(0) - { } - - /// Copy constructor. - inline - left_child_next_sibling_heap_node_point_const_iterator_(const PB_DS_CLASS_C_DEC& other) : m_p_nd(other.m_p_nd) - { } - - /// Access. - const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != 0); - return &m_p_nd->m_value; - } - - /// Access. - const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_nd != 0); - return m_p_nd->m_value; - } - - /// Compares content to a different iterator object. - bool - operator==(const PB_DS_CLASS_C_DEC& other) const - { return m_p_nd == other.m_p_nd; } - - /// Compares content (negatively) to a different iterator object. - bool - operator!=(const PB_DS_CLASS_C_DEC& other) const - { return m_p_nd != other.m_p_nd; } - - node_pointer m_p_nd; - }; - -#undef PB_DS_CLASS_T_DEC -#undef PB_DS_CLASS_C_DEC - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp deleted file mode 100644 index 4561bcaa4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/policy_access_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -PB_DS_CLASS_T_DEC -Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() const -{ return *this; } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp deleted file mode 100644 index f7daaece7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file left_child_next_sibling_heap_/trace_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -#ifdef PB_DS_LC_NS_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << std::endl; - trace_node(m_p_root, 0); - std::cerr << std::endl; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node(node_const_pointer p_nd, size_type level) -{ - while (p_nd != 0) - { - for (size_type i = 0; i < level; ++i) - std::cerr << ' '; - - std::cerr << p_nd << - " prev = " << p_nd->m_p_prev_or_parent << - " next " << p_nd->m_p_next_sibling << - " left = " << p_nd->m_p_l_child << " "; - - trace_node_metadata(p_nd, type_to_type()); - std::cerr << p_nd->m_value << std::endl; - trace_node(p_nd->m_p_l_child, level + 1); - p_nd = p_nd->m_p_next_sibling; - } -} - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(node_const_pointer p_nd, type_to_type) -{ - std::cerr << "(" << p_nd->m_metadata << ") "; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(node_const_pointer, type_to_type) -{ } - -#endif // #ifdef PB_DS_LC_NS_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp deleted file mode 100644 index fbfc88ad7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp +++ /dev/null @@ -1,136 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/constructor_destructor_fn_imps.hpp - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::entry_allocator -PB_DS_CLASS_C_DEC::s_entry_allocator; - -PB_DS_CLASS_T_DEC -Eq_Fn PB_DS_CLASS_C_DEC::s_eq_fn; - -PB_DS_CLASS_T_DEC -null_type PB_DS_CLASS_C_DEC::s_null_type; - -PB_DS_CLASS_T_DEC -Update_Policy PB_DS_CLASS_C_DEC::s_update_policy; - -PB_DS_CLASS_T_DEC -type_to_type< - typename PB_DS_CLASS_C_DEC::update_metadata> PB_DS_CLASS_C_DEC::s_metadata_type_indicator; - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_LU_NAME() : m_p_l(0) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -template -PB_DS_CLASS_C_DEC:: -PB_DS_LU_NAME(It first_it, It last_it) : m_p_l(0) -{ - copy_from_range(first_it, last_it); - PB_DS_ASSERT_VALID((*this)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_LU_NAME(const PB_DS_CLASS_C_DEC& other) : -m_p_l(0) -{ - __try - { - for (const_iterator it = other.begin(); it != other.end(); ++it) - { - entry_pointer p_l = allocate_new_entry(*it, - traits_base::m_no_throw_copies_indicator); - - p_l->m_p_next = m_p_l; - m_p_l = p_l; - } - } - __catch(...) - { - deallocate_all(); - __throw_exception_again; - } - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_p_l, other.m_p_l); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -deallocate_all() -{ - entry_pointer p_l = m_p_l; - while (p_l != 0) - { - entry_pointer p_next_l = p_l->m_p_next; - actual_erase_entry(p_l); - p_l = p_next_l; - } - m_p_l = 0; -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_LU_NAME() -{ deallocate_all(); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp deleted file mode 100644 index 7c4fddc16..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/debug_fn_imps.hpp - * Contains implementations of cc_ht_map_'s debug-mode functions. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - size_type calc_size = 0; - for (const_iterator it = begin(); it != end(); ++it) - { - debug_base::check_key_exists(PB_DS_V2F(*it), __file, __line); - ++calc_size; - } - debug_base::check_size(calc_size, __file, __line); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp deleted file mode 100644 index 7050442be..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,134 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/erase_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ - PB_DS_ASSERT_VALID((*this)) - if (m_p_l == 0) - return false; - - if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value))) - { - entry_pointer p_next = m_p_l->m_p_next; - actual_erase_entry(m_p_l); - m_p_l = p_next; - return true; - } - - entry_pointer p_l = m_p_l; - while (p_l->m_p_next != 0) - if (s_eq_fn(r_key, PB_DS_V2F(p_l->m_p_next->m_value))) - { - erase_next(p_l); - return true; - } - else - p_l = p_l->m_p_next; - return false; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - deallocate_all(); -} - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - size_type num_ersd = 0; - while (m_p_l != 0 && pred(m_p_l->m_value)) - { - entry_pointer p_next = m_p_l->m_p_next; - ++num_ersd; - actual_erase_entry(m_p_l); - m_p_l = p_next; - } - - if (m_p_l == 0) - return num_ersd; - - entry_pointer p_l = m_p_l; - while (p_l->m_p_next != 0) - { - if (pred(p_l->m_p_next->m_value)) - { - ++num_ersd; - erase_next(p_l); - } - else - p_l = p_l->m_p_next; - } - - PB_DS_ASSERT_VALID((*this)) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_next(entry_pointer p_l) -{ - _GLIBCXX_DEBUG_ASSERT(p_l != 0); - _GLIBCXX_DEBUG_ASSERT(p_l->m_p_next != 0); - entry_pointer p_next_l = p_l->m_p_next->m_p_next; - actual_erase_entry(p_l->m_p_next); - p_l->m_p_next = p_next_l; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -actual_erase_entry(entry_pointer p_l) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->m_value));) - p_l->~entry(); - s_entry_allocator.deallocate(p_l, 1); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp deleted file mode 100644 index 0fc2bacfb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp +++ /dev/null @@ -1,90 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/find_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -find_imp(key_const_reference r_key) const -{ - if (m_p_l == 0) - return 0; - if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value))) - { - apply_update(m_p_l, s_metadata_type_indicator); - PB_DS_CHECK_KEY_EXISTS(r_key) - return m_p_l; - } - - entry_pointer p_l = m_p_l; - while (p_l->m_p_next != 0) - { - entry_pointer p_next = p_l->m_p_next; - if (s_eq_fn(r_key, PB_DS_V2F(p_next->m_value))) - { - if (apply_update(p_next, s_metadata_type_indicator)) - { - p_l->m_p_next = p_next->m_p_next; - p_next->m_p_next = m_p_l; - m_p_l = p_next; - return m_p_l; - } - return p_next; - } - else - p_l = p_next; - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return 0; -} - -PB_DS_CLASS_T_DEC -template -inline bool -PB_DS_CLASS_C_DEC:: -apply_update(entry_pointer p_l, type_to_type) -{ return s_update_policy(p_l->m_update_metadata); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -apply_update(entry_pointer, type_to_type) -{ return s_update_policy(s_null_type); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp deleted file mode 100644 index 66a15b51c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp +++ /dev/null @@ -1,57 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/info_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return std::distance(begin(), end()); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_entry_allocator.max_size(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (m_p_l == 0); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp deleted file mode 100644 index 979aaf62a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,106 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/insert_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair< - typename PB_DS_CLASS_C_DEC::point_iterator, - bool> -PB_DS_CLASS_C_DEC:: -insert(const_reference r_val) -{ - PB_DS_ASSERT_VALID((*this)) - entry_pointer p_l = find_imp(PB_DS_V2F(r_val)); - - if (p_l != 0) - { - PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(r_val)) - return std::make_pair(point_iterator(&p_l->m_value), false); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(PB_DS_V2F(r_val)) - - p_l = allocate_new_entry(r_val, traits_base::m_no_throw_copies_indicator); - p_l->m_p_next = m_p_l; - m_p_l = p_l; - PB_DS_ASSERT_VALID((*this)) - return std::make_pair(point_iterator(&p_l->m_value), true); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -allocate_new_entry(const_reference r_val, false_type) -{ - entry_pointer p_l = s_entry_allocator.allocate(1); - cond_dealtor_t cond(p_l); - new (const_cast(static_cast(&p_l->m_value))) - value_type(r_val); - - cond.set_no_action(); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - init_entry_metadata(p_l, s_metadata_type_indicator); - return p_l; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::entry_pointer -PB_DS_CLASS_C_DEC:: -allocate_new_entry(const_reference r_val, true_type) -{ - entry_pointer p_l = s_entry_allocator.allocate(1); - new (&p_l->m_value) value_type(r_val); - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) - init_entry_metadata(p_l, s_metadata_type_indicator); - return p_l; -} - -PB_DS_CLASS_T_DEC -template -inline void -PB_DS_CLASS_C_DEC:: -init_entry_metadata(entry_pointer p_l, type_to_type) -{ new (&p_l->m_update_metadata) Metadata(s_update_policy()); } - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -init_entry_metadata(entry_pointer, type_to_type) -{ } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp deleted file mode 100644 index 91fef5159..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/iterators_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ - if (m_p_l == 0) - { - _GLIBCXX_DEBUG_ASSERT(empty()); - return end(); - } - return iterator(&m_p_l->m_value, m_p_l, this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ - if (m_p_l == 0) - { - _GLIBCXX_DEBUG_ASSERT(empty()); - return end(); - } - return iterator(&m_p_l->m_value, m_p_l, const_cast(this)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return iterator(0, 0, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ - return const_iterator(0, 0, const_cast(this)); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp deleted file mode 100644 index e1d3966ed..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp +++ /dev/null @@ -1,59 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file list_update_map_/trace_fn_imps.hpp - * Contains implementations of lu_map_. - */ - -#ifdef PB_DS_LU_MAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << m_p_l << std::endl << std::endl; - const_entry_pointer p_l = m_p_l; - while (p_l != 0) - { - std::cerr << PB_DS_V2F(p_l->m_value) << std::endl; - p_l = p_l->m_p_next; - } - std::cerr << std::endl; -} - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 270938ce4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,257 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::value_allocator -PB_DS_CLASS_C_DEC::s_value_alloc; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::metadata_allocator -PB_DS_CLASS_C_DEC::s_metadata_alloc; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_OV_TREE_NAME() : - m_a_values(0), - m_a_metadata(0), - m_end_it(0), - m_size(0) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_OV_TREE_NAME(const Cmp_Fn& r_cmp_fn) : - cmp_fn(r_cmp_fn), - m_a_values(0), - m_a_metadata(0), - m_end_it(0), - m_size(0) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_OV_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_nodeu) : - cmp_fn(r_cmp_fn), - node_update(r_nodeu), - m_a_values(0), - m_a_metadata(0), - m_end_it(0), - m_size(0) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_OV_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef PB_DS_TREE_TRACE - trace_base(other), -#endif - cmp_fn(other), - node_update(other), - m_a_values(0), - m_a_metadata(0), - m_end_it(0), - m_size(0) -{ - copy_from_ordered_range(other.begin(), other.end()); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -template -inline void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ -#ifdef PB_DS_DATA_TRUE_INDICATOR - typedef std::map::other> - map_type; -#else - typedef std::set::other> - map_type; -#endif - - map_type m(first_it, last_it); - copy_from_ordered_range(m.begin(), m.end()); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_ordered_range(It first_it, It last_it) -{ - const size_type len = std::distance(first_it, last_it); - if (len == 0) - return; - - value_vector a_values = s_value_alloc.allocate(len); - iterator target_it = a_values; - It source_it = first_it; - It source_end_it = last_it; - - cond_dtor cd(a_values, target_it, len); - while (source_it != source_end_it) - { - void* __v = const_cast(static_cast(target_it)); - new (__v) value_type(*source_it++); - ++target_it; - } - - reallocate_metadata((node_update*)this, len); - cd.set_no_action(); - m_a_values = a_values; - m_size = len; - m_end_it = m_a_values + m_size; - update(PB_DS_node_begin_imp(), (node_update*)this); - -#ifdef _GLIBCXX_DEBUG - for (const_iterator dbg_it = m_a_values; dbg_it != m_end_it; ++dbg_it) - debug_base::insert_new(PB_DS_V2F(*dbg_it)); -#endif -} - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_ordered_range(It first_it, It last_it, It other_first_it, - It other_last_it) -{ - clear(); - const size_type len = std::distance(first_it, last_it) - + std::distance(other_first_it, other_last_it); - - value_vector a_values = s_value_alloc.allocate(len); - - iterator target_it = a_values; - It source_it = first_it; - It source_end_it = last_it; - - cond_dtor cd(a_values, target_it, len); - while (source_it != source_end_it) - { - new (const_cast(static_cast(target_it))) - value_type(*source_it++); - ++target_it; - } - - source_it = other_first_it; - source_end_it = other_last_it; - - while (source_it != source_end_it) - { - new (const_cast(static_cast(target_it))) - value_type(*source_it++); - ++target_it; - } - - reallocate_metadata((node_update* )this, len); - cd.set_no_action(); - m_a_values = a_values; - m_size = len; - m_end_it = m_a_values + m_size; - update(PB_DS_node_begin_imp(), (node_update* )this); - -#ifdef _GLIBCXX_DEBUG - for (const_iterator dbg_it = m_a_values; dbg_it != m_end_it; ++dbg_it) - debug_base::insert_new(PB_DS_V2F(*dbg_it)); -#endif -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - value_swap(other); - std::swap(static_cast(*this), - static_cast(other)); - std::swap(static_cast(*this), - static_cast(other)); - PB_DS_ASSERT_VALID(other) - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_a_values, other.m_a_values); - std::swap(m_a_metadata, other.m_a_metadata); - std::swap(m_size, other.m_size); - std::swap(m_end_it, other.m_end_it); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_OV_TREE_NAME() -{ - PB_DS_ASSERT_VALID((*this)) - cond_dtor cd(m_a_values, m_end_it, m_size); - reallocate_metadata((node_update*)this, 0); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update(node_iterator, null_node_update_pointer) -{ } - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -update(node_iterator nd_it, Node_Update* p_update) -{ - node_const_iterator end_it = PB_DS_node_end_imp(); - if (nd_it != end_it) - { - update(nd_it.get_l_child(), p_update); - update(nd_it.get_r_child(), p_update); - node_update::operator()(nd_it, end_it); - } -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp deleted file mode 100644 index dc934f5a5..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,79 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/debug_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - if (m_a_values == 0 || m_end_it == 0 || m_size == 0) - PB_DS_DEBUG_VERIFY(m_a_values == 0 && m_end_it == 0 && m_size == 0); - - assert_iterators(__file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators(const char* __file, int __line) const -{ - debug_base::check_size(m_size, __file, __line); - size_type iterated_num = 0; - const_iterator prev_it = end(); - PB_DS_DEBUG_VERIFY(m_end_it == m_a_values + m_size); - for (const_iterator it = begin(); it != end(); ++it) - { - ++iterated_num; - debug_base::check_key_exists(PB_DS_V2F(*it), __file, __line); - PB_DS_DEBUG_VERIFY(lower_bound(PB_DS_V2F(*it)) == it); - const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it)); - --upper_bound_it; - PB_DS_DEBUG_VERIFY(upper_bound_it == it); - if (prev_it != end()) - PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(*prev_it), - PB_DS_V2F(*it))); - prev_it = it; - } - PB_DS_DEBUG_VERIFY(iterated_num == m_size); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp deleted file mode 100644 index 1664ed8fe..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,191 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/erase_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - PB_DS_ASSERT_VALID((*this)) - if (m_size == 0) - { - return; - } - else - { - reallocate_metadata((node_update* )this, 0); - cond_dtor cd(m_a_values, m_end_it, m_size); - } - - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - m_a_values = 0; - m_size = 0; - m_end_it = m_a_values; - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - -#ifdef PB_DS_REGRESSION - typename _Alloc::group_adjustor adjust(m_size); -#endif - - size_type new_size = 0; - size_type num_val_ersd = 0; - - for (iterator source_it = begin(); source_it != m_end_it; ++source_it) - if (!pred(*source_it)) - ++new_size; - else - ++num_val_ersd; - - if (new_size == 0) - { - clear(); - return num_val_ersd; - } - - value_vector a_new_values = s_value_alloc.allocate(new_size); - iterator target_it = a_new_values; - cond_dtor cd(a_new_values, target_it, new_size); - _GLIBCXX_DEBUG_ONLY(debug_base::clear()); - for (iterator source_it = begin(); source_it != m_end_it; ++source_it) - { - if (!pred(*source_it)) - { - new (const_cast(static_cast(target_it))) - value_type(*source_it); - - _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(*source_it))); - ++target_it; - } - } - - reallocate_metadata((node_update*)this, new_size); - cd.set_no_action(); - - { - cond_dtor cd1(m_a_values, m_end_it, m_size); - } - - m_a_values = a_new_values; - m_size = new_size; - m_end_it = target_it; - update(node_begin(), (node_update*)this); - PB_DS_ASSERT_VALID((*this)) - return num_val_ersd; -} - -PB_DS_CLASS_T_DEC -template -It -PB_DS_CLASS_C_DEC:: -erase_imp(It it) -{ - PB_DS_ASSERT_VALID((*this)) - if (it == end()) - return end(); - - PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(*it)) - -#ifdef PB_DS_REGRESSION - typename _Alloc::group_adjustor adjust(m_size); -#endif - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - value_vector a_values = s_value_alloc.allocate(m_size - 1); - iterator source_it = begin(); - iterator source_end_it = end(); - iterator target_it = a_values; - iterator ret_it = end(); - - cond_dtor cd(a_values, target_it, m_size - 1); - - _GLIBCXX_DEBUG_ONLY(size_type cnt = 0;) - - while (source_it != source_end_it) - { - if (source_it != it) - { - _GLIBCXX_DEBUG_ONLY(++cnt;) - _GLIBCXX_DEBUG_ASSERT(cnt != m_size); - new (const_cast(static_cast(target_it))) - value_type(*source_it); - - ++target_it; - } - else - ret_it = target_it; - ++source_it; - } - - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - reallocate_metadata((node_update*)this, m_size - 1); - cd.set_no_action(); - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(*it));) - { - cond_dtor cd1(m_a_values, m_end_it, m_size); - } - - m_a_values = a_values; - --m_size; - m_end_it = m_a_values + m_size; - update(node_begin(), (node_update*)this); - PB_DS_ASSERT_VALID((*this)) - return It(ret_it); -} - -PB_DS_CLASS_T_DEC -bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ - point_iterator it = find(r_key); - if (it == end()) - return false; - erase(it); - return true; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp deleted file mode 100644 index 286f1673a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/info_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ - PB_DS_ASSERT_VALID((*this)) - return m_size; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_value_alloc.max_size(); } - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return size() == 0; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp deleted file mode 100644 index 49ddc58e9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,63 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/insert_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -reallocate_metadata(null_node_update_pointer, size_type) -{ } - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -reallocate_metadata(Node_Update_* , size_type new_size) -{ - metadata_pointer a_new_metadata_vec =(new_size == 0) ? 0 : s_metadata_alloc.allocate(new_size); - - if (m_a_metadata != 0) - { - for (size_type i = 0; i < m_size; ++i) - m_a_metadata[i].~metadata_type(); - s_metadata_alloc.deallocate(m_a_metadata, m_size); - } - std::swap(m_a_metadata, a_new_metadata_vec); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp deleted file mode 100644 index 19e6a8243..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/iterators_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -node_begin() const -{ return PB_DS_node_begin_imp(); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -node_end() const -{ return PB_DS_node_end_imp(); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() -{ return PB_DS_node_begin_imp(); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_end() -{ return PB_DS_node_end_imp(); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -PB_DS_node_begin_imp() const -{ - return node_const_iterator(const_cast(mid_pointer(begin(), end())), - const_cast(begin()), - const_cast(end()),(m_a_metadata == 0)? - 0 : - mid_pointer(m_a_metadata, m_a_metadata + m_size)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -PB_DS_node_end_imp() const -{ - return node_const_iterator(end(), end(), end(), - (m_a_metadata == 0) ? 0 : m_a_metadata + m_size); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -PB_DS_node_begin_imp() -{ - return node_iterator(mid_pointer(begin(), end()), begin(), end(), - (m_a_metadata == 0) ? 0 : mid_pointer(m_a_metadata, m_a_metadata + m_size)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -PB_DS_node_end_imp() -{ - return node_iterator(end(), end(), - end(),(m_a_metadata == 0) ? 0 : m_a_metadata + m_size); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp deleted file mode 100644 index ee8d26544..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp +++ /dev/null @@ -1,291 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/node_iterators.hpp - * Contains an implementation class for ov_tree_. - */ - -#ifndef PB_DS_OV_TREE_NODE_ITERATORS_HPP -#define PB_DS_OV_TREE_NODE_ITERATORS_HPP - -#include -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { -#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC \ - ov_tree_node_const_it_ - - /// Const node reference. - template - class ov_tree_node_const_it_ - { - - protected: - typedef - typename _Alloc::template rebind< - Value_Type>::other::pointer - pointer; - - typedef - typename _Alloc::template rebind< - Value_Type>::other::const_pointer - const_pointer; - - typedef - typename _Alloc::template rebind< - Metadata_Type>::other::const_pointer - const_metadata_pointer; - - typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC this_type; - - protected: - - template - inline static Ptr - mid_pointer(Ptr p_begin, Ptr p_end) - { - _GLIBCXX_DEBUG_ASSERT(p_end >= p_begin); - return (p_begin + (p_end - p_begin) / 2); - } - - public: - - typedef trivial_iterator_tag iterator_category; - - typedef trivial_iterator_difference_type difference_type; - - typedef - typename _Alloc::template rebind< - Value_Type>::other::const_pointer - value_type; - - typedef - typename _Alloc::template rebind< - typename remove_const< - Value_Type>::type>::other::const_pointer - reference; - - typedef - typename _Alloc::template rebind< - typename remove_const< - Value_Type>::type>::other::const_pointer - const_reference; - - typedef Metadata_Type metadata_type; - - typedef - typename _Alloc::template rebind< - metadata_type>::other::const_reference - metadata_const_reference; - - public: - inline - ov_tree_node_const_it_(const_pointer p_nd = 0, const_pointer p_begin_nd = 0, const_pointer p_end_nd = 0, const_metadata_pointer p_metadata = 0) : m_p_value(const_cast(p_nd)), m_p_begin_value(const_cast(p_begin_nd)), m_p_end_value(const_cast(p_end_nd)), m_p_metadata(p_metadata) - { } - - inline const_reference - operator*() const - { return m_p_value; } - - inline metadata_const_reference - get_metadata() const - { - enum - { - has_metadata = !is_same::value - }; - - PB_DS_STATIC_ASSERT(should_have_metadata, has_metadata); - _GLIBCXX_DEBUG_ASSERT(m_p_metadata != 0); - return *m_p_metadata; - } - - /// Returns the node iterator associated with the left node. - inline this_type - get_l_child() const - { - if (m_p_begin_value == m_p_value) - return (this_type(m_p_begin_value, m_p_begin_value, m_p_begin_value)); - - const_metadata_pointer p_begin_metadata = - m_p_metadata - (m_p_value - m_p_begin_value); - - return (this_type(mid_pointer(m_p_begin_value, m_p_value), - m_p_begin_value, - m_p_value, - mid_pointer(p_begin_metadata, m_p_metadata))); - } - - /// Returns the node iterator associated with the right node. - inline this_type - get_r_child() const - { - if (m_p_value == m_p_end_value) - return (this_type(m_p_end_value, m_p_end_value, m_p_end_value)); - - const_metadata_pointer p_end_metadata = - m_p_metadata + (m_p_end_value - m_p_value); - - return (this_type(mid_pointer(m_p_value + 1, m_p_end_value), - m_p_value + 1, - m_p_end_value,(m_p_metadata == 0) ? - 0 : mid_pointer(m_p_metadata + 1, p_end_metadata))); - } - - inline bool - operator==(const this_type& other) const - { - const bool is_end = m_p_begin_value == m_p_end_value; - const bool is_other_end = other.m_p_begin_value == other.m_p_end_value; - - if (is_end) - return (is_other_end); - - if (is_other_end) - return (is_end); - - return m_p_value == other.m_p_value; - } - - inline bool - operator!=(const this_type& other) const - { return !operator==(other); } - - public: - pointer m_p_value; - pointer m_p_begin_value; - pointer m_p_end_value; - - const_metadata_pointer m_p_metadata; - }; - -#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \ - ov_tree_node_it_ - - /// Node reference. - template - class ov_tree_node_it_ : public PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC - { - private: - typedef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC this_type; - - typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC base_type; - - typedef typename base_type::pointer pointer; - - typedef typename base_type::const_pointer const_pointer; - - typedef - typename base_type::const_metadata_pointer - const_metadata_pointer; - - public: - typedef trivial_iterator_tag iterator_category; - - typedef trivial_iterator_difference_type difference_type; - - typedef - typename _Alloc::template rebind< - Value_Type>::other::pointer - value_type; - - typedef - typename _Alloc::template rebind< - typename remove_const< - Value_Type>::type>::other::pointer - reference; - - typedef - typename _Alloc::template rebind< - typename remove_const< - Value_Type>::type>::other::pointer - const_reference; - - inline - ov_tree_node_it_(const_pointer p_nd = 0, const_pointer p_begin_nd = 0, const_pointer p_end_nd = 0, const_metadata_pointer p_metadata = 0) : base_type(p_nd, p_begin_nd, p_end_nd, p_metadata) - { } - - /// Access. - inline reference - operator*() const - { return reference(base_type::m_p_value); } - - /// Returns the node reference associated with the left node. - inline ov_tree_node_it_ - get_l_child() const - { - if (base_type::m_p_begin_value == base_type::m_p_value) - return (this_type(base_type::m_p_begin_value, base_type::m_p_begin_value, base_type::m_p_begin_value)); - - const_metadata_pointer p_begin_metadata = - base_type::m_p_metadata - (base_type::m_p_value - base_type::m_p_begin_value); - - return (this_type(base_type::mid_pointer(base_type::m_p_begin_value, base_type::m_p_value), - base_type::m_p_begin_value, - base_type::m_p_value, - base_type::mid_pointer(p_begin_metadata, base_type::m_p_metadata))); - } - - /// Returns the node reference associated with the right node. - inline ov_tree_node_it_ - get_r_child() const - { - if (base_type::m_p_value == base_type::m_p_end_value) - return this_type(base_type::m_p_end_value, base_type::m_p_end_value, - base_type::m_p_end_value); - - const_metadata_pointer p_end_metadata = - base_type::m_p_metadata + (base_type::m_p_end_value - base_type::m_p_value); - - return (this_type(base_type::mid_pointer(base_type::m_p_value + 1, base_type::m_p_end_value), - base_type::m_p_value + 1, - base_type::m_p_end_value,(base_type::m_p_metadata == 0)? - 0 : base_type::mid_pointer(base_type::m_p_metadata + 1, p_end_metadata))); - } - - }; - -#undef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC -#undef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC - -} // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp deleted file mode 100644 index 17f25995f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/policy_access_fn_imps.hpp - * Contains an implementation class for ov_tree. - */ - -PB_DS_CLASS_T_DEC -Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() -{ return *this; } - -PB_DS_CLASS_T_DEC -const Cmp_Fn& -PB_DS_CLASS_C_DEC:: -get_cmp_fn() const -{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp deleted file mode 100644 index d2afb8e49..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp +++ /dev/null @@ -1,132 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/split_join_fn_imps.hpp - * Contains an implementation class for ov_tree_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - if (m_size == 0) - { - other.clear(); - return; - } - - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(*begin()))) - { - value_swap(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(*(end() - 1)))) - { - return; - } - - if (m_size == 1) - { - value_swap(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - iterator it = upper_bound(r_key); - PB_DS_CLASS_C_DEC new_other(other, other); - new_other.copy_from_ordered_range(it, end()); - PB_DS_CLASS_C_DEC new_this(*this, *this); - new_this.copy_from_ordered_range(begin(), it); - - // No exceptions from this point. - other.update(other.node_begin(), (node_update*)(&other)); - update(node_begin(), (node_update*)this); - other.value_swap(new_other); - value_swap(new_this); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - if (other.m_size == 0) - return; - - if (m_size == 0) - { - value_swap(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - const bool greater = Cmp_Fn::operator()(PB_DS_V2F(*(end() - 1)), - PB_DS_V2F(*other.begin())); - - const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(*(other.end() - 1)), - PB_DS_V2F(*begin())); - - if (!greater && !lesser) - __throw_join_error(); - - PB_DS_CLASS_C_DEC new_this(*this, *this); - - if (greater) - new_this.copy_from_ordered_range(begin(), end(), - other.begin(), other.end()); - else - new_this.copy_from_ordered_range(other.begin(), other.end(), - begin(), end()); - - // No exceptions from this point. - value_swap(new_this); - other.clear(); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/traits.hpp deleted file mode 100644 index 29eb2501b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/traits.hpp +++ /dev/null @@ -1,190 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file ov_tree_map_/traits.hpp - * Contains an implementation class for ov_tree_. - */ - -#ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP - -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Tree traits. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct tree_traits< - Key, - Mapped, - Cmp_Fn, - Node_Update, - ov_tree_tag, - _Alloc> - { - private: - typedef - typename types_traits< - Key, - Mapped, - _Alloc, - false>::value_type - value_type; - - public: - typedef - typename tree_node_metadata_dispatch< - Key, - Mapped, - Cmp_Fn, - Node_Update, - _Alloc>::type - metadata_type; - - /// This is an iterator to an iterator: it iterates over nodes, - /// and de-referencing it returns one of the tree's iterators. - typedef - ov_tree_node_const_it_< - value_type, - metadata_type, - _Alloc> - node_const_iterator; - - typedef - ov_tree_node_it_< - value_type, - metadata_type, - _Alloc> - node_iterator; - - typedef - Node_Update< - node_const_iterator, - node_iterator, - Cmp_Fn, - _Alloc> - node_update; - - typedef - __gnu_pbds::null_node_update< - node_const_iterator, - node_iterator, - Cmp_Fn, - _Alloc>* - null_node_update_pointer; - }; - - - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct tree_traits< - Key, - null_type, - Cmp_Fn, - Node_Update, - ov_tree_tag, - _Alloc> - { - private: - typedef - typename types_traits< - Key, - null_type, - _Alloc, - false>::value_type - value_type; - - public: - typedef - typename tree_node_metadata_dispatch< - Key, - null_type, - Cmp_Fn, - Node_Update, - _Alloc>::type - metadata_type; - - /// This is an iterator to an iterator: it iterates over nodes, - /// and de-referencing it returns one of the tree's iterators. - typedef - ov_tree_node_const_it_< - value_type, - metadata_type, - _Alloc> - node_const_iterator; - - typedef node_const_iterator node_iterator; - - typedef - Node_Update< - node_const_iterator, - node_const_iterator, - Cmp_Fn, - _Alloc> - node_update; - - typedef - __gnu_pbds::null_node_update< - node_const_iterator, - node_iterator, - Cmp_Fn, - _Alloc>* - null_node_update_pointer; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 3eb5555f2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,82 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pairing_heap_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - push(*(first_it++)); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -pairing_heap() -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -pairing_heap(const Cmp_Fn& r_cmp_fn) -: base_type(r_cmp_fn) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -pairing_heap(const PB_DS_CLASS_C_DEC& other) -: base_type(other) -{ PB_DS_ASSERT_VALID((*this)) } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - base_type::swap(other); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~pairing_heap() -{ } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp deleted file mode 100644 index cc290e4a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pairing_heap_/debug_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - PB_DS_DEBUG_VERIFY(base_type::m_p_root == 0 - || base_type::m_p_root->m_p_next_sibling == 0); - base_type::assert_valid(__file, __line); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp deleted file mode 100644 index 8320316b8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,233 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pairing_heap_/erase_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -pop() -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - node_pointer p_new_root = join_node_children(base_type::m_p_root); - PB_DS_ASSERT_NODE_CONSISTENT(p_new_root, false) - if (p_new_root != 0) - p_new_root->m_p_prev_or_parent = 0; - - base_type::actual_erase_node(base_type::m_p_root); - base_type::m_p_root = p_new_root; - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - remove_node(it.m_p_nd); - base_type::actual_erase_node(it.m_p_nd); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_node(node_pointer p_nd) -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - node_pointer p_new_child = join_node_children(p_nd); - - PB_DS_ASSERT_NODE_CONSISTENT(p_new_child, false) - - if (p_nd == base_type::m_p_root) - { - if (p_new_child != 0) - p_new_child->m_p_prev_or_parent = 0; - base_type::m_p_root = p_new_child; - PB_DS_ASSERT_NODE_CONSISTENT(base_type::m_p_root, false) - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent != 0); - if (p_nd->m_p_prev_or_parent->m_p_l_child == p_nd) - { - if (p_new_child != 0) - { - p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling; - if (p_new_child->m_p_next_sibling != 0) - p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child; - p_nd->m_p_prev_or_parent->m_p_l_child = p_new_child; - PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) - return; - } - - p_nd->m_p_prev_or_parent->m_p_l_child = p_nd->m_p_next_sibling; - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) - return; - } - - if (p_new_child != 0) - { - p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling; - if (p_new_child->m_p_next_sibling != 0) - p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child; - p_new_child->m_p_prev_or_parent->m_p_next_sibling = p_new_child; - PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) - return; - } - - p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling; - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -join_node_children(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - node_pointer p_ret = p_nd->m_p_l_child; - if (p_ret == 0) - return 0; - while (p_ret->m_p_next_sibling != 0) - p_ret = forward_join(p_ret, p_ret->m_p_next_sibling); - while (p_ret->m_p_prev_or_parent != p_nd) - p_ret = back_join(p_ret->m_p_prev_or_parent, p_ret); - PB_DS_ASSERT_NODE_CONSISTENT(p_ret, false) - return p_ret; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -forward_join(node_pointer p_nd, node_pointer p_next) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == p_next); - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - base_type::make_child_of(p_nd, p_next); - return p_next->m_p_next_sibling == 0 - ? p_next : p_next->m_p_next_sibling; - } - - if (p_next->m_p_next_sibling != 0) - { - p_next->m_p_next_sibling->m_p_prev_or_parent = p_nd; - p_nd->m_p_next_sibling = p_next->m_p_next_sibling; - base_type::make_child_of(p_next, p_nd); - return p_nd->m_p_next_sibling; - } - - p_nd->m_p_next_sibling = 0; - base_type::make_child_of(p_next, p_nd); - PB_DS_ASSERT_NODE_CONSISTENT(p_nd, false) - return p_nd; -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -back_join(node_pointer p_nd, node_pointer p_next) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == 0); - - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - base_type::make_child_of(p_nd, p_next); - PB_DS_ASSERT_NODE_CONSISTENT(p_next, false) - return p_next; - } - - p_nd->m_p_next_sibling = 0; - base_type::make_child_of(p_next, p_nd); - PB_DS_ASSERT_NODE_CONSISTENT(p_nd, false) - return p_nd; -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - if (base_type::empty()) - { - PB_DS_ASSERT_VALID((*this)) - return 0; - } - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - size_type ersd = 0; - while (p_out != 0) - { - ++ersd; - node_pointer p_next = p_out->m_p_next_sibling; - base_type::actual_erase_node(p_out); - p_out = p_next; - } - - node_pointer p_cur = base_type::m_p_root; - base_type::m_p_root = 0; - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = 0; - - push_imp(p_cur); - p_cur = p_next; - } - PB_DS_ASSERT_VALID((*this)) - return ersd; -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp deleted file mode 100644 index 7196913a7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp +++ /dev/null @@ -1,49 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pairing_heap_/find_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - return base_type::m_p_root->m_value; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp deleted file mode 100644 index 4fd645f67..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,88 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pairing_heap_/insert_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - PB_DS_ASSERT_VALID((*this)) - node_pointer p_new_nd = base_type::get_new_node_for_insert(r_val); - push_imp(p_new_nd); - PB_DS_ASSERT_VALID((*this)) - return point_iterator(p_new_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -push_imp(node_pointer p_nd) -{ - p_nd->m_p_l_child = 0; - if (base_type::m_p_root == 0) - { - p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = 0; - base_type::m_p_root = p_nd; - } - else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value)) - { - p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = 0; - base_type::make_child_of(base_type::m_p_root, p_nd); - PB_DS_ASSERT_NODE_CONSISTENT(p_nd, false) - base_type::m_p_root = p_nd; - } - else - { - base_type::make_child_of(p_nd, base_type::m_p_root); - PB_DS_ASSERT_NODE_CONSISTENT(base_type::m_p_root, false) - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - PB_DS_ASSERT_VALID((*this)) - remove_node(it.m_p_nd); - it.m_p_nd->m_value = r_new_val; - push_imp(it.m_p_nd); - PB_DS_ASSERT_VALID((*this)) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 19a4f5806..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,123 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pairing_heap_/split_join_fn_imps.hpp - * Contains an implementation class for a pairing heap. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - other.clear(); - - if (base_type::empty()) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - while (p_out != 0) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); - --base_type::m_size; - ++other.m_size; - node_pointer p_next = p_out->m_p_next_sibling; - p_out->m_p_l_child = p_out->m_p_next_sibling = p_out->m_p_prev_or_parent = 0; - - other.push_imp(p_out); - p_out = p_next; - } - - PB_DS_ASSERT_VALID(other) - node_pointer p_cur = base_type::m_p_root; - base_type::m_p_root = 0; - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = 0; - - push_imp(p_cur); - p_cur = p_next; - } - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - if (other.m_p_root == 0) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - if (base_type::m_p_root == 0) - base_type::m_p_root = other.m_p_root; - else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, other.m_p_root->m_value)) - { - base_type::make_child_of(base_type::m_p_root, other.m_p_root); - PB_DS_ASSERT_NODE_CONSISTENT(other.m_p_root, false) - base_type::m_p_root = other.m_p_root; - } - else - { - base_type::make_child_of(other.m_p_root, base_type::m_p_root); - PB_DS_ASSERT_NODE_CONSISTENT(base_type::m_p_root, false) - } - - base_type::m_size += other.m_size; - other.m_p_root = 0; - other.m_size = 0; - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 996cdbfa9..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,214 +0,0 @@ - // -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::head_allocator -PB_DS_CLASS_C_DEC::s_head_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::inode_allocator -PB_DS_CLASS_C_DEC::s_inode_allocator; - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::leaf_allocator -PB_DS_CLASS_C_DEC::s_leaf_allocator; - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_PAT_TRIE_NAME() : - m_p_head(s_head_allocator.allocate(1)), - m_size(0) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_PAT_TRIE_NAME(const access_traits& r_access_traits) : - synth_access_traits(r_access_traits), - m_p_head(s_head_allocator.allocate(1)), - m_size(0) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_PAT_TRIE_NAME(const PB_DS_CLASS_C_DEC& other) : -#ifdef _GLIBCXX_DEBUG - debug_base(other), -#endif - synth_access_traits(other), - node_update(other), - m_p_head(s_head_allocator.allocate(1)), - m_size(0) -{ - initialize(); - m_size = other.m_size; - PB_DS_ASSERT_VALID(other) - if (other.m_p_head->m_p_parent == 0) - { - PB_DS_ASSERT_VALID((*this)) - return; - } - __try - { - m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent); - } - __catch(...) - { - s_head_allocator.deallocate(m_p_head, 1); - __throw_exception_again; - } - - m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent); - m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent); - m_p_head->m_p_parent->m_p_parent = m_p_head; - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - value_swap(other); - std::swap((access_traits& )(*this), (access_traits& )other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -value_swap(PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) - std::swap(m_p_head, other.m_p_head); - std::swap(m_size, other.m_size); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~PB_DS_PAT_TRIE_NAME() -{ - clear(); - s_head_allocator.deallocate(m_p_head, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ - new (m_p_head) head(); - m_p_head->m_p_parent = 0; - m_p_head->m_p_min = m_p_head; - m_p_head->m_p_max = m_p_head; - m_size = 0; -} - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -recursive_copy_node(node_const_pointer p_ncp) -{ - _GLIBCXX_DEBUG_ASSERT(p_ncp != 0); - if (p_ncp->m_type == leaf_node) - { - leaf_const_pointer p_other_lf = static_cast(p_ncp); - leaf_pointer p_new_lf = s_leaf_allocator.allocate(1); - cond_dealtor cond(p_new_lf); - new (p_new_lf) leaf(p_other_lf->value()); - apply_update(p_new_lf, (node_update*)this); - cond.set_no_action_dtor(); - return (p_new_lf); - } - - _GLIBCXX_DEBUG_ASSERT(p_ncp->m_type == i_node); - node_pointer a_p_children[inode::arr_size]; - size_type child_i = 0; - inode_const_pointer p_icp = static_cast(p_ncp); - - typename inode::const_iterator child_it = p_icp->begin(); - - inode_pointer p_ret; - __try - { - while (child_it != p_icp->end()) - { - a_p_children[child_i] = recursive_copy_node(*(child_it)); - child_i++; - child_it++; - } - p_ret = s_inode_allocator.allocate(1); - } - __catch(...) - { - while (child_i-- > 0) - clear_imp(a_p_children[child_i]); - __throw_exception_again; - } - - new (p_ret) inode(p_icp->get_e_ind(), pref_begin(a_p_children[0])); - - --child_i; - _GLIBCXX_DEBUG_ASSERT(child_i >= 1); - do - p_ret->add_child(a_p_children[child_i], pref_begin(a_p_children[child_i]), - pref_end(a_p_children[child_i]), this); - while (child_i-- > 0); - apply_update(p_ret, (node_update*)this); - return p_ret; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp deleted file mode 100644 index 65b2e22a3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/debug_fn_imps.hpp - * Contains an implementation class for pat_trie_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - if (m_p_head->m_p_parent != 0) - m_p_head->m_p_parent->assert_valid(this, __file, __line); - assert_iterators(__file, __line); - assert_reverse_iterators(__file, __line); - if (m_p_head->m_p_parent == 0) - { - PB_DS_DEBUG_VERIFY(m_p_head->m_p_min == m_p_head); - PB_DS_DEBUG_VERIFY(m_p_head->m_p_max == m_p_head); - PB_DS_DEBUG_VERIFY(empty()); - return; - } - - PB_DS_DEBUG_VERIFY(m_p_head->m_p_min->m_type == leaf_node); - PB_DS_DEBUG_VERIFY(m_p_head->m_p_max->m_type == leaf_node); - PB_DS_DEBUG_VERIFY(!empty()); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_iterators(const char* __file, int __line) const -{ - size_type calc_size = 0; - for (const_iterator it = begin(); it != end(); ++it) - { - ++calc_size; - debug_base::check_key_exists(PB_DS_V2F(*it), __file, __line); - PB_DS_DEBUG_VERIFY(lower_bound(PB_DS_V2F(*it)) == it); - PB_DS_DEBUG_VERIFY(--upper_bound(PB_DS_V2F(*it)) == it); - } - PB_DS_DEBUG_VERIFY(calc_size == m_size); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_reverse_iterators(const char* __file, int __line) const -{ - size_type calc_size = 0; - for (const_reverse_iterator it = rbegin(); it != rend(); ++it) - { - ++calc_size; - node_const_pointer p_nd = - const_cast(this)->find_imp(PB_DS_V2F(*it)); - PB_DS_DEBUG_VERIFY(p_nd == it.m_p_nd); - } - PB_DS_DEBUG_VERIFY(calc_size == m_size); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -recursive_count_leafs(node_const_pointer p_nd, const char* __file, int __line) -{ - if (p_nd == 0) - return (0); - if (p_nd->m_type == leaf_node) - return (1); - PB_DS_DEBUG_VERIFY(p_nd->m_type == i_node); - size_type ret = 0; - for (typename inode::const_iterator it = static_cast(p_nd)->begin(); - it != static_cast(p_nd)->end(); - ++it) - ret += recursive_count_leafs(*it, __file, __line); - return ret; -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp deleted file mode 100644 index ad5060474..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp +++ /dev/null @@ -1,315 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/erase_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ - node_pointer p_nd = find_imp(r_key); - if (p_nd == 0 || p_nd->m_type == i_node) - { - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return false; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == leaf_node); - if (!synth_access_traits::equal_keys(PB_DS_V2F(reinterpret_cast(p_nd)->value()), r_key)) - { - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return false; - } - - PB_DS_CHECK_KEY_EXISTS(r_key) - erase_leaf(static_cast(p_nd)); - PB_DS_ASSERT_VALID((*this)) - return true; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_fixup(inode_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) >= 1); - if (std::distance(p_nd->begin(), p_nd->end()) == 1) - { - node_pointer p_parent = p_nd->m_p_parent; - if (p_parent == m_p_head) - m_p_head->m_p_parent = *p_nd->begin(); - else - { - _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == i_node); - node_pointer p_new_child = *p_nd->begin(); - - typedef inode_pointer inode_ptr; - inode_ptr p_internal = static_cast(p_parent); - p_internal->replace_child(p_new_child, pref_begin(p_new_child), - pref_end(p_new_child), this); - } - (*p_nd->begin())->m_p_parent = p_nd->m_p_parent; - p_nd->~inode(); - s_inode_allocator.deallocate(p_nd, 1); - - if (p_parent == m_p_head) - return; - - _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == i_node); - p_nd = static_cast(p_parent); - } - - while (true) - { - _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) > 1); - p_nd->update_prefixes(this); - apply_update(p_nd, (node_update*)this); - PB_DS_ASSERT_NODE_VALID(p_nd) - if (p_nd->m_p_parent->m_type == head_node) - return; - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent->m_type == i_node); - - p_nd = static_cast(p_nd->m_p_parent); - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_leaf(leaf_pointer p_l) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->value()))); - p_l->~leaf(); - s_leaf_allocator.deallocate(p_l, 1); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - if (!empty()) - { - clear_imp(m_p_head->m_p_parent); - m_size = 0; - initialize(); - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - PB_DS_ASSERT_VALID((*this)) - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd->m_type == i_node) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); - for (typename inode::iterator it = - static_cast(p_nd)->begin(); - it != static_cast(p_nd)->end(); - ++it) - { - node_pointer p_child =* it; - clear_imp(p_child); - } - s_inode_allocator.deallocate(static_cast(p_nd), 1); - return; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == leaf_node); - static_cast(p_nd)->~leaf(); - s_leaf_allocator.deallocate(static_cast(p_nd), 1); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -erase(const_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - - if (it == end()) - return it; - - const_iterator ret_it = it; - ++ret_it; - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); - erase_leaf(static_cast(it.m_p_nd)); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} - -#ifdef PB_DS_DATA_TRUE_INDICATOR -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -erase(iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - - if (it == end()) - return it; - iterator ret_it = it; - ++ret_it; - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); - erase_leaf(static_cast(it.m_p_nd)); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} -#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(const_reverse_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - - if (it.m_p_nd == m_p_head) - return it; - const_reverse_iterator ret_it = it; - ++ret_it; - - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); - erase_leaf(static_cast(it.m_p_nd)); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} - -#ifdef PB_DS_DATA_TRUE_INDICATOR -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(reverse_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - - if (it.m_p_nd == m_p_head) - return it; - reverse_iterator ret_it = it; - ++ret_it; - - _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); - erase_leaf(static_cast(it.m_p_nd)); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} -#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - size_type num_ersd = 0; - PB_DS_ASSERT_VALID((*this)) - - iterator it = begin(); - while (it != end()) - { - PB_DS_ASSERT_VALID((*this)) - if (pred(*it)) - { - ++num_ersd; - it = erase(it); - } - else - ++it; - } - - PB_DS_ASSERT_VALID((*this)) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_leaf(leaf_pointer p_l) -{ - update_min_max_for_erased_leaf(p_l); - if (p_l->m_p_parent->m_type == head_node) - { - _GLIBCXX_DEBUG_ASSERT(size() == 1); - clear(); - return; - } - - _GLIBCXX_DEBUG_ASSERT(size() > 1); - _GLIBCXX_DEBUG_ASSERT(p_l->m_p_parent->m_type == i_node); - - inode_pointer p_parent = static_cast(p_l->m_p_parent); - - p_parent->remove_child(p_l); - erase_fixup(p_parent); - actual_erase_leaf(p_l); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_leaf(leaf_pointer p_l) -{ - if (m_size == 1) - { - m_p_head->m_p_min = m_p_head; - m_p_head->m_p_max = m_p_head; - return; - } - - if (p_l == static_cast(m_p_head->m_p_min)) - { - iterator it(p_l); - ++it; - m_p_head->m_p_min = it.m_p_nd; - return; - } - - if (p_l == static_cast(m_p_head->m_p_max)) - { - iterator it(p_l); - --it; - m_p_head->m_p_max = it.m_p_nd; - } -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp deleted file mode 100644 index 0fa4c3d3e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp +++ /dev/null @@ -1,269 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/find_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) -{ - PB_DS_ASSERT_VALID((*this)) - node_pointer p_nd = find_imp(r_key); - - if (p_nd == 0 || p_nd->m_type != leaf_node) - { - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return end(); - } - - if (synth_access_traits::equal_keys(PB_DS_V2F(static_cast(p_nd)->value()), r_key)) - { - PB_DS_CHECK_KEY_EXISTS(r_key) - return iterator(p_nd); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) const -{ - PB_DS_ASSERT_VALID((*this)) - - node_const_pointer p_nd = const_cast(this)->find_imp(r_key); - - if (p_nd == 0 || p_nd->m_type != leaf_node) - { - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return end(); - } - - if (synth_access_traits::equal_keys(PB_DS_V2F(static_cast(p_nd)->value()), r_key)) - { - PB_DS_CHECK_KEY_EXISTS(r_key) - return const_iterator(const_cast(p_nd)); - } - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) - return end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -find_imp(key_const_reference r_key) -{ - if (empty()) - return 0; - - typename synth_access_traits::const_iterator b_it = - synth_access_traits::begin(r_key); - typename synth_access_traits::const_iterator e_it = - synth_access_traits::end(r_key); - - node_pointer p_nd = m_p_head->m_p_parent; - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - - while (p_nd->m_type != leaf_node) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); - node_pointer p_next_nd = static_cast(p_nd)->get_child_node(b_it, e_it, this); - - if (p_next_nd == 0) - return p_nd; - p_nd = p_next_nd; - } - return p_nd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -lower_bound_imp(key_const_reference r_key) -{ - if (empty()) - return (m_p_head); - - node_pointer p_nd = m_p_head->m_p_parent; - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - - typename PB_DS_CLASS_C_DEC::a_const_iterator b_it = - synth_access_traits::begin(r_key); - - typename PB_DS_CLASS_C_DEC::a_const_iterator e_it = - synth_access_traits::end(r_key); - - size_type checked_ind = 0; - while (true) - { - if (p_nd->m_type == leaf_node) - { - if (!synth_access_traits::cmp_keys(PB_DS_V2F(static_cast(p_nd)->value()), r_key)) - return p_nd; - iterator it(p_nd); - ++it; - return it.m_p_nd; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); - const size_type new_checked_ind = - static_cast(p_nd)->get_e_ind(); - - p_nd = - static_cast(p_nd)->get_lower_bound_child_node( b_it, e_it, checked_ind, this); - checked_ind = new_checked_ind; - } -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(key_const_reference r_key) -{ return point_iterator(lower_bound_imp(r_key)); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -lower_bound(key_const_reference r_key) const -{ - return point_const_iterator(const_cast(this)->lower_bound_imp(r_key)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(key_const_reference r_key) -{ - point_iterator l_bound_it = lower_bound(r_key); - - _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() || - !synth_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it), - r_key)); - - if (l_bound_it == end() || - synth_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it))) - return l_bound_it; - - return ++l_bound_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -upper_bound(key_const_reference r_key) const -{ - point_const_iterator l_bound_it = lower_bound(r_key); - - _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() || - !synth_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it), - r_key)); - - if (l_bound_it == end() || - synth_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it))) - return l_bound_it; - return ++l_bound_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::a_const_iterator -PB_DS_CLASS_C_DEC:: -pref_begin(node_const_pointer p_nd) -{ - if (p_nd->m_type == leaf_node) - return (synth_access_traits::begin(PB_DS_V2F(static_cast(p_nd)->value()))); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); - return static_cast(p_nd)->pref_b_it(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::a_const_iterator -PB_DS_CLASS_C_DEC:: -pref_end(node_const_pointer p_nd) -{ - if (p_nd->m_type == leaf_node) - return (synth_access_traits::end(PB_DS_V2F(static_cast(p_nd)->value()))); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); - return static_cast(p_nd)->pref_e_it(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::leaf_const_pointer -PB_DS_CLASS_C_DEC:: -leftmost_descendant(node_const_pointer p_nd) -{ - if (p_nd->m_type == leaf_node) - return static_cast(p_nd); - return static_cast(p_nd)->leftmost_descendant(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::leaf_pointer -PB_DS_CLASS_C_DEC:: -leftmost_descendant(node_pointer p_nd) -{ - if (p_nd->m_type == leaf_node) - return static_cast(p_nd); - return static_cast(p_nd)->leftmost_descendant(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::leaf_const_pointer -PB_DS_CLASS_C_DEC:: -rightmost_descendant(node_const_pointer p_nd) -{ - if (p_nd->m_type == leaf_node) - return static_cast(p_nd); - return static_cast(p_nd)->rightmost_descendant(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::leaf_pointer -PB_DS_CLASS_C_DEC:: -rightmost_descendant(node_pointer p_nd) -{ - if (p_nd->m_type == leaf_node) - return static_cast(p_nd); - return static_cast(p_nd)->rightmost_descendant(); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp deleted file mode 100644 index df61f07d2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/info_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -empty() const -{ return (m_size == 0); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -size() const -{ return m_size; } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -max_size() const -{ return s_inode_allocator.max_size(); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp deleted file mode 100644 index c58ac6704..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp +++ /dev/null @@ -1,120 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/iterators_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -begin() -{ return iterator(m_p_head->m_p_min); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -begin() const -{ return const_iterator(m_p_head->m_p_min); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -end() -{ return iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -end() const -{ return const_iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() const -{ - if (empty()) - return rend(); - return --end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rbegin() -{ - if (empty()) - return rend(); - return --end(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() -{ return reverse_iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator -PB_DS_CLASS_C_DEC:: -rend() const -{ return const_reverse_iterator(m_p_head); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -node_begin() const -{ return node_const_iterator(m_p_head->m_p_parent, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_begin() -{ return node_iterator(m_p_head->m_p_parent, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_const_iterator -PB_DS_CLASS_C_DEC:: -node_end() const -{ return node_const_iterator(0, this); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_iterator -PB_DS_CLASS_C_DEC:: -node_end() -{ return node_iterator(0, this); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp deleted file mode 100644 index d0352db98..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp +++ /dev/null @@ -1,63 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/policy_access_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::access_traits& -PB_DS_CLASS_C_DEC:: -get_access_traits() -{ return *this; } - -PB_DS_CLASS_T_DEC -const typename PB_DS_CLASS_C_DEC::access_traits& -PB_DS_CLASS_C_DEC:: -get_access_traits() const -{ return *this; } - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_update& -PB_DS_CLASS_C_DEC:: -get_node_update() -{ return *this; } - -PB_DS_CLASS_T_DEC -const typename PB_DS_CLASS_C_DEC::node_update& -PB_DS_CLASS_C_DEC:: -get_node_update() const -{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp deleted file mode 100644 index 483807802..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/r_erase_fn_imps.hpp - * Contains an implementation class for pat_trie. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -actual_erase_node(node_pointer p_z) -{ - _GLIBCXX_DEBUG_ASSERT(m_size > 0); - --m_size; - _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_z->m_value))); - p_z->~node(); - s_node_allocator.deallocate(p_z, 1); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_min_max_for_erased_node(node_pointer p_z) -{ - if (m_size == 1) - { - m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; - return; - } - - if (m_p_head->m_p_left == p_z) - { - iterator it(p_z); - ++it; - m_p_head->m_p_left = it.m_p_nd; - } - else if (m_p_head->m_p_right == p_z) - { - iterator it(p_z); - --it; - m_p_head->m_p_right = it.m_p_nd; - } -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);) - clear_imp(m_p_head->m_p_parent); - m_size = 0; - initialize(); - _GLIBCXX_DEBUG_ONLY(debug_base::clear();) - _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear_imp(node_pointer p_nd) -{ - if (p_nd == 0) - return; - clear_imp(p_nd->m_p_left); - clear_imp(p_nd->m_p_right); - p_nd->~Node(); - s_node_allocator.deallocate(p_nd, 1); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp deleted file mode 100644 index 35c02e86c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp +++ /dev/null @@ -1,150 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/rotate_fn_imps.hpp - * Contains imps for rotating nodes. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_left(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_right; - p_x->m_p_right = p_y->m_p_left; - - if (p_y->m_p_left != 0) - p_y->m_p_left->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_left) - p_x->m_p_parent->m_p_left = p_y; - else - p_x->m_p_parent->m_p_right = p_y; - - p_y->m_p_left = p_x; - p_x->m_p_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) - - apply_update(p_x, (Node_Update*)this); - apply_update(p_x->m_p_parent, (Node_Update*)this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_right(node_pointer p_x) -{ - node_pointer p_y = p_x->m_p_left; - p_x->m_p_left = p_y->m_p_right; - - if (p_y->m_p_right != 0) - p_y->m_p_right->m_p_parent = p_x; - - p_y->m_p_parent = p_x->m_p_parent; - if (p_x == m_p_head->m_p_parent) - m_p_head->m_p_parent = p_y; - else if (p_x == p_x->m_p_parent->m_p_right) - p_x->m_p_parent->m_p_right = p_y; - else - p_x->m_p_parent->m_p_left = p_y; - - p_y->m_p_right = p_x; - p_x->m_p_parent = p_y; - - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) - _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) - - apply_update(p_x, (Node_Update*)this); - apply_update(p_x->m_p_parent, (Node_Update*)this); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -rotate_parent(node_pointer p_nd) -{ - node_pointer p_parent = p_nd->m_p_parent; - if (p_nd == p_parent->m_p_left) - rotate_right(p_parent); - else - rotate_left(p_parent); - _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || p_nd->m_p_right == p_parent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/) -{ } - -PB_DS_CLASS_T_DEC -template -inline void -PB_DS_CLASS_C_DEC:: -apply_update(node_pointer p_nd, Node_Update_* p_update) -{ - p_update->operator()(& PB_DS_V2F(p_nd->m_value),(p_nd->m_p_left == 0) ? - 0 : - & PB_DS_V2F(p_nd->m_p_left->m_value),(p_nd->m_p_right == 0) ? - 0 : - & PB_DS_V2F(p_nd->m_p_right->m_value)); -} - -PB_DS_CLASS_T_DEC -template -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer p_nd, Node_Update_* p_update) -{ - while (p_nd != m_p_head) - { - apply_update(p_nd, p_update); - p_nd = p_nd->m_p_parent; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_to_top(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/) -{ } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp deleted file mode 100644 index db20d7eed..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp +++ /dev/null @@ -1,111 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/trace_fn_imps.hpp - * Contains an implementation class for pat_trie_. - */ - -#ifdef PB_DS_PAT_TRIE_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << std::endl; - if (m_p_head->m_p_parent == 0) - return; - trace_node(m_p_head->m_p_parent, 0); - std::cerr << std::endl; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node(node_const_pointer p_nd, size_type level) -{ - for (size_type i = 0; i < level; ++i) - std::cerr << ' '; - std::cerr << p_nd << " "; - std::cerr << ((p_nd->m_type == pat_trie_leaf_node_type) ? "l " : "i "); - - trace_node_metadata(p_nd, type_to_type()); - typename access_traits::const_iterator el_it = pref_begin(p_nd); - while (el_it != pref_end(p_nd)) - { - std::cerr <<* el_it; - ++el_it; - } - - if (p_nd->m_type == pat_trie_leaf_node_type) - { - std::cerr << std::endl; - return; - } - - inode_const_pointer p_internal = static_cast(p_nd); - - std::cerr << " " << - static_cast(p_internal->get_e_ind()) << std::endl; - - const size_type num_children = std::distance(p_internal->begin(), - p_internal->end()); - - for (size_type child_i = 0; child_i < num_children; ++child_i) - { - typename inode::const_iterator child_it = p_internal->begin(); - std::advance(child_it, num_children - child_i - 1); - trace_node(*child_it, level + 1); - } -} - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(node_const_pointer p_nd, type_to_type) -{ - std::cerr << "(" << static_cast(p_nd->get_metadata()) << ") "; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace_node_metadata(node_const_pointer, type_to_type) -{ } - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/traits.hpp deleted file mode 100644 index 8c7c99705..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/traits.hpp +++ /dev/null @@ -1,148 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file pat_trie_/traits.hpp - * Contains an implementation class for pat_trie_. - */ - -#ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct trie_traits - { - private: - typedef pat_trie_base base_type; - typedef types_traits type_traits; - - public: - typedef typename trie_node_metadata_dispatch::type metadata_type; - typedef base_type::_Metadata metadata; - typedef _ATraits access_traits; - - /// Type for synthesized traits. - typedef __gnu_pbds::detail::synth_access_traits synth_access_traits; - - typedef base_type::_Node_base node; - typedef base_type::_Head head; - typedef base_type::_Leaf leaf; - typedef base_type::_Inode inode; - - typedef base_type::_Iter iterator; - typedef base_type::_CIter const_iterator; - typedef base_type::_Iter reverse_iterator; - typedef base_type::_CIter const_reverse_iterator; - - /// This is an iterator to an iterator: it iterates over nodes, - /// and de-referencing it returns one of the tree's iterators. - typedef base_type::_Node_citer node_const_iterator; - - typedef base_type::_Node_iter node_iterator; - - /// Type for node update. - typedef Node_Update node_update; - - typedef null_node_update* null_node_update_pointer; - }; - - - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct trie_traits - { - private: - typedef pat_trie_base base_type; - typedef types_traits type_traits; - - public: - typedef typename trie_node_metadata_dispatch::type metadata_type; - typedef base_type::_Metadata metadata; - typedef _ATraits access_traits; - - /// Type for synthesized traits. - typedef __gnu_pbds::detail::synth_access_traits synth_access_traits; - - typedef base_type::_Node_base node; - typedef base_type::_Head head; - typedef base_type::_Leaf leaf; - typedef base_type::_Inode inode; - - typedef base_type::_CIter const_iterator; - typedef const_iterator iterator; - typedef base_type::_CIter const_reverse_iterator; - typedef const_reverse_iterator reverse_iterator; - - /// This is an iterator to an iterator: it iterates over nodes, - /// and de-referencing it returns one of the tree's iterators. - typedef base_type::_Node_citer node_const_iterator; - - typedef node_const_iterator node_iterator; - - /// Type for node update. - typedef Node_Update node_update; - - typedef null_node_update* null_node_update_pointer; - }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index bfffdf01e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/constructors_destructor_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_RB_TREE_NAME() -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_RB_TREE_NAME(const Cmp_Fn& r_cmp_fn) : - base_type(r_cmp_fn) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_RB_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : - base_type(r_cmp_fn, r_node_update) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_RB_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : - base_type(other) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - base_type::swap(other); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ base_type::m_p_head->m_red = true; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp deleted file mode 100644 index 149b95aa4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp +++ /dev/null @@ -1,81 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/debug_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -assert_node_consistent(const node_pointer p_nd, const char* __file, - int __line) const -{ - if (p_nd == 0) - return 1; - - const size_type l_height = - assert_node_consistent(p_nd->m_p_left, __file, __line); - const size_type r_height = - assert_node_consistent(p_nd->m_p_right, __file, __line); - if (p_nd->m_red) - { - PB_DS_DEBUG_VERIFY(is_effectively_black(p_nd->m_p_left)); - PB_DS_DEBUG_VERIFY(is_effectively_black(p_nd->m_p_right)); - } - PB_DS_DEBUG_VERIFY(l_height == r_height); - return (p_nd->m_red ? 0 : 1) + l_height; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - base_type::assert_valid(__file, __line); - const node_pointer p_head = base_type::m_p_head; - PB_DS_DEBUG_VERIFY(p_head->m_red); - if (p_head->m_p_parent != 0) - { - PB_DS_DEBUG_VERIFY(!p_head->m_p_parent->m_red); - assert_node_consistent(p_head->m_p_parent, __file, __line); - } -} - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp deleted file mode 100644 index d2c3e1e46..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp +++ /dev/null @@ -1,289 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/erase_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ - point_iterator it = this->find(r_key); - if (it == base_type::end()) - return false; - erase(it); - return true; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -erase(iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - if (it == base_type::end()) - return it; - - iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(reverse_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - if (it.m_p_nd == base_type::m_p_head) - return it; - - reverse_iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - size_type num_ersd = 0; - iterator it = base_type::begin(); - while (it != base_type::end()) - { - if (pred(*it)) - { - ++num_ersd; - it = erase(it); - } - else - ++it; - } - - PB_DS_ASSERT_VALID((*this)) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_node(node_pointer p_nd) -{ - remove_node(p_nd); - base_type::actual_erase_node(p_nd); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_node(node_pointer p_z) -{ - this->update_min_max_for_erased_node(p_z); - node_pointer p_y = p_z; - node_pointer p_x = 0; - node_pointer p_new_x_parent = 0; - - if (p_y->m_p_left == 0) - p_x = p_y->m_p_right; - else if (p_y->m_p_right == 0) - p_x = p_y->m_p_left; - else - { - p_y = p_y->m_p_right; - while (p_y->m_p_left != 0) - p_y = p_y->m_p_left; - p_x = p_y->m_p_right; - } - - if (p_y == p_z) - { - p_new_x_parent = p_y->m_p_parent; - if (p_x != 0) - p_x->m_p_parent = p_y->m_p_parent; - - if (base_type::m_p_head->m_p_parent == p_z) - base_type::m_p_head->m_p_parent = p_x; - else if (p_z->m_p_parent->m_p_left == p_z) - { - p_y->m_p_left = p_z->m_p_parent; - p_z->m_p_parent->m_p_left = p_x; - } - else - { - p_y->m_p_left = 0; - p_z->m_p_parent->m_p_right = p_x; - } - } - else - { - p_z->m_p_left->m_p_parent = p_y; - p_y->m_p_left = p_z->m_p_left; - if (p_y != p_z->m_p_right) - { - p_new_x_parent = p_y->m_p_parent; - if (p_x != 0) - p_x->m_p_parent = p_y->m_p_parent; - p_y->m_p_parent->m_p_left = p_x; - p_y->m_p_right = p_z->m_p_right; - p_z->m_p_right->m_p_parent = p_y; - } - else - p_new_x_parent = p_y; - - if (base_type::m_p_head->m_p_parent == p_z) - base_type::m_p_head->m_p_parent = p_y; - else if (p_z->m_p_parent->m_p_left == p_z) - p_z->m_p_parent->m_p_left = p_y; - else - p_z->m_p_parent->m_p_right = p_y; - - p_y->m_p_parent = p_z->m_p_parent; - std::swap(p_y->m_red, p_z->m_red); - p_y = p_z; - } - - this->update_to_top(p_new_x_parent, (node_update* )this); - - if (p_y->m_red) - return; - - remove_fixup(p_x, p_new_x_parent); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -remove_fixup(node_pointer p_x, node_pointer p_new_x_parent) -{ - _GLIBCXX_DEBUG_ASSERT(p_x == 0 || p_x->m_p_parent == p_new_x_parent); - - while (p_x != base_type::m_p_head->m_p_parent && is_effectively_black(p_x)) - if (p_x == p_new_x_parent->m_p_left) - { - node_pointer p_w = p_new_x_parent->m_p_right; - if (p_w->m_red) - { - p_w->m_red = false; - p_new_x_parent->m_red = true; - base_type::rotate_left(p_new_x_parent); - p_w = p_new_x_parent->m_p_right; - } - - if (is_effectively_black(p_w->m_p_left) - && is_effectively_black(p_w->m_p_right)) - { - p_w->m_red = true; - p_x = p_new_x_parent; - p_new_x_parent = p_new_x_parent->m_p_parent; - } - else - { - if (is_effectively_black(p_w->m_p_right)) - { - if (p_w->m_p_left != 0) - p_w->m_p_left->m_red = false; - - p_w->m_red = true; - base_type::rotate_right(p_w); - p_w = p_new_x_parent->m_p_right; - } - - p_w->m_red = p_new_x_parent->m_red; - p_new_x_parent->m_red = false; - - if (p_w->m_p_right != 0) - p_w->m_p_right->m_red = false; - - base_type::rotate_left(p_new_x_parent); - this->update_to_top(p_new_x_parent, (node_update* )this); - break; - } - } - else - { - node_pointer p_w = p_new_x_parent->m_p_left; - if (p_w->m_red == true) - { - p_w->m_red = false; - p_new_x_parent->m_red = true; - base_type::rotate_right(p_new_x_parent); - p_w = p_new_x_parent->m_p_left; - } - - if (is_effectively_black(p_w->m_p_right) - && is_effectively_black(p_w->m_p_left)) - { - p_w->m_red = true; - p_x = p_new_x_parent; - p_new_x_parent = p_new_x_parent->m_p_parent; - } - else - { - if (is_effectively_black(p_w->m_p_left)) - { - if (p_w->m_p_right != 0) - p_w->m_p_right->m_red = false; - - p_w->m_red = true; - base_type::rotate_left(p_w); - p_w = p_new_x_parent->m_p_left; - } - - p_w->m_red = p_new_x_parent->m_red; - p_new_x_parent->m_red = false; - - if (p_w->m_p_left != 0) - p_w->m_p_left->m_red = false; - - base_type::rotate_right(p_new_x_parent); - this->update_to_top(p_new_x_parent, (node_update* )this); - break; - } - } - - if (p_x != 0) - p_x->m_red = false; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp deleted file mode 100644 index 136dbf783..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/find_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp deleted file mode 100644 index 118b127ad..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp +++ /dev/null @@ -1,46 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/info_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -is_effectively_black(const node_pointer p_nd) -{ return (p_nd == 0 || !p_nd->m_red); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp deleted file mode 100644 index 1d7d34f9c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp +++ /dev/null @@ -1,115 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/insert_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert(const_reference r_value) -{ - PB_DS_ASSERT_VALID((*this)) - std::pair ins_pair = base_type::insert_leaf(r_value); - if (ins_pair.second == true) - { - ins_pair.first.m_p_nd->m_red = true; - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - insert_fixup(ins_pair.first.m_p_nd); - } - - PB_DS_ASSERT_VALID((*this)) - return ins_pair; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -insert_fixup(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd->m_red == true); - while (p_nd != base_type::m_p_head->m_p_parent && p_nd->m_p_parent->m_red) - { - if (p_nd->m_p_parent == p_nd->m_p_parent->m_p_parent->m_p_left) - { - node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_right; - if (p_y != 0 && p_y->m_red) - { - p_nd->m_p_parent->m_red = false; - p_y->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - p_nd = p_nd->m_p_parent->m_p_parent; - } - else - { - if (p_nd == p_nd->m_p_parent->m_p_right) - { - p_nd = p_nd->m_p_parent; - base_type::rotate_left(p_nd); - } - p_nd->m_p_parent->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - base_type::rotate_right(p_nd->m_p_parent->m_p_parent); - } - } - else - { - node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_left; - if (p_y != 0 && p_y->m_red) - { - p_nd->m_p_parent->m_red = false; - p_y->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - p_nd = p_nd->m_p_parent->m_p_parent; - } - else - { - if (p_nd == p_nd->m_p_parent->m_p_left) - { - p_nd = p_nd->m_p_parent; - base_type::rotate_right(p_nd); - } - p_nd->m_p_parent->m_red = false; - p_nd->m_p_parent->m_p_parent->m_red = true; - base_type::rotate_left(p_nd->m_p_parent->m_p_parent); - } - } - } - - base_type::update_to_top(p_nd, (node_update* )this); - base_type::m_p_head->m_p_parent->m_red = false; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/node.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/node.hpp deleted file mode 100644 index 45e0a1e06..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/node.hpp +++ /dev/null @@ -1,139 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/node.hpp - * Contains an implementation for rb_tree_. - */ - -#ifndef PB_DS_RB_TREE_NODE_HPP -#define PB_DS_RB_TREE_NODE_HPP - -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Node for Red-Black trees. - template - struct rb_tree_node_ - { - public: - typedef Value_Type value_type; - typedef Metadata metadata_type; - - typedef - typename _Alloc::template rebind< - rb_tree_node_< - Value_Type, - Metadata, - _Alloc> >::other::pointer - node_pointer; - - typedef - typename _Alloc::template rebind< - metadata_type>::other::reference - metadata_reference; - - typedef - typename _Alloc::template rebind< - metadata_type>::other::const_reference - metadata_const_reference; - - bool - special() const - { return m_red; } - - metadata_const_reference - get_metadata() const - { return m_metadata; } - - metadata_reference - get_metadata() - { return m_metadata; } - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { - std::cout << PB_DS_V2F(m_value) <<(m_red? " " : " ") - << "(" << m_metadata << ")"; - } -#endif - - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - value_type m_value; - bool m_red; - metadata_type m_metadata; - }; - - template - struct rb_tree_node_ - { - public: - typedef Value_Type value_type; - typedef null_type metadata_type; - - typedef - typename _Alloc::template rebind< - rb_tree_node_< - Value_Type, - null_type, - _Alloc> >::other::pointer - node_pointer; - - bool - special() const - { return m_red; } - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { std::cout << PB_DS_V2F(m_value) <<(m_red? " " : " "); } -#endif - - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - value_type m_value; - bool m_red; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp deleted file mode 100644 index 11408a7cc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp +++ /dev/null @@ -1,306 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/split_join_fn_imps.hpp - * Contains an implementation for rb_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - if (base_type::join_prep(other) == false) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - const node_pointer p_x = other.split_min(); - join_imp(p_x, other.m_p_head->m_p_parent); - base_type::join_finish(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -join_imp(node_pointer p_x, node_pointer p_r) -{ - _GLIBCXX_DEBUG_ASSERT(p_x != 0); - if (p_r != 0) - p_r->m_red = false; - - const size_type h = black_height(base_type::m_p_head->m_p_parent); - const size_type other_h = black_height(p_r); - node_pointer p_x_l; - node_pointer p_x_r; - std::pair join_pos; - const bool right_join = h >= other_h; - if (right_join) - { - join_pos = find_join_pos_right(base_type::m_p_head->m_p_parent, - h, other_h); - p_x_l = join_pos.first; - p_x_r = p_r; - } - else - { - p_x_l = base_type::m_p_head->m_p_parent; - base_type::m_p_head->m_p_parent = p_r; - if (p_r != 0) - p_r->m_p_parent = base_type::m_p_head; - - join_pos = find_join_pos_left(base_type::m_p_head->m_p_parent, - h, other_h); - p_x_r = join_pos.first; - } - - node_pointer p_parent = join_pos.second; - if (p_parent == base_type::m_p_head) - { - base_type::m_p_head->m_p_parent = p_x; - p_x->m_p_parent = base_type::m_p_head; - } - else - { - p_x->m_p_parent = p_parent; - if (right_join) - p_x->m_p_parent->m_p_right = p_x; - else - p_x->m_p_parent->m_p_left = p_x; - } - - p_x->m_p_left = p_x_l; - if (p_x_l != 0) - p_x_l->m_p_parent = p_x; - - p_x->m_p_right = p_x_r; - if (p_x_r != 0) - p_x_r->m_p_parent = p_x; - - p_x->m_red = true; - - base_type::initialize_min_max(); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - base_type::update_to_top(p_x, (node_update* )this); - insert_fixup(p_x); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -split_min() -{ - node_pointer p_min = base_type::m_p_head->m_p_left; - -#ifdef _GLIBCXX_DEBUG - const node_pointer p_head = base_type::m_p_head; - _GLIBCXX_DEBUG_ASSERT(p_min != p_head); -#endif - - remove_node(p_min); - return p_min; -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::node_pointer, - typename PB_DS_CLASS_C_DEC::node_pointer> -PB_DS_CLASS_C_DEC:: -find_join_pos_right(node_pointer p_l, size_type h_l, size_type h_r) -{ - _GLIBCXX_DEBUG_ASSERT(h_l >= h_r); - - if (base_type::m_p_head->m_p_parent == 0) - return (std::make_pair((node_pointer)0, base_type::m_p_head)); - - node_pointer p_l_parent = base_type::m_p_head; - while (h_l > h_r) - { - if (p_l->m_red == false) - { - _GLIBCXX_DEBUG_ASSERT(h_l > 0); - --h_l; - } - - p_l_parent = p_l; - p_l = p_l->m_p_right; - } - - if (!is_effectively_black(p_l)) - { - p_l_parent = p_l; - p_l = p_l->m_p_right; - } - - _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_l)); - _GLIBCXX_DEBUG_ASSERT(black_height(p_l) == h_r); - _GLIBCXX_DEBUG_ASSERT(p_l == 0 || p_l->m_p_parent == p_l_parent); - return std::make_pair(p_l, p_l_parent); -} - -PB_DS_CLASS_T_DEC -std::pair< - typename PB_DS_CLASS_C_DEC::node_pointer, - typename PB_DS_CLASS_C_DEC::node_pointer> -PB_DS_CLASS_C_DEC:: -find_join_pos_left(node_pointer p_r, size_type h_l, size_type h_r) -{ - _GLIBCXX_DEBUG_ASSERT(h_r > h_l); - if (base_type::m_p_head->m_p_parent == 0) - return (std::make_pair((node_pointer)0, - base_type::m_p_head)); - node_pointer p_r_parent = base_type::m_p_head; - while (h_r > h_l) - { - if (p_r->m_red == false) - { - _GLIBCXX_DEBUG_ASSERT(h_r > 0); - --h_r; - } - - p_r_parent = p_r; - p_r = p_r->m_p_left; - } - - if (!is_effectively_black(p_r)) - { - p_r_parent = p_r; - p_r = p_r->m_p_left; - } - - _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_r)); - _GLIBCXX_DEBUG_ASSERT(black_height(p_r) == h_l); - _GLIBCXX_DEBUG_ASSERT(p_r == 0 || p_r->m_p_parent == p_r_parent); - return std::make_pair(p_r, p_r_parent); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -black_height(node_pointer p_nd) -{ - size_type h = 1; - while (p_nd != 0) - { - if (p_nd->m_red == false) - ++h; - p_nd = p_nd->m_p_left; - } - return h; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - if (base_type::split_prep(r_key, other) == false) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - PB_DS_STRUCT_ONLY_ASSERT_VALID(other) - node_pointer p_nd = this->upper_bound(r_key).m_p_nd; - do - { - node_pointer p_next_nd = p_nd->m_p_parent; - if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - split_at_node(p_nd, other); - - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - PB_DS_STRUCT_ONLY_ASSERT_VALID(other) - p_nd = p_next_nd; - } - while (p_nd != base_type::m_p_head); - - base_type::split_finish(other); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split_at_node(node_pointer p_nd, PB_DS_CLASS_C_DEC& other) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - - node_pointer p_l = p_nd->m_p_left; - node_pointer p_r = p_nd->m_p_right; - node_pointer p_parent = p_nd->m_p_parent; - if (p_parent == base_type::m_p_head) - { - base_type::m_p_head->m_p_parent = p_l; - if (p_l != 0) - { - p_l->m_p_parent = base_type::m_p_head; - p_l->m_red = false; - } - } - else - { - if (p_parent->m_p_left == p_nd) - p_parent->m_p_left = p_l; - else - p_parent->m_p_right = p_l; - - if (p_l != 0) - p_l->m_p_parent = p_parent; - - this->update_to_top(p_parent, (node_update* )this); - - if (!p_nd->m_red) - remove_fixup(p_l, p_parent); - } - - base_type::initialize_min_max(); - other.join_imp(p_nd, p_r); - PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) - PB_DS_STRUCT_ONLY_ASSERT_VALID(other) -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/traits.hpp deleted file mode 100644 index 64ed43f0a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/traits.hpp +++ /dev/null @@ -1,102 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rb_tree_map_/traits.hpp - * Contains an implementation for rb_tree_. - */ - -#ifndef PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP - -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct tree_traits - : public bin_search_tree_traits< - Key, - Mapped, - Cmp_Fn, - Node_Update, - rb_tree_node_< - typename types_traits::value_type, - typename tree_node_metadata_dispatch::type, - _Alloc>, - _Alloc> - { }; - - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct tree_traits - : public bin_search_tree_traits< - Key, - null_type, - Cmp_Fn, - Node_Update, - rb_tree_node_< - typename types_traits::value_type, - typename tree_node_metadata_dispatch::type, - _Alloc>, - _Alloc> - { }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 808d6711a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,84 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rc_binomial_heap_/constructors_destructor_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -rc_binomial_heap() -{ - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -rc_binomial_heap(const Cmp_Fn& r_cmp_fn) -: base_type(r_cmp_fn) -{ - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -rc_binomial_heap(const PB_DS_CLASS_C_DEC& other) -: base_type(other) -{ - make_binomial_heap(); - base_type::find_max(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~rc_binomial_heap() -{ } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - base_type::swap(other); - m_rc.swap(other.m_rc); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp deleted file mode 100644 index a32c2401d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,121 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rc_binomial_heap_/debug_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - base_type::assert_valid(false, __file, __line); - if (!base_type::empty()) - { - PB_DS_DEBUG_VERIFY(base_type::m_p_max != 0); - base_type::assert_max(__file, __line); - } - - m_rc.assert_valid(__file, __line); - - if (m_rc.empty()) - { - base_type::assert_valid(true, __file, __line); - PB_DS_DEBUG_VERIFY(next_2_pointer(base_type::m_p_root) == 0); - return; - } - - node_const_pointer p_nd = next_2_pointer(base_type::m_p_root); - typename rc_t::const_iterator it = m_rc.end(); - --it; - - while (p_nd != 0) - { - PB_DS_DEBUG_VERIFY(*it == p_nd); - node_const_pointer p_next = p_nd->m_p_next_sibling; - PB_DS_DEBUG_VERIFY(p_next != 0); - PB_DS_DEBUG_VERIFY(p_nd->m_metadata == p_next->m_metadata); - PB_DS_DEBUG_VERIFY(p_next->m_p_next_sibling == 0 || - p_next->m_metadata < p_next->m_p_next_sibling->m_metadata); - - --it; - p_nd = next_2_pointer(next_after_0_pointer(p_nd)); - } - PB_DS_DEBUG_VERIFY(it + 1 == m_rc.begin()); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_const_pointer -PB_DS_CLASS_C_DEC:: -next_2_pointer(node_const_pointer p_nd) -{ - if (p_nd == 0) - return 0; - - node_pointer p_next = p_nd->m_p_next_sibling; - - if (p_next == 0) - return 0; - - if (p_nd->m_metadata == p_next->m_metadata) - return p_nd; - - return next_2_pointer(p_next); -} - -PB_DS_CLASS_T_DEC -typename PB_DS_CLASS_C_DEC::node_const_pointer -PB_DS_CLASS_C_DEC:: -next_after_0_pointer(node_const_pointer p_nd) -{ - if (p_nd == 0) - return 0; - - node_pointer p_next = p_nd->m_p_next_sibling; - - if (p_next == 0) - return 0; - - if (p_nd->m_metadata < p_next->m_metadata) - return p_next; - - return next_after_0_pointer(p_next); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp deleted file mode 100644 index 86745ecad..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,107 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rc_binomial_heap_/erase_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -pop() -{ - make_binomial_heap(); - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - base_type::pop(); - base_type::find_max(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -clear() -{ - base_type::clear(); - m_rc.clear(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -make_binomial_heap() -{ - node_pointer p_nd = base_type::m_p_root; - while (p_nd != 0) - { - node_pointer p_next = p_nd->m_p_next_sibling; - if (p_next == 0) - p_nd = p_next; - else if (p_nd->m_metadata == p_next->m_metadata) - p_nd = link_with_next_sibling(p_nd); - else if (p_nd->m_metadata < p_next->m_metadata) - p_nd = p_next; -#ifdef _GLIBCXX_DEBUG - else - _GLIBCXX_DEBUG_ASSERT(0); -#endif - } - - m_rc.clear(); -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - make_binomial_heap(); - const size_type ersd = base_type::erase_if(pred); - base_type::find_max(); - PB_DS_ASSERT_VALID((*this)) - return ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - make_binomial_heap(); - base_type::erase(it); - base_type::find_max(); -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp deleted file mode 100644 index 7099e3ecf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,154 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rc_binomial_heap_/insert_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - PB_DS_ASSERT_VALID((*this)) - - make_0_exposed(); - - PB_DS_ASSERT_VALID((*this)) - - node_pointer p_nd = base_type::get_new_node_for_insert(r_val); - - p_nd->m_p_l_child = p_nd->m_p_prev_or_parent = 0; - p_nd->m_metadata = 0; - - if (base_type::m_p_max == 0 || Cmp_Fn::operator()(base_type::m_p_max->m_value, r_val)) - base_type::m_p_max = p_nd; - - p_nd->m_p_next_sibling = base_type::m_p_root; - - if (base_type::m_p_root != 0) - base_type::m_p_root->m_p_prev_or_parent = p_nd; - - base_type::m_p_root = p_nd; - - if (p_nd->m_p_next_sibling != 0&& p_nd->m_p_next_sibling->m_metadata == 0) - m_rc.push(p_nd); - - PB_DS_ASSERT_VALID((*this)) - - return point_iterator(p_nd); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - PB_DS_ASSERT_VALID((*this)) - - make_binomial_heap(); - - base_type::modify(it, r_new_val); - - base_type::find_max(); - - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -link_with_next_sibling(node_pointer p_nd) -{ - node_pointer p_next = p_nd->m_p_next_sibling; - - _GLIBCXX_DEBUG_ASSERT(p_next != 0); - _GLIBCXX_DEBUG_ASSERT(p_next->m_p_prev_or_parent == p_nd); - - if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) - { - p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; - - if (p_next->m_p_prev_or_parent == 0) - base_type::m_p_root = p_next; - else - p_next->m_p_prev_or_parent->m_p_next_sibling = p_next; - - if (base_type::m_p_max == p_nd) - base_type::m_p_max = p_next; - - base_type::make_child_of(p_nd, p_next); - - ++p_next->m_metadata; - - return p_next; - } - - p_nd->m_p_next_sibling = p_next->m_p_next_sibling; - - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; - - if (base_type::m_p_max == p_next) - base_type::m_p_max = p_nd; - - base_type::make_child_of(p_next, p_nd); - - ++p_nd->m_metadata; - - return p_nd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -make_0_exposed() -{ - if (m_rc.empty()) - return; - - node_pointer p_nd = m_rc.top(); - - m_rc.pop(); - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling != 0); - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata); - - node_pointer p_res = link_with_next_sibling(p_nd); - - if (p_res->m_p_next_sibling != 0&& p_res->m_metadata == p_res->m_p_next_sibling->m_metadata) - m_rc.push(p_res); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 96afe433c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,77 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rc_binomial_heap_/split_join_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - make_binomial_heap(); - other.make_binomial_heap(); - base_type::split(pred, other); - base_type::find_max(); - other.find_max(); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - make_binomial_heap(); - other.make_binomial_heap(); - base_type::join(other); - base_type::find_max(); - other.find_max(); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp deleted file mode 100644 index 0f0c89ffc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file rc_binomial_heap_/trace_fn_imps.hpp - * Contains an implementation for rc_binomial_heap_. - */ - -#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - base_type::trace(); - m_rc.trace(); -} - -#endif // #ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index 916fdd109..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,102 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/constructors_destructor_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - insert(*(first_it++)); -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_S_TREE_NAME() -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_S_TREE_NAME(const Cmp_Fn& r_cmp_fn) : - base_type(r_cmp_fn) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_S_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : - base_type(r_cmp_fn, r_node_update) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -PB_DS_S_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : - base_type(other) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - base_type::swap(other); - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ base_type::m_p_head->m_special = true; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp deleted file mode 100644 index f6ff1e2e5..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp +++ /dev/null @@ -1,75 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/debug_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - base_type::assert_valid(__file, __line); - const node_pointer p_head = base_type::m_p_head; - assert_special_imp(p_head, __file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_special_imp(const node_pointer p_nd, - const char* __file, int __line) const -{ - if (p_nd == 0) - return; - - if (p_nd == base_type::m_p_head) - { - PB_DS_DEBUG_VERIFY(p_nd->m_special); - assert_special_imp(p_nd->m_p_parent, __file, __line); - return; - } - - PB_DS_DEBUG_VERIFY(!p_nd->m_special); - assert_special_imp(p_nd->m_p_left, __file, __line); - assert_special_imp(p_nd->m_p_right, __file, __line); -} - -#endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp deleted file mode 100644 index bfd64a1bd..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp +++ /dev/null @@ -1,157 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/erase_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline bool -PB_DS_CLASS_C_DEC:: -erase(key_const_reference r_key) -{ - point_iterator it = find(r_key); - if (it == base_type::end()) - return false; - erase(it); - return true; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -erase(iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - if (it == base_type::end()) - return it; - iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::reverse_iterator -PB_DS_CLASS_C_DEC:: -erase(reverse_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - if (it.m_p_nd == base_type::m_p_head) - return (it); - reverse_iterator ret_it = it; - ++ret_it; - erase_node(it.m_p_nd); - PB_DS_ASSERT_VALID((*this)) - return ret_it; -} - -PB_DS_CLASS_T_DEC -template -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - size_type num_ersd = 0; - iterator it = base_type::begin(); - while (it != base_type::end()) - { - if (pred(*it)) - { - ++num_ersd; - it = erase(it); - } - else - ++it; - } - PB_DS_ASSERT_VALID((*this)) - return num_ersd; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase_node(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - splay(p_nd); - - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent); - - node_pointer p_l = p_nd->m_p_left; - node_pointer p_r = p_nd->m_p_right; - - base_type::update_min_max_for_erased_node(p_nd); - base_type::actual_erase_node(p_nd); - if (p_r == 0) - { - base_type::m_p_head->m_p_parent = p_l; - if (p_l != 0) - p_l->m_p_parent = base_type::m_p_head; - PB_DS_ASSERT_VALID((*this)) - return; - } - - node_pointer p_target_r = leftmost(p_r); - _GLIBCXX_DEBUG_ASSERT(p_target_r != 0); - p_r->m_p_parent = base_type::m_p_head; - base_type::m_p_head->m_p_parent = p_r; - splay(p_target_r); - - _GLIBCXX_DEBUG_ONLY(p_target_r->m_p_left = 0); - _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_parent == this->m_p_head); - _GLIBCXX_DEBUG_ASSERT(this->m_p_head->m_p_parent == p_target_r); - - p_target_r->m_p_left = p_l; - if (p_l != 0) - p_l->m_p_parent = p_target_r; - PB_DS_ASSERT_VALID((*this)) - this->apply_update(p_target_r, (node_update*)this); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -leftmost(node_pointer p_nd) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - while (p_nd->m_p_left != 0) - p_nd = p_nd->m_p_left; - return p_nd; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp deleted file mode 100644 index 9d185c60d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp +++ /dev/null @@ -1,100 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/find_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) -{ - node_pointer p_found = find_imp(r_key); - if (p_found != base_type::m_p_head) - splay(p_found); - return point_iterator(p_found); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_const_iterator -PB_DS_CLASS_C_DEC:: -find(key_const_reference r_key) const -{ - const node_pointer p_found = find_imp(r_key); - if (p_found != base_type::m_p_head) - const_cast(this)->splay(p_found); - return point_iterator(p_found); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -find_imp(key_const_reference r_key) -{ - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid(__FILE__, - __LINE__);) - node_pointer p_nd = base_type::m_p_head->m_p_parent; - while (p_nd != 0) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - return p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - return base_type::m_p_head; -} - -PB_DS_CLASS_T_DEC -inline const typename PB_DS_CLASS_C_DEC::node_pointer -PB_DS_CLASS_C_DEC:: -find_imp(key_const_reference r_key) const -{ - PB_DS_ASSERT_VALID((*this)) - node_pointer p_nd = base_type::m_p_head->m_p_parent; - while (p_nd != 0) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) - { - if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) - return p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - return base_type::m_p_head; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp deleted file mode 100644 index 50cb86f3c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp +++ /dev/null @@ -1,39 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/info_fn_imps.hpp - * Contains an implementation. - */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp deleted file mode 100644 index d6563598f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp +++ /dev/null @@ -1,94 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/insert_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert(const_reference r_value) -{ - PB_DS_ASSERT_VALID((*this)) - std::pair ins_pair = insert_leaf_imp(r_value); - ins_pair.first.m_p_nd->m_special = false; - PB_DS_ASSERT_VALID((*this)) - splay(ins_pair.first.m_p_nd); - PB_DS_ASSERT_VALID((*this)) - return ins_pair; -} - -PB_DS_CLASS_T_DEC -inline std::pair -PB_DS_CLASS_C_DEC:: -insert_leaf_imp(const_reference r_value) -{ - _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid(__FILE__, - __LINE__);) - if (base_type::m_size == 0) - return std::make_pair(base_type::insert_imp_empty(r_value), true); - - node_pointer p_nd = base_type::m_p_head->m_p_parent; - node_pointer p_pot = base_type::m_p_head; - - while (p_nd != 0) - if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), PB_DS_V2F(r_value))) - { - if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), PB_DS_V2F(p_nd->m_value))) - { - return std::make_pair(point_iterator(p_nd), false); - } - p_pot = p_nd; - p_nd = p_nd->m_p_left; - } - else - p_nd = p_nd->m_p_right; - - if (p_pot == base_type::m_p_head) - return std::make_pair(base_type::insert_leaf_new(r_value, base_type::m_p_head->m_p_right, false), true); - - PB_DS_CHECK_KEY_DOES_NOT_EXIST(PB_DS_V2F(r_value)) - - p_nd = p_pot->m_p_left; - if (p_nd == 0) - return (std::make_pair(base_type::insert_leaf_new(r_value, p_pot, true), true)); - - while (p_nd->m_p_right != 0) - p_nd = p_nd->m_p_right; - - return std::make_pair(this->insert_leaf_new(r_value, p_nd, false), true); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/node.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/node.hpp deleted file mode 100644 index ac3f33392..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/node.hpp +++ /dev/null @@ -1,126 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/node.hpp - * Contains an implementation struct for splay_tree_'s node. - */ - -#ifndef PB_DS_SPLAY_TREE_NODE_HPP -#define PB_DS_SPLAY_TREE_NODE_HPP - -namespace __gnu_pbds -{ - namespace detail - { - /// Node for splay tree. - template - struct splay_tree_node_ - { - public: - typedef Value_Type value_type; - typedef Metadata metadata_type; - - typedef - typename _Alloc::template rebind< - splay_tree_node_ >::other::pointer - node_pointer; - - typedef - typename _Alloc::template rebind::other::reference - metadata_reference; - - typedef - typename _Alloc::template rebind::other::const_reference - metadata_const_reference; - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { std::cout << PB_DS_V2F(m_value) << "(" << m_metadata << ")"; } -#endif - - inline bool - special() const - { return m_special; } - - inline metadata_const_reference - get_metadata() const - { return m_metadata; } - - inline metadata_reference - get_metadata() - { return m_metadata; } - - value_type m_value; - bool m_special; - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - metadata_type m_metadata; - }; - - template - struct splay_tree_node_ - { - public: - typedef Value_Type value_type; - typedef null_type metadata_type; - - typedef - typename _Alloc::template rebind< - splay_tree_node_ >::other::pointer - node_pointer; - - inline bool - special() const - { return m_special; } - -#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ - void - trace() const - { std::cout << PB_DS_V2F(m_value); } -#endif - - node_pointer m_p_left; - node_pointer m_p_right; - node_pointer m_p_parent; - value_type m_value; - bool m_special; - }; - } // namespace detail -} // namespace __gnu_pbds - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp deleted file mode 100644 index 487b44414..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp +++ /dev/null @@ -1,112 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/split_join_fn_imps.hpp - * Contains an implementation class for splay_tree_. - */ - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - if (base_type::join_prep(other) == false) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - node_pointer p_target_r = other.leftmost(other.m_p_head); - _GLIBCXX_DEBUG_ASSERT(p_target_r != 0); - other.splay(p_target_r); - - _GLIBCXX_DEBUG_ASSERT(p_target_r == other.m_p_head->m_p_parent); - _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left == 0); - - p_target_r->m_p_left = base_type::m_p_head->m_p_parent; - - _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left != 0); - p_target_r->m_p_left->m_p_parent = p_target_r; - - base_type::m_p_head->m_p_parent = p_target_r; - p_target_r->m_p_parent = base_type::m_p_head; - - this->apply_update(p_target_r, (node_update*)this); - base_type::join_finish(other); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - if (base_type::split_prep(r_key, other) == false) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - node_pointer p_upper_bound = this->upper_bound(r_key).m_p_nd; - _GLIBCXX_DEBUG_ASSERT(p_upper_bound != 0); - - splay(p_upper_bound); - _GLIBCXX_DEBUG_ASSERT(p_upper_bound->m_p_parent == this->m_p_head); - - node_pointer p_new_root = p_upper_bound->m_p_left; - _GLIBCXX_DEBUG_ASSERT(p_new_root != 0); - - base_type::m_p_head->m_p_parent = p_new_root; - p_new_root->m_p_parent = base_type::m_p_head; - other.m_p_head->m_p_parent = p_upper_bound; - p_upper_bound->m_p_parent = other.m_p_head; - p_upper_bound->m_p_left = 0; - this->apply_update(p_upper_bound, (node_update*)this); - base_type::split_finish(other); - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/traits.hpp deleted file mode 100644 index 7b1afeb04..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/traits.hpp +++ /dev/null @@ -1,95 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file splay_tree_/traits.hpp - * Contains an implementation for splay_tree_. - */ - -#ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP -#define PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP - -#include - -namespace __gnu_pbds -{ - namespace detail - { - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct tree_traits - : public bin_search_tree_traits::value_type, - typename tree_node_metadata_dispatch::type, - _Alloc>, - _Alloc> - { }; - - /// Specialization. - /// @ingroup traits - template - class Node_Update, - typename _Alloc> - struct tree_traits - : public bin_search_tree_traits::value_type, - typename tree_node_metadata_dispatch::type, - _Alloc>, - _Alloc> - { }; - - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp deleted file mode 100644 index d8fc50bb7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp +++ /dev/null @@ -1,105 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/constructors_destructor_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -copy_from_range(It first_it, It last_it) -{ - while (first_it != last_it) - push(*(first_it++)); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -thin_heap() : m_p_max(0) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -thin_heap(const Cmp_Fn& r_cmp_fn) -: base_type(r_cmp_fn), m_p_max(0) -{ - initialize(); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -thin_heap(const PB_DS_CLASS_C_DEC& other) -: base_type(other) -{ - initialize(); - m_p_max = base_type::m_p_root; - for (node_pointer p_nd = base_type::m_p_root; p_nd != 0; - p_nd = p_nd->m_p_next_sibling) - if (Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value)) - m_p_max = p_nd; - - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -swap(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - base_type::swap(other); - std::swap(m_p_max, other.m_p_max); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~thin_heap() -{ } - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -initialize() -{ std::fill(m_a_aux, m_a_aux + max_rank, static_cast(0)); } - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp deleted file mode 100644 index 4bc4202ea..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp +++ /dev/null @@ -1,119 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/debug_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -#ifdef _GLIBCXX_DEBUG - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_valid(const char* __file, int __line) const -{ - base_type::assert_valid(__file, __line); - assert_node_consistent(base_type::m_p_root, true, __file, __line); - assert_max(__file, __line); - assert_aux_null(__file, __line); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_aux_null(const char* __file, int __line) const -{ - for (size_type i = 0; i < max_rank; ++i) - PB_DS_DEBUG_VERIFY(m_a_aux[i] == 0); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_max(const char* __file, int __line) const -{ - if (m_p_max == 0) - { - PB_DS_DEBUG_VERIFY(base_type::empty()); - return; - } - - PB_DS_DEBUG_VERIFY(!base_type::empty()); - PB_DS_DEBUG_VERIFY(base_type::parent(m_p_max) == 0); - PB_DS_DEBUG_VERIFY(m_p_max->m_p_prev_or_parent == 0); - for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) - PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value)); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -assert_node_consistent(node_const_pointer p_nd, bool root, - const char* __file, int __line) const -{ - base_type::assert_node_consistent(p_nd, root, __file, __line); - if (p_nd == 0) - return; - - assert_node_consistent(p_nd->m_p_next_sibling, root, __file, __line); - assert_node_consistent(p_nd->m_p_l_child, false, __file, __line); - if (!root) - { - if (p_nd->m_metadata == 0) - PB_DS_DEBUG_VERIFY(p_nd->m_p_next_sibling == 0); - else - PB_DS_DEBUG_VERIFY(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata + 1); - } - - if (p_nd->m_p_l_child != 0) - PB_DS_DEBUG_VERIFY(p_nd->m_p_l_child->m_metadata + 1 == base_type::degree(p_nd)); - - const bool unmarked_valid = - (p_nd->m_p_l_child == 0 && p_nd->m_metadata == 0) - || (p_nd->m_p_l_child != 0 - && p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 1); - - const bool marked_valid = - (p_nd->m_p_l_child == 0 && p_nd->m_metadata == 1) - || (p_nd->m_p_l_child != 0 - && p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 2); - - PB_DS_DEBUG_VERIFY(unmarked_valid || marked_valid); - if (root) - PB_DS_DEBUG_VERIFY(unmarked_valid); -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp deleted file mode 100644 index 7199beb95..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp +++ /dev/null @@ -1,255 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/erase_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -pop() -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); - - node_pointer p_nd = m_p_max; - remove_max_node(); - base_type::actual_erase_node(p_nd); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -remove_max_node() -{ - to_aux_except_max(); - make_from_aux(); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -to_aux_except_max() -{ - node_pointer p_add = base_type::m_p_root; - while (p_add != m_p_max) - { - node_pointer p_next_add = p_add->m_p_next_sibling; - add_to_aux(p_add); - p_add = p_next_add; - } - - p_add = m_p_max->m_p_l_child; - while (p_add != 0) - { - node_pointer p_next_add = p_add->m_p_next_sibling; - p_add->m_metadata = p_add->m_p_l_child == 0 ? - 0 : p_add->m_p_l_child->m_metadata + 1; - - add_to_aux(p_add); - p_add = p_next_add; - } - - p_add = m_p_max->m_p_next_sibling; - while (p_add != 0) - { - node_pointer p_next_add = p_add->m_p_next_sibling; - add_to_aux(p_add); - p_add = p_next_add; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -add_to_aux(node_pointer p_nd) -{ - size_type r = p_nd->m_metadata; - while (m_a_aux[r] != 0) - { - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound()); - if (Cmp_Fn::operator()(m_a_aux[r]->m_value, p_nd->m_value)) - make_child_of(m_a_aux[r], p_nd); - else - { - make_child_of(p_nd, m_a_aux[r]); - p_nd = m_a_aux[r]; - } - - m_a_aux[r] = 0; - ++r; - } - - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound()); - - m_a_aux[r] = p_nd; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_child_of(node_pointer p_nd, node_pointer p_new_parent) -{ - _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_new_parent->m_metadata); - _GLIBCXX_DEBUG_ASSERT(m_a_aux[p_nd->m_metadata] == p_nd || - m_a_aux[p_nd->m_metadata] == p_new_parent); - - ++p_new_parent->m_metadata; - base_type::make_child_of(p_nd, p_new_parent); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_from_aux() -{ - base_type::m_p_root = m_p_max = 0; - const size_type rnk_bnd = rank_bound(); - size_type i = 0; - while (i < rnk_bnd) - { - if (m_a_aux[i] != 0) - { - make_root_and_link(m_a_aux[i]); - m_a_aux[i] = 0; - } - ++i; - } - - PB_DS_ASSERT_AUX_NULL((*this)) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -remove_node(node_pointer p_nd) -{ - node_pointer p_parent = p_nd; - while (base_type::parent(p_parent) != 0) - p_parent = base_type::parent(p_parent); - - base_type::bubble_to_top(p_nd); - m_p_max = p_nd; - - node_pointer p_fix = base_type::m_p_root; - while (p_fix != 0&& p_fix->m_p_next_sibling != p_parent) - p_fix = p_fix->m_p_next_sibling; - - if (p_fix != 0) - p_fix->m_p_next_sibling = p_nd; - - remove_max_node(); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -clear() -{ - base_type::clear(); - m_p_max = 0; -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -erase(point_iterator it) -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - node_pointer p_nd = it.m_p_nd; - remove_node(p_nd); - base_type::actual_erase_node(p_nd); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -template -typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -erase_if(Pred pred) -{ - PB_DS_ASSERT_VALID((*this)) - if (base_type::empty()) - { - PB_DS_ASSERT_VALID((*this)) - return 0; - } - - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - size_type ersd = 0; - while (p_out != 0) - { - ++ersd; - node_pointer p_next = p_out->m_p_next_sibling; - base_type::actual_erase_node(p_out); - p_out = p_next; - } - - node_pointer p_cur = base_type::m_p_root; - m_p_max = base_type::m_p_root = 0; - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - make_root_and_link(p_cur); - p_cur = p_next; - } - - PB_DS_ASSERT_VALID((*this)) - return ersd; -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -rank_bound() -{ - using namespace std; - const size_t* const p_upper = - std::upper_bound(g_a_rank_bounds, - g_a_rank_bounds + num_distinct_rank_bounds, - base_type::m_size); - - if (p_upper == g_a_rank_bounds + num_distinct_rank_bounds) - return max_rank; - - return (p_upper - g_a_rank_bounds); -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp deleted file mode 100644 index 4b0f08470..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp +++ /dev/null @@ -1,51 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/find_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_reference -PB_DS_CLASS_C_DEC:: -top() const -{ - PB_DS_ASSERT_VALID((*this)) - _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); - - _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); - return m_p_max->m_value; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp deleted file mode 100644 index cc836457d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp +++ /dev/null @@ -1,280 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/insert_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::point_iterator -PB_DS_CLASS_C_DEC:: -push(const_reference r_val) -{ - PB_DS_ASSERT_VALID((*this)) - node_pointer p_nd = base_type::get_new_node_for_insert(r_val); - p_nd->m_metadata = 0; - p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = 0; - if (base_type::m_p_root == 0) - { - p_nd->m_p_next_sibling = 0; - m_p_max = base_type::m_p_root = p_nd; - PB_DS_ASSERT_VALID((*this)) - return point_iterator(p_nd); - } - - p_nd->m_p_next_sibling = base_type::m_p_root; - base_type::m_p_root->m_p_prev_or_parent = 0; - base_type::m_p_root = p_nd; - update_max(p_nd); - PB_DS_ASSERT_VALID((*this)) - return point_iterator(p_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_root(node_pointer p_nd) -{ - p_nd->m_metadata = p_nd->m_p_l_child == 0 - ? 0 : 1 + p_nd->m_p_l_child->m_metadata; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -make_root_and_link(node_pointer p_nd) -{ - make_root(p_nd); - p_nd->m_p_prev_or_parent = 0; - p_nd->m_p_next_sibling = base_type::m_p_root; - if (base_type::m_p_root != 0) - base_type::m_p_root->m_p_prev_or_parent = 0; - - base_type::m_p_root = p_nd; - update_max(p_nd); -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix(node_pointer p_y) -{ - while (true) - { - if (p_y->m_p_prev_or_parent == 0) - { - fix_root(p_y); - return; - } - else if (p_y->m_metadata == 1&& p_y->m_p_next_sibling == 0) - { - if (p_y->m_p_l_child != 0) - { - fix_sibling_rank_1_unmarked(p_y); - return; - } - - fix_sibling_rank_1_marked(p_y); - p_y = p_y->m_p_prev_or_parent; - } - else if (p_y->m_metadata > p_y->m_p_next_sibling->m_metadata + 1) - { - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child != 0); - if (p_y->m_metadata != p_y->m_p_l_child->m_metadata + 2) - { - fix_sibling_general_unmarked(p_y); - return; - } - - fix_sibling_general_marked(p_y); - p_y = p_y->m_p_prev_or_parent; - } - else if ((p_y->m_p_l_child == 0&& - p_y->m_metadata == 2) ||(p_y->m_p_l_child != 0&& - p_y->m_metadata == p_y->m_p_l_child->m_metadata + 3)) - { - node_pointer p_z = p_y->m_p_prev_or_parent; - fix_child(p_y); - p_y = p_z; - } - else - return; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_root(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent == 0); - make_root(p_y); - PB_DS_ASSERT_NODE_CONSISTENT(p_y, true) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_rank_1_unmarked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); - - _GLIBCXX_DEBUG_ONLY(node_pointer p_w = p_y->m_p_l_child;) - _GLIBCXX_DEBUG_ASSERT(p_w != 0); - _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling == 0); - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_next_sibling == 0); - - p_y->m_p_next_sibling = p_y->m_p_l_child; - p_y->m_p_next_sibling->m_p_prev_or_parent = p_y; - p_y->m_p_l_child = 0; - PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_rank_1_marked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child == 0); - p_y->m_metadata = 0; - PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_general_unmarked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); - - node_pointer p_w = p_y->m_p_l_child; - _GLIBCXX_DEBUG_ASSERT(p_w != 0); - _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != 0); - - p_y->m_p_l_child = p_w->m_p_next_sibling; - p_w->m_p_next_sibling->m_p_prev_or_parent = p_y; - - p_w->m_p_next_sibling = p_y->m_p_next_sibling; - _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != 0); - p_w->m_p_next_sibling->m_p_prev_or_parent = p_w; - - p_y->m_p_next_sibling = p_w; - p_w->m_p_prev_or_parent = p_y; - - PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_sibling_general_marked(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); - --p_y->m_metadata; - PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -fix_child(node_pointer p_y) -{ - _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); - - if (p_y->m_p_next_sibling != 0) - p_y->m_p_next_sibling->m_p_prev_or_parent = p_y->m_p_prev_or_parent; - - if (p_y->m_p_prev_or_parent->m_p_l_child == p_y) - p_y->m_p_prev_or_parent->m_p_l_child = p_y->m_p_next_sibling; - else - p_y->m_p_prev_or_parent->m_p_next_sibling = p_y->m_p_next_sibling; - - make_root_and_link(p_y); -} - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -modify(point_iterator it, const_reference r_new_val) -{ - PB_DS_ASSERT_VALID((*this)) - node_pointer p_nd = it.m_p_nd; - _GLIBCXX_DEBUG_ASSERT(p_nd != 0); - - const bool smaller = Cmp_Fn::operator()(r_new_val, p_nd->m_value); - p_nd->m_value = r_new_val; - if (smaller) - { - remove_node(p_nd); - p_nd->m_p_l_child = 0; - make_root_and_link(p_nd); - PB_DS_ASSERT_VALID((*this)) - return; - } - - if (p_nd->m_p_prev_or_parent == 0) - { - update_max(p_nd); - PB_DS_ASSERT_VALID((*this)) - return; - } - - node_pointer p_y = p_nd->m_p_prev_or_parent; - _GLIBCXX_DEBUG_ASSERT(p_y != 0); - - if (p_nd->m_p_next_sibling != 0) - p_nd->m_p_next_sibling->m_p_prev_or_parent = p_y; - - if (p_y->m_p_l_child == p_nd) - p_y->m_p_l_child = p_nd->m_p_next_sibling; - else - p_y->m_p_next_sibling = p_nd->m_p_next_sibling; - - fix(p_y); - make_root_and_link(p_nd); - PB_DS_ASSERT_VALID((*this)) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -update_max(node_pointer p_nd) -{ - if (m_p_max == 0 || Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value)) - m_p_max = p_nd; -} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp deleted file mode 100644 index 296c06ef3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp +++ /dev/null @@ -1,108 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/split_join_fn_imps.hpp - * Contains an implementation for thin_heap_. - */ - -PB_DS_CLASS_T_DEC -template -void -PB_DS_CLASS_C_DEC:: -split(Pred pred, PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - other.clear(); - if (base_type::empty()) - { - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - return; - } - - base_type::to_linked_list(); - node_pointer p_out = base_type::prune(pred); - - while (p_out != 0) - { - _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); - --base_type::m_size; - ++other.m_size; - node_pointer p_next = p_out->m_p_next_sibling; - other.make_root_and_link(p_out); - p_out = p_next; - } - - PB_DS_ASSERT_VALID(other) - node_pointer p_cur = base_type::m_p_root; - m_p_max = 0; - base_type::m_p_root = 0; - while (p_cur != 0) - { - node_pointer p_next = p_cur->m_p_next_sibling; - make_root_and_link(p_cur); - p_cur = p_next; - } - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -join(PB_DS_CLASS_C_DEC& other) -{ - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) - - node_pointer p_other = other.m_p_root; - while (p_other != 0) - { - node_pointer p_next = p_other->m_p_next_sibling; - make_root_and_link(p_other); - p_other = p_next; - } - base_type::m_size += other.m_size; - other.m_p_root = 0; - other.m_size = 0; - other.m_p_max = 0; - - PB_DS_ASSERT_VALID((*this)) - PB_DS_ASSERT_VALID(other) -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp deleted file mode 100644 index f7d583bef..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp +++ /dev/null @@ -1,53 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file thin_heap_/trace_fn_imps.hpp - * Contains an implementation class for left_child_next_sibling_heap_. - */ - -#ifdef PB_DS_THIN_HEAP_TRACE_ - -PB_DS_CLASS_T_DEC -void -PB_DS_CLASS_C_DEC:: -trace() const -{ - std::cerr << std::endl; - std::cerr << "m_p_max " << m_p_max << std::endl; - base_type::trace(); -} - -#endif // #ifdef PB_DS_THIN_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp deleted file mode 100644 index 8fd16352a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file tree_policy/node_metadata_selector.hpp - * Contains an implementation class for trees. - */ - -#ifndef PB_DS_TREE_NODE_METADATA_DISPATCH_HPP -#define PB_DS_TREE_NODE_METADATA_DISPATCH_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { - /** - * @addtogroup traits Traits - * @{ - */ - - /// Tree metadata helper. - template - struct tree_metadata_helper; - - /// Specialization, false. - template - struct tree_metadata_helper - { - typedef typename Node_Update::metadata_type type; - }; - - /// Specialization, true. - template - struct tree_metadata_helper - { - typedef null_type type; - }; - - /// Tree node metadata dispatch. - template - class Node_Update, - typename _Alloc> - struct tree_node_metadata_dispatch - { - private: - typedef dumnode_const_iterator __it_type; - typedef Node_Update<__it_type, __it_type, Cmp_Fn, _Alloc> __node_u; - typedef null_node_update<__it_type, __it_type, Cmp_Fn, _Alloc> __nnode_u; - - enum - { - null_update = is_same<__node_u, __nnode_u>::value - }; - - public: - typedef typename tree_metadata_helper<__node_u, null_update>::type type; - }; - //@} - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_TREE_NODE_METADATA_DISPATCH_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp deleted file mode 100644 index de8c690cb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp +++ /dev/null @@ -1,121 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file tree_policy/order_statistics_imp.hpp - * Contains forward declarations for order_statistics_key - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) -{ - node_iterator it = node_begin(); - node_iterator end_it = node_end(); - - while (it != end_it) - { - node_iterator l_it = it.get_l_child(); - const size_type o = (l_it == end_it)? 0 : l_it.get_metadata(); - - if (order == o) - return *it; - else if (order < o) - it = l_it; - else - { - order -= o + 1; - it = it.get_r_child(); - } - } - - return base_type::end_iterator(); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) const -{ return const_cast(this)->find_by_order(order); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -order_of_key(key_const_reference r_key) const -{ - node_const_iterator it = node_begin(); - node_const_iterator end_it = node_end(); - - const cmp_fn& r_cmp_fn = const_cast(this)->get_cmp_fn(); - size_type ord = 0; - while (it != end_it) - { - node_const_iterator l_it = it.get_l_child(); - - if (r_cmp_fn(r_key, this->extract_key(*(*it)))) - it = l_it; - else if (r_cmp_fn(this->extract_key(*(*it)), r_key)) - { - ord += (l_it == end_it)? 1 : 1 + l_it.get_metadata(); - it = it.get_r_child(); - } - else - { - ord += (l_it == end_it)? 0 : l_it.get_metadata(); - it = end_it; - } - } - return ord; -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -operator()(node_iterator node_it, node_const_iterator end_nd_it) const -{ - node_iterator l_it = node_it.get_l_child(); - const size_type l_rank = (l_it == end_nd_it) ? 0 : l_it.get_metadata(); - - node_iterator r_it = node_it.get_r_child(); - const size_type r_rank = (r_it == end_nd_it) ? 0 : r_it.get_metadata(); - - const_cast(node_it.get_metadata())= 1 + l_rank + r_rank; -} - -PB_DS_CLASS_T_DEC -PB_DS_CLASS_C_DEC:: -~tree_order_statistics_node_update() -{ } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp deleted file mode 100644 index ec50fa041..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp +++ /dev/null @@ -1,103 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file trie_policy/node_metadata_selector.hpp - * Contains an implementation class for tries. - */ - -#ifndef PB_DS_TRIE_NODE_METADATA_DISPATCH_HPP -#define PB_DS_TRIE_NODE_METADATA_DISPATCH_HPP - -#include -#include - -namespace __gnu_pbds -{ - namespace detail - { - /** - * @addtogroup traits Traits - * @{ - */ - - /// Trie metadata helper. - template - struct trie_metadata_helper; - - /// Specialization, false. - template - struct trie_metadata_helper - { - typedef typename Node_Update::metadata_type type; - }; - - /// Specialization, true. - template - struct trie_metadata_helper - { - typedef null_type type; - }; - - /// Trie node metadata dispatch. - template - class Node_Update, - typename _Alloc> - struct trie_node_metadata_dispatch - { - private: - typedef dumnode_const_iterator __it_type; - typedef Node_Update<__it_type, __it_type, Cmp_Fn, _Alloc> __node_u; - typedef null_node_update<__it_type, __it_type, Cmp_Fn, _Alloc> __nnode_u; - - enum - { - null_update = is_same<__node_u, __nnode_u>::value - }; - - public: - typedef typename trie_metadata_helper<__node_u, null_update>::type type; - }; - //@} - } // namespace detail -} // namespace __gnu_pbds - -#endif // #ifndef PB_DS_TRIE_NODE_METADATA_DISPATCH_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp deleted file mode 100644 index 5b21c7604..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp +++ /dev/null @@ -1,160 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file trie_policy/order_statistics_imp.hpp - * Contains forward declarations for order_statistics_key - */ - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) -{ - if (empty()) - return end(); - - ++order; - node_iterator nd_it = node_begin(); - - while (true) - { - if (order > nd_it.get_metadata()) - return ++base_type::rightmost_it(nd_it); - - const size_type num_children = nd_it.num_children(); - if (num_children == 0) - return *nd_it; - - for (size_type i = 0; i < num_children; ++i) - { - node_iterator child_nd_it = nd_it.get_child(i); - if (order <= child_nd_it.get_metadata()) - { - i = num_children; - nd_it = child_nd_it; - } - else - order -= child_nd_it.get_metadata(); - } - } -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::const_iterator -PB_DS_CLASS_C_DEC:: -find_by_order(size_type order) const -{ return const_cast(this)->find_by_order(order); } - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -order_of_key(key_const_reference r_key) const -{ - const _ATraits& r_traits = - const_cast(this)->get_access_traits(); - - return order_of_prefix(r_traits.begin(r_key), r_traits.end(r_key)); -} - -PB_DS_CLASS_T_DEC -inline typename PB_DS_CLASS_C_DEC::size_type -PB_DS_CLASS_C_DEC:: -order_of_prefix(typename access_traits::const_iterator b, - typename access_traits::const_iterator e) const -{ - if (empty()) - return 0; - - const _ATraits& r_traits = - const_cast(this)->get_access_traits(); - - node_const_iterator nd_it = node_begin(); - node_const_iterator end_nd_it = node_end(); - size_type ord = 0; - - while (true) - { - const size_type num_children = nd_it.num_children(); - if (num_children == 0) - { - key_const_reference r_key = base_type::extract_key(*(*nd_it)); - typename access_traits::const_iterator key_b = - r_traits.begin(r_key); - - typename access_traits::const_iterator key_e = - r_traits.end(r_key); - - return (base_type::less(key_b, key_e, b, e, r_traits)) ? - ord + 1 : ord; - } - - node_const_iterator next_nd_it = end_nd_it; - size_type i = num_children - 1; - - do - { - node_const_iterator child_nd_it = nd_it.get_child(i); - - if (next_nd_it != end_nd_it) - ord += child_nd_it.get_metadata(); - else if (!base_type::less(b, e, - child_nd_it.valid_prefix().first, - child_nd_it.valid_prefix().second, - r_traits)) - next_nd_it = child_nd_it; - } - while (i-- > 0); - - if (next_nd_it == end_nd_it) - return ord; - - nd_it = next_nd_it; - } -} - -PB_DS_CLASS_T_DEC -inline void -PB_DS_CLASS_C_DEC:: -operator()(node_iterator nd_it, node_const_iterator /*end_nd_it*/) const -{ - const size_type num_children = nd_it.num_children(); - size_type children_rank = 0; - for (size_type i = 0; i < num_children; ++i) - children_rank += nd_it.get_child(i).get_metadata(); - - const size_type res = (num_children == 0) ? 1 : children_rank; - const_cast(nd_it.get_metadata()) = res; -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp deleted file mode 100644 index 050de3e8a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp +++ /dev/null @@ -1,111 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file unordered_iterator/const_iterator.hpp - * Contains an iterator class used for const ranging over the elements of the - * table. - */ - -/// Const range-type iterator. -class const_iterator_ -: public point_const_iterator_ -{ -public: - /// Category. - typedef std::forward_iterator_tag iterator_category; - - /// Difference type. - typedef typename _Alloc::difference_type difference_type; - - /// Iterator's value type. - typedef value_type_ value_type; - - /// Iterator's pointer type. - typedef pointer_ pointer; - - /// Iterator's const pointer type. - typedef const_pointer_ const_pointer; - - /// Iterator's reference type. - typedef reference_ reference; - - /// Iterator's const reference type. - typedef const_reference_ const_reference; - - /// Default constructor. - const_iterator_() : m_p_tbl(0) - { } - - /// Increments. - const_iterator_& - operator++() - { - m_p_tbl->inc_it_state(base_type::m_p_value, m_pos); - return *this; - } - - /// Increments. - const_iterator_ - operator++(int) - { - const_iterator_ ret =* this; - m_p_tbl->inc_it_state(base_type::m_p_value, m_pos); - return ret; - } - -protected: - typedef point_const_iterator_ base_type; - - /** - * Constructor used by the table to initiate the generalized - * pointer and position (e.g., this is called from within a find() - * of a table. - * */ - const_iterator_(const_pointer_ p_value, PB_DS_GEN_POS pos, - const PB_DS_CLASS_C_DEC* p_tbl) - : point_const_iterator_(p_value), m_p_tbl(p_tbl), m_pos(pos) - { } - - /** - * Pointer to the table object which created the iterator (used for - * incrementing its position. - * */ - const PB_DS_CLASS_C_DEC* m_p_tbl; - - PB_DS_GEN_POS m_pos; - - friend class PB_DS_CLASS_C_DEC; -}; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp deleted file mode 100644 index d0861cb49..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp +++ /dev/null @@ -1,133 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. - -// Permission to use, copy, modify, sell, and distribute this software -// is hereby granted without fee, provided that the above copyright -// notice appears in all copies, and that both that copyright notice -// and this permission notice appear in supporting documentation. None -// of the above authors, nor IBM Haifa Research Laboratories, make any -// representation about the suitability of this software for any -// purpose. It is provided "as is" without express or implied -// warranty. - -/** - * @file unordered_iterator/point_const_iterator.hpp - * Contains an iterator class returned by the tables' const find and insert - * methods. - */ - -class point_iterator_; - -/// Const point-type iterator. -class point_const_iterator_ -{ -public: - /// Category. - typedef trivial_iterator_tag iterator_category; - - /// Difference type. - typedef trivial_iterator_difference_type difference_type; - - /// Iterator's value type. - typedef value_type_ value_type; - - /// Iterator's pointer type. - typedef pointer_ pointer; - - /// Iterator's const pointer type. - typedef const_pointer_ const_pointer; - - /// Iterator's reference type. - typedef reference_ reference; - - /// Iterator's const reference type. - typedef const_reference_ const_reference; - - inline - point_const_iterator_(const_pointer p_value) : m_p_value(p_value) - { } - - /// Default constructor. - inline - point_const_iterator_() : m_p_value(0) - { } - - /// Copy constructor. - inline - point_const_iterator_(const point_const_iterator_& other) - : m_p_value(other.m_p_value) - { } - - /// Copy constructor. - inline - point_const_iterator_(const point_iterator_& other) - : m_p_value(other.m_p_value) - { } - - /// Access. - const_pointer - operator->() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_value != 0); - return m_p_value; - } - - /// Access. - const_reference - operator*() const - { - _GLIBCXX_DEBUG_ASSERT(m_p_value != 0); - return *m_p_value; - } - - /// Compares content to a different iterator object. - bool - operator==(const point_iterator_& other) const - { return m_p_value == other.m_p_value; } - - /// Compares content to a different iterator object. - bool - operator==(const point_const_iterator_& other) const - { return m_p_value == other.m_p_value; } - - /// Compares content (negatively) to a different iterator object. - bool - operator!=(const point_iterator_& other) const - { return m_p_value != other.m_p_value; } - - /// Compares content (negatively) to a different iterator object. - bool - operator!=(const point_const_iterator_& other) const - { return m_p_value != other.m_p_value; } - -protected: - const_pointer m_p_value; - - friend class point_iterator_; - - friend class PB_DS_CLASS_C_DEC; -}; - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/random deleted file mode 100644 index d93757b08..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/random +++ /dev/null @@ -1,3783 +0,0 @@ -// Random number extensions -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/random - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _EXT_RANDOM -#define _EXT_RANDOM 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include -#ifdef __SSE2__ -# include -#endif - -#if defined(_GLIBCXX_USE_C99_STDINT_TR1) && defined(UINT32_C) - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - - /* Mersenne twister implementation optimized for vector operations. - * - * Reference: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/ - */ - template - class simd_fast_mersenne_twister_engine - { - static_assert(std::is_unsigned<_UIntType>::value, "template argument " - "substituting _UIntType not an unsigned integral type"); - static_assert(__sr1 < 32, "first right shift too large"); - static_assert(__sr2 < 16, "second right shift too large"); - static_assert(__sl1 < 32, "first left shift too large"); - static_assert(__sl2 < 16, "second left shift too large"); - - public: - typedef _UIntType result_type; - - private: - static constexpr size_t m_w = sizeof(result_type) * 8; - static constexpr size_t _M_nstate = __m / 128 + 1; - static constexpr size_t _M_nstate32 = _M_nstate * 4; - - static_assert(std::is_unsigned<_UIntType>::value, "template argument " - "substituting _UIntType not an unsigned integral type"); - static_assert(__pos1 < _M_nstate, "POS1 not smaller than state size"); - static_assert(16 % sizeof(_UIntType) == 0, - "UIntType size must divide 16"); - - public: - static constexpr size_t state_size = _M_nstate * (16 - / sizeof(result_type)); - static constexpr result_type default_seed = 5489u; - - // constructors and member function - explicit - simd_fast_mersenne_twister_engine(result_type __sd = default_seed) - { seed(__sd); } - - template::value> - ::type> - explicit - simd_fast_mersenne_twister_engine(_Sseq& __q) - { seed(__q); } - - void - seed(result_type __sd = default_seed); - - template - typename std::enable_if::value>::type - seed(_Sseq& __q); - - static constexpr result_type - min() - { return 0; }; - - static constexpr result_type - max() - { return std::numeric_limits::max(); } - - void - discard(unsigned long long __z); - - result_type - operator()() - { - if (__builtin_expect(_M_pos >= state_size, 0)) - _M_gen_rand(); - - return _M_stateT[_M_pos++]; - } - - template - friend bool - operator==(const simd_fast_mersenne_twister_engine<_UIntType_2, - __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, - __msk1_2, __msk2_2, __msk3_2, __msk4_2, - __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __lhs, - const simd_fast_mersenne_twister_engine<_UIntType_2, - __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, - __msk1_2, __msk2_2, __msk3_2, __msk4_2, - __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __rhs); - - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::simd_fast_mersenne_twister_engine - <_UIntType_2, - __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, - __msk1_2, __msk2_2, __msk3_2, __msk4_2, - __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __x); - - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType_2, - __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, - __msk1_2, __msk2_2, __msk3_2, __msk4_2, - __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __x); - - private: - union - { -#ifdef __SSE2__ - __m128i _M_state[_M_nstate]; -#endif - uint32_t _M_state32[_M_nstate32]; - result_type _M_stateT[state_size]; - } __attribute__ ((__aligned__ (16))); - size_t _M_pos; - - void _M_gen_rand(void); - void _M_period_certification(); - }; - - - template - inline bool - operator!=(const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, - __msk4, __parity1, __parity2, __parity3, __parity4>& __lhs, - const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, - __msk4, __parity1, __parity2, __parity3, __parity4>& __rhs) - { return !(__lhs == __rhs); } - - - /* Definitions for the SIMD-oriented Fast Mersenne Twister as defined - * in the C implementation by Daito and Matsumoto, as both a 32-bit - * and 64-bit version. - */ - typedef simd_fast_mersenne_twister_engine - sfmt607; - - typedef simd_fast_mersenne_twister_engine - sfmt607_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt1279; - - typedef simd_fast_mersenne_twister_engine - sfmt1279_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt2281; - - typedef simd_fast_mersenne_twister_engine - sfmt2281_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt4253; - - typedef simd_fast_mersenne_twister_engine - sfmt4253_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt11213; - - typedef simd_fast_mersenne_twister_engine - sfmt11213_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt19937; - - typedef simd_fast_mersenne_twister_engine - sfmt19937_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt44497; - - typedef simd_fast_mersenne_twister_engine - sfmt44497_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt86243; - - typedef simd_fast_mersenne_twister_engine - sfmt86243_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt132049; - - typedef simd_fast_mersenne_twister_engine - sfmt132049_64; - - - typedef simd_fast_mersenne_twister_engine - sfmt216091; - - typedef simd_fast_mersenne_twister_engine - sfmt216091_64; - -#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - - /** - * @brief A beta continuous distribution for random numbers. - * - * The formula for the beta probability density function is: - * @f[ - * p(x|\alpha,\beta) = \frac{1}{B(\alpha,\beta)} - * x^{\alpha - 1} (1 - x)^{\beta - 1} - * @f] - */ - template - class beta_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef beta_distribution<_RealType> distribution_type; - friend class beta_distribution<_RealType>; - - explicit - param_type(_RealType __alpha_val = _RealType(1), - _RealType __beta_val = _RealType(1)) - : _M_alpha(__alpha_val), _M_beta(__beta_val) - { - __glibcxx_assert(_M_alpha > _RealType(0)); - __glibcxx_assert(_M_beta > _RealType(0)); - } - - _RealType - alpha() const - { return _M_alpha; } - - _RealType - beta() const - { return _M_beta; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return (__p1._M_alpha == __p2._M_alpha - && __p1._M_beta == __p2._M_beta); } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void - _M_initialize(); - - _RealType _M_alpha; - _RealType _M_beta; - }; - - public: - /** - * @brief Constructs a beta distribution with parameters - * @f$\alpha@f$ and @f$\beta@f$. - */ - explicit - beta_distribution(_RealType __alpha_val = _RealType(1), - _RealType __beta_val = _RealType(1)) - : _M_param(__alpha_val, __beta_val) - { } - - explicit - beta_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Returns the @f$\alpha@f$ of the distribution. - */ - _RealType - alpha() const - { return _M_param.alpha(); } - - /** - * @brief Returns the @f$\beta@f$ of the distribution. - */ - _RealType - beta() const - { return _M_param.beta(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return result_type(1); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two beta distributions have the same - * parameters and the sequences that would be generated - * are equal. - */ - friend bool - operator==(const beta_distribution& __d1, - const beta_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %beta_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %beta_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::beta_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %beta_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %beta_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::beta_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two beta distributions are different. - */ - template - inline bool - operator!=(const __gnu_cxx::beta_distribution<_RealType>& __d1, - const __gnu_cxx::beta_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A multi-variate normal continuous distribution for random numbers. - * - * The formula for the normal probability density function is - * @f[ - * p(\overrightarrow{x}|\overrightarrow{\mu },\Sigma) = - * \frac{1}{\sqrt{(2\pi )^k\det(\Sigma))}} - * e^{-\frac{1}{2}(\overrightarrow{x}-\overrightarrow{\mu})^\text{T} - * \Sigma ^{-1}(\overrightarrow{x}-\overrightarrow{\mu})} - * @f] - * - * where @f$\overrightarrow{x}@f$ and @f$\overrightarrow{\mu}@f$ are - * vectors of dimension @f$k@f$ and @f$\Sigma@f$ is the covariance - * matrix (which must be positive-definite). - */ - template - class normal_mv_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - static_assert(_Dimen != 0, "dimension is zero"); - - public: - /** The type of the range of the distribution. */ - typedef std::array<_RealType, _Dimen> result_type; - /** Parameter type. */ - class param_type - { - static constexpr size_t _M_t_size = _Dimen * (_Dimen + 1) / 2; - - public: - typedef normal_mv_distribution<_Dimen, _RealType> distribution_type; - friend class normal_mv_distribution<_Dimen, _RealType>; - - param_type() - { - std::fill(_M_mean.begin(), _M_mean.end(), _RealType(0)); - auto __it = _M_t.begin(); - for (size_t __i = 0; __i < _Dimen; ++__i) - { - std::fill_n(__it, __i, _RealType(0)); - __it += __i; - *__it++ = _RealType(1); - } - } - - template - param_type(_ForwardIterator1 __meanbegin, - _ForwardIterator1 __meanend, - _ForwardIterator2 __varcovbegin, - _ForwardIterator2 __varcovend) - { - __glibcxx_function_requires(_ForwardIteratorConcept< - _ForwardIterator1>) - __glibcxx_function_requires(_ForwardIteratorConcept< - _ForwardIterator2>) - _GLIBCXX_DEBUG_ASSERT(std::distance(__meanbegin, __meanend) - <= _Dimen); - const auto __dist = std::distance(__varcovbegin, __varcovend); - _GLIBCXX_DEBUG_ASSERT(__dist == _Dimen * _Dimen - || __dist == _Dimen * (_Dimen + 1) / 2 - || __dist == _Dimen); - - if (__dist == _Dimen * _Dimen) - _M_init_full(__meanbegin, __meanend, __varcovbegin, __varcovend); - else if (__dist == _Dimen * (_Dimen + 1) / 2) - _M_init_lower(__meanbegin, __meanend, __varcovbegin, __varcovend); - else - { - __glibcxx_assert(__dist == _Dimen); - _M_init_diagonal(__meanbegin, __meanend, - __varcovbegin, __varcovend); - } - } - - param_type(std::initializer_list<_RealType> __mean, - std::initializer_list<_RealType> __varcov) - { - _GLIBCXX_DEBUG_ASSERT(__mean.size() <= _Dimen); - _GLIBCXX_DEBUG_ASSERT(__varcov.size() == _Dimen * _Dimen - || __varcov.size() == _Dimen * (_Dimen + 1) / 2 - || __varcov.size() == _Dimen); - - if (__varcov.size() == _Dimen * _Dimen) - _M_init_full(__mean.begin(), __mean.end(), - __varcov.begin(), __varcov.end()); - else if (__varcov.size() == _Dimen * (_Dimen + 1) / 2) - _M_init_lower(__mean.begin(), __mean.end(), - __varcov.begin(), __varcov.end()); - else - { - __glibcxx_assert(__varcov.size() == _Dimen); - _M_init_diagonal(__mean.begin(), __mean.end(), - __varcov.begin(), __varcov.end()); - } - } - - std::array<_RealType, _Dimen> - mean() const - { return _M_mean; } - - std::array<_RealType, _M_t_size> - varcov() const - { return _M_t; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_mean == __p2._M_mean && __p1._M_t == __p2._M_t; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - template - void _M_init_full(_InputIterator1 __meanbegin, - _InputIterator1 __meanend, - _InputIterator2 __varcovbegin, - _InputIterator2 __varcovend); - template - void _M_init_lower(_InputIterator1 __meanbegin, - _InputIterator1 __meanend, - _InputIterator2 __varcovbegin, - _InputIterator2 __varcovend); - template - void _M_init_diagonal(_InputIterator1 __meanbegin, - _InputIterator1 __meanend, - _InputIterator2 __varbegin, - _InputIterator2 __varend); - - std::array<_RealType, _Dimen> _M_mean; - std::array<_RealType, _M_t_size> _M_t; - }; - - public: - normal_mv_distribution() - : _M_param(), _M_nd() - { } - - template - normal_mv_distribution(_ForwardIterator1 __meanbegin, - _ForwardIterator1 __meanend, - _ForwardIterator2 __varcovbegin, - _ForwardIterator2 __varcovend) - : _M_param(__meanbegin, __meanend, __varcovbegin, __varcovend), - _M_nd() - { } - - normal_mv_distribution(std::initializer_list<_RealType> __mean, - std::initializer_list<_RealType> __varcov) - : _M_param(__mean, __varcov), _M_nd() - { } - - explicit - normal_mv_distribution(const param_type& __p) - : _M_param(__p), _M_nd() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_nd.reset(); } - - /** - * @brief Returns the mean of the distribution. - */ - result_type - mean() const - { return _M_param.mean(); } - - /** - * @brief Returns the compact form of the variance/covariance - * matrix of the distribution. - */ - std::array<_RealType, _Dimen * (_Dimen + 1) / 2> - varcov() const - { return _M_param.varcov(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { result_type __res; - __res.fill(std::numeric_limits<_RealType>::lowest()); - return __res; } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { result_type __res; - __res.fill(std::numeric_limits<_RealType>::max()); - return __res; } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { return this->__generate_impl(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { return this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two multi-variant normal distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - template - friend bool - operator==(const - __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& - __d1, - const - __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& - __d2); - - /** - * @brief Inserts a %normal_mv_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %normal_mv_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const - __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& - __x); - - /** - * @brief Extracts a %normal_mv_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %normal_mv_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& - __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - std::normal_distribution<_RealType> _M_nd; - }; - - /** - * @brief Return true if two multi-variate normal distributions are - * different. - */ - template - inline bool - operator!=(const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& - __d1, - const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& - __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A Rice continuous distribution for random numbers. - * - * The formula for the Rice probability density function is - * @f[ - * p(x|\nu,\sigma) = \frac{x}{\sigma^2} - * \exp\left(-\frac{x^2+\nu^2}{2\sigma^2}\right) - * I_0\left(\frac{x \nu}{\sigma^2}\right) - * @f] - * where @f$I_0(z)@f$ is the modified Bessel function of the first kind - * of order 0 and @f$\nu >= 0@f$ and @f$\sigma > 0@f$. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$\sqrt{\pi/2}L_{1/2}(-\nu^2/2\sigma^2)@f$
Variance@f$2\sigma^2 + \nu^2 - * + (\pi\sigma^2/2)L^2_{1/2}(-\nu^2/2\sigma^2)@f$
Range@f$[0, \infty)@f$
- * where @f$L_{1/2}(x)@f$ is the Laguerre polynomial of order 1/2. - */ - template - class - rice_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef rice_distribution distribution_type; - - param_type(result_type __nu_val = result_type(0), - result_type __sigma_val = result_type(1)) - : _M_nu(__nu_val), _M_sigma(__sigma_val) - { - __glibcxx_assert(_M_nu >= result_type(0)); - __glibcxx_assert(_M_sigma > result_type(0)); - } - - result_type - nu() const - { return _M_nu; } - - result_type - sigma() const - { return _M_sigma; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_nu == __p2._M_nu && __p1._M_sigma == __p2._M_sigma; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_nu; - result_type _M_sigma; - }; - - /** - * @brief Constructors. - */ - explicit - rice_distribution(result_type __nu_val = result_type(0), - result_type __sigma_val = result_type(1)) - : _M_param(__nu_val, __sigma_val), - _M_ndx(__nu_val, __sigma_val), - _M_ndy(result_type(0), __sigma_val) - { } - - explicit - rice_distribution(const param_type& __p) - : _M_param(__p), - _M_ndx(__p.nu(), __p.sigma()), - _M_ndy(result_type(0), __p.sigma()) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { - _M_ndx.reset(); - _M_ndy.reset(); - } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - nu() const - { return _M_param.nu(); } - - result_type - sigma() const - { return _M_param.sigma(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __x = this->_M_ndx(__urng); - result_type __y = this->_M_ndy(__urng); -#if _GLIBCXX_USE_C99_MATH_TR1 - return std::hypot(__x, __y); -#else - return std::sqrt(__x * __x + __y * __y); -#endif - } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typename std::normal_distribution::param_type - __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma()); - result_type __x = this->_M_ndx(__px, __urng); - result_type __y = this->_M_ndy(__py, __urng); -#if _GLIBCXX_USE_C99_MATH_TR1 - return std::hypot(__x, __y); -#else - return std::sqrt(__x * __x + __y * __y); -#endif - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Rice distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const rice_distribution& __d1, - const rice_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_ndx == __d2._M_ndx - && __d1._M_ndy == __d2._M_ndy); } - - /** - * @brief Inserts a %rice_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %rice_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const rice_distribution<_RealType1>&); - - /** - * @brief Extracts a %rice_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %rice_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - rice_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::normal_distribution _M_ndx; - std::normal_distribution _M_ndy; - }; - - /** - * @brief Return true if two Rice distributions are not equal. - */ - template - inline bool - operator!=(const rice_distribution<_RealType1>& __d1, - const rice_distribution<_RealType1>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A Nakagami continuous distribution for random numbers. - * - * The formula for the Nakagami probability density function is - * @f[ - * p(x|\mu,\omega) = \frac{2\mu^\mu}{\Gamma(\mu)\omega^\mu} - * x^{2\mu-1}e^{-\mu x / \omega} - * @f] - * where @f$\Gamma(z)@f$ is the gamma function and @f$\mu >= 0.5@f$ - * and @f$\omega > 0@f$. - */ - template - class - nakagami_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef nakagami_distribution distribution_type; - - param_type(result_type __mu_val = result_type(1), - result_type __omega_val = result_type(1)) - : _M_mu(__mu_val), _M_omega(__omega_val) - { - __glibcxx_assert(_M_mu >= result_type(0.5L)); - __glibcxx_assert(_M_omega > result_type(0)); - } - - result_type - mu() const - { return _M_mu; } - - result_type - omega() const - { return _M_omega; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_mu == __p2._M_mu && __p1._M_omega == __p2._M_omega; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_mu; - result_type _M_omega; - }; - - /** - * @brief Constructors. - */ - explicit - nakagami_distribution(result_type __mu_val = result_type(1), - result_type __omega_val = result_type(1)) - : _M_param(__mu_val, __omega_val), - _M_gd(__mu_val, __omega_val / __mu_val) - { } - - explicit - nakagami_distribution(const param_type& __p) - : _M_param(__p), - _M_gd(__p.mu(), __p.omega() / __p.mu()) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_gd.reset(); } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - mu() const - { return _M_param.mu(); } - - result_type - omega() const - { return _M_param.omega(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return std::sqrt(this->_M_gd(__urng)); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typename std::gamma_distribution::param_type - __pg(__p.mu(), __p.omega() / __p.mu()); - return std::sqrt(this->_M_gd(__pg, __urng)); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Nakagami distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const nakagami_distribution& __d1, - const nakagami_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_gd == __d2._M_gd); } - - /** - * @brief Inserts a %nakagami_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %nakagami_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const nakagami_distribution<_RealType1>&); - - /** - * @brief Extracts a %nakagami_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %nakagami_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - nakagami_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::gamma_distribution _M_gd; - }; - - /** - * @brief Return true if two Nakagami distributions are not equal. - */ - template - inline bool - operator!=(const nakagami_distribution<_RealType>& __d1, - const nakagami_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A Pareto continuous distribution for random numbers. - * - * The formula for the Pareto cumulative probability function is - * @f[ - * P(x|\alpha,\mu) = 1 - \left(\frac{\mu}{x}\right)^\alpha - * @f] - * The formula for the Pareto probability density function is - * @f[ - * p(x|\alpha,\mu) = \frac{\alpha + 1}{\mu} - * \left(\frac{\mu}{x}\right)^{\alpha + 1} - * @f] - * where @f$x >= \mu@f$ and @f$\mu > 0@f$, @f$\alpha > 0@f$. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$\alpha \mu / (\alpha - 1)@f$ - * for @f$\alpha > 1@f$
Variance@f$\alpha \mu^2 / [(\alpha - 1)^2(\alpha - 2)]@f$ - * for @f$\alpha > 2@f$
Range@f$[\mu, \infty)@f$
- */ - template - class - pareto_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef pareto_distribution distribution_type; - - param_type(result_type __alpha_val = result_type(1), - result_type __mu_val = result_type(1)) - : _M_alpha(__alpha_val), _M_mu(__mu_val) - { - __glibcxx_assert(_M_alpha > result_type(0)); - __glibcxx_assert(_M_mu > result_type(0)); - } - - result_type - alpha() const - { return _M_alpha; } - - result_type - mu() const - { return _M_mu; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_alpha == __p2._M_alpha && __p1._M_mu == __p2._M_mu; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_alpha; - result_type _M_mu; - }; - - /** - * @brief Constructors. - */ - explicit - pareto_distribution(result_type __alpha_val = result_type(1), - result_type __mu_val = result_type(1)) - : _M_param(__alpha_val, __mu_val), - _M_ud() - { } - - explicit - pareto_distribution(const param_type& __p) - : _M_param(__p), - _M_ud() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { - _M_ud.reset(); - } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - alpha() const - { return _M_param.alpha(); } - - result_type - mu() const - { return _M_param.mu(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return this->mu(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { - return this->mu() * std::pow(this->_M_ud(__urng), - -result_type(1) / this->alpha()); - } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - return __p.mu() * std::pow(this->_M_ud(__urng), - -result_type(1) / __p.alpha()); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Pareto distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const pareto_distribution& __d1, - const pareto_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_ud == __d2._M_ud); } - - /** - * @brief Inserts a %pareto_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %pareto_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const pareto_distribution<_RealType1>&); - - /** - * @brief Extracts a %pareto_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %pareto_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - pareto_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::uniform_real_distribution _M_ud; - }; - - /** - * @brief Return true if two Pareto distributions are not equal. - */ - template - inline bool - operator!=(const pareto_distribution<_RealType>& __d1, - const pareto_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A K continuous distribution for random numbers. - * - * The formula for the K probability density function is - * @f[ - * p(x|\lambda, \mu, \nu) = \frac{2}{x} - * \left(\frac{\lambda\nu x}{\mu}\right)^{\frac{\lambda + \nu}{2}} - * \frac{1}{\Gamma(\lambda)\Gamma(\nu)} - * K_{\nu - \lambda}\left(2\sqrt{\frac{\lambda\nu x}{\mu}}\right) - * @f] - * where @f$I_0(z)@f$ is the modified Bessel function of the second kind - * of order @f$\nu - \lambda@f$ and @f$\lambda > 0@f$, @f$\mu > 0@f$ - * and @f$\nu > 0@f$. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$\mu@f$
Variance@f$\mu^2\frac{\lambda + \nu + 1}{\lambda\nu}@f$
Range@f$[0, \infty)@f$
- */ - template - class - k_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef k_distribution distribution_type; - - param_type(result_type __lambda_val = result_type(1), - result_type __mu_val = result_type(1), - result_type __nu_val = result_type(1)) - : _M_lambda(__lambda_val), _M_mu(__mu_val), _M_nu(__nu_val) - { - __glibcxx_assert(_M_lambda > result_type(0)); - __glibcxx_assert(_M_mu > result_type(0)); - __glibcxx_assert(_M_nu > result_type(0)); - } - - result_type - lambda() const - { return _M_lambda; } - - result_type - mu() const - { return _M_mu; } - - result_type - nu() const - { return _M_nu; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { - return __p1._M_lambda == __p2._M_lambda - && __p1._M_mu == __p2._M_mu - && __p1._M_nu == __p2._M_nu; - } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_lambda; - result_type _M_mu; - result_type _M_nu; - }; - - /** - * @brief Constructors. - */ - explicit - k_distribution(result_type __lambda_val = result_type(1), - result_type __mu_val = result_type(1), - result_type __nu_val = result_type(1)) - : _M_param(__lambda_val, __mu_val, __nu_val), - _M_gd1(__lambda_val, result_type(1) / __lambda_val), - _M_gd2(__nu_val, __mu_val / __nu_val) - { } - - explicit - k_distribution(const param_type& __p) - : _M_param(__p), - _M_gd1(__p.lambda(), result_type(1) / __p.lambda()), - _M_gd2(__p.nu(), __p.mu() / __p.nu()) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { - _M_gd1.reset(); - _M_gd2.reset(); - } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - lambda() const - { return _M_param.lambda(); } - - result_type - mu() const - { return _M_param.mu(); } - - result_type - nu() const - { return _M_param.nu(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator&); - - template - result_type - operator()(_UniformRandomNumberGenerator&, const param_type&); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two K distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const k_distribution& __d1, - const k_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_gd1 == __d2._M_gd1 - && __d1._M_gd2 == __d2._M_gd2); } - - /** - * @brief Inserts a %k_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %k_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const k_distribution<_RealType1>&); - - /** - * @brief Extracts a %k_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %k_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - k_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::gamma_distribution _M_gd1; - std::gamma_distribution _M_gd2; - }; - - /** - * @brief Return true if two K distributions are not equal. - */ - template - inline bool - operator!=(const k_distribution<_RealType>& __d1, - const k_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief An arcsine continuous distribution for random numbers. - * - * The formula for the arcsine probability density function is - * @f[ - * p(x|a,b) = \frac{1}{\pi \sqrt{(x - a)(b - x)}} - * @f] - * where @f$x >= a@f$ and @f$x <= b@f$. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$ (a + b) / 2 @f$
Variance@f$ (b - a)^2 / 8 @f$
Range@f$[a, b]@f$
- */ - template - class - arcsine_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef arcsine_distribution distribution_type; - - param_type(result_type __a = result_type(0), - result_type __b = result_type(1)) - : _M_a(__a), _M_b(__b) - { - __glibcxx_assert(_M_a <= _M_b); - } - - result_type - a() const - { return _M_a; } - - result_type - b() const - { return _M_b; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_a; - result_type _M_b; - }; - - /** - * @brief Constructors. - */ - explicit - arcsine_distribution(result_type __a = result_type(0), - result_type __b = result_type(1)) - : _M_param(__a, __b), - _M_ud(-1.5707963267948966192313216916397514L, - +1.5707963267948966192313216916397514L) - { } - - explicit - arcsine_distribution(const param_type& __p) - : _M_param(__p), - _M_ud(-1.5707963267948966192313216916397514L, - +1.5707963267948966192313216916397514L) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_ud.reset(); } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - a() const - { return _M_param.a(); } - - result_type - b() const - { return _M_param.b(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return this->a(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return this->b(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __x = std::sin(this->_M_ud(__urng)); - return (__x * (this->b() - this->a()) - + this->a() + this->b()) / result_type(2); - } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - result_type __x = std::sin(this->_M_ud(__urng)); - return (__x * (__p.b() - __p.a()) - + __p.a() + __p.b()) / result_type(2); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two arcsine distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const arcsine_distribution& __d1, - const arcsine_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_ud == __d2._M_ud); } - - /** - * @brief Inserts a %arcsine_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %arcsine_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const arcsine_distribution<_RealType1>&); - - /** - * @brief Extracts a %arcsine_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %arcsine_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - arcsine_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - std::uniform_real_distribution _M_ud; - }; - - /** - * @brief Return true if two arcsine distributions are not equal. - */ - template - inline bool - operator!=(const arcsine_distribution<_RealType>& __d1, - const arcsine_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A Hoyt continuous distribution for random numbers. - * - * The formula for the Hoyt probability density function is - * @f[ - * p(x|q,\omega) = \frac{(1 + q^2)x}{q\omega} - * \exp\left(-\frac{(1 + q^2)^2 x^2}{4 q^2 \omega}\right) - * I_0\left(\frac{(1 - q^4) x^2}{4 q^2 \omega}\right) - * @f] - * where @f$I_0(z)@f$ is the modified Bessel function of the first kind - * of order 0 and @f$0 < q < 1@f$. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$ \sqrt{\frac{2}{\pi}} \sqrt{\frac{\omega}{1 + q^2}} - * E(1 - q^2) @f$
Variance@f$ \omega \left(1 - \frac{2E^2(1 - q^2)} - * {\pi (1 + q^2)}\right) @f$
Range@f$[0, \infty)@f$
- * where @f$E(x)@f$ is the elliptic function of the second kind. - */ - template - class - hoyt_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef hoyt_distribution distribution_type; - - param_type(result_type __q = result_type(0.5L), - result_type __omega = result_type(1)) - : _M_q(__q), _M_omega(__omega) - { - __glibcxx_assert(_M_q > result_type(0)); - __glibcxx_assert(_M_q < result_type(1)); - } - - result_type - q() const - { return _M_q; } - - result_type - omega() const - { return _M_omega; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_q == __p2._M_q && __p1._M_omega == __p2._M_omega; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_q; - result_type _M_omega; - }; - - /** - * @brief Constructors. - */ - explicit - hoyt_distribution(result_type __q = result_type(0.5L), - result_type __omega = result_type(1)) - : _M_param(__q, __omega), - _M_ad(result_type(0.5L) * (result_type(1) + __q * __q), - result_type(0.5L) * (result_type(1) + __q * __q) - / (__q * __q)), - _M_ed(result_type(1)) - { } - - explicit - hoyt_distribution(const param_type& __p) - : _M_param(__p), - _M_ad(result_type(0.5L) * (result_type(1) + __p.q() * __p.q()), - result_type(0.5L) * (result_type(1) + __p.q() * __p.q()) - / (__p.q() * __p.q())), - _M_ed(result_type(1)) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { - _M_ad.reset(); - _M_ed.reset(); - } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - q() const - { return _M_param.q(); } - - result_type - omega() const - { return _M_param.omega(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return result_type(0); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two Hoyt distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - friend bool - operator==(const hoyt_distribution& __d1, - const hoyt_distribution& __d2) - { return (__d1._M_param == __d2._M_param - && __d1._M_ad == __d2._M_ad - && __d1._M_ed == __d2._M_ed); } - - /** - * @brief Inserts a %hoyt_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %hoyt_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const hoyt_distribution<_RealType1>&); - - /** - * @brief Extracts a %hoyt_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %hoyt_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - hoyt_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - - __gnu_cxx::arcsine_distribution _M_ad; - std::exponential_distribution _M_ed; - }; - - /** - * @brief Return true if two Hoyt distributions are not equal. - */ - template - inline bool - operator!=(const hoyt_distribution<_RealType>& __d1, - const hoyt_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A triangular distribution for random numbers. - * - * The formula for the triangular probability density function is - * @f[ - * / 0 for x < a - * p(x|a,b,c) = | \frac{2(x-a)}{(c-a)(b-a)} for a <= x <= b - * | \frac{2(c-x)}{(c-a)(c-b)} for b < x <= c - * \ 0 for c < x - * @f] - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$ \frac{a+b+c}{2} @f$
Variance@f$ \frac{a^2+b^2+c^2-ab-ac-bc} - * {18}@f$
Range@f$[a, c]@f$
- */ - template - class triangular_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - friend class triangular_distribution<_RealType>; - - explicit - param_type(_RealType __a = _RealType(0), - _RealType __b = _RealType(0.5), - _RealType __c = _RealType(1)) - : _M_a(__a), _M_b(__b), _M_c(__c) - { - __glibcxx_assert(_M_a <= _M_b); - __glibcxx_assert(_M_b <= _M_c); - __glibcxx_assert(_M_a < _M_c); - - _M_r_ab = (_M_b - _M_a) / (_M_c - _M_a); - _M_f_ab_ac = (_M_b - _M_a) * (_M_c - _M_a); - _M_f_bc_ac = (_M_c - _M_b) * (_M_c - _M_a); - } - - _RealType - a() const - { return _M_a; } - - _RealType - b() const - { return _M_b; } - - _RealType - c() const - { return _M_c; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { - return (__p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b - && __p1._M_c == __p2._M_c); - } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - - _RealType _M_a; - _RealType _M_b; - _RealType _M_c; - _RealType _M_r_ab; - _RealType _M_f_ab_ac; - _RealType _M_f_bc_ac; - }; - - /** - * @brief Constructs a triangle distribution with parameters - * @f$ a @f$, @f$ b @f$ and @f$ c @f$. - */ - explicit - triangular_distribution(result_type __a = result_type(0), - result_type __b = result_type(0.5), - result_type __c = result_type(1)) - : _M_param(__a, __b, __c) - { } - - explicit - triangular_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Returns the @f$ a @f$ of the distribution. - */ - result_type - a() const - { return _M_param.a(); } - - /** - * @brief Returns the @f$ b @f$ of the distribution. - */ - result_type - b() const - { return _M_param.b(); } - - /** - * @brief Returns the @f$ c @f$ of the distribution. - */ - result_type - c() const - { return _M_param.c(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return _M_param._M_a; } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return _M_param._M_c; } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - result_type __rnd = __aurng(); - if (__rnd <= __p._M_r_ab) - return __p.a() + std::sqrt(__rnd * __p._M_f_ab_ac); - else - return __p.c() - std::sqrt((result_type(1) - __rnd) - * __p._M_f_bc_ac); - } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two triangle distributions have the same - * parameters and the sequences that would be generated - * are equal. - */ - friend bool - operator==(const triangular_distribution& __d1, - const triangular_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %triangular_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %triangular_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::triangular_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %triangular_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %triangular_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::triangular_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two triangle distributions are different. - */ - template - inline bool - operator!=(const __gnu_cxx::triangular_distribution<_RealType>& __d1, - const __gnu_cxx::triangular_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A von Mises distribution for random numbers. - * - * The formula for the von Mises probability density function is - * @f[ - * p(x|\mu,\kappa) = \frac{e^{\kappa \cos(x-\mu)}} - * {2\pi I_0(\kappa)} - * @f] - * - * The generating functions use the method according to: - * - * D. J. Best and N. I. Fisher, 1979. "Efficient Simulation of the - * von Mises Distribution", Journal of the Royal Statistical Society. - * Series C (Applied Statistics), Vol. 28, No. 2, pp. 152-157. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$ \mu @f$
Variance@f$ 1-I_1(\kappa)/I_0(\kappa) @f$
Range@f$[-\pi, \pi]@f$
- */ - template - class von_mises_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - /** Parameter type. */ - struct param_type - { - friend class von_mises_distribution<_RealType>; - - explicit - param_type(_RealType __mu = _RealType(0), - _RealType __kappa = _RealType(1)) - : _M_mu(__mu), _M_kappa(__kappa) - { - const _RealType __pi = __gnu_cxx::__math_constants<_RealType>::__pi; - __glibcxx_assert(_M_mu >= -__pi && _M_mu <= __pi); - __glibcxx_assert(_M_kappa >= _RealType(0)); - - auto __tau = std::sqrt(_RealType(4) * _M_kappa * _M_kappa - + _RealType(1)) + _RealType(1); - auto __rho = ((__tau - std::sqrt(_RealType(2) * __tau)) - / (_RealType(2) * _M_kappa)); - _M_r = (_RealType(1) + __rho * __rho) / (_RealType(2) * __rho); - } - - _RealType - mu() const - { return _M_mu; } - - _RealType - kappa() const - { return _M_kappa; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_mu == __p2._M_mu && __p1._M_kappa == __p2._M_kappa; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_mu; - _RealType _M_kappa; - _RealType _M_r; - }; - - /** - * @brief Constructs a von Mises distribution with parameters - * @f$\mu@f$ and @f$\kappa@f$. - */ - explicit - von_mises_distribution(result_type __mu = result_type(0), - result_type __kappa = result_type(1)) - : _M_param(__mu, __kappa) - { } - - explicit - von_mises_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Returns the @f$ \mu @f$ of the distribution. - */ - result_type - mu() const - { return _M_param.mu(); } - - /** - * @brief Returns the @f$ \kappa @f$ of the distribution. - */ - result_type - kappa() const - { return _M_param.kappa(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { - return -__gnu_cxx::__math_constants::__pi; - } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { - return __gnu_cxx::__math_constants::__pi; - } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, _M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two von Mises distributions have the same - * parameters and the sequences that would be generated - * are equal. - */ - friend bool - operator==(const von_mises_distribution& __d1, - const von_mises_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %von_mises_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %von_mises_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::von_mises_distribution<_RealType1>& __x); - - /** - * @brief Extracts a %von_mises_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %von_mises_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::von_mises_distribution<_RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two von Mises distributions are different. - */ - template - inline bool - operator!=(const __gnu_cxx::von_mises_distribution<_RealType>& __d1, - const __gnu_cxx::von_mises_distribution<_RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A discrete hypergeometric random number distribution. - * - * The hypergeometric distribution is a discrete probability distribution - * that describes the probability of @p k successes in @p n draws @a without - * replacement from a finite population of size @p N containing exactly @p K - * successes. - * - * The formula for the hypergeometric probability density function is - * @f[ - * p(k|N,K,n) = \frac{\binom{K}{k} \binom{N-K}{n-k}}{\binom{N}{n}} - * @f] - * where @f$N@f$ is the total population of the distribution, - * @f$K@f$ is the total population of the distribution. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$ n\frac{K}{N} @f$
Variance@f$ n\frac{K}{N}\frac{N-K}{N}\frac{N-n}{N-1} - * @f$
Range@f$[max(0, n+K-N), min(K, n)]@f$
- */ - template - class hypergeometric_distribution - { - static_assert(std::is_unsigned<_UIntType>::value, "template argument " - "substituting _UIntType not an unsigned integral type"); - - public: - /** The type of the range of the distribution. */ - typedef _UIntType result_type; - - /** Parameter type. */ - struct param_type - { - typedef hypergeometric_distribution<_UIntType> distribution_type; - friend class hypergeometric_distribution<_UIntType>; - - explicit - param_type(result_type __N = 10, result_type __K = 5, - result_type __n = 1) - : _M_N{__N}, _M_K{__K}, _M_n{__n} - { - __glibcxx_assert(_M_N >= _M_K); - __glibcxx_assert(_M_N >= _M_n); - } - - result_type - total_size() const - { return _M_N; } - - result_type - successful_size() const - { return _M_K; } - - result_type - unsuccessful_size() const - { return _M_N - _M_K; } - - result_type - total_draws() const - { return _M_n; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return (__p1._M_N == __p2._M_N) - && (__p1._M_K == __p2._M_K) - && (__p1._M_n == __p2._M_n); } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - - result_type _M_N; - result_type _M_K; - result_type _M_n; - }; - - // constructors and member function - explicit - hypergeometric_distribution(result_type __N = 10, result_type __K = 5, - result_type __n = 1) - : _M_param{__N, __K, __n} - { } - - explicit - hypergeometric_distribution(const param_type& __p) - : _M_param{__p} - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Returns the distribution parameter @p N, - * the total number of items. - */ - result_type - total_size() const - { return this->_M_param.total_size(); } - - /** - * @brief Returns the distribution parameter @p K, - * the total number of successful items. - */ - result_type - successful_size() const - { return this->_M_param.successful_size(); } - - /** - * @brief Returns the total number of unsuccessful items @f$ N - K @f$. - */ - result_type - unsuccessful_size() const - { return this->_M_param.unsuccessful_size(); } - - /** - * @brief Returns the distribution parameter @p n, - * the total number of draws. - */ - result_type - total_draws() const - { return this->_M_param.total_draws(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return this->_M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { this->_M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { - using _IntType = typename std::make_signed::type; - return static_cast(std::max(static_cast<_IntType>(0), - static_cast<_IntType>(this->total_draws() - - this->unsuccessful_size()))); - } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::min(this->successful_size(), this->total_draws()); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, this->_M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, this->_M_param); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two hypergeometric distributions have the same - * parameters and the sequences that would be generated - * are equal. - */ - friend bool - operator==(const hypergeometric_distribution& __d1, - const hypergeometric_distribution& __d2) - { return __d1._M_param == __d2._M_param; } - - /** - * @brief Inserts a %hypergeometric_distribution random number - * distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %hypergeometric_distribution random number - * distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::hypergeometric_distribution<_UIntType1>& - __x); - - /** - * @brief Extracts a %hypergeometric_distribution random number - * distribution @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %hypergeometric_distribution random number generator - * distribution. - * - * @returns The input stream with @p __x extracted or in an error - * state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::hypergeometric_distribution<_UIntType1>& __x); - - private: - - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two hypergeometric distributions are different. - */ - template - inline bool - operator!=(const __gnu_cxx::hypergeometric_distribution<_UIntType>& __d1, - const __gnu_cxx::hypergeometric_distribution<_UIntType>& __d2) - { return !(__d1 == __d2); } - - /** - * @brief A logistic continuous distribution for random numbers. - * - * The formula for the logistic probability density function is - * @f[ - * p(x|\a,\b) = \frac{e^{(x - a)/b}}{b[1 + e^{(x - a)/b}]^2} - * @f] - * where @f$b > 0@f$. - * - * The formula for the logistic probability function is - * @f[ - * cdf(x|\a,\b) = \frac{e^{(x - a)/b}}{1 + e^{(x - a)/b}} - * @f] - * where @f$b > 0@f$. - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$a@f$
Variance@f$b^2\pi^2/3@f$
Range@f$[0, \infty)@f$
- */ - template - class - logistic_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - - public: - /** The type of the range of the distribution. */ - typedef _RealType result_type; - - /** Parameter type. */ - struct param_type - { - typedef logistic_distribution distribution_type; - - param_type(result_type __a = result_type(0), - result_type __b = result_type(1)) - : _M_a(__a), _M_b(__b) - { - __glibcxx_assert(_M_b > result_type(0)); - } - - result_type - a() const - { return _M_a; } - - result_type - b() const - { return _M_b; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - void _M_initialize(); - - result_type _M_a; - result_type _M_b; - }; - - /** - * @brief Constructors. - */ - explicit - logistic_distribution(result_type __a = result_type(0), - result_type __b = result_type(1)) - : _M_param(__a, __b) - { } - - explicit - logistic_distribution(const param_type& __p) - : _M_param(__p) - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { } - - /** - * @brief Return the parameters of the distribution. - */ - result_type - a() const - { return _M_param.a(); } - - result_type - b() const - { return _M_param.b(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - */ - result_type - min() const - { return -std::numeric_limits::max(); } - - /** - * @brief Returns the least upper bound value of the distribution. - */ - result_type - max() const - { return std::numeric_limits::max(); } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, this->_M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator&, - const param_type&); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, this->param()); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two logistic distributions have - * the same parameters and the sequences that would - * be generated are equal. - */ - template - friend bool - operator==(const logistic_distribution<_RealType1>& __d1, - const logistic_distribution<_RealType1>& __d2) - { return __d1.param() == __d2.param(); } - - /** - * @brief Inserts a %logistic_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %logistic_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>&, - const logistic_distribution<_RealType1>&); - - /** - * @brief Extracts a %logistic_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %logistic_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>&, - logistic_distribution<_RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - }; - - /** - * @brief Return true if two logistic distributions are not equal. - */ - template - inline bool - operator!=(const logistic_distribution<_RealType1>& __d1, - const logistic_distribution<_RealType1>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A distribution for random coordinates on a unit sphere. - * - * The method used in the generation function is attributed by Donald Knuth - * to G. W. Brown, Modern Mathematics for the Engineer (1956). - */ - template - class uniform_on_sphere_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - static_assert(_Dimen != 0, "dimension is zero"); - - public: - /** The type of the range of the distribution. */ - typedef std::array<_RealType, _Dimen> result_type; - - /** Parameter type. */ - struct param_type - { - explicit - param_type() - { } - - friend bool - operator==(const param_type&, const param_type&) - { return true; } - - friend bool - operator!=(const param_type&, const param_type&) - { return false; } - }; - - /** - * @brief Constructs a uniform on sphere distribution. - */ - explicit - uniform_on_sphere_distribution() - : _M_param(), _M_nd() - { } - - explicit - uniform_on_sphere_distribution(const param_type& __p) - : _M_param(__p), _M_nd() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_nd.reset(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - * This function makes no sense for this distribution. - */ - result_type - min() const - { - result_type __res; - __res.fill(0); - return __res; - } - - /** - * @brief Returns the least upper bound value of the distribution. - * This function makes no sense for this distribution. - */ - result_type - max() const - { - result_type __res; - __res.fill(0); - return __res; - } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, this->param()); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two uniform on sphere distributions have - * the same parameters and the sequences that would be - * generated are equal. - */ - friend bool - operator==(const uniform_on_sphere_distribution& __d1, - const uniform_on_sphere_distribution& __d2) - { return __d1._M_nd == __d2._M_nd; } - - /** - * @brief Inserts a %uniform_on_sphere_distribution random number - * distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %uniform_on_sphere_distribution random number - * distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::uniform_on_sphere_distribution<_Dimen1, - _RealType1>& - __x); - - /** - * @brief Extracts a %uniform_on_sphere_distribution random number - * distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %uniform_on_sphere_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::uniform_on_sphere_distribution<_Dimen1, - _RealType1>& __x); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - std::normal_distribution<_RealType> _M_nd; - }; - - /** - * @brief Return true if two uniform on sphere distributions are different. - */ - template - inline bool - operator!=(const __gnu_cxx::uniform_on_sphere_distribution<_Dimen, - _RealType>& __d1, - const __gnu_cxx::uniform_on_sphere_distribution<_Dimen, - _RealType>& __d2) - { return !(__d1 == __d2); } - - - /** - * @brief A distribution for random coordinates inside a unit sphere. - */ - template - class uniform_inside_sphere_distribution - { - static_assert(std::is_floating_point<_RealType>::value, - "template argument not a floating point type"); - static_assert(_Dimen != 0, "dimension is zero"); - - public: - /** The type of the range of the distribution. */ - using result_type = std::array<_RealType, _Dimen>; - - /** Parameter type. */ - struct param_type - { - using distribution_type - = uniform_inside_sphere_distribution<_Dimen, _RealType>; - friend class uniform_inside_sphere_distribution<_Dimen, _RealType>; - - explicit - param_type(_RealType __radius = _RealType(1)) - : _M_radius(__radius) - { - __glibcxx_assert(_M_radius > _RealType(0)); - } - - _RealType - radius() const - { return _M_radius; } - - friend bool - operator==(const param_type& __p1, const param_type& __p2) - { return __p1._M_radius == __p2._M_radius; } - - friend bool - operator!=(const param_type& __p1, const param_type& __p2) - { return !(__p1 == __p2); } - - private: - _RealType _M_radius; - }; - - /** - * @brief Constructors. - */ - explicit - uniform_inside_sphere_distribution(_RealType __radius = _RealType(1)) - : _M_param(__radius), _M_uosd() - { } - - explicit - uniform_inside_sphere_distribution(const param_type& __p) - : _M_param(__p), _M_uosd() - { } - - /** - * @brief Resets the distribution state. - */ - void - reset() - { _M_uosd.reset(); } - - /** - * @brief Returns the @f$radius@f$ of the distribution. - */ - _RealType - radius() const - { return _M_param.radius(); } - - /** - * @brief Returns the parameter set of the distribution. - */ - param_type - param() const - { return _M_param; } - - /** - * @brief Sets the parameter set of the distribution. - * @param __param The new parameter set of the distribution. - */ - void - param(const param_type& __param) - { _M_param = __param; } - - /** - * @brief Returns the greatest lower bound value of the distribution. - * This function makes no sense for this distribution. - */ - result_type - min() const - { - result_type __res; - __res.fill(0); - return __res; - } - - /** - * @brief Returns the least upper bound value of the distribution. - * This function makes no sense for this distribution. - */ - result_type - max() const - { - result_type __res; - __res.fill(0); - return __res; - } - - /** - * @brief Generating functions. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return this->operator()(__urng, _M_param); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p); - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng) - { this->__generate(__f, __t, __urng, this->param()); } - - template - void - __generate(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - template - void - __generate(result_type* __f, result_type* __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { this->__generate_impl(__f, __t, __urng, __p); } - - /** - * @brief Return true if two uniform on sphere distributions have - * the same parameters and the sequences that would be - * generated are equal. - */ - friend bool - operator==(const uniform_inside_sphere_distribution& __d1, - const uniform_inside_sphere_distribution& __d2) - { return __d1._M_param == __d2._M_param && __d1._M_uosd == __d2._M_uosd; } - - /** - * @brief Inserts a %uniform_inside_sphere_distribution random number - * distribution @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %uniform_inside_sphere_distribution random number - * distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen1, - _RealType1>& - ); - - /** - * @brief Extracts a %uniform_inside_sphere_distribution random number - * distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %uniform_inside_sphere_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::uniform_inside_sphere_distribution<_Dimen1, - _RealType1>&); - - private: - template - void - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p); - - param_type _M_param; - uniform_on_sphere_distribution<_Dimen, _RealType> _M_uosd; - }; - - /** - * @brief Return true if two uniform on sphere distributions are different. - */ - template - inline bool - operator!=(const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, - _RealType>& __d1, - const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, - _RealType>& __d2) - { return !(__d1 == __d2); } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __gnu_cxx - -#include "ext/opt_random.h" -#include "random.tcc" - -#endif // _GLIBCXX_USE_C99_STDINT_TR1 && UINT32_C - -#endif // C++11 - -#endif // _EXT_RANDOM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/random.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/random.tcc deleted file mode 100644 index 5aa443fd8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/random.tcc +++ /dev/null @@ -1,1850 +0,0 @@ -// Random number extensions -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file ext/random.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{ext/random} - */ - -#ifndef _EXT_RANDOM_TCC -#define _EXT_RANDOM_TCC 1 - -#pragma GCC system_header - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - - template - void simd_fast_mersenne_twister_engine<_UIntType, __m, - __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, - __parity4>:: - seed(_UIntType __seed) - { - _M_state32[0] = static_cast(__seed); - for (size_t __i = 1; __i < _M_nstate32; ++__i) - _M_state32[__i] = (1812433253UL - * (_M_state32[__i - 1] ^ (_M_state32[__i - 1] >> 30)) - + __i); - _M_pos = state_size; - _M_period_certification(); - } - - - namespace { - - inline uint32_t _Func1(uint32_t __x) - { - return (__x ^ (__x >> 27)) * UINT32_C(1664525); - } - - inline uint32_t _Func2(uint32_t __x) - { - return (__x ^ (__x >> 27)) * UINT32_C(1566083941); - } - - } - - - template - template - typename std::enable_if::value>::type - simd_fast_mersenne_twister_engine<_UIntType, __m, - __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, - __parity4>:: - seed(_Sseq& __q) - { - size_t __lag; - - if (_M_nstate32 >= 623) - __lag = 11; - else if (_M_nstate32 >= 68) - __lag = 7; - else if (_M_nstate32 >= 39) - __lag = 5; - else - __lag = 3; - const size_t __mid = (_M_nstate32 - __lag) / 2; - - std::fill(_M_state32, _M_state32 + _M_nstate32, UINT32_C(0x8b8b8b8b)); - uint32_t __arr[_M_nstate32]; - __q.generate(__arr + 0, __arr + _M_nstate32); - - uint32_t __r = _Func1(_M_state32[0] ^ _M_state32[__mid] - ^ _M_state32[_M_nstate32 - 1]); - _M_state32[__mid] += __r; - __r += _M_nstate32; - _M_state32[__mid + __lag] += __r; - _M_state32[0] = __r; - - for (size_t __i = 1, __j = 0; __j < _M_nstate32; ++__j) - { - __r = _Func1(_M_state32[__i] - ^ _M_state32[(__i + __mid) % _M_nstate32] - ^ _M_state32[(__i + _M_nstate32 - 1) % _M_nstate32]); - _M_state32[(__i + __mid) % _M_nstate32] += __r; - __r += __arr[__j] + __i; - _M_state32[(__i + __mid + __lag) % _M_nstate32] += __r; - _M_state32[__i] = __r; - __i = (__i + 1) % _M_nstate32; - } - for (size_t __j = 0; __j < _M_nstate32; ++__j) - { - const size_t __i = (__j + 1) % _M_nstate32; - __r = _Func2(_M_state32[__i] - + _M_state32[(__i + __mid) % _M_nstate32] - + _M_state32[(__i + _M_nstate32 - 1) % _M_nstate32]); - _M_state32[(__i + __mid) % _M_nstate32] ^= __r; - __r -= __i; - _M_state32[(__i + __mid + __lag) % _M_nstate32] ^= __r; - _M_state32[__i] = __r; - } - - _M_pos = state_size; - _M_period_certification(); - } - - - template - void simd_fast_mersenne_twister_engine<_UIntType, __m, - __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, - __parity4>:: - _M_period_certification(void) - { - static const uint32_t __parity[4] = { __parity1, __parity2, - __parity3, __parity4 }; - uint32_t __inner = 0; - for (size_t __i = 0; __i < 4; ++__i) - if (__parity[__i] != 0) - __inner ^= _M_state32[__i] & __parity[__i]; - - if (__builtin_parity(__inner) & 1) - return; - for (size_t __i = 0; __i < 4; ++__i) - if (__parity[__i] != 0) - { - _M_state32[__i] ^= 1 << (__builtin_ffs(__parity[__i]) - 1); - return; - } - __builtin_unreachable(); - } - - - template - void simd_fast_mersenne_twister_engine<_UIntType, __m, - __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, - __parity4>:: - discard(unsigned long long __z) - { - while (__z > state_size - _M_pos) - { - __z -= state_size - _M_pos; - - _M_gen_rand(); - } - - _M_pos += __z; - } - - -#ifndef _GLIBCXX_OPT_HAVE_RANDOM_SFMT_GEN_READ - - namespace { - - template - inline void __rshift(uint32_t *__out, const uint32_t *__in) - { - uint64_t __th = ((static_cast(__in[3]) << 32) - | static_cast(__in[2])); - uint64_t __tl = ((static_cast(__in[1]) << 32) - | static_cast(__in[0])); - - uint64_t __oh = __th >> (__shift * 8); - uint64_t __ol = __tl >> (__shift * 8); - __ol |= __th << (64 - __shift * 8); - __out[1] = static_cast(__ol >> 32); - __out[0] = static_cast(__ol); - __out[3] = static_cast(__oh >> 32); - __out[2] = static_cast(__oh); - } - - - template - inline void __lshift(uint32_t *__out, const uint32_t *__in) - { - uint64_t __th = ((static_cast(__in[3]) << 32) - | static_cast(__in[2])); - uint64_t __tl = ((static_cast(__in[1]) << 32) - | static_cast(__in[0])); - - uint64_t __oh = __th << (__shift * 8); - uint64_t __ol = __tl << (__shift * 8); - __oh |= __tl >> (64 - __shift * 8); - __out[1] = static_cast(__ol >> 32); - __out[0] = static_cast(__ol); - __out[3] = static_cast(__oh >> 32); - __out[2] = static_cast(__oh); - } - - - template - inline void __recursion(uint32_t *__r, - const uint32_t *__a, const uint32_t *__b, - const uint32_t *__c, const uint32_t *__d) - { - uint32_t __x[4]; - uint32_t __y[4]; - - __lshift<__sl2>(__x, __a); - __rshift<__sr2>(__y, __c); - __r[0] = (__a[0] ^ __x[0] ^ ((__b[0] >> __sr1) & __msk1) - ^ __y[0] ^ (__d[0] << __sl1)); - __r[1] = (__a[1] ^ __x[1] ^ ((__b[1] >> __sr1) & __msk2) - ^ __y[1] ^ (__d[1] << __sl1)); - __r[2] = (__a[2] ^ __x[2] ^ ((__b[2] >> __sr1) & __msk3) - ^ __y[2] ^ (__d[2] << __sl1)); - __r[3] = (__a[3] ^ __x[3] ^ ((__b[3] >> __sr1) & __msk4) - ^ __y[3] ^ (__d[3] << __sl1)); - } - - } - - - template - void simd_fast_mersenne_twister_engine<_UIntType, __m, - __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, - __parity4>:: - _M_gen_rand(void) - { - const uint32_t *__r1 = &_M_state32[_M_nstate32 - 8]; - const uint32_t *__r2 = &_M_state32[_M_nstate32 - 4]; - static constexpr size_t __pos1_32 = __pos1 * 4; - - size_t __i; - for (__i = 0; __i < _M_nstate32 - __pos1_32; __i += 4) - { - __recursion<__sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4> - (&_M_state32[__i], &_M_state32[__i], - &_M_state32[__i + __pos1_32], __r1, __r2); - __r1 = __r2; - __r2 = &_M_state32[__i]; - } - - for (; __i < _M_nstate32; __i += 4) - { - __recursion<__sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4> - (&_M_state32[__i], &_M_state32[__i], - &_M_state32[__i + __pos1_32 - _M_nstate32], __r1, __r2); - __r1 = __r2; - __r2 = &_M_state32[__i]; - } - - _M_pos = 0; - } - -#endif - -#ifndef _GLIBCXX_OPT_HAVE_RANDOM_SFMT_OPERATOREQUAL - template - bool - operator==(const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, __parity4>& __lhs, - const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, __parity4>& __rhs) - { - typedef __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, __parity4> __engine; - return (std::equal(__lhs._M_stateT, - __lhs._M_stateT + __engine::state_size, - __rhs._M_stateT) - && __lhs._M_pos == __rhs._M_pos); - } -#endif - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, __parity4>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - for (size_t __i = 0; __i < __x._M_nstate32; ++__i) - __os << __x._M_state32[__i] << __space; - __os << __x._M_pos; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, - __m, __pos1, __sl1, __sl2, __sr1, __sr2, - __msk1, __msk2, __msk3, __msk4, - __parity1, __parity2, __parity3, __parity4>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - for (size_t __i = 0; __i < __x._M_nstate32; ++__i) - __is >> __x._M_state32[__i]; - __is >> __x._M_pos; - - __is.flags(__flags); - return __is; - } - -#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ - - /** - * Iteration method due to M.D. Jhnk. - * - * M.D. Jhnk, Erzeugung von betaverteilten und gammaverteilten - * Zufallszahlen, Metrika, Volume 8, 1964 - */ - template - template - typename beta_distribution<_RealType>::result_type - beta_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - result_type __x, __y; - do - { - __x = std::exp(std::log(__aurng()) / __param.alpha()); - __y = std::exp(std::log(__aurng()) / __param.beta()); - } - while (__x + __y > result_type(1)); - - return __x / (__x + __y); - } - - template - template - void - beta_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - while (__f != __t) - { - result_type __x, __y; - do - { - __x = std::exp(std::log(__aurng()) / __param.alpha()); - __y = std::exp(std::log(__aurng()) / __param.beta()); - } - while (__x + __y > result_type(1)); - - *__f++ = __x / (__x + __y); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::beta_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.alpha() << __space << __x.beta(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::beta_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __alpha_val, __beta_val; - __is >> __alpha_val >> __beta_val; - __x.param(typename __gnu_cxx::beta_distribution<_RealType>:: - param_type(__alpha_val, __beta_val)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - normal_mv_distribution<_Dimen, _RealType>::param_type:: - _M_init_full(_InputIterator1 __meanbegin, _InputIterator1 __meanend, - _InputIterator2 __varcovbegin, _InputIterator2 __varcovend) - { - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - std::fill(std::copy(__meanbegin, __meanend, _M_mean.begin()), - _M_mean.end(), _RealType(0)); - - // Perform the Cholesky decomposition - auto __w = _M_t.begin(); - for (size_t __j = 0; __j < _Dimen; ++__j) - { - _RealType __sum = _RealType(0); - - auto __slitbegin = __w; - auto __cit = _M_t.begin(); - for (size_t __i = 0; __i < __j; ++__i) - { - auto __slit = __slitbegin; - _RealType __s = *__varcovbegin++; - for (size_t __k = 0; __k < __i; ++__k) - __s -= *__slit++ * *__cit++; - - *__w++ = __s /= *__cit++; - __sum += __s * __s; - } - - __sum = *__varcovbegin - __sum; - if (__builtin_expect(__sum <= _RealType(0), 0)) - std::__throw_runtime_error(__N("normal_mv_distribution::" - "param_type::_M_init_full")); - *__w++ = std::sqrt(__sum); - - std::advance(__varcovbegin, _Dimen - __j); - } - } - - template - template - void - normal_mv_distribution<_Dimen, _RealType>::param_type:: - _M_init_lower(_InputIterator1 __meanbegin, _InputIterator1 __meanend, - _InputIterator2 __varcovbegin, _InputIterator2 __varcovend) - { - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - std::fill(std::copy(__meanbegin, __meanend, _M_mean.begin()), - _M_mean.end(), _RealType(0)); - - // Perform the Cholesky decomposition - auto __w = _M_t.begin(); - for (size_t __j = 0; __j < _Dimen; ++__j) - { - _RealType __sum = _RealType(0); - - auto __slitbegin = __w; - auto __cit = _M_t.begin(); - for (size_t __i = 0; __i < __j; ++__i) - { - auto __slit = __slitbegin; - _RealType __s = *__varcovbegin++; - for (size_t __k = 0; __k < __i; ++__k) - __s -= *__slit++ * *__cit++; - - *__w++ = __s /= *__cit++; - __sum += __s * __s; - } - - __sum = *__varcovbegin++ - __sum; - if (__builtin_expect(__sum <= _RealType(0), 0)) - std::__throw_runtime_error(__N("normal_mv_distribution::" - "param_type::_M_init_full")); - *__w++ = std::sqrt(__sum); - } - } - - template - template - void - normal_mv_distribution<_Dimen, _RealType>::param_type:: - _M_init_diagonal(_InputIterator1 __meanbegin, _InputIterator1 __meanend, - _InputIterator2 __varbegin, _InputIterator2 __varend) - { - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) - __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) - std::fill(std::copy(__meanbegin, __meanend, _M_mean.begin()), - _M_mean.end(), _RealType(0)); - - auto __w = _M_t.begin(); - size_t __step = 0; - while (__varbegin != __varend) - { - std::fill_n(__w, __step, _RealType(0)); - __w += __step++; - if (__builtin_expect(*__varbegin < _RealType(0), 0)) - std::__throw_runtime_error(__N("normal_mv_distribution::" - "param_type::_M_init_diagonal")); - *__w++ = std::sqrt(*__varbegin++); - } - } - - template - template - typename normal_mv_distribution<_Dimen, _RealType>::result_type - normal_mv_distribution<_Dimen, _RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - result_type __ret; - - _M_nd.__generate(__ret.begin(), __ret.end(), __urng); - - auto __t_it = __param._M_t.crbegin(); - for (size_t __i = _Dimen; __i > 0; --__i) - { - _RealType __sum = _RealType(0); - for (size_t __j = __i; __j > 0; --__j) - __sum += __ret[__j - 1] * *__t_it++; - __ret[__i - 1] = __sum; - } - - return __ret; - } - - template - template - void - normal_mv_distribution<_Dimen, _RealType>:: - __generate_impl(_ForwardIterator __f, _ForwardIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< - _ForwardIterator>) - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - bool - operator==(const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& - __d1, - const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& - __d2) - { - return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - auto __mean = __x._M_param.mean(); - for (auto __it : __mean) - __os << __it << __space; - auto __t = __x._M_param.varcov(); - for (auto __it : __t) - __os << __it << __space; - - __os << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - std::array<_RealType, _Dimen> __mean; - for (auto& __it : __mean) - __is >> __it; - std::array<_RealType, _Dimen * (_Dimen + 1) / 2> __varcov; - for (auto& __it : __varcov) - __is >> __it; - - __is >> __x._M_nd; - - __x.param(typename normal_mv_distribution<_Dimen, _RealType>:: - param_type(__mean.begin(), __mean.end(), - __varcov.begin(), __varcov.end())); - - __is.flags(__flags); - return __is; - } - - - template - template - void - rice_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - while (__f != __t) - { - typename std::normal_distribution::param_type - __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma()); - result_type __x = this->_M_ndx(__px, __urng); - result_type __y = this->_M_ndy(__py, __urng); -#if _GLIBCXX_USE_C99_MATH_TR1 - *__f++ = std::hypot(__x, __y); -#else - *__f++ = std::sqrt(__x * __x + __y * __y); -#endif - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const rice_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.nu() << __space << __x.sigma(); - __os << __space << __x._M_ndx; - __os << __space << __x._M_ndy; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - rice_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __nu_val, __sigma_val; - __is >> __nu_val >> __sigma_val; - __is >> __x._M_ndx; - __is >> __x._M_ndy; - __x.param(typename rice_distribution<_RealType>:: - param_type(__nu_val, __sigma_val)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - nakagami_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - typename std::gamma_distribution::param_type - __pg(__p.mu(), __p.omega() / __p.mu()); - while (__f != __t) - *__f++ = std::sqrt(this->_M_gd(__pg, __urng)); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const nakagami_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.mu() << __space << __x.omega(); - __os << __space << __x._M_gd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - nakagami_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __mu_val, __omega_val; - __is >> __mu_val >> __omega_val; - __is >> __x._M_gd; - __x.param(typename nakagami_distribution<_RealType>:: - param_type(__mu_val, __omega_val)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - pareto_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - result_type __mu_val = __p.mu(); - result_type __malphinv = -result_type(1) / __p.alpha(); - while (__f != __t) - *__f++ = __mu_val * std::pow(this->_M_ud(__urng), __malphinv); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const pareto_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.alpha() << __space << __x.mu(); - __os << __space << __x._M_ud; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - pareto_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __alpha_val, __mu_val; - __is >> __alpha_val >> __mu_val; - __is >> __x._M_ud; - __x.param(typename pareto_distribution<_RealType>:: - param_type(__alpha_val, __mu_val)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename k_distribution<_RealType>::result_type - k_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __x = this->_M_gd1(__urng); - result_type __y = this->_M_gd2(__urng); - return std::sqrt(__x * __y); - } - - template - template - typename k_distribution<_RealType>::result_type - k_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - typename std::gamma_distribution::param_type - __p1(__p.lambda(), result_type(1) / __p.lambda()), - __p2(__p.nu(), __p.mu() / __p.nu()); - result_type __x = this->_M_gd1(__p1, __urng); - result_type __y = this->_M_gd2(__p2, __urng); - return std::sqrt(__x * __y); - } - - template - template - void - k_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - typename std::gamma_distribution::param_type - __p1(__p.lambda(), result_type(1) / __p.lambda()), - __p2(__p.nu(), __p.mu() / __p.nu()); - while (__f != __t) - { - result_type __x = this->_M_gd1(__p1, __urng); - result_type __y = this->_M_gd2(__p2, __urng); - *__f++ = std::sqrt(__x * __y); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const k_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.lambda() << __space << __x.mu() << __space << __x.nu(); - __os << __space << __x._M_gd1; - __os << __space << __x._M_gd2; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - k_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __lambda_val, __mu_val, __nu_val; - __is >> __lambda_val >> __mu_val >> __nu_val; - __is >> __x._M_gd1; - __is >> __x._M_gd2; - __x.param(typename k_distribution<_RealType>:: - param_type(__lambda_val, __mu_val, __nu_val)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - arcsine_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - result_type __dif = __p.b() - __p.a(); - result_type __sum = __p.a() + __p.b(); - while (__f != __t) - { - result_type __x = std::sin(this->_M_ud(__urng)); - *__f++ = (__x * __dif + __sum) / result_type(2); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const arcsine_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b(); - __os << __space << __x._M_ud; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - arcsine_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __a, __b; - __is >> __a >> __b; - __is >> __x._M_ud; - __x.param(typename arcsine_distribution<_RealType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename hoyt_distribution<_RealType>::result_type - hoyt_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __x = this->_M_ad(__urng); - result_type __y = this->_M_ed(__urng); - return (result_type(2) * this->q() - / (result_type(1) + this->q() * this->q())) - * std::sqrt(this->omega() * __x * __y); - } - - template - template - typename hoyt_distribution<_RealType>::result_type - hoyt_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - result_type __q2 = __p.q() * __p.q(); - result_type __num = result_type(0.5L) * (result_type(1) + __q2); - typename __gnu_cxx::arcsine_distribution::param_type - __pa(__num, __num / __q2); - result_type __x = this->_M_ad(__pa, __urng); - result_type __y = this->_M_ed(__urng); - return (result_type(2) * __p.q() / (result_type(1) + __q2)) - * std::sqrt(__p.omega() * __x * __y); - } - - template - template - void - hoyt_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - result_type __2q = result_type(2) * __p.q(); - result_type __q2 = __p.q() * __p.q(); - result_type __q2p1 = result_type(1) + __q2; - result_type __num = result_type(0.5L) * __q2p1; - result_type __omega = __p.omega(); - typename __gnu_cxx::arcsine_distribution::param_type - __pa(__num, __num / __q2); - while (__f != __t) - { - result_type __x = this->_M_ad(__pa, __urng); - result_type __y = this->_M_ed(__urng); - *__f++ = (__2q / __q2p1) * std::sqrt(__omega * __x * __y); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const hoyt_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.q() << __space << __x.omega(); - __os << __space << __x._M_ad; - __os << __space << __x._M_ed; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - hoyt_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __q, __omega; - __is >> __q >> __omega; - __is >> __x._M_ad; - __is >> __x._M_ed; - __x.param(typename hoyt_distribution<_RealType>:: - param_type(__q, __omega)); - - __is.flags(__flags); - return __is; - } - - - template - template - void - triangular_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::triangular_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b() << __space << __x.c(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::triangular_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __a, __b, __c; - __is >> __a >> __b >> __c; - __x.param(typename __gnu_cxx::triangular_distribution<_RealType>:: - param_type(__a, __b, __c)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename von_mises_distribution<_RealType>::result_type - von_mises_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - const result_type __pi - = __gnu_cxx::__math_constants::__pi; - std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - result_type __f; - while (1) - { - result_type __rnd = std::cos(__pi * __aurng()); - __f = (result_type(1) + __p._M_r * __rnd) / (__p._M_r + __rnd); - result_type __c = __p._M_kappa * (__p._M_r - __f); - - result_type __rnd2 = __aurng(); - if (__c * (result_type(2) - __c) > __rnd2) - break; - if (std::log(__c / __rnd2) >= __c - result_type(1)) - break; - } - - result_type __res = std::acos(__f); -#if _GLIBCXX_USE_C99_MATH_TR1 - __res = std::copysign(__res, __aurng() - result_type(0.5)); -#else - if (__aurng() < result_type(0.5)) - __res = -__res; -#endif - __res += __p._M_mu; - if (__res > __pi) - __res -= result_type(2) * __pi; - else if (__res < -__pi) - __res += result_type(2) * __pi; - return __res; - } - - template - template - void - von_mises_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::von_mises_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.mu() << __space << __x.kappa(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::von_mises_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __mu, __kappa; - __is >> __mu >> __kappa; - __x.param(typename __gnu_cxx::von_mises_distribution<_RealType>:: - param_type(__mu, __kappa)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename hypergeometric_distribution<_UIntType>::result_type - hypergeometric_distribution<_UIntType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - std::__detail::_Adaptor<_UniformRandomNumberGenerator, double> - __aurng(__urng); - - result_type __a = __param.successful_size(); - result_type __b = __param.total_size(); - result_type __k = 0; - - if (__param.total_draws() < __param.total_size() / 2) - { - for (result_type __i = 0; __i < __param.total_draws(); ++__i) - { - if (__b * __aurng() < __a) - { - ++__k; - if (__k == __param.successful_size()) - return __k; - --__a; - } - --__b; - } - return __k; - } - else - { - for (result_type __i = 0; __i < __param.unsuccessful_size(); ++__i) - { - if (__b * __aurng() < __a) - { - ++__k; - if (__k == __param.successful_size()) - return __param.successful_size() - __k; - --__a; - } - --__b; - } - return __param.successful_size() - __k; - } - } - - template - template - void - hypergeometric_distribution<_UIntType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - while (__f != __t) - *__f++ = this->operator()(__urng); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::hypergeometric_distribution<_UIntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_UIntType>::max_digits10); - - __os << __x.total_size() << __space << __x.successful_size() << __space - << __x.total_draws(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::hypergeometric_distribution<_UIntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _UIntType __total_size, __successful_size, __total_draws; - __is >> __total_size >> __successful_size >> __total_draws; - __x.param(typename __gnu_cxx::hypergeometric_distribution<_UIntType>:: - param_type(__total_size, __successful_size, __total_draws)); - - __is.flags(__flags); - return __is; - } - - - template - template - typename logistic_distribution<_RealType>::result_type - logistic_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - result_type __arg = result_type(1); - while (__arg == result_type(1) || __arg == result_type(0)) - __arg = __aurng(); - return __p.a() - + __p.b() * std::log(__arg / (result_type(1) - __arg)); - } - - template - template - void - logistic_distribution<_RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> - __aurng(__urng); - - while (__f != __t) - { - result_type __arg = result_type(1); - while (__arg == result_type(1) || __arg == result_type(0)) - __arg = __aurng(); - *__f++ = __p.a() - + __p.b() * std::log(__arg / (result_type(1) - __arg)); - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const logistic_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.a() << __space << __x.b(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - logistic_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __a, __b; - __is >> __a >> __b; - __x.param(typename logistic_distribution<_RealType>:: - param_type(__a, __b)); - - __is.flags(__flags); - return __is; - } - - - namespace { - - // Helper class for the uniform_on_sphere_distribution generation - // function. - template - class uniform_on_sphere_helper - { - typedef typename uniform_on_sphere_distribution<_Dimen, _RealType>:: - result_type result_type; - - public: - template - result_type operator()(_NormalDistribution& __nd, - _UniformRandomNumberGenerator& __urng) - { - result_type __ret; - typename result_type::value_type __norm; - - do - { - auto __sum = _RealType(0); - - std::generate(__ret.begin(), __ret.end(), - [&__nd, &__urng, &__sum](){ - _RealType __t = __nd(__urng); - __sum += __t * __t; - return __t; }); - __norm = std::sqrt(__sum); - } - while (__norm == _RealType(0) || ! __builtin_isfinite(__norm)); - - std::transform(__ret.begin(), __ret.end(), __ret.begin(), - [__norm](_RealType __val){ return __val / __norm; }); - - return __ret; - } - }; - - - template - class uniform_on_sphere_helper<2, _RealType> - { - typedef typename uniform_on_sphere_distribution<2, _RealType>:: - result_type result_type; - - public: - template - result_type operator()(_NormalDistribution&, - _UniformRandomNumberGenerator& __urng) - { - result_type __ret; - _RealType __sq; - std::__detail::_Adaptor<_UniformRandomNumberGenerator, - _RealType> __aurng(__urng); - - do - { - __ret[0] = _RealType(2) * __aurng() - _RealType(1); - __ret[1] = _RealType(2) * __aurng() - _RealType(1); - - __sq = __ret[0] * __ret[0] + __ret[1] * __ret[1]; - } - while (__sq == _RealType(0) || __sq > _RealType(1)); - -#if _GLIBCXX_USE_C99_MATH_TR1 - // Yes, we do not just use sqrt(__sq) because hypot() is more - // accurate. - auto __norm = std::hypot(__ret[0], __ret[1]); -#else - auto __norm = std::sqrt(__sq); -#endif - __ret[0] /= __norm; - __ret[1] /= __norm; - - return __ret; - } - }; - - } - - - template - template - typename uniform_on_sphere_distribution<_Dimen, _RealType>::result_type - uniform_on_sphere_distribution<_Dimen, _RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - uniform_on_sphere_helper<_Dimen, _RealType> __helper; - return __helper(_M_nd, __urng); - } - - template - template - void - uniform_on_sphere_distribution<_Dimen, _RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::uniform_on_sphere_distribution<_Dimen, - _RealType>& __x) - { - return __os << __x._M_nd; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::uniform_on_sphere_distribution<_Dimen, - _RealType>& __x) - { - return __is >> __x._M_nd; - } - - - namespace { - - // Helper class for the uniform_inside_sphere_distribution generation - // function. - template - class uniform_inside_sphere_helper; - - template - class uniform_inside_sphere_helper<_Dimen, false, _RealType> - { - using result_type - = typename uniform_inside_sphere_distribution<_Dimen, _RealType>:: - result_type; - - public: - template - result_type - operator()(_UniformOnSphereDistribution& __uosd, - _UniformRandomNumberGenerator& __urng, - _RealType __radius) - { - std::__detail::_Adaptor<_UniformRandomNumberGenerator, - _RealType> __aurng(__urng); - - _RealType __pow = 1 / _RealType(_Dimen); - _RealType __urt = __radius * std::pow(__aurng(), __pow); - result_type __ret = __uosd(__aurng); - - std::transform(__ret.begin(), __ret.end(), __ret.begin(), - [__urt](_RealType __val) - { return __val * __urt; }); - - return __ret; - } - }; - - // Helper class for the uniform_inside_sphere_distribution generation - // function specialized for small dimensions. - template - class uniform_inside_sphere_helper<_Dimen, true, _RealType> - { - using result_type - = typename uniform_inside_sphere_distribution<_Dimen, _RealType>:: - result_type; - - public: - template - result_type - operator()(_UniformOnSphereDistribution&, - _UniformRandomNumberGenerator& __urng, - _RealType __radius) - { - result_type __ret; - _RealType __sq; - _RealType __radsq = __radius * __radius; - std::__detail::_Adaptor<_UniformRandomNumberGenerator, - _RealType> __aurng(__urng); - - do - { - __sq = _RealType(0); - for (int i = 0; i < _Dimen; ++i) - { - __ret[i] = _RealType(2) * __aurng() - _RealType(1); - __sq += __ret[i] * __ret[i]; - } - } - while (__sq > _RealType(1)); - - for (int i = 0; i < _Dimen; ++i) - __ret[i] *= __radius; - - return __ret; - } - }; - } // namespace - - // - // Experiments have shown that rejection is more efficient than transform - // for dimensions less than 8. - // - template - template - typename uniform_inside_sphere_distribution<_Dimen, _RealType>::result_type - uniform_inside_sphere_distribution<_Dimen, _RealType>:: - operator()(_UniformRandomNumberGenerator& __urng, - const param_type& __p) - { - uniform_inside_sphere_helper<_Dimen, _Dimen < 8, _RealType> __helper; - return __helper(_M_uosd, __urng, __p.radius()); - } - - template - template - void - uniform_inside_sphere_distribution<_Dimen, _RealType>:: - __generate_impl(_OutputIterator __f, _OutputIterator __t, - _UniformRandomNumberGenerator& __urng, - const param_type& __param) - { - __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, - result_type>) - - while (__f != __t) - *__f++ = this->operator()(__urng, __param); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, - _RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(std::numeric_limits<_RealType>::max_digits10); - - __os << __x.radius() << __space << __x._M_uosd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, - _RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - _RealType __radius_val; - __is >> __radius_val >> __x._M_uosd; - __x.param(typename uniform_inside_sphere_distribution<_Dimen, _RealType>:: - param_type(__radius_val)); - - __is.flags(__flags); - - return __is; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __gnu_cxx - - -#endif // _EXT_RANDOM_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/fenv.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/fenv.h deleted file mode 100644 index f6a74f434..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/fenv.h +++ /dev/null @@ -1,81 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file fenv.h - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_FENV_H -#define _GLIBCXX_FENV_H 1 - -#pragma GCC system_header - -#include -#if _GLIBCXX_HAVE_FENV_H -# include_next -#endif - -#if __cplusplus >= 201103L - -#if _GLIBCXX_USE_C99_FENV_TR1 - -#undef feclearexcept -#undef fegetexceptflag -#undef feraiseexcept -#undef fesetexceptflag -#undef fetestexcept -#undef fegetround -#undef fesetround -#undef fegetenv -#undef feholdexcept -#undef fesetenv -#undef feupdateenv - -namespace std -{ - // types - using ::fenv_t; - using ::fexcept_t; - - // functions - using ::feclearexcept; - using ::fegetexceptflag; - using ::feraiseexcept; - using ::fesetexceptflag; - using ::fetestexcept; - - using ::fegetround; - using ::fesetround; - - using ::fegetenv; - using ::feholdexcept; - using ::fesetenv; - using ::feupdateenv; -} // namespace - -#endif // _GLIBCXX_USE_C99_FENV_TR1 - -#endif // C++11 - -#endif // _GLIBCXX_FENV_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/forward_list deleted file mode 100644 index 28b7c0520..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/forward_list +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2008-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/forward_list - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_FORWARD_LIST -#define _GLIBCXX_FORWARD_LIST 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif // C++11 - -#endif // _GLIBCXX_FORWARD_LIST diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/functional deleted file mode 100644 index 465b3ec77..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/functional +++ /dev/null @@ -1,1249 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 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/functional - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_FUNCTIONAL -#define _GLIBCXX_FUNCTIONAL 1 - -#pragma GCC system_header - -#include -#include - -#if __cplusplus >= 201103L - -#include -#include -#include -#include -#include -#include -#if __cplusplus > 201402L -# include -# include -# include -# include -# include -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if __cplusplus > 201402L -# define __cpp_lib_invoke 201411 - - /// Invoke a callable object. - template - inline invoke_result_t<_Callable, _Args...> - invoke(_Callable&& __fn, _Args&&... __args) - noexcept(is_nothrow_invocable_v<_Callable, _Args...>) - { - return std::__invoke(std::forward<_Callable>(__fn), - std::forward<_Args>(__args)...); - } -#endif - - template - struct _Pack : integral_constant - { }; - - template - struct _AllConvertible : false_type - { }; - - template - struct _AllConvertible<_Pack<_From...>, _Pack<_To...>, true> - : __and_...> - { }; - - template - using _NotSame = __not_::type, - typename std::decay<_Tp2>::type>>; - - template - struct _Mem_fn_traits; - - template - struct _Mem_fn_traits_base - { - using __result_type = _Res; - using __maybe_type - = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; - using __arity = integral_constant; - }; - -#define _GLIBCXX_MEM_FN_TRAITS2(_CV, _REF, _LVAL, _RVAL) \ - template \ - struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) _CV _REF> \ - : _Mem_fn_traits_base<_Res, _CV _Class, _ArgTypes...> \ - { \ - using __vararg = false_type; \ - }; \ - template \ - struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) _CV _REF> \ - : _Mem_fn_traits_base<_Res, _CV _Class, _ArgTypes...> \ - { \ - using __vararg = true_type; \ - }; - -#define _GLIBCXX_MEM_FN_TRAITS(_REF, _LVAL, _RVAL) \ - _GLIBCXX_MEM_FN_TRAITS2( , _REF, _LVAL, _RVAL) \ - _GLIBCXX_MEM_FN_TRAITS2(const , _REF, _LVAL, _RVAL) \ - _GLIBCXX_MEM_FN_TRAITS2(volatile , _REF, _LVAL, _RVAL) \ - _GLIBCXX_MEM_FN_TRAITS2(const volatile, _REF, _LVAL, _RVAL) - -_GLIBCXX_MEM_FN_TRAITS( , true_type, true_type) -_GLIBCXX_MEM_FN_TRAITS(&, true_type, false_type) -_GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) - -#if __cplusplus > 201402L -_GLIBCXX_MEM_FN_TRAITS(noexcept, true_type, true_type) -_GLIBCXX_MEM_FN_TRAITS(& noexcept, true_type, false_type) -_GLIBCXX_MEM_FN_TRAITS(&& noexcept, false_type, true_type) -#endif - -#undef _GLIBCXX_MEM_FN_TRAITS -#undef _GLIBCXX_MEM_FN_TRAITS2 - - template::value> - class _Mem_fn_base - : public _Mem_fn_traits<_MemFunPtr>::__maybe_type - { - using _Traits = _Mem_fn_traits<_MemFunPtr>; - - using _Arity = typename _Traits::__arity; - using _Varargs = typename _Traits::__vararg; - - template - friend struct _Bind_check_arity; - - _MemFunPtr _M_pmf; - - public: - - using result_type = typename _Traits::__result_type; - - explicit constexpr - _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } - - template - auto - operator()(_Args&&... __args) const - noexcept(noexcept( - std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) - -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) - { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } - }; - - // Partial specialization for member object pointers. - template - class _Mem_fn_base<_MemObjPtr, false> - { - using _Arity = integral_constant; - using _Varargs = false_type; - - template - friend struct _Bind_check_arity; - - _MemObjPtr _M_pm; - - public: - explicit constexpr - _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } - - template - auto - operator()(_Tp&& __obj) const - noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) - -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) - { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } - }; - - template - struct _Mem_fn; // undefined - - template - struct _Mem_fn<_Res _Class::*> - : _Mem_fn_base<_Res _Class::*> - { - using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; - }; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2048. Unnecessary mem_fn overloads - /** - * @brief Returns a function object that forwards to the member - * pointer @a pm. - * @ingroup functors - */ - template - inline _Mem_fn<_Tp _Class::*> - mem_fn(_Tp _Class::* __pm) noexcept - { - return _Mem_fn<_Tp _Class::*>(__pm); - } - - /** - * @brief Determines if the given type _Tp is a function object that - * should be treated as a subexpression when evaluating calls to - * function objects returned by bind(). - * - * C++11 [func.bind.isbind]. - * @ingroup binders - */ - template - struct is_bind_expression - : public false_type { }; - - /** - * @brief Determines if the given type _Tp is a placeholder in a - * bind() expression and, if so, which placeholder it is. - * - * C++11 [func.bind.isplace]. - * @ingroup binders - */ - template - struct is_placeholder - : public integral_constant - { }; - -#if __cplusplus > 201402L - template inline constexpr bool is_bind_expression_v - = is_bind_expression<_Tp>::value; - template inline constexpr int is_placeholder_v - = is_placeholder<_Tp>::value; -#endif // C++17 - - /** @brief The type of placeholder objects defined by libstdc++. - * @ingroup binders - */ - template struct _Placeholder { }; - - _GLIBCXX_END_NAMESPACE_VERSION - - /** @namespace std::placeholders - * @brief ISO C++11 entities sub-namespace for functional. - * @ingroup binders - */ - namespace placeholders - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /* Define a large number of placeholders. There is no way to - * simplify this with variadic templates, because we're introducing - * unique names for each. - */ - extern const _Placeholder<1> _1; - extern const _Placeholder<2> _2; - extern const _Placeholder<3> _3; - extern const _Placeholder<4> _4; - extern const _Placeholder<5> _5; - extern const _Placeholder<6> _6; - extern const _Placeholder<7> _7; - extern const _Placeholder<8> _8; - extern const _Placeholder<9> _9; - extern const _Placeholder<10> _10; - extern const _Placeholder<11> _11; - extern const _Placeholder<12> _12; - extern const _Placeholder<13> _13; - extern const _Placeholder<14> _14; - extern const _Placeholder<15> _15; - extern const _Placeholder<16> _16; - extern const _Placeholder<17> _17; - extern const _Placeholder<18> _18; - extern const _Placeholder<19> _19; - extern const _Placeholder<20> _20; - extern const _Placeholder<21> _21; - extern const _Placeholder<22> _22; - extern const _Placeholder<23> _23; - extern const _Placeholder<24> _24; - extern const _Placeholder<25> _25; - extern const _Placeholder<26> _26; - extern const _Placeholder<27> _27; - extern const _Placeholder<28> _28; - extern const _Placeholder<29> _29; - _GLIBCXX_END_NAMESPACE_VERSION - } - - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * Partial specialization of is_placeholder that provides the placeholder - * number for the placeholder objects defined by libstdc++. - * @ingroup binders - */ - template - struct is_placeholder<_Placeholder<_Num> > - : public integral_constant - { }; - - template - struct is_placeholder > - : public integral_constant - { }; - - - // Like tuple_element_t but SFINAE-friendly. - template - using _Safe_tuple_element_t - = typename enable_if<(__i < tuple_size<_Tuple>::value), - tuple_element<__i, _Tuple>>::type::type; - - /** - * Maps an argument to bind() into an actual argument to the bound - * function object [func.bind.bind]/10. Only the first parameter should - * be specified: the rest are used to determine among the various - * implementations. Note that, although this class is a function - * object, it isn't entirely normal because it takes only two - * parameters regardless of the number of parameters passed to the - * bind expression. The first parameter is the bound argument and - * the second parameter is a tuple containing references to the - * rest of the arguments. - */ - template::value, - bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> - class _Mu; - - /** - * If the argument is reference_wrapper<_Tp>, returns the - * underlying reference. - * C++11 [func.bind.bind] p10 bullet 1. - */ - template - class _Mu, false, false> - { - public: - /* Note: This won't actually work for const volatile - * reference_wrappers, because reference_wrapper::get() is const - * but not volatile-qualified. This might be a defect in the TR. - */ - template - _Tp& - operator()(_CVRef& __arg, _Tuple&) const volatile - { return __arg.get(); } - }; - - /** - * If the argument is a bind expression, we invoke the underlying - * function object with the same cv-qualifiers as we are given and - * pass along all of our arguments (unwrapped). - * C++11 [func.bind.bind] p10 bullet 2. - */ - template - class _Mu<_Arg, true, false> - { - public: - template - auto - operator()(_CVArg& __arg, - tuple<_Args...>& __tuple) const volatile - -> decltype(__arg(declval<_Args>()...)) - { - // Construct an index tuple and forward to __call - typedef typename _Build_index_tuple::__type - _Indexes; - return this->__call(__arg, __tuple, _Indexes()); - } - - private: - // Invokes the underlying function object __arg by unpacking all - // of the arguments in the tuple. - template - auto - __call(_CVArg& __arg, tuple<_Args...>& __tuple, - const _Index_tuple<_Indexes...>&) const volatile - -> decltype(__arg(declval<_Args>()...)) - { - return __arg(std::get<_Indexes>(std::move(__tuple))...); - } - }; - - /** - * If the argument is a placeholder for the Nth argument, returns - * a reference to the Nth argument to the bind function object. - * C++11 [func.bind.bind] p10 bullet 3. - */ - template - class _Mu<_Arg, false, true> - { - public: - template - _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& - operator()(const volatile _Arg&, _Tuple& __tuple) const volatile - { - return - ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); - } - }; - - /** - * If the argument is just a value, returns a reference to that - * value. The cv-qualifiers on the reference are determined by the caller. - * C++11 [func.bind.bind] p10 bullet 4. - */ - template - class _Mu<_Arg, false, false> - { - public: - template - _CVArg&& - operator()(_CVArg&& __arg, _Tuple&) const volatile - { return std::forward<_CVArg>(__arg); } - }; - - // std::get for volatile-qualified tuples - template - inline auto - __volget(volatile tuple<_Tp...>& __tuple) - -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& - { return std::get<_Ind>(const_cast&>(__tuple)); } - - // std::get for const-volatile-qualified tuples - template - inline auto - __volget(const volatile tuple<_Tp...>& __tuple) - -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& - { return std::get<_Ind>(const_cast&>(__tuple)); } - - /// Type of the function object returned from bind(). - template - struct _Bind; - - template - class _Bind<_Functor(_Bound_args...)> - : public _Weak_result_type<_Functor> - { - typedef typename _Build_index_tuple::__type - _Bound_indexes; - - _Functor _M_f; - tuple<_Bound_args...> _M_bound_args; - - // Call unqualified - template - _Result - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) - { - return std::__invoke(_M_f, - _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... - ); - } - - // Call as const - template - _Result - __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const - { - return std::__invoke(_M_f, - _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... - ); - } - - // Call as volatile - template - _Result - __call_v(tuple<_Args...>&& __args, - _Index_tuple<_Indexes...>) volatile - { - return std::__invoke(_M_f, - _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... - ); - } - - // Call as const volatile - template - _Result - __call_c_v(tuple<_Args...>&& __args, - _Index_tuple<_Indexes...>) const volatile - { - return std::__invoke(_M_f, - _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... - ); - } - - template - using _Mu_type = decltype( - _Mu::type>()( - std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); - - template - using _Res_type_impl - = typename result_of< _Fn&(_Mu_type<_BArgs, _CallArgs>&&...) >::type; - - template - using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; - - template - using __dependent = typename - enable_if::value+1), _Functor>::type; - - template class __cv_quals> - using _Res_type_cv = _Res_type_impl< - typename __cv_quals<__dependent<_CallArgs>>::type, - _CallArgs, - typename __cv_quals<_Bound_args>::type...>; - - public: - template - explicit _Bind(const _Functor& __f, _Args&&... __args) - : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) - { } - - template - explicit _Bind(_Functor&& __f, _Args&&... __args) - : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) - { } - - _Bind(const _Bind&) = default; - - _Bind(_Bind&& __b) - : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) - { } - - // Call unqualified - template>> - _Result - operator()(_Args&&... __args) - { - return this->__call<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - - // Call as const - template, add_const>> - _Result - operator()(_Args&&... __args) const - { - return this->__call_c<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - -#if __cplusplus > 201402L -# define _GLIBCXX_DEPR_BIND \ - [[deprecated("std::bind does not support volatile in C++17")]] -#else -# define _GLIBCXX_DEPR_BIND -#endif - // Call as volatile - template, add_volatile>> - _GLIBCXX_DEPR_BIND - _Result - operator()(_Args&&... __args) volatile - { - return this->__call_v<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - - // Call as const volatile - template, add_cv>> - _GLIBCXX_DEPR_BIND - _Result - operator()(_Args&&... __args) const volatile - { - return this->__call_c_v<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - }; - - /// Type of the function object returned from bind(). - template - struct _Bind_result; - - template - class _Bind_result<_Result, _Functor(_Bound_args...)> - { - typedef typename _Build_index_tuple::__type - _Bound_indexes; - - _Functor _M_f; - tuple<_Bound_args...> _M_bound_args; - - // sfinae types - template - using __enable_if_void - = typename enable_if{}>::type; - - template - using __disable_if_void - = typename enable_if{}, _Result>::type; - - // Call unqualified - template - __disable_if_void<_Res> - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) - { - return std::__invoke(_M_f, _Mu<_Bound_args>() - (std::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call unqualified, return void - template - __enable_if_void<_Res> - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) - { - std::__invoke(_M_f, _Mu<_Bound_args>() - (std::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const - template - __disable_if_void<_Res> - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const - { - return std::__invoke(_M_f, _Mu<_Bound_args>() - (std::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const, return void - template - __enable_if_void<_Res> - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const - { - std::__invoke(_M_f, _Mu<_Bound_args>() - (std::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as volatile - template - __disable_if_void<_Res> - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile - { - return std::__invoke(_M_f, _Mu<_Bound_args>() - (__volget<_Indexes>(_M_bound_args), __args)...); - } - - // Call as volatile, return void - template - __enable_if_void<_Res> - __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile - { - std::__invoke(_M_f, _Mu<_Bound_args>() - (__volget<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const volatile - template - __disable_if_void<_Res> - __call(tuple<_Args...>&& __args, - _Index_tuple<_Indexes...>) const volatile - { - return std::__invoke(_M_f, _Mu<_Bound_args>() - (__volget<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const volatile, return void - template - __enable_if_void<_Res> - __call(tuple<_Args...>&& __args, - _Index_tuple<_Indexes...>) const volatile - { - std::__invoke(_M_f, _Mu<_Bound_args>() - (__volget<_Indexes>(_M_bound_args), __args)...); - } - - public: - typedef _Result result_type; - - template - explicit _Bind_result(const _Functor& __f, _Args&&... __args) - : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) - { } - - template - explicit _Bind_result(_Functor&& __f, _Args&&... __args) - : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) - { } - - _Bind_result(const _Bind_result&) = default; - - _Bind_result(_Bind_result&& __b) - : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) - { } - - // Call unqualified - template - result_type - operator()(_Args&&... __args) - { - return this->__call<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - - // Call as const - template - result_type - operator()(_Args&&... __args) const - { - return this->__call<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - - // Call as volatile - template - _GLIBCXX_DEPR_BIND - result_type - operator()(_Args&&... __args) volatile - { - return this->__call<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - - // Call as const volatile - template - _GLIBCXX_DEPR_BIND - result_type - operator()(_Args&&... __args) const volatile - { - return this->__call<_Result>( - std::forward_as_tuple(std::forward<_Args>(__args)...), - _Bound_indexes()); - } - }; -#undef _GLIBCXX_DEPR_BIND - - /** - * @brief Class template _Bind is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression<_Bind<_Signature> > - : public true_type { }; - - /** - * @brief Class template _Bind is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression > - : public true_type { }; - - /** - * @brief Class template _Bind is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression > - : public true_type { }; - - /** - * @brief Class template _Bind is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression> - : public true_type { }; - - /** - * @brief Class template _Bind_result is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression<_Bind_result<_Result, _Signature>> - : public true_type { }; - - /** - * @brief Class template _Bind_result is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression> - : public true_type { }; - - /** - * @brief Class template _Bind_result is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression> - : public true_type { }; - - /** - * @brief Class template _Bind_result is always a bind expression. - * @ingroup binders - */ - template - struct is_bind_expression> - : public true_type { }; - - template - struct _Bind_check_arity { }; - - template - struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> - { - static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), - "Wrong number of arguments for function"); - }; - - template - struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...> - { - static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), - "Wrong number of arguments for function"); - }; - - template - struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> - { - using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; - using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; - static_assert(_Varargs::value - ? sizeof...(_BoundArgs) >= _Arity::value + 1 - : sizeof...(_BoundArgs) == _Arity::value + 1, - "Wrong number of arguments for pointer-to-member"); - }; - - // Trait type used to remove std::bind() from overload set via SFINAE - // when first argument has integer type, so that std::bind() will - // not be a better match than ::bind() from the BSD Sockets API. - template::type> - using __is_socketlike = __or_, is_enum<_Tp2>>; - - template - struct _Bind_helper - : _Bind_check_arity::type, _BoundArgs...> - { - typedef typename decay<_Func>::type __func_type; - typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; - }; - - // Partial specialization for is_socketlike == true, does not define - // nested type so std::bind() will not participate in overload resolution - // when the first argument might be a socket file descriptor. - template - struct _Bind_helper - { }; - - /** - * @brief Function template for std::bind. - * @ingroup binders - */ - template - inline typename - _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type - bind(_Func&& __f, _BoundArgs&&... __args) - { - typedef _Bind_helper __helper_type; - return typename __helper_type::type(std::forward<_Func>(__f), - std::forward<_BoundArgs>(__args)...); - } - - template - struct _Bindres_helper - : _Bind_check_arity::type, _BoundArgs...> - { - typedef typename decay<_Func>::type __functor_type; - typedef _Bind_result<_Result, - __functor_type(typename decay<_BoundArgs>::type...)> - type; - }; - - /** - * @brief Function template for std::bind. - * @ingroup binders - */ - template - inline - typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type - bind(_Func&& __f, _BoundArgs&&... __args) - { - typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; - return typename __helper_type::type(std::forward<_Func>(__f), - std::forward<_BoundArgs>(__args)...); - } - -#if __cplusplus >= 201402L - /// Generalized negator. - template - class _Not_fn - { - template - using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type; - - template - static decltype(!std::declval<_Tp>()) - _S_not() noexcept(noexcept(!std::declval<_Tp>())); - - public: - template - _Not_fn(_Fn2&& __fn, int) - : _M_fn(std::forward<_Fn2>(__fn)) { } - - _Not_fn(const _Not_fn& __fn) = default; - _Not_fn(_Not_fn&& __fn) = default; - ~_Not_fn() = default; - - // Macro to define operator() with given cv-qualifiers ref-qualifiers, - // forwarding _M_fn and the function arguments with the same qualifiers, - // and deducing the return type and exception-specification. -#define _GLIBCXX_NOT_FN_CALL_OP( _QUALS ) \ - template \ - decltype(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>()) \ - operator()(_Args&&... __args) _QUALS \ - noexcept(noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())) \ - { \ - return !std::__invoke(std::forward< _Fn _QUALS >(_M_fn), \ - std::forward<_Args>(__args)...); \ - } - _GLIBCXX_NOT_FN_CALL_OP( & ) - _GLIBCXX_NOT_FN_CALL_OP( const & ) - _GLIBCXX_NOT_FN_CALL_OP( && ) - _GLIBCXX_NOT_FN_CALL_OP( const && ) -#undef _GLIBCXX_NOT_FN_CALL - - private: - _Fn _M_fn; - }; - -#if __cplusplus > 201402L -#define __cpp_lib_not_fn 201603 - /// [func.not_fn] Function template not_fn - template - inline auto - not_fn(_Fn&& __fn) - noexcept(std::is_nothrow_constructible, _Fn&&>::value) - { - return _Not_fn>{std::forward<_Fn>(__fn), 0}; - } - - // Searchers -#define __cpp_lib_boyer_moore_searcher 201603 - - template> - class default_searcher - { - public: - default_searcher(_ForwardIterator1 __pat_first, - _ForwardIterator1 __pat_last, - _BinaryPredicate __pred = _BinaryPredicate()) - : _M_m(__pat_first, __pat_last, std::move(__pred)) - { } - - template - pair<_ForwardIterator2, _ForwardIterator2> - operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const - { - _ForwardIterator2 __first_ret = - std::search(__first, __last, std::get<0>(_M_m), std::get<1>(_M_m), - std::get<2>(_M_m)); - auto __ret = std::make_pair(__first_ret, __first_ret); - if (__ret.first != __last) - std::advance(__ret.second, std::distance(std::get<0>(_M_m), - std::get<1>(_M_m))); - return __ret; - } - - private: - tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; - }; - - template - struct __boyer_moore_map_base - { - template - __boyer_moore_map_base(_RAIter __pat, size_t __patlen, - _Hash&& __hf, _Pred&& __pred) - : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } - { - if (__patlen > 0) - for (__diff_type __i = 0; __i < __patlen - 1; ++__i) - _M_bad_char[__pat[__i]] = __patlen - 1 - __i; - } - - using __diff_type = _Tp; - - __diff_type - _M_lookup(_Key __key, __diff_type __not_found) const - { - auto __iter = _M_bad_char.find(__key); - if (__iter == _M_bad_char.end()) - return __not_found; - return __iter->second; - } - - _Pred - _M_pred() const { return _M_bad_char.key_eq(); } - - _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; - }; - - template - struct __boyer_moore_array_base - { - template - __boyer_moore_array_base(_RAIter __pat, size_t __patlen, - _Unused&&, _Pred&& __pred) - : _M_bad_char{ _GLIBCXX_STD_C::array<_Tp, _Len>{}, std::move(__pred) } - { - std::get<0>(_M_bad_char).fill(__patlen); - if (__patlen > 0) - for (__diff_type __i = 0; __i < __patlen - 1; ++__i) - { - auto __ch = __pat[__i]; - using _UCh = make_unsigned_t; - auto __uch = static_cast<_UCh>(__ch); - std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; - } - } - - using __diff_type = _Tp; - - template - __diff_type - _M_lookup(_Key __key, __diff_type __not_found) const - { - auto __ukey = static_cast>(__key); - if (__ukey >= _Len) - return __not_found; - return std::get<0>(_M_bad_char)[__ukey]; - } - - const _Pred& - _M_pred() const { return std::get<1>(_M_bad_char); } - - tuple<_GLIBCXX_STD_C::array<_Tp, _Len>, _Pred> _M_bad_char; - }; - - template - struct __is_std_equal_to : false_type { }; - - template<> - struct __is_std_equal_to> : true_type { }; - - // Use __boyer_moore_array_base when pattern consists of narrow characters - // and uses std::equal_to as the predicate. - template::value_type, - typename _Diff = typename iterator_traits<_RAIter>::difference_type> - using __boyer_moore_base_t - = conditional_t::value - && __is_std_equal_to<_Pred>::value, - __boyer_moore_array_base<_Diff, 256, _Pred>, - __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; - - template::value_type>, - typename _BinaryPredicate = equal_to<>> - class boyer_moore_searcher - : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> - { - using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; - using typename _Base::__diff_type; - - public: - boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, - _Hash __hf = _Hash(), - _BinaryPredicate __pred = _BinaryPredicate()); - - template - pair<_RandomAccessIterator2, _RandomAccessIterator2> - operator()(_RandomAccessIterator2 __first, - _RandomAccessIterator2 __last) const; - - private: - bool - _M_is_prefix(_RAIter __word, __diff_type __len, - __diff_type __pos) - { - const auto& __pred = this->_M_pred(); - __diff_type __suffixlen = __len - __pos; - for (__diff_type __i = 0; __i < __suffixlen; ++__i) - if (!__pred(__word[__i], __word[__pos + __i])) - return false; - return true; - } - - __diff_type - _M_suffix_length(_RAIter __word, __diff_type __len, - __diff_type __pos) - { - const auto& __pred = this->_M_pred(); - __diff_type __i = 0; - while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) - && __i < __pos) - { - ++__i; - } - return __i; - } - - template - __diff_type - _M_bad_char_shift(_Tp __c) const - { return this->_M_lookup(__c, _M_pat_end - _M_pat); } - - _RAIter _M_pat; - _RAIter _M_pat_end; - _GLIBCXX_STD_C::vector<__diff_type> _M_good_suffix; - }; - - template::value_type>, - typename _BinaryPredicate = equal_to<>> - class boyer_moore_horspool_searcher - : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> - { - using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; - using typename _Base::__diff_type; - - public: - boyer_moore_horspool_searcher(_RAIter __pat, - _RAIter __pat_end, - _Hash __hf = _Hash(), - _BinaryPredicate __pred - = _BinaryPredicate()) - : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), - _M_pat(__pat), _M_pat_end(__pat_end) - { } - - template - pair<_RandomAccessIterator2, _RandomAccessIterator2> - operator()(_RandomAccessIterator2 __first, - _RandomAccessIterator2 __last) const - { - const auto& __pred = this->_M_pred(); - auto __patlen = _M_pat_end - _M_pat; - if (__patlen == 0) - return std::make_pair(__first, __first); - auto __len = __last - __first; - while (__len >= __patlen) - { - for (auto __scan = __patlen - 1; - __pred(__first[__scan], _M_pat[__scan]); --__scan) - if (__scan == 0) - return std::make_pair(__first, __first + __patlen); - auto __shift = _M_bad_char_shift(__first[__patlen - 1]); - __len -= __shift; - __first += __shift; - } - return std::make_pair(__last, __last); - } - - private: - template - __diff_type - _M_bad_char_shift(_Tp __c) const - { return this->_M_lookup(__c, _M_pat_end - _M_pat); } - - _RAIter _M_pat; - _RAIter _M_pat_end; - }; - - template - boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: - boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, - _Hash __hf, _BinaryPredicate __pred) - : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), - _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) - { - auto __patlen = __pat_end - __pat; - if (__patlen == 0) - return; - __diff_type __last_prefix = __patlen - 1; - for (__diff_type __p = __patlen - 1; __p >= 0; --__p) - { - if (_M_is_prefix(__pat, __patlen, __p + 1)) - __last_prefix = __p + 1; - _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); - } - for (__diff_type __p = 0; __p < __patlen - 1; ++__p) - { - auto __slen = _M_suffix_length(__pat, __patlen, __p); - auto __pos = __patlen - 1 - __slen; - if (!__pred(__pat[__p - __slen], __pat[__pos])) - _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; - } - } - - template - template - pair<_RandomAccessIterator2, _RandomAccessIterator2> - boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: - operator()(_RandomAccessIterator2 __first, - _RandomAccessIterator2 __last) const - { - auto __patlen = _M_pat_end - _M_pat; - if (__patlen == 0) - return std::make_pair(__first, __first); - const auto& __pred = this->_M_pred(); - __diff_type __i = __patlen - 1; - auto __stringlen = __last - __first; - while (__i < __stringlen) - { - __diff_type __j = __patlen - 1; - while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) - { - --__i; - --__j; - } - if (__j < 0) - { - const auto __match = __first + __i + 1; - return std::make_pair(__match, __match + __patlen); - } - __i += std::max(_M_bad_char_shift(__first[__i]), - _M_good_suffix[__j]); - } - return std::make_pair(__last, __last); - } - -#endif // C++17 -#endif // C++14 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++11 - -#endif // _GLIBCXX_FUNCTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iterator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iterator deleted file mode 100644 index 06f1469b4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iterator +++ /dev/null @@ -1,70 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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/iterator - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_ITERATOR -#define _GLIBCXX_ITERATOR 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif /* _GLIBCXX_ITERATOR */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/list deleted file mode 100644 index 54e3cf86f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/list +++ /dev/null @@ -1,75 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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/list - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_LIST -#define _GLIBCXX_LIST 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif /* _GLIBCXX_LIST */ - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/map deleted file mode 100644 index e974135ae..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/map +++ /dev/null @@ -1,73 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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/map - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_MAP -#define _GLIBCXX_MAP 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif /* _GLIBCXX_MAP */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/math.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/math.h deleted file mode 100644 index 84755c8c3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/math.h +++ /dev/null @@ -1,181 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file math.h - * This is a Standard C++ Library header. - */ - -#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS -# include_next -#else - -#ifndef _GLIBCXX_MATH_H -#define _GLIBCXX_MATH_H 1 - -# include - -using std::abs; -using std::acos; -using std::asin; -using std::atan; -using std::atan2; -using std::cos; -using std::sin; -using std::tan; -using std::cosh; -using std::sinh; -using std::tanh; -using std::exp; -using std::frexp; -using std::ldexp; -using std::log; -using std::log10; -using std::modf; -using std::pow; -using std::sqrt; -using std::ceil; -using std::fabs; -using std::floor; -using std::fmod; - -#if _GLIBCXX_USE_C99_MATH -using std::fpclassify; -using std::isfinite; -using std::isinf; -using std::isnan; -using std::isnormal; -using std::signbit; -using std::isgreater; -using std::isgreaterequal; -using std::isless; -using std::islessequal; -using std::islessgreater; -using std::isunordered; -#endif - -#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1) -using std::acosh; -using std::asinh; -using std::atanh; -using std::cbrt; -using std::copysign; -using std::erf; -using std::erfc; -using std::exp2; -using std::expm1; -using std::fdim; -using std::fma; -using std::fmax; -using std::fmin; -using std::hypot; -using std::ilogb; -using std::lgamma; -using std::llrint; -using std::llround; -using std::log1p; -using std::log2; -using std::logb; -using std::lrint; -using std::lround; -using std::nearbyint; -using std::nextafter; -using std::nexttoward; -using std::remainder; -using std::remquo; -using std::rint; -using std::round; -using std::scalbln; -using std::scalbn; -using std::tgamma; -using std::trunc; -#endif // C++11 && _GLIBCXX_USE_C99_MATH_TR1 - -#if __STDCPP_WANT_MATH_SPEC_FUNCS__ == 1 -using std::assoc_laguerref; -using std::assoc_laguerrel; -using std::assoc_laguerre; -using std::assoc_legendref; -using std::assoc_legendrel; -using std::assoc_legendre; -using std::betaf; -using std::betal; -using std::beta; -using std::comp_ellint_1f; -using std::comp_ellint_1l; -using std::comp_ellint_1; -using std::comp_ellint_2f; -using std::comp_ellint_2l; -using std::comp_ellint_2; -using std::comp_ellint_3f; -using std::comp_ellint_3l; -using std::comp_ellint_3; -using std::cyl_bessel_if; -using std::cyl_bessel_il; -using std::cyl_bessel_i; -using std::cyl_bessel_jf; -using std::cyl_bessel_jl; -using std::cyl_bessel_j; -using std::cyl_bessel_kf; -using std::cyl_bessel_kl; -using std::cyl_bessel_k; -using std::cyl_neumannf; -using std::cyl_neumannl; -using std::cyl_neumann; -using std::ellint_1f; -using std::ellint_1l; -using std::ellint_1; -using std::ellint_2f; -using std::ellint_2l; -using std::ellint_2; -using std::ellint_3f; -using std::ellint_3l; -using std::ellint_3; -using std::expintf; -using std::expintl; -using std::expint; -using std::hermitef; -using std::hermitel; -using std::hermite; -using std::laguerref; -using std::laguerrel; -using std::laguerre; -using std::legendref; -using std::legendrel; -using std::legendre; -using std::riemann_zetaf; -using std::riemann_zetal; -using std::riemann_zeta; -using std::sph_besself; -using std::sph_bessell; -using std::sph_bessel; -using std::sph_legendref; -using std::sph_legendrel; -using std::sph_legendre; -using std::sph_neumannf; -using std::sph_neumannl; -using std::sph_neumann; -#endif // __STDCPP_WANT_MATH_SPEC_FUNCS__ - -#endif // _GLIBCXX_MATH_H -#endif // __cplusplus diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/memory deleted file mode 100644 index 2d2d6fa90..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/memory +++ /dev/null @@ -1,153 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * Copyright (c) 1997-1999 - * 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/memory - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_MEMORY -#define _GLIBCXX_MEMORY 1 - -#pragma GCC system_header - -/** - * @defgroup memory Memory - * @ingroup utilities - * - * Components for memory allocation, deallocation, and management. - */ - -/** - * @defgroup pointer_abstractions Pointer Abstractions - * @ingroup memory - * - * Smart pointers, etc. - */ - -#include -#include -#include -#include -#include -#include - -#if __cplusplus >= 201103L -# include // std::exception -# include // std::type_info in get_deleter -# include // std::basic_ostream -# include -# include -# include -# include // std::less -# include -# include -# include -# include -# include -# include -# if _GLIBCXX_USE_DEPRECATED -# include -# endif -#else -# include -#endif - -#if __cplusplus >= 201103L -# include -# ifdef _GLIBCXX_USE_C99_STDINT_TR1 -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -/** - * @brief Fit aligned storage in buffer. - * - * [ptr.align] - * - * This function tries to fit @a __size bytes of storage with alignment - * @a __align into the buffer @a __ptr of size @a __space bytes. If such - * a buffer fits then @a __ptr is changed to point to the first byte of the - * aligned storage and @a __space is reduced by the bytes used for alignment. - * - * @param __align A fundamental or extended alignment value. - * @param __size Size of the aligned storage required. - * @param __ptr Pointer to a buffer of @a __space bytes. - * @param __space Size of the buffer pointed to by @a __ptr. - * @return the updated pointer if the aligned storage fits, otherwise nullptr. - */ -inline void* -align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept -{ - const auto __intptr = reinterpret_cast(__ptr); - const auto __aligned = (__intptr - 1u + __align) & -__align; - const auto __diff = __aligned - __intptr; - if ((__size + __diff) > __space) - return nullptr; - else - { - __space -= __diff; - return __ptr = reinterpret_cast(__aligned); - } -} - -// 20.7.4 [util.dynamic.safety], pointer safety - -enum class pointer_safety { relaxed, preferred, strict }; - -inline void -declare_reachable(void*) { } - -template - inline _Tp* - undeclare_reachable(_Tp* __p) { return __p; } - -inline void -declare_no_pointers(char*, size_t) { } - -inline void -undeclare_no_pointers(char*, size_t) { } - -inline pointer_safety -get_pointer_safety() noexcept { return pointer_safety::relaxed; } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace -#endif // _GLIBCXX_USE_C99_STDINT_TR1 -#endif // C++11 - -#endif /* _GLIBCXX_MEMORY */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/numeric deleted file mode 100644 index 2b2223741..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/numeric +++ /dev/null @@ -1,165 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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/numeric - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_NUMERIC -#define _GLIBCXX_NUMERIC 1 - -#pragma GCC system_header - -#include -#include -#include - -#ifdef _GLIBCXX_PARALLEL -# include -#endif - -/** - * @defgroup numerics Numerics - * - * Components for performing numeric operations. Includes support for - * for complex number types, random number generation, numeric - * (n-at-a-time) arrays, generalized numeric algorithms, and special - * math functions. - */ - -#if __cplusplus >= 201402L -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __detail -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // std::abs is not constexpr and doesn't support unsigned integers. - template - constexpr - enable_if_t<__and_, is_signed<_Tp>>::value, _Tp> - __abs_integral(_Tp __val) - { return __val < 0 ? -__val : __val; } - - template - constexpr - enable_if_t<__and_, is_unsigned<_Tp>>::value, _Tp> - __abs_integral(_Tp __val) - { return __val; } - - void __abs_integral(bool) = delete; - - template - constexpr common_type_t<_Mn, _Nn> - __gcd(_Mn __m, _Nn __n) - { - return __m == 0 ? __detail::__abs_integral(__n) - : __n == 0 ? __detail::__abs_integral(__m) - : __detail::__gcd(__n, __m % __n); - } - - /// Least common multiple - template - constexpr common_type_t<_Mn, _Nn> - __lcm(_Mn __m, _Nn __n) - { - return (__m != 0 && __n != 0) - ? (__detail::__abs_integral(__m) / __detail::__gcd(__m, __n)) - * __detail::__abs_integral(__n) - : 0; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if __cplusplus > 201402L - -#define __cpp_lib_gcd_lcm 201606 -// These were used in drafts of SD-6: -#define __cpp_lib_gcd 201606 -#define __cpp_lib_lcm 201606 - - /// Greatest common divisor - template - constexpr common_type_t<_Mn, _Nn> - gcd(_Mn __m, _Nn __n) - { - static_assert(is_integral<_Mn>::value, "gcd arguments are integers"); - static_assert(is_integral<_Nn>::value, "gcd arguments are integers"); - static_assert(!is_same<_Mn, bool>::value, "gcd arguments are not bools"); - static_assert(!is_same<_Nn, bool>::value, "gcd arguments are not bools"); - return __detail::__gcd(__m, __n); - } - - /// Least common multiple - template - constexpr common_type_t<_Mn, _Nn> - lcm(_Mn __m, _Nn __n) - { - static_assert(is_integral<_Mn>::value, "lcm arguments are integers"); - static_assert(is_integral<_Nn>::value, "lcm arguments are integers"); - static_assert(!is_same<_Mn, bool>::value, "lcm arguments are not bools"); - static_assert(!is_same<_Nn, bool>::value, "lcm arguments are not bools"); - return __detail::__lcm(__m, __n); - } - -#endif // C++17 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++14 - - -#endif /* _GLIBCXX_NUMERIC */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/optional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/optional deleted file mode 100644 index 49ed86322..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/optional +++ /dev/null @@ -1,1043 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/optional - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_OPTIONAL -#define _GLIBCXX_OPTIONAL 1 - -#pragma GCC system_header - -#if __cplusplus >= 201703L - -#include -#include -#include -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup utilities - * @{ - */ - -#define __cpp_lib_optional 201603 - - template - class optional; - - /// Tag type to disengage optional objects. - struct nullopt_t - { - // Do not user-declare default constructor at all for - // optional_value = {} syntax to work. - // nullopt_t() = delete; - - // Used for constructing nullopt. - enum class _Construct { _Token }; - - // Must be constexpr for nullopt_t to be literal. - explicit constexpr nullopt_t(_Construct) { } - }; - - /// Tag to disengage optional objects. - inline constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; - - /** - * @brief Exception class thrown when a disengaged optional object is - * dereferenced. - * @ingroup exceptions - */ - class bad_optional_access : public exception - { - public: - bad_optional_access() { } - virtual const char* what() const noexcept override - {return "bad optional access";} - - virtual ~bad_optional_access() noexcept = default; - }; - - void - __throw_bad_optional_access() - __attribute__((__noreturn__)); - - // XXX Does not belong here. - inline void - __throw_bad_optional_access() - { _GLIBCXX_THROW_OR_ABORT(bad_optional_access()); } - - - // Payload for constexpr optionals. - template ::value - && is_trivially_move_constructible<_Tp>::value, - bool /*_ShouldProvideDestructor*/ = - is_trivially_destructible<_Tp>::value> - struct _Optional_payload - { - constexpr _Optional_payload() - : _M_empty() {} - - template - constexpr _Optional_payload(in_place_t, _Args&&... __args) - : _M_payload(std::forward<_Args>(__args)...), - _M_engaged(true) - {} - - template - constexpr _Optional_payload(std::initializer_list<_Up> __il, - _Args&&... __args) - : _M_payload(__il, std::forward<_Args>(__args)...), - _M_engaged(true) {} - - template struct __ctor_tag {}; - - constexpr _Optional_payload(__ctor_tag, - const _Tp& __other) - : _M_payload(__other), - _M_engaged(true) - {} - - constexpr _Optional_payload(__ctor_tag) - : _M_empty() - {} - - constexpr _Optional_payload(__ctor_tag, _Tp&& __other) - : _M_payload(std::move(__other)), - _M_engaged(true) - {} - - constexpr _Optional_payload(bool __engaged, - const _Optional_payload& __other) - : _Optional_payload(__engaged ? - _Optional_payload(__ctor_tag{}, - __other._M_payload) : - _Optional_payload(__ctor_tag{})) - {} - - constexpr _Optional_payload(bool __engaged, - _Optional_payload&& __other) - : _Optional_payload(__engaged - ? _Optional_payload(__ctor_tag{}, - std::move(__other._M_payload)) - : _Optional_payload(__ctor_tag{})) - {} - - using _Stored_type = remove_const_t<_Tp>; - struct _Empty_byte { }; - union { - _Empty_byte _M_empty; - _Stored_type _M_payload; - }; - bool _M_engaged = false; - }; - - // Payload for non-constexpr optionals with non-trivial destructor. - template - struct _Optional_payload<_Tp, false, false> - { - constexpr _Optional_payload() - : _M_empty() {} - - template - constexpr _Optional_payload(in_place_t, _Args&&... __args) - : _M_payload(std::forward<_Args>(__args)...), - _M_engaged(true) {} - - template - constexpr _Optional_payload(std::initializer_list<_Up> __il, - _Args&&... __args) - : _M_payload(__il, std::forward<_Args>(__args)...), - _M_engaged(true) {} - constexpr - _Optional_payload(bool __engaged, const _Optional_payload& __other) - : _Optional_payload(__other) - {} - - constexpr - _Optional_payload(bool __engaged, _Optional_payload&& __other) - : _Optional_payload(std::move(__other)) - {} - - constexpr _Optional_payload(const _Optional_payload& __other) - { - if (__other._M_engaged) - this->_M_construct(__other._M_payload); - } - - constexpr _Optional_payload(_Optional_payload&& __other) - { - if (__other._M_engaged) - this->_M_construct(std::move(__other._M_payload)); - } - - using _Stored_type = remove_const_t<_Tp>; - struct _Empty_byte { }; - union { - _Empty_byte _M_empty; - _Stored_type _M_payload; - }; - bool _M_engaged = false; - - ~_Optional_payload() - { - if (_M_engaged) - _M_payload.~_Stored_type(); - } - - template - void - _M_construct(_Args&&... __args) - noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) - { - ::new ((void *) std::__addressof(this->_M_payload)) - _Stored_type(std::forward<_Args>(__args)...); - this->_M_engaged = true; - } - }; - - // Payload for non-constexpr optionals with trivial destructor. - template - struct _Optional_payload<_Tp, false, true> - { - constexpr _Optional_payload() - : _M_empty() {} - - template - constexpr _Optional_payload(in_place_t, _Args&&... __args) - : _M_payload(std::forward<_Args>(__args)...), - _M_engaged(true) {} - - template - constexpr _Optional_payload(std::initializer_list<_Up> __il, - _Args&&... __args) - : _M_payload(__il, std::forward<_Args>(__args)...), - _M_engaged(true) {} - constexpr - _Optional_payload(bool __engaged, const _Optional_payload& __other) - : _Optional_payload(__other) - {} - - constexpr - _Optional_payload(bool __engaged, _Optional_payload&& __other) - : _Optional_payload(std::move(__other)) - {} - - constexpr _Optional_payload(const _Optional_payload& __other) - { - if (__other._M_engaged) - this->_M_construct(__other._M_payload); - } - - constexpr _Optional_payload(_Optional_payload&& __other) - { - if (__other._M_engaged) - this->_M_construct(std::move(__other._M_payload)); - } - - using _Stored_type = remove_const_t<_Tp>; - struct _Empty_byte { }; - union { - _Empty_byte _M_empty; - _Stored_type _M_payload; - }; - bool _M_engaged = false; - - template - void - _M_construct(_Args&&... __args) - noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) - { - ::new ((void *) std::__addressof(this->_M_payload)) - _Stored_type(std::forward<_Args>(__args)...); - this->_M_engaged = true; - } - }; - - /** - * @brief Class template that holds the necessary state for @ref optional - * and that has the responsibility for construction and the special members. - * - * Such a separate base class template is necessary in order to - * conditionally enable the special members (e.g. copy/move constructors). - * Note that this means that @ref _Optional_base implements the - * functionality for copy and move assignment, but not for converting - * assignment. - * - * @see optional, _Enable_special_members - */ - template - class _Optional_base - { - private: - // Remove const to avoid prohibition of reusing object storage for - // const-qualified types in [3.8/9]. This is strictly internal - // and even optional itself is oblivious to it. - using _Stored_type = remove_const_t<_Tp>; - - public: - - // Constructors for disengaged optionals. - constexpr _Optional_base() noexcept - { } - - constexpr _Optional_base(nullopt_t) noexcept - { } - - // Constructors for engaged optionals. - template, bool> = false> - constexpr explicit _Optional_base(in_place_t, _Args&&... __args) - : _M_payload(in_place, - std::forward<_Args>(__args)...) { } - - template&, - _Args&&...>, bool> = false> - constexpr explicit _Optional_base(in_place_t, - initializer_list<_Up> __il, - _Args&&... __args) - : _M_payload(in_place, - __il, std::forward<_Args>(__args)...) - { } - - // Copy and move constructors. - constexpr _Optional_base(const _Optional_base& __other) - : _M_payload(__other._M_payload._M_engaged, - __other._M_payload) - { } - - constexpr _Optional_base(_Optional_base&& __other) - noexcept(is_nothrow_move_constructible<_Tp>()) - : _M_payload(__other._M_payload._M_engaged, - std::move(__other._M_payload)) - { } - - // Assignment operators. - _Optional_base& - operator=(const _Optional_base& __other) - { - if (this->_M_payload._M_engaged && __other._M_payload._M_engaged) - this->_M_get() = __other._M_get(); - else - { - if (__other._M_payload._M_engaged) - this->_M_construct(__other._M_get()); - else - this->_M_reset(); - } - - return *this; - } - - _Optional_base& - operator=(_Optional_base&& __other) - noexcept(__and_, - is_nothrow_move_assignable<_Tp>>()) - { - if (this->_M_payload._M_engaged && __other._M_payload._M_engaged) - this->_M_get() = std::move(__other._M_get()); - else - { - if (__other._M_payload._M_engaged) - this->_M_construct(std::move(__other._M_get())); - else - this->_M_reset(); - } - return *this; - } - // The following functionality is also needed by optional, hence the - // protected accessibility. - protected: - constexpr bool _M_is_engaged() const noexcept - { return this->_M_payload._M_engaged; } - - // The _M_get operations have _M_engaged as a precondition. - constexpr _Tp& - _M_get() noexcept - { return this->_M_payload._M_payload; } - - constexpr const _Tp& - _M_get() const noexcept - { return this->_M_payload._M_payload; } - - // The _M_construct operation has !_M_engaged as a precondition - // while _M_destruct has _M_engaged as a precondition. - template - void - _M_construct(_Args&&... __args) - noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) - { - ::new (std::__addressof(this->_M_payload._M_payload)) - _Stored_type(std::forward<_Args>(__args)...); - this->_M_payload._M_engaged = true; - } - - void - _M_destruct() - { - this->_M_payload._M_engaged = false; - this->_M_payload._M_payload.~_Stored_type(); - } - - // _M_reset is a 'safe' operation with no precondition. - void - _M_reset() - { - if (this->_M_payload._M_engaged) - this->_M_destruct(); - } - - private: - _Optional_payload<_Tp> _M_payload; - }; - - template - class optional; - - template - using __converts_from_optional = - __or_&>, - is_constructible<_Tp, optional<_Up>&>, - is_constructible<_Tp, const optional<_Up>&&>, - is_constructible<_Tp, optional<_Up>&&>, - is_convertible&, _Tp>, - is_convertible&, _Tp>, - is_convertible&&, _Tp>, - is_convertible&&, _Tp>>; - - template - using __assigns_from_optional = - __or_&>, - is_assignable<_Tp&, optional<_Up>&>, - is_assignable<_Tp&, const optional<_Up>&&>, - is_assignable<_Tp&, optional<_Up>&&>>; - - /** - * @brief Class template for optional values. - */ - template - class optional - : private _Optional_base<_Tp>, - private _Enable_copy_move< - // Copy constructor. - is_copy_constructible<_Tp>::value, - // Copy assignment. - __and_, is_copy_assignable<_Tp>>::value, - // Move constructor. - is_move_constructible<_Tp>::value, - // Move assignment. - __and_, is_move_assignable<_Tp>>::value, - // Unique tag type. - optional<_Tp>> - { - static_assert(__and_<__not_, nullopt_t>>, - __not_, in_place_t>>, - __not_>>(), - "Invalid instantiation of optional"); - - private: - using _Base = _Optional_base<_Tp>; - - public: - using value_type = _Tp; - - constexpr optional() = default; - - constexpr optional(nullopt_t) noexcept - : _Base(nullopt) { } - - // Converting constructors for engaged optionals. - template , decay_t<_Up>>>, - __not_>>, - is_constructible<_Tp, _Up&&>, - is_convertible<_Up&&, _Tp> - >::value, bool> = true> - constexpr optional(_Up&& __t) - : _Base(std::in_place, std::forward<_Up>(__t)) { } - - template , decay_t<_Up>>>, - __not_>>, - is_constructible<_Tp, _Up&&>, - __not_> - >::value, bool> = false> - explicit constexpr optional(_Up&& __t) - : _Base(std::in_place, std::forward<_Up>(__t)) { } - - template >, - is_constructible<_Tp, const _Up&>, - is_convertible, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = true> - constexpr optional(const optional<_Up>& __t) - { - if (__t) - emplace(*__t); - } - - template >, - is_constructible<_Tp, const _Up&>, - __not_>, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = false> - explicit constexpr optional(const optional<_Up>& __t) - { - if (__t) - emplace(*__t); - } - - template >, - is_constructible<_Tp, _Up&&>, - is_convertible<_Up&&, _Tp>, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = true> - constexpr optional(optional<_Up>&& __t) - { - if (__t) - emplace(std::move(*__t)); - } - - template >, - is_constructible<_Tp, _Up&&>, - __not_>, - __not_<__converts_from_optional<_Tp, _Up>> - >::value, bool> = false> - explicit constexpr optional(optional<_Up>&& __t) - { - if (__t) - emplace(std::move(*__t)); - } - - template, bool> = false> - explicit constexpr optional(in_place_t, _Args&&... __args) - : _Base(std::in_place, std::forward<_Args>(__args)...) { } - - template&, - _Args&&...>, bool> = false> - explicit constexpr optional(in_place_t, - initializer_list<_Up> __il, - _Args&&... __args) - : _Base(std::in_place, __il, std::forward<_Args>(__args)...) { } - - // Assignment operators. - optional& - operator=(nullopt_t) noexcept - { - this->_M_reset(); - return *this; - } - - template - enable_if_t<__and_< - __not_, decay_t<_Up>>>, - is_constructible<_Tp, _Up>, - __not_<__and_, - is_same<_Tp, decay_t<_Up>>>>, - is_assignable<_Tp&, _Up>>::value, - optional&> - operator=(_Up&& __u) - { - if (this->_M_is_engaged()) - this->_M_get() = std::forward<_Up>(__u); - else - this->_M_construct(std::forward<_Up>(__u)); - - return *this; - } - - template - enable_if_t<__and_< - __not_>, - is_constructible<_Tp, const _Up&>, - is_assignable<_Tp&, _Up>, - __not_<__converts_from_optional<_Tp, _Up>>, - __not_<__assigns_from_optional<_Tp, _Up>> - >::value, - optional&> - operator=(const optional<_Up>& __u) - { - if (__u) - { - if (this->_M_is_engaged()) - this->_M_get() = *__u; - else - this->_M_construct(*__u); - } - else - { - this->_M_reset(); - } - return *this; - } - - template - enable_if_t<__and_< - __not_>, - is_constructible<_Tp, _Up>, - is_assignable<_Tp&, _Up>, - __not_<__converts_from_optional<_Tp, _Up>>, - __not_<__assigns_from_optional<_Tp, _Up>> - >::value, - optional&> - operator=(optional<_Up>&& __u) - { - if (__u) - { - if (this->_M_is_engaged()) - this->_M_get() = std::move(*__u); - else - this->_M_construct(std::move(*__u)); - } - else - { - this->_M_reset(); - } - - return *this; - } - - template - enable_if_t::value, _Tp&> - emplace(_Args&&... __args) - { - this->_M_reset(); - this->_M_construct(std::forward<_Args>(__args)...); - return this->_M_get(); - } - - template - enable_if_t&, - _Args&&...>::value, _Tp&> - emplace(initializer_list<_Up> __il, _Args&&... __args) - { - this->_M_reset(); - this->_M_construct(__il, std::forward<_Args>(__args)...); - return this->_M_get(); - } - - // Destructor is implicit, implemented in _Optional_base. - - // Swap. - void - swap(optional& __other) - noexcept(is_nothrow_move_constructible<_Tp>() - && is_nothrow_swappable_v<_Tp>) - { - using std::swap; - - if (this->_M_is_engaged() && __other._M_is_engaged()) - swap(this->_M_get(), __other._M_get()); - else if (this->_M_is_engaged()) - { - __other._M_construct(std::move(this->_M_get())); - this->_M_destruct(); - } - else if (__other._M_is_engaged()) - { - this->_M_construct(std::move(__other._M_get())); - __other._M_destruct(); - } - } - - // Observers. - constexpr const _Tp* - operator->() const - { return std::__addressof(this->_M_get()); } - - _Tp* - operator->() - { return std::__addressof(this->_M_get()); } - - constexpr const _Tp& - operator*() const& - { return this->_M_get(); } - - constexpr _Tp& - operator*()& - { return this->_M_get(); } - - constexpr _Tp&& - operator*()&& - { return std::move(this->_M_get()); } - - constexpr const _Tp&& - operator*() const&& - { return std::move(this->_M_get()); } - - constexpr explicit operator bool() const noexcept - { return this->_M_is_engaged(); } - - constexpr bool has_value() const noexcept - { return this->_M_is_engaged(); } - - constexpr const _Tp& - value() const& - { - return this->_M_is_engaged() - ? this->_M_get() - : (__throw_bad_optional_access(), - this->_M_get()); - } - - constexpr _Tp& - value()& - { - return this->_M_is_engaged() - ? this->_M_get() - : (__throw_bad_optional_access(), - this->_M_get()); - } - - constexpr _Tp&& - value()&& - { - return this->_M_is_engaged() - ? std::move(this->_M_get()) - : (__throw_bad_optional_access(), - std::move(this->_M_get())); - } - - constexpr const _Tp&& - value() const&& - { - return this->_M_is_engaged() - ? std::move(this->_M_get()) - : (__throw_bad_optional_access(), - std::move(this->_M_get())); - } - - template - constexpr _Tp - value_or(_Up&& __u) const& - { - static_assert(__and_, - is_convertible<_Up&&, _Tp>>(), - "Cannot return value"); - - return this->_M_is_engaged() - ? this->_M_get() - : static_cast<_Tp>(std::forward<_Up>(__u)); - } - - template - _Tp - value_or(_Up&& __u) && - { - static_assert(__and_, - is_convertible<_Up&&, _Tp>>(), - "Cannot return value" ); - - return this->_M_is_engaged() - ? std::move(this->_M_get()) - : static_cast<_Tp>(std::forward<_Up>(__u)); - } - void reset() noexcept { this->_M_reset(); } - }; - - template - using __optional_relop_t = - enable_if_t::value, bool>; - - // Comparisons between optional values. - template - constexpr auto - operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) - -> __optional_relop_t() == declval<_Up>())> - { - return static_cast(__lhs) == static_cast(__rhs) - && (!__lhs || *__lhs == *__rhs); - } - - template - constexpr auto - operator!=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) - -> __optional_relop_t() != declval<_Up>())> - { - return static_cast(__lhs) != static_cast(__rhs) - || (static_cast(__lhs) && *__lhs != *__rhs); - } - - template - constexpr auto - operator<(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) - -> __optional_relop_t() < declval<_Up>())> - { - return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); - } - - template - constexpr auto - operator>(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) - -> __optional_relop_t() > declval<_Up>())> - { - return static_cast(__lhs) && (!__rhs || *__lhs > *__rhs); - } - - template - constexpr auto - operator<=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) - -> __optional_relop_t() <= declval<_Up>())> - { - return !__lhs || (static_cast(__rhs) && *__lhs <= *__rhs); - } - - template - constexpr auto - operator>=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) - -> __optional_relop_t() >= declval<_Up>())> - { - return !__rhs || (static_cast(__lhs) && *__lhs >= *__rhs); - } - - // Comparisons with nullopt. - template - constexpr bool - operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return !__lhs; } - - template - constexpr bool - operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return !__rhs; } - - template - constexpr bool - operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return static_cast(__lhs); } - - template - constexpr bool - operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return static_cast(__rhs); } - - template - constexpr bool - operator<(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept - { return false; } - - template - constexpr bool - operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return static_cast(__rhs); } - - template - constexpr bool - operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return static_cast(__lhs); } - - template - constexpr bool - operator>(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept - { return false; } - - template - constexpr bool - operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept - { return !__lhs; } - - template - constexpr bool - operator<=(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept - { return true; } - - template - constexpr bool - operator>=(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept - { return true; } - - template - constexpr bool - operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept - { return !__rhs; } - - // Comparisons with value type. - template - constexpr auto - operator==(const optional<_Tp>& __lhs, const _Up& __rhs) - -> __optional_relop_t() == declval<_Up>())> - { return __lhs && *__lhs == __rhs; } - - template - constexpr auto - operator==(const _Up& __lhs, const optional<_Tp>& __rhs) - -> __optional_relop_t() == declval<_Tp>())> - { return __rhs && __lhs == *__rhs; } - - template - constexpr auto - operator!=(const optional<_Tp>& __lhs, const _Up& __rhs) - -> __optional_relop_t() != declval<_Up>())> - { return !__lhs || *__lhs != __rhs; } - - template - constexpr auto - operator!=(const _Up& __lhs, const optional<_Tp>& __rhs) - -> __optional_relop_t() != declval<_Tp>())> - { return !__rhs || __lhs != *__rhs; } - - template - constexpr auto - operator<(const optional<_Tp>& __lhs, const _Up& __rhs) - -> __optional_relop_t() < declval<_Up>())> - { return !__lhs || *__lhs < __rhs; } - - template - constexpr auto - operator<(const _Up& __lhs, const optional<_Tp>& __rhs) - -> __optional_relop_t() < declval<_Tp>())> - { return __rhs && __lhs < *__rhs; } - - template - constexpr auto - operator>(const optional<_Tp>& __lhs, const _Up& __rhs) - -> __optional_relop_t() > declval<_Up>())> - { return __lhs && *__lhs > __rhs; } - - template - constexpr auto - operator>(const _Up& __lhs, const optional<_Tp>& __rhs) - -> __optional_relop_t() > declval<_Tp>())> - { return !__rhs || __lhs > *__rhs; } - - template - constexpr auto - operator<=(const optional<_Tp>& __lhs, const _Up& __rhs) - -> __optional_relop_t() <= declval<_Up>())> - { return !__lhs || *__lhs <= __rhs; } - - template - constexpr auto - operator<=(const _Up& __lhs, const optional<_Tp>& __rhs) - -> __optional_relop_t() <= declval<_Tp>())> - { return __rhs && __lhs <= *__rhs; } - - template - constexpr auto - operator>=(const optional<_Tp>& __lhs, const _Up& __rhs) - -> __optional_relop_t() >= declval<_Up>())> - { return __lhs && *__lhs >= __rhs; } - - template - constexpr auto - operator>=(const _Up& __lhs, const optional<_Tp>& __rhs) - -> __optional_relop_t() >= declval<_Tp>())> - { return !__rhs || __lhs >= *__rhs; } - - // Swap and creation functions. - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2748. swappable traits for optionals - template - inline enable_if_t && is_swappable_v<_Tp>> - swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) - noexcept(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - - template - enable_if_t && is_swappable_v<_Tp>)> - swap(optional<_Tp>&, optional<_Tp>&) = delete; - - template - constexpr optional> - make_optional(_Tp&& __t) - { return optional> { std::forward<_Tp>(__t) }; } - - template - constexpr optional<_Tp> - make_optional(_Args&&... __args) - { return optional<_Tp> { in_place, std::forward<_Args>(__args)... }; } - - template - constexpr optional<_Tp> - make_optional(initializer_list<_Up> __il, _Args&&... __args) - { return optional<_Tp> { in_place, __il, std::forward<_Args>(__args)... }; } - - // Hash. - - template, - bool = __poison_hash<_Up>::__enable_hash_call> - struct __optional_hash_call_base - { - size_t - operator()(const optional<_Tp>& __t) const - noexcept(noexcept(hash<_Up>{}(*__t))) - { - // We pick an arbitrary hash for disengaged optionals which hopefully - // usual values of _Tp won't typically hash to. - constexpr size_t __magic_disengaged_hash = static_cast(-3333); - return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash; - } - }; - - template - struct __optional_hash_call_base<_Tp, _Up, false> {}; - - template - struct hash> - : private __poison_hash>, - public __optional_hash_call_base<_Tp> - { - using result_type = size_t; - using argument_type = optional<_Tp>; - }; - - /// @} - -#if __cpp_deduction_guides >= 201606 - template optional(_Tp) -> optional<_Tp>; -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++17 - -#endif // _GLIBCXX_OPTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algorithm deleted file mode 100644 index 9c20c3a3f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algorithm +++ /dev/null @@ -1,39 +0,0 @@ -// Algorithm extensions -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file parallel/algorithm - * This file is a GNU extension to the Standard C++ Library. - */ - -#ifndef _PARALLEL_ALGORITHM -#define _PARALLEL_ALGORITHM 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algorithmfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algorithmfwd.h deleted file mode 100644 index f45f17681..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algorithmfwd.h +++ /dev/null @@ -1,908 +0,0 @@ -// Forward declarations -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file parallel/algorithmfwd.h - * This file is a GNU parallel extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H -#define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1 - -#pragma GCC system_header - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __parallel -{ - template - _FIter - adjacent_find(_FIter, _FIter); - - template - _FIter - adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag); - - template - _FIter - __adjacent_find_switch(_FIter, _FIter, _IterTag); - - template - _RAIter - __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag); - - - template - _FIter - adjacent_find(_FIter, _FIter, _BiPredicate); - - template - _FIter - adjacent_find(_FIter, _FIter, _BiPredicate, - __gnu_parallel::sequential_tag); - - template - _FIter - __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag); - - template - _RAIter - __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate, - random_access_iterator_tag); - - - template - typename iterator_traits<_IIter>::difference_type - count(_IIter, _IIter, const _Tp&); - - template - typename iterator_traits<_IIter>::difference_type - count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag); - - template - typename iterator_traits<_IIter>::difference_type - count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism); - - template - typename iterator_traits<_IIter>::difference_type - __count_switch(_IIter, _IIter, const _Tp&, _IterTag); - - template - typename iterator_traits<_RAIter>::difference_type - __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_unbalanced); - - - template - typename iterator_traits<_IIter>::difference_type - count_if(_IIter, _IIter, _Predicate); - - template - typename iterator_traits<_IIter>::difference_type - count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag); - - template - typename iterator_traits<_IIter>::difference_type - count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism); - - template - typename iterator_traits<_IIter>::difference_type - __count_if_switch(_IIter, _IIter, _Predicate, _IterTag); - - template - typename iterator_traits<_RAIter>::difference_type - __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_unbalanced); - - // algobase.h - template - bool - equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag); - - template - bool - equal(_IIter1, _IIter1, _IIter2, _Predicate, - __gnu_parallel::sequential_tag); - - template - bool - equal(_IIter1, _IIter1, _IIter2); - - template - bool - equal(_IIter1, _IIter1, _IIter2, _Predicate); - - template - _IIter - find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag); - - template - _IIter - find(_IIter, _IIter, const _Tp& __val); - - template - _IIter - __find_switch(_IIter, _IIter, const _Tp&, _IterTag); - - template - _RAIter - __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag); - - template - _IIter - find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag); - - template - _IIter - find_if(_IIter, _IIter, _Predicate); - - template - _IIter - __find_if_switch(_IIter, _IIter, _Predicate, _IterTag); - - template - _RAIter - __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag); - - template - _IIter - find_first_of(_IIter, _IIter, _FIter, _FIter, - __gnu_parallel::sequential_tag); - - template - _IIter - find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate, - __gnu_parallel::sequential_tag); - - template - _IIter - find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate); - - template - _IIter - find_first_of(_IIter, _IIter, _FIter, _FIter); - - template - _IIter - __find_first_of_switch( - _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2); - - template - _RAIter - __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate, - random_access_iterator_tag, _IterTag); - - template - _IIter - __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate, - _IterTag1, _IterTag2); - - - template - _Function - for_each(_IIter, _IIter, _Function); - - template - _Function - for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag); - - template - _Function - for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism); - - template - _Function - __for_each_switch(_IIter, _IIter, _Function, _IterTag); - - template - _Function - __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - - template - void - generate(_FIter, _FIter, _Generator); - - template - void - generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag); - - template - void - generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism); - - template - void - __generate_switch(_FIter, _FIter, _Generator, _IterTag); - - template - void - __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - template - _OIter - generate_n(_OIter, _Size, _Generator); - - template - _OIter - generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag); - - template - _OIter - generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism); - - template - _OIter - __generate_n_switch(_OIter, _Size, _Generator, _IterTag); - - template - _RAIter - __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - template - bool - lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, - __gnu_parallel::sequential_tag); - - template - bool - lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate, - __gnu_parallel::sequential_tag); - - template - bool - lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); - - template - bool - lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate); - - template - bool - __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2, - _Predicate, _IterTag1, _IterTag2); - - template - bool - __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, - _Predicate, random_access_iterator_tag, - random_access_iterator_tag); - - // algo.h - template - pair<_IIter1, _IIter2> - mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag); - - template - pair<_IIter1, _IIter2> - mismatch(_IIter1, _IIter1, _IIter2, _Predicate, - __gnu_parallel::sequential_tag); - - template - pair<_IIter1, _IIter2> - mismatch(_IIter1, _IIter1, _IIter2); - - template - pair<_IIter1, _IIter2> - mismatch(_IIter1, _IIter1, _IIter2, _Predicate); - - template - pair<_IIter1, _IIter2> - __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate, - _IterTag1, _IterTag2); - - template - pair<_RAIter1, _RAIter2> - __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate, - random_access_iterator_tag, random_access_iterator_tag); - - template - _FIter1 - search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag); - - template - _FIter1 - search(_FIter1, _FIter1, _FIter2, _FIter2); - - template - _FIter1 - search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate, - __gnu_parallel::sequential_tag); - - template - _FIter1 - search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate); - - template - _RAIter1 - __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, - random_access_iterator_tag, random_access_iterator_tag); - - template - _FIter1 - __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2); - - template - _RAIter1 - __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate, - random_access_iterator_tag, random_access_iterator_tag); - - template - _FIter1 - __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate, - _IterTag1, _IterTag2); - - template - _FIter - search_n(_FIter, _FIter, _Integer, const _Tp&, - __gnu_parallel::sequential_tag); - - template - _FIter - search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate, - __gnu_parallel::sequential_tag); - - template - _FIter - search_n(_FIter, _FIter, _Integer, const _Tp&); - - template - _FIter - search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate); - - template - _RAIter - __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&, - _BiPredicate, random_access_iterator_tag); - - template - _FIter - __search_n_switch(_FIter, _FIter, _Integer, const _Tp&, - _BiPredicate, _IterTag); - - - template - _OIter - transform(_IIter, _IIter, _OIter, _UnaryOperation); - - template - _OIter - transform(_IIter, _IIter, _OIter, _UnaryOperation, - __gnu_parallel::sequential_tag); - - template - _OIter - transform(_IIter, _IIter, _OIter, _UnaryOperation, - __gnu_parallel::_Parallelism); - - template - _OIter - __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation, - _IterTag1, _IterTag2); - - - template - _RAOIter - __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation, - random_access_iterator_tag, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - - template - _OIter - transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation); - - template - _OIter - transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, - __gnu_parallel::sequential_tag); - - template - _OIter - transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, - __gnu_parallel::_Parallelism); - - template - _RAIter3 - __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation, - random_access_iterator_tag, random_access_iterator_tag, - random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - template - _OIter - __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, - _Tag1, _Tag2, _Tag3); - - - template - void - replace(_FIter, _FIter, const _Tp&, const _Tp&); - - template - void - replace(_FIter, _FIter, const _Tp&, const _Tp&, - __gnu_parallel::sequential_tag); - - template - void - replace(_FIter, _FIter, const _Tp&, const _Tp&, - __gnu_parallel::_Parallelism); - - template - void - __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag); - - template - void - __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&, - random_access_iterator_tag, __gnu_parallel::_Parallelism); - - - template - void - replace_if(_FIter, _FIter, _Predicate, const _Tp&); - - template - void - replace_if(_FIter, _FIter, _Predicate, const _Tp&, - __gnu_parallel::sequential_tag); - - template - void - replace_if(_FIter, _FIter, _Predicate, const _Tp&, - __gnu_parallel::_Parallelism); - - template - void - __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag); - - template - void - __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&, - random_access_iterator_tag, - __gnu_parallel::_Parallelism); - - - template - _FIter - max_element(_FIter, _FIter); - - template - _FIter - max_element(_FIter, _FIter, __gnu_parallel::sequential_tag); - - template - _FIter - max_element(_FIter, _FIter, __gnu_parallel::_Parallelism); - - template - _FIter - max_element(_FIter, _FIter, _Compare); - - template - _FIter - max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag); - - template - _FIter - max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism); - - template - _FIter - __max_element_switch(_FIter, _FIter, _Compare, _IterTag); - - template - _RAIter - __max_element_switch( - _RAIter, _RAIter, _Compare, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - - template - _OIter - merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - __gnu_parallel::sequential_tag); - - template - _OIter - merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, - __gnu_parallel::sequential_tag); - - template - _OIter - merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); - - template - _OIter - merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, - _IterTag1, _IterTag2, _IterTag3); - - template - _OIter - __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, - random_access_iterator_tag, random_access_iterator_tag, - random_access_iterator_tag); - - - template - _FIter - min_element(_FIter, _FIter); - - template - _FIter - min_element(_FIter, _FIter, __gnu_parallel::sequential_tag); - - template - _FIter - min_element(_FIter, _FIter, - __gnu_parallel::_Parallelism __parallelism_tag); - - template - _FIter - min_element(_FIter, _FIter, _Compare); - - template - _FIter - min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag); - - template - _FIter - min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism); - - template - _FIter - __min_element_switch(_FIter, _FIter, _Compare, _IterTag); - - template - _RAIter - __min_element_switch( - _RAIter, _RAIter, _Compare, random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism - = __gnu_parallel::parallel_balanced); - - template - void - nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag); - - template - void - nth_element(_RAIter, _RAIter, _RAIter, _Compare, - __gnu_parallel::sequential_tag); - - template - void - nth_element(_RAIter, _RAIter, _RAIter, _Compare); - - template - void - nth_element(_RAIter, _RAIter, _RAIter); - - template - void - partial_sort(_RAIter, _RAIter, _RAIter, _Compare, - __gnu_parallel::sequential_tag); - - template - void - partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag); - - template - void - partial_sort(_RAIter, _RAIter, _RAIter, _Compare); - - template - void - partial_sort(_RAIter, _RAIter, _RAIter); - - template - _FIter - partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag); - - template - _FIter - partition(_FIter, _FIter, _Predicate); - - template - _FIter - __partition_switch(_FIter, _FIter, _Predicate, _IterTag); - - template - _RAIter - __partition_switch( - _RAIter, _RAIter, _Predicate, random_access_iterator_tag); - - template - void - random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag); - - template - void - random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&, - __gnu_parallel::sequential_tag); - - template - void - random_shuffle(_RAIter, _RAIter); - - template - void - random_shuffle(_RAIter, _RAIter, -#if __cplusplus >= 201103L - _RandomNumberGenerator&&); -#else - _RandomNumberGenerator&); -#endif - - template - _OIter - set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - __gnu_parallel::sequential_tag); - - template - _OIter - set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate, - __gnu_parallel::sequential_tag); - - template - _OIter - set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate); - - template - _OIter - __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - _Predicate, _IterTag1, _IterTag2, _IterTag3); - - template - _Output_RAIter - __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter, - _Predicate, random_access_iterator_tag, - random_access_iterator_tag, random_access_iterator_tag); - - template - _OIter - set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - __gnu_parallel::sequential_tag); - - template - _OIter - set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate, - __gnu_parallel::sequential_tag); - - template - _OIter - set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate); - - template - _OIter - __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - _Predicate, _IterTag1, _IterTag2, _IterTag3); - - template - _Output_RAIter - __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, - _Output_RAIter, _Predicate, - random_access_iterator_tag, - random_access_iterator_tag, - random_access_iterator_tag); - - template - _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - __gnu_parallel::sequential_tag); - - template - _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - _Predicate, __gnu_parallel::sequential_tag); - - template - _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - _Predicate); - - template - _OIter - __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, - _OIter, _Predicate, _IterTag1, _IterTag2, - _IterTag3); - - template - _Output_RAIter - __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, - _Output_RAIter, _Predicate, - random_access_iterator_tag, - random_access_iterator_tag, - random_access_iterator_tag); - - - template - _OIter - set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - __gnu_parallel::sequential_tag); - - template - _OIter - set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate, - __gnu_parallel::sequential_tag); - - template - _OIter - set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); - - template - _OIter - set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate); - - template - _OIter - __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, - _Predicate, _IterTag1, _IterTag2, _IterTag3); - - template - _Output_RAIter - __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, - _Output_RAIter, _Predicate, - random_access_iterator_tag, - random_access_iterator_tag, - random_access_iterator_tag); - - - template - void - sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag); - - template - void - sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag); - - template - void - sort(_RAIter, _RAIter); - - template - void - sort(_RAIter, _RAIter, _Compare); - - template - void - stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag); - - template - void - stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag); - - template - void - stable_sort(_RAIter, _RAIter); - - template - void - stable_sort(_RAIter, _RAIter, _Compare); - - template - _OIter - unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag); - - template - _OIter - unique_copy(_IIter, _IIter, _OIter, _Predicate, - __gnu_parallel::sequential_tag); - - template - _OIter - unique_copy(_IIter, _IIter, _OIter); - - template - _OIter - unique_copy(_IIter, _IIter, _OIter, _Predicate); - - template - _OIter - __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate, - _IterTag1, _IterTag2); - - template - _RandomAccess_OIter - __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate, - random_access_iterator_tag, random_access_iterator_tag); -} // end namespace __parallel -} // end namespace std - -#endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/base.h deleted file mode 100644 index 3df3af9fb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/base.h +++ /dev/null @@ -1,430 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file parallel/base.h - * @brief Sequential helper functions. - * This file is a GNU parallel extension to the Standard C++ Library. - */ - -// Written by Johannes Singler. - -#ifndef _GLIBCXX_PARALLEL_BASE_H -#define _GLIBCXX_PARALLEL_BASE_H 1 - -#include -#include -#include -#include -#include -#include - -// Parallel mode namespaces. - -/** - * @namespace std::__parallel - * @brief GNU parallel code, replaces standard behavior with parallel behavior. - */ -namespace std _GLIBCXX_VISIBILITY(default) -{ - namespace __parallel { } -} - -/** - * @namespace __gnu_parallel - * @brief GNU parallel code for public use. - */ -namespace __gnu_parallel -{ - // Import all the parallel versions of components in namespace std. - using namespace std::__parallel; -} - -/** - * @namespace __gnu_sequential - * @brief GNU sequential classes for public use. - */ -namespace __gnu_sequential -{ - // Import whatever is the serial version. -#ifdef _GLIBCXX_PARALLEL - using namespace std::_GLIBCXX_STD_A; -#else - using namespace std; -#endif -} - - -namespace __gnu_parallel -{ - // NB: Including this file cannot produce (unresolved) symbols from - // the OpenMP runtime unless the parallel mode is actually invoked - // and active, which imples that the OpenMP runtime is actually - // going to be linked in. - inline _ThreadIndex - __get_max_threads() - { - _ThreadIndex __i = omp_get_max_threads(); - return __i > 1 ? __i : 1; - } - - - inline bool - __is_parallel(const _Parallelism __p) { return __p != sequential; } - - - /** @brief Calculates the rounded-down logarithm of @c __n for base 2. - * @param __n Argument. - * @return Returns 0 for any argument <1. - */ - template - inline _Size - __rd_log2(_Size __n) - { - _Size __k; - for (__k = 0; __n > 1; __n >>= 1) - ++__k; - return __k; - } - - /** @brief Encode two integers into one gnu_parallel::_CASable. - * @param __a First integer, to be encoded in the most-significant @c - * _CASable_bits/2 bits. - * @param __b Second integer, to be encoded in the least-significant - * @c _CASable_bits/2 bits. - * @return value encoding @c __a and @c __b. - * @see __decode2 - */ - inline _CASable - __encode2(int __a, int __b) //must all be non-negative, actually - { - return (((_CASable)__a) << (_CASable_bits / 2)) | (((_CASable)__b) << 0); - } - - /** @brief Decode two integers from one gnu_parallel::_CASable. - * @param __x __gnu_parallel::_CASable to decode integers from. - * @param __a First integer, to be decoded from the most-significant - * @c _CASable_bits/2 bits of @c __x. - * @param __b Second integer, to be encoded in the least-significant - * @c _CASable_bits/2 bits of @c __x. - * @see __encode2 - */ - inline void - __decode2(_CASable __x, int& __a, int& __b) - { - __a = (int)((__x >> (_CASable_bits / 2)) & _CASable_mask); - __b = (int)((__x >> 0 ) & _CASable_mask); - } - - //needed for parallel "numeric", even if "algorithm" not included - - /** @brief Equivalent to std::min. */ - template - inline const _Tp& - min(const _Tp& __a, const _Tp& __b) - { return (__a < __b) ? __a : __b; } - - /** @brief Equivalent to std::max. */ - template - inline const _Tp& - max(const _Tp& __a, const _Tp& __b) - { return (__a > __b) ? __a : __b; } - - /** @brief Constructs predicate for equality from strict weak - * ordering predicate - */ - template - class _EqualFromLess : public std::binary_function<_T1, _T2, bool> - { - private: - _Compare& _M_comp; - - public: - _EqualFromLess(_Compare& __comp) : _M_comp(__comp) { } - - bool operator()(const _T1& __a, const _T2& __b) - { return !_M_comp(__a, __b) && !_M_comp(__b, __a); } - }; - - - /** @brief Similar to std::unary_negate, - * but giving the argument types explicitly. */ - template - class __unary_negate - : public std::unary_function - { - protected: - _Predicate _M_pred; - - public: - explicit - __unary_negate(const _Predicate& __x) : _M_pred(__x) { } - - bool - operator()(const argument_type& __x) - { return !_M_pred(__x); } - }; - - /** @brief Similar to std::binder1st, - * but giving the argument types explicitly. */ - template - class __binder1st - : public std::unary_function<_SecondArgumentType, _ResultType> - { - protected: - _Operation _M_op; - _FirstArgumentType _M_value; - - public: - __binder1st(const _Operation& __x, const _FirstArgumentType& __y) - : _M_op(__x), _M_value(__y) { } - - _ResultType - operator()(const _SecondArgumentType& __x) - { return _M_op(_M_value, __x); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 109. Missing binders for non-const sequence elements - _ResultType - operator()(_SecondArgumentType& __x) const - { return _M_op(_M_value, __x); } - }; - - /** - * @brief Similar to std::binder2nd, but giving the argument types - * explicitly. - */ - template - class __binder2nd - : public std::unary_function<_FirstArgumentType, _ResultType> - { - protected: - _Operation _M_op; - _SecondArgumentType _M_value; - - public: - __binder2nd(const _Operation& __x, const _SecondArgumentType& __y) - : _M_op(__x), _M_value(__y) { } - - _ResultType - operator()(const _FirstArgumentType& __x) const - { return _M_op(__x, _M_value); } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 109. Missing binders for non-const sequence elements - _ResultType - operator()(_FirstArgumentType& __x) - { return _M_op(__x, _M_value); } - }; - - /** @brief Similar to std::equal_to, but allows two different types. */ - template - struct _EqualTo : std::binary_function<_T1, _T2, bool> - { - bool operator()(const _T1& __t1, const _T2& __t2) const - { return __t1 == __t2; } - }; - - /** @brief Similar to std::less, but allows two different types. */ - template - struct _Less : std::binary_function<_T1, _T2, bool> - { - bool - operator()(const _T1& __t1, const _T2& __t2) const - { return __t1 < __t2; } - - bool - operator()(const _T2& __t2, const _T1& __t1) const - { return __t2 < __t1; } - }; - - // Partial specialization for one type. Same as std::less. - template - struct _Less<_Tp, _Tp> - : public std::less<_Tp> { }; - - /** @brief Similar to std::plus, but allows two different types. */ - template(0) - + *static_cast<_Tp2*>(0))> - struct _Plus : public std::binary_function<_Tp1, _Tp2, _Result> - { - _Result - operator()(const _Tp1& __x, const _Tp2& __y) const - { return __x + __y; } - }; - - // Partial specialization for one type. Same as std::plus. - template - struct _Plus<_Tp, _Tp, _Tp> - : public std::plus<_Tp> { }; - - /** @brief Similar to std::multiplies, but allows two different types. */ - template(0) - * *static_cast<_Tp2*>(0))> - struct _Multiplies : public std::binary_function<_Tp1, _Tp2, _Result> - { - _Result - operator()(const _Tp1& __x, const _Tp2& __y) const - { return __x * __y; } - }; - - // Partial specialization for one type. Same as std::multiplies. - template - struct _Multiplies<_Tp, _Tp, _Tp> - : public std::multiplies<_Tp> { }; - - /** @brief _Iterator associated with __gnu_parallel::_PseudoSequence. - * If features the usual random-access iterator functionality. - * @param _Tp Sequence _M_value type. - * @param _DifferenceTp Sequence difference type. - */ - template - class _PseudoSequenceIterator - { - public: - typedef _DifferenceTp _DifferenceType; - - _PseudoSequenceIterator(const _Tp& __val, _DifferenceType __pos) - : _M_val(__val), _M_pos(__pos) { } - - // Pre-increment operator. - _PseudoSequenceIterator& - operator++() - { - ++_M_pos; - return *this; - } - - // Post-increment operator. - _PseudoSequenceIterator - operator++(int) - { return _PseudoSequenceIterator(_M_pos++); } - - const _Tp& - operator*() const - { return _M_val; } - - const _Tp& - operator[](_DifferenceType) const - { return _M_val; } - - bool - operator==(const _PseudoSequenceIterator& __i2) - { return _M_pos == __i2._M_pos; } - - bool - operator!=(const _PseudoSequenceIterator& __i2) - { return _M_pos != __i2._M_pos; } - - _DifferenceType - operator-(const _PseudoSequenceIterator& __i2) - { return _M_pos - __i2._M_pos; } - - private: - const _Tp& _M_val; - _DifferenceType _M_pos; - }; - - /** @brief Sequence that conceptually consists of multiple copies of - the same element. - * The copies are not stored explicitly, of course. - * @param _Tp Sequence _M_value type. - * @param _DifferenceTp Sequence difference type. - */ - template - class _PseudoSequence - { - public: - typedef _DifferenceTp _DifferenceType; - - // Better cast down to uint64_t, than up to _DifferenceTp. - typedef _PseudoSequenceIterator<_Tp, uint64_t> iterator; - - /** @brief Constructor. - * @param __val Element of the sequence. - * @param __count Number of (virtual) copies. - */ - _PseudoSequence(const _Tp& __val, _DifferenceType __count) - : _M_val(__val), _M_count(__count) { } - - /** @brief Begin iterator. */ - iterator - begin() const - { return iterator(_M_val, 0); } - - /** @brief End iterator. */ - iterator - end() const - { return iterator(_M_val, _M_count); } - - private: - const _Tp& _M_val; - _DifferenceType _M_count; - }; - - /** @brief Compute the median of three referenced elements, - according to @c __comp. - * @param __a First iterator. - * @param __b Second iterator. - * @param __c Third iterator. - * @param __comp Comparator. - */ - template - _RAIter - __median_of_three_iterators(_RAIter __a, _RAIter __b, - _RAIter __c, _Compare __comp) - { - if (__comp(*__a, *__b)) - if (__comp(*__b, *__c)) - return __b; - else - if (__comp(*__a, *__c)) - return __c; - else - return __a; - else - { - // Just swap __a and __b. - if (__comp(*__a, *__c)) - return __a; - else - if (__comp(*__b, *__c)) - return __c; - else - return __b; - } - } - -#if _GLIBCXX_PARALLEL_ASSERTIONS && defined(__glibcxx_assert_impl) -#define _GLIBCXX_PARALLEL_ASSERT(_Condition) __glibcxx_assert_impl(_Condition) -#else -#define _GLIBCXX_PARALLEL_ASSERT(_Condition) -#endif - -} //namespace __gnu_parallel - -#endif /* _GLIBCXX_PARALLEL_BASE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/numeric deleted file mode 100644 index 1b8ca722e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/numeric +++ /dev/null @@ -1,511 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the terms -// of the GNU General Public License as published by the Free Software -// Foundation; either version 3, or (at your option) any later -// version. - -// This library is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** - * @file parallel/numeric -* - * @brief Parallel STL function calls corresponding to stl_numeric.h. - * The functions defined here mainly do case switches and - * call the actual parallelized versions in other files. - * Inlining policy: Functions that basically only contain one function call, - * are declared inline. - * This file is a GNU parallel extension to the Standard C++ Library. - */ - -// Written by Johannes Singler and Felix Putze. - -#ifndef _GLIBCXX_PARALLEL_NUMERIC_H -#define _GLIBCXX_PARALLEL_NUMERIC_H 1 - -#include -#include -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __parallel -{ - // Sequential fallback. - template - inline _Tp - accumulate(_IIter __begin, _IIter __end, _Tp __init, - __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::accumulate(__begin, __end, __init); } - - template - inline _Tp - accumulate(_IIter __begin, _IIter __end, _Tp __init, - _BinaryOperation __binary_op, __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::accumulate(__begin, __end, __init, __binary_op); } - - // Sequential fallback for input iterator case. - template - inline _Tp - __accumulate_switch(_IIter __begin, _IIter __end, - _Tp __init, _IteratorTag) - { return accumulate(__begin, __end, __init, - __gnu_parallel::sequential_tag()); } - - template - inline _Tp - __accumulate_switch(_IIter __begin, _IIter __end, _Tp __init, - _BinaryOperation __binary_op, _IteratorTag) - { return accumulate(__begin, __end, __init, __binary_op, - __gnu_parallel::sequential_tag()); } - - // Parallel algorithm for random access iterators. - template - _Tp - __accumulate_switch(__RAIter __begin, __RAIter __end, - _Tp __init, _BinaryOperation __binary_op, - random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism_tag) - { - if (_GLIBCXX_PARALLEL_CONDITION( - static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) - >= __gnu_parallel::_Settings::get().accumulate_minimal_n - && __gnu_parallel::__is_parallel(__parallelism_tag))) - { - _Tp __res = __init; - __gnu_parallel::__accumulate_selector<__RAIter> - __my_selector; - __gnu_parallel:: - __for_each_template_random_access_ed(__begin, __end, - __gnu_parallel::_Nothing(), - __my_selector, - __gnu_parallel:: - __accumulate_binop_reduct - <_BinaryOperation>(__binary_op), - __res, __res, -1); - return __res; - } - else - return accumulate(__begin, __end, __init, __binary_op, - __gnu_parallel::sequential_tag()); - } - - // Public interface. - template - inline _Tp - accumulate(_IIter __begin, _IIter __end, _Tp __init, - __gnu_parallel::_Parallelism __parallelism_tag) - { - typedef std::iterator_traits<_IIter> _IteratorTraits; - typedef typename _IteratorTraits::value_type _ValueType; - typedef typename _IteratorTraits::iterator_category _IteratorCategory; - - return __accumulate_switch(__begin, __end, __init, - __gnu_parallel::_Plus<_Tp, _ValueType>(), - _IteratorCategory(), __parallelism_tag); - } - - template - inline _Tp - accumulate(_IIter __begin, _IIter __end, _Tp __init) - { - typedef std::iterator_traits<_IIter> _IteratorTraits; - typedef typename _IteratorTraits::value_type _ValueType; - typedef typename _IteratorTraits::iterator_category _IteratorCategory; - - return __accumulate_switch(__begin, __end, __init, - __gnu_parallel::_Plus<_Tp, _ValueType>(), - _IteratorCategory()); - } - - template - inline _Tp - accumulate(_IIter __begin, _IIter __end, _Tp __init, - _BinaryOperation __binary_op, - __gnu_parallel::_Parallelism __parallelism_tag) - { - typedef iterator_traits<_IIter> _IteratorTraits; - typedef typename _IteratorTraits::iterator_category _IteratorCategory; - return __accumulate_switch(__begin, __end, __init, __binary_op, - _IteratorCategory(), __parallelism_tag); - } - - template - inline _Tp - accumulate(_IIter __begin, _IIter __end, _Tp __init, - _BinaryOperation __binary_op) - { - typedef iterator_traits<_IIter> _IteratorTraits; - typedef typename _IteratorTraits::iterator_category _IteratorCategory; - return __accumulate_switch(__begin, __end, __init, __binary_op, - _IteratorCategory()); - } - - - // Sequential fallback. - template - inline _Tp - inner_product(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init, - __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::inner_product( - __first1, __last1, __first2, __init); } - - template - inline _Tp - inner_product(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, - _BinaryFunction2 __binary_op2, - __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::inner_product(__first1, __last1, __first2, __init, - __binary_op1, __binary_op2); } - - // Parallel algorithm for random access iterators. - template - _Tp - __inner_product_switch(_RAIter1 __first1, - _RAIter1 __last1, - _RAIter2 __first2, _Tp __init, - _BinaryFunction1 __binary_op1, - _BinaryFunction2 __binary_op2, - random_access_iterator_tag, - random_access_iterator_tag, - __gnu_parallel::_Parallelism __parallelism_tag) - { - if (_GLIBCXX_PARALLEL_CONDITION((__last1 - __first1) - >= __gnu_parallel::_Settings::get(). - accumulate_minimal_n - && __gnu_parallel:: - __is_parallel(__parallelism_tag))) - { - _Tp __res = __init; - __gnu_parallel:: - __inner_product_selector<_RAIter1, - _RAIter2, _Tp> __my_selector(__first1, __first2); - __gnu_parallel:: - __for_each_template_random_access_ed( - __first1, __last1, __binary_op2, __my_selector, __binary_op1, - __res, __res, -1); - return __res; - } - else - return inner_product(__first1, __last1, __first2, __init, - __gnu_parallel::sequential_tag()); - } - - // No parallelism for input iterators. - template - inline _Tp - __inner_product_switch(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init, - _BinaryFunction1 __binary_op1, - _BinaryFunction2 __binary_op2, - _IteratorTag1, _IteratorTag2) - { return inner_product(__first1, __last1, __first2, __init, __binary_op1, - __binary_op2, __gnu_parallel::sequential_tag()); } - - template - inline _Tp - inner_product(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, - _BinaryFunction2 __binary_op2, - __gnu_parallel::_Parallelism __parallelism_tag) - { - typedef iterator_traits<_IIter1> _TraitsType1; - typedef typename _TraitsType1::iterator_category _IteratorCategory1; - - typedef iterator_traits<_IIter2> _TraitsType2; - typedef typename _TraitsType2::iterator_category _IteratorCategory2; - - return __inner_product_switch(__first1, __last1, __first2, __init, - __binary_op1, __binary_op2, - _IteratorCategory1(), _IteratorCategory2(), - __parallelism_tag); - } - - template - inline _Tp - inner_product(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, - _BinaryFunction2 __binary_op2) - { - typedef iterator_traits<_IIter1> _TraitsType1; - typedef typename _TraitsType1::iterator_category _IteratorCategory1; - - typedef iterator_traits<_IIter2> _TraitsType2; - typedef typename _TraitsType2::iterator_category _IteratorCategory2; - - return __inner_product_switch(__first1, __last1, __first2, __init, - __binary_op1, __binary_op2, - _IteratorCategory1(), - _IteratorCategory2()); - } - - template - inline _Tp - inner_product(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init, - __gnu_parallel::_Parallelism __parallelism_tag) - { - typedef iterator_traits<_IIter1> _TraitsType1; - typedef typename _TraitsType1::value_type _ValueType1; - typedef iterator_traits<_IIter2> _TraitsType2; - typedef typename _TraitsType2::value_type _ValueType2; - - typedef typename - __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type - _MultipliesResultType; - return __gnu_parallel::inner_product(__first1, __last1, __first2, __init, - __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(), - __gnu_parallel:: - _Multiplies<_ValueType1, _ValueType2>(), - __parallelism_tag); - } - - template - inline _Tp - inner_product(_IIter1 __first1, _IIter1 __last1, - _IIter2 __first2, _Tp __init) - { - typedef iterator_traits<_IIter1> _TraitsType1; - typedef typename _TraitsType1::value_type _ValueType1; - typedef iterator_traits<_IIter2> _TraitsType2; - typedef typename _TraitsType2::value_type _ValueType2; - - typedef typename - __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type - _MultipliesResultType; - return __gnu_parallel::inner_product(__first1, __last1, __first2, __init, - __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(), - __gnu_parallel:: - _Multiplies<_ValueType1, _ValueType2>()); - } - - // Sequential fallback. - template - inline _OutputIterator - partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result, - __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result); } - - // Sequential fallback. - template - inline _OutputIterator - partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result, - _BinaryOperation __bin_op, __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result, __bin_op); } - - // Sequential fallback for input iterator case. - template - inline _OutputIterator - __partial_sum_switch(_IIter __begin, _IIter __end, - _OutputIterator __result, _BinaryOperation __bin_op, - _IteratorTag1, _IteratorTag2) - { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result, __bin_op); } - - // Parallel algorithm for random access iterators. - template - _OutputIterator - __partial_sum_switch(_IIter __begin, _IIter __end, - _OutputIterator __result, _BinaryOperation __bin_op, - random_access_iterator_tag, - random_access_iterator_tag) - { - if (_GLIBCXX_PARALLEL_CONDITION( - static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) - >= __gnu_parallel::_Settings::get().partial_sum_minimal_n)) - return __gnu_parallel::__parallel_partial_sum(__begin, __end, - __result, __bin_op); - else - return partial_sum(__begin, __end, __result, __bin_op, - __gnu_parallel::sequential_tag()); - } - - // Public interface. - template - inline _OutputIterator - partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result) - { - typedef typename iterator_traits<_IIter>::value_type _ValueType; - return __gnu_parallel::partial_sum(__begin, __end, - __result, std::plus<_ValueType>()); - } - - // Public interface - template - inline _OutputIterator - partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result, - _BinaryOperation __binary_op) - { - typedef iterator_traits<_IIter> _ITraitsType; - typedef typename _ITraitsType::iterator_category _IIteratorCategory; - - typedef iterator_traits<_OutputIterator> _OTraitsType; - typedef typename _OTraitsType::iterator_category _OIterCategory; - - return __partial_sum_switch(__begin, __end, __result, __binary_op, - _IIteratorCategory(), _OIterCategory()); - } - - // Sequential fallback. - template - inline _OutputIterator - adjacent_difference(_IIter __begin, _IIter __end, _OutputIterator __result, - __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::adjacent_difference(__begin, __end, __result); } - - // Sequential fallback. - template - inline _OutputIterator - adjacent_difference(_IIter __begin, _IIter __end, - _OutputIterator __result, _BinaryOperation __bin_op, - __gnu_parallel::sequential_tag) - { return _GLIBCXX_STD_A::adjacent_difference(__begin, __end, - __result, __bin_op); } - - // Sequential fallback for input iterator case. - template - inline _OutputIterator - __adjacent_difference_switch(_IIter __begin, _IIter __end, - _OutputIterator __result, - _BinaryOperation __bin_op, _IteratorTag1, - _IteratorTag2) - { return adjacent_difference(__begin, __end, __result, __bin_op, - __gnu_parallel::sequential_tag()); } - - // Parallel algorithm for random access iterators. - template - _OutputIterator - __adjacent_difference_switch(_IIter __begin, _IIter __end, - _OutputIterator __result, - _BinaryOperation __bin_op, - random_access_iterator_tag, - random_access_iterator_tag, - __gnu_parallel::_Parallelism - __parallelism_tag) - { - if (_GLIBCXX_PARALLEL_CONDITION( - static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) - >= __gnu_parallel::_Settings::get().adjacent_difference_minimal_n - && __gnu_parallel::__is_parallel(__parallelism_tag))) - { - bool __dummy = true; - typedef __gnu_parallel::_IteratorPair<_IIter, _OutputIterator, - random_access_iterator_tag> _ItTrip; - *__result = *__begin; - _ItTrip __begin_pair(__begin + 1, __result + 1), - __end_pair(__end, __result + (__end - __begin)); - __gnu_parallel::__adjacent_difference_selector<_ItTrip> - __functionality; - __gnu_parallel:: - __for_each_template_random_access_ed( - __begin_pair, __end_pair, __bin_op, __functionality, - __gnu_parallel::_DummyReduct(), __dummy, __dummy, -1); - return __functionality._M_finish_iterator; - } - else - return adjacent_difference(__begin, __end, __result, __bin_op, - __gnu_parallel::sequential_tag()); - } - - // Public interface. - template - inline _OutputIterator - adjacent_difference(_IIter __begin, _IIter __end, - _OutputIterator __result, - __gnu_parallel::_Parallelism __parallelism_tag) - { - typedef iterator_traits<_IIter> _TraitsType; - typedef typename _TraitsType::value_type _ValueType; - return adjacent_difference(__begin, __end, __result, - std::minus<_ValueType>(), - __parallelism_tag); - } - - template - inline _OutputIterator - adjacent_difference(_IIter __begin, _IIter __end, - _OutputIterator __result) - { - typedef iterator_traits<_IIter> _TraitsType; - typedef typename _TraitsType::value_type _ValueType; - return adjacent_difference(__begin, __end, __result, - std::minus<_ValueType>()); - } - - template - inline _OutputIterator - adjacent_difference(_IIter __begin, _IIter __end, - _OutputIterator __result, _BinaryOperation __binary_op, - __gnu_parallel::_Parallelism __parallelism_tag) - { - typedef iterator_traits<_IIter> _ITraitsType; - typedef typename _ITraitsType::iterator_category _IIteratorCategory; - - typedef iterator_traits<_OutputIterator> _OTraitsType; - typedef typename _OTraitsType::iterator_category _OIterCategory; - - return __adjacent_difference_switch(__begin, __end, __result, - __binary_op, - _IIteratorCategory(), - _OIterCategory(), - __parallelism_tag); - } - - template - inline _OutputIterator - adjacent_difference(_IIter __begin, _IIter __end, - _OutputIterator __result, _BinaryOperation __binary_op) - { - typedef iterator_traits<_IIter> _ITraitsType; - typedef typename _ITraitsType::iterator_category _IIteratorCategory; - - typedef iterator_traits<_OutputIterator> _OTraitsType; - typedef typename _OTraitsType::iterator_category _OIterCategory; - - return __adjacent_difference_switch(__begin, __end, __result, - __binary_op, - _IIteratorCategory(), - _OIterCategory()); - } -} // end namespace -} // end namespace - -#endif /* _GLIBCXX_NUMERIC_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/array deleted file mode 100644 index e419aaaae..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/array +++ /dev/null @@ -1,281 +0,0 @@ -// Profile array implementation -*- C++ -*- - -// Copyright (C) 2012-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/array - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_PROFILE_ARRAY -#define _GLIBCXX_PROFILE_ARRAY 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - template - struct array - { - typedef _Tp value_type; - typedef value_type* pointer; - typedef const value_type* const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // Support for zero-sized arrays mandatory. - typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; - typename _AT_Type::_Type _M_elems; - - // No explicit construct/copy/destroy for aggregate type. - - // DR 776. - void - fill(const value_type& __u) - { std::fill_n(begin(), size(), __u); } - - void - swap(array& __other) - noexcept(_AT_Type::_Is_nothrow_swappable::value) - { std::swap_ranges(begin(), end(), __other.begin()); } - - // Iterators. - _GLIBCXX17_CONSTEXPR iterator - begin() noexcept - { return iterator(data()); } - - _GLIBCXX17_CONSTEXPR const_iterator - begin() const noexcept - { return const_iterator(data()); } - - _GLIBCXX17_CONSTEXPR iterator - end() noexcept - { return iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR const_iterator - end() const noexcept - { return const_iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR reverse_iterator - rbegin() noexcept - { return reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - rbegin() const noexcept - { return const_reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR reverse_iterator - rend() noexcept - { return reverse_iterator(begin()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - rend() const noexcept - { return const_reverse_iterator(begin()); } - - _GLIBCXX17_CONSTEXPR const_iterator - cbegin() const noexcept - { return const_iterator(data()); } - - _GLIBCXX17_CONSTEXPR const_iterator - cend() const noexcept - { return const_iterator(data() + _Nm); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - _GLIBCXX17_CONSTEXPR const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } - - // Capacity. - constexpr size_type - size() const noexcept { return _Nm; } - - constexpr size_type - max_size() const noexcept { return _Nm; } - - constexpr bool - empty() const noexcept { return size() == 0; } - - // Element access. - reference - operator[](size_type __n) noexcept - { return _AT_Type::_S_ref(_M_elems, __n); } - - constexpr const_reference - operator[](size_type __n) const noexcept - { return _AT_Type::_S_ref(_M_elems, __n); } - - _GLIBCXX17_CONSTEXPR reference - at(size_type __n) - { - if (__n >= _Nm) - std::__throw_out_of_range_fmt(__N("array::at: __n " - "(which is %zu) >= _Nm " - "(which is %zu)"), - __n, _Nm); - return _AT_Type::_S_ref(_M_elems, __n); - } - - constexpr const_reference - at(size_type __n) const - { - // Result of conditional expression must be an lvalue so use - // boolean ? lvalue : (throw-expr, lvalue) - return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) - : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " - ">= _Nm (which is %zu)"), - __n, _Nm), - _AT_Type::_S_ref(_M_elems, 0)); - } - - _GLIBCXX17_CONSTEXPR reference - front() noexcept - { return *begin(); } - - constexpr const_reference - front() const noexcept - { return _AT_Type::_S_ref(_M_elems, 0); } - - _GLIBCXX17_CONSTEXPR reference - back() noexcept - { return _Nm ? *(end() - 1) : *end(); } - - constexpr const_reference - back() const noexcept - { - return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) - : _AT_Type::_S_ref(_M_elems, 0); - } - - _GLIBCXX17_CONSTEXPR pointer - data() noexcept - { return _AT_Type::_S_ptr(_M_elems); } - - _GLIBCXX17_CONSTEXPR const_pointer - data() const noexcept - { return _AT_Type::_S_ptr(_M_elems); } - }; - - // Array comparisons. - template - inline bool - operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return std::equal(__one.begin(), __one.end(), __two.begin()); } - - template - inline bool - operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one == __two); } - - template - inline bool - operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) - { - return std::lexicographical_compare(__a.begin(), __a.end(), - __b.begin(), __b.end()); - } - - template - inline bool - operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return __two < __one; } - - template - inline bool - operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one > __two); } - - template - inline bool - operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one < __two); } - - // Specialized algorithms. - template - inline void - swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) - noexcept(noexcept(__one.swap(__two))) - { __one.swap(__two); } - - template - constexpr _Tp& - get(array<_Tp, _Nm>& __arr) noexcept - { - static_assert(_Int < _Nm, "index is out of bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); - } - - template - constexpr _Tp&& - get(array<_Tp, _Nm>&& __arr) noexcept - { - static_assert(_Int < _Nm, "index is out of bounds"); - return std::move(__profile::get<_Int>(__arr)); - } - - template - constexpr const _Tp& - get(const array<_Tp, _Nm>& __arr) noexcept - { - static_assert(_Int < _Nm, "index is out of bounds"); - return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: - _S_ref(__arr._M_elems, _Int); - } -} // namespace __profile - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // Tuple interface to class template array. - - /// tuple_size - template - struct tuple_size> - : public integral_constant { }; - - /// tuple_element - template - struct tuple_element<_Int, std::__profile::array<_Tp, _Nm>> - { - static_assert(_Int < _Nm, "index is out of bounds"); - typedef _Tp type; - }; - - template - struct __is_tuple_like_impl> : true_type - { }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // _GLIBCXX_PROFILE_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/base.h deleted file mode 100644 index 7e1a6a866..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/base.h +++ /dev/null @@ -1,58 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/base.h - * @brief Sequential helper functions. - * This file is a GNU profile extension to the Standard C++ Library. - */ - -// Written by Lixia Liu - -#ifndef _GLIBCXX_PROFILE_BASE_H -#define _GLIBCXX_PROFILE_BASE_H 1 - -#include - -// Profiling mode namespaces. - -/** - * @namespace std::__profile - * @brief GNU profile code, replaces standard behavior with profile behavior. - */ -namespace std _GLIBCXX_VISIBILITY(default) -{ - namespace __profile { } -} - -/** - * @namespace __gnu_profile - * @brief GNU profile code for public use. - */ -namespace __gnu_profile -{ - // Import all the profile versions of components in namespace std. - using namespace std::__profile; -} - - -#endif /* _GLIBCXX_PROFILE_BASE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/bitset deleted file mode 100644 index 3de9537cf..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/bitset +++ /dev/null @@ -1,245 +0,0 @@ -// Profiling bitset implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/bitset - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_BITSET -#define _GLIBCXX_PROFILE_BITSET - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::bitset wrapper with performance instrumentation, none at the - /// moment. - template - class bitset - : public _GLIBCXX_STD_C::bitset<_Nb> - { - typedef _GLIBCXX_STD_C::bitset<_Nb> _Base; - - public: - // 23.3.5.1 constructors: -#if __cplusplus < 201103L - bitset() - : _Base() { } -#else - constexpr bitset() = default; -#endif - -#if __cplusplus >= 201103L - constexpr bitset(unsigned long long __val) noexcept -#else - bitset(unsigned long __val) -#endif - : _Base(__val) { } - - template - explicit - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __pos = 0, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos)) - : _Base(__str, __pos, __n) { } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 396. what are characters zero and one. - template - bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __pos, - typename std::basic_string<_CharT, _Traits, _Alloc>::size_type - __n, - _CharT __zero, _CharT __one = _CharT('1')) - : _Base(__str, __pos, __n, __zero, __one) { } - - bitset(const _Base& __x) : _Base(__x) { } - -#if __cplusplus >= 201103L - template - explicit - bitset(const _CharT* __str, - typename std::basic_string<_CharT>::size_type __n - = std::basic_string<_CharT>::npos, - _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) - : _Base(__str, __n, __zero, __one) { } -#endif - - // 23.3.5.2 bitset operations: - bitset<_Nb>& - operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - _M_base() &= __rhs; - return *this; - } - - bitset<_Nb>& - operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - _M_base() |= __rhs; - return *this; - } - - bitset<_Nb>& - operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT - { - _M_base() ^= __rhs; - return *this; - } - - bitset<_Nb>& - operator<<=(size_t __pos) _GLIBCXX_NOEXCEPT - { - _M_base() <<= __pos; - return *this; - } - - bitset<_Nb>& - operator>>=(size_t __pos) _GLIBCXX_NOEXCEPT - { - _M_base() >>= __pos; - return *this; - } - - bitset<_Nb>& - set() _GLIBCXX_NOEXCEPT - { - _Base::set(); - return *this; - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 186. bitset::set() second parameter should be bool - bitset<_Nb>& - set(size_t __pos, bool __val = true) - { - _Base::set(__pos, __val); - return *this; - } - - bitset<_Nb>& - reset() _GLIBCXX_NOEXCEPT - { - _Base::reset(); - return *this; - } - - bitset<_Nb>& - reset(size_t __pos) - { - _Base::reset(__pos); - return *this; - } - - bitset<_Nb> - operator~() const _GLIBCXX_NOEXCEPT - { return bitset(~_M_base()); } - - bitset<_Nb>& - flip() _GLIBCXX_NOEXCEPT - { - _Base::flip(); - return *this; - } - - bitset<_Nb>& - flip(size_t __pos) - { - _Base::flip(__pos); - return *this; - } - - bool - operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT - { return _M_base() == __rhs; } - - bool - operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT - { return _M_base() != __rhs; } - - bitset<_Nb> - operator<<(size_t __pos) const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(_M_base() << __pos); } - - bitset<_Nb> - operator>>(size_t __pos) const _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(_M_base() >> __pos); } - - _Base& - _M_base() _GLIBCXX_NOEXCEPT - { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT - { return *this; } - }; - - template - bitset<_Nb> - operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(__x) &= __y; } - - template - bitset<_Nb> - operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(__x) |= __y; } - - template - bitset<_Nb> - operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT - { return bitset<_Nb>(__x) ^= __y; } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) - { return __is >> __x._M_base(); } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bitset<_Nb>& __x) - { return __os << __x._M_base(); } -} // namespace __profile - -#if __cplusplus >= 201103L - // DR 1182. - /// std::hash specialization for bitset. - template - struct hash<__profile::bitset<_Nb>> - : public __hash_base> - { - size_t - operator()(const __profile::bitset<_Nb>& __b) const noexcept - { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); } - }; -#endif - -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/deque deleted file mode 100644 index db4274c22..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/deque +++ /dev/null @@ -1,188 +0,0 @@ -// Profiling deque implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/deque - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_DEQUE -#define _GLIBCXX_PROFILE_DEQUE 1 - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::deque wrapper with performance instrumentation. - template > - class deque - : public _GLIBCXX_STD_C::deque<_Tp, _Allocator> - { - typedef _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::value_type value_type; - - // 23.2.1.1 construct/copy/destroy: - -#if __cplusplus < 201103L - deque() - : _Base() { } - deque(const deque& __x) - : _Base(__x) { } - - ~deque() { } -#else - deque() = default; - deque(const deque&) = default; - deque(deque&&) = default; - - deque(const deque& __d, const _Allocator& __a) - : _Base(__d, __a) { } - - deque(deque&& __d, const _Allocator& __a) - : _Base(std::move(__d), __a) { } - - ~deque() = default; - - deque(initializer_list __l, - const _Allocator& __a = _Allocator()) - : _Base(__l, __a) { } -#endif - - explicit - deque(const _Allocator& __a) - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - deque(size_type __n, const _Allocator& __a = _Allocator()) - : _Base(__n, __a) { } - - deque(size_type __n, const _Tp& __value, - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#else - explicit - deque(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - deque(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __a) - { } - - deque(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - deque& - operator=(const deque& __x) - { - _M_base() = __x; - return *this; - } -#else - deque& - operator=(const deque&) = default; - - deque& - operator=(deque&&) = default; - - deque& - operator=(initializer_list __l) - { - _M_base() = __l; - return *this; - } -#endif - - void - swap(deque& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { _Base::swap(__x); } - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - }; - - template - inline bool - operator==(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const deque<_Tp, _Alloc>& __lhs, - const deque<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __profile -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/forward_list deleted file mode 100644 index e1e181d03..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/forward_list +++ /dev/null @@ -1,219 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/forward_list - * This file is a GNU debug extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_FORWARD_LIST -#define _GLIBCXX_PROFILE_FORWARD_LIST 1 - -#if __cplusplus < 201103L -# include -#else - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::forward_list wrapper with performance instrumentation. - template > - class forward_list - : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> - { - typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::const_iterator const_iterator; - - // 23.2.3.1 construct/copy/destroy: - - forward_list() = default; - - explicit - forward_list(const _Alloc& __al) noexcept - : _Base(__al) { } - - forward_list(const forward_list& __list, const _Alloc& __al) - : _Base(__list, __al) - { } - - forward_list(forward_list&& __list, const _Alloc& __al) - : _Base(std::move(__list), __al) - { } - - explicit - forward_list(size_type __n, const _Alloc& __al = _Alloc()) - : _Base(__n, __al) - { } - - forward_list(size_type __n, const _Tp& __value, - const _Alloc& __al = _Alloc()) - : _Base(__n, __value, __al) - { } - - template> - forward_list(_InputIterator __first, _InputIterator __last, - const _Alloc& __al = _Alloc()) - : _Base(__first, __last, __al) - { } - - forward_list(const forward_list&) = default; - forward_list(forward_list&&) = default; - - forward_list(std::initializer_list<_Tp> __il, - const _Alloc& __al = _Alloc()) - : _Base(__il, __al) - { } - - ~forward_list() = default; - - forward_list& - operator=(const forward_list&) = default; - - forward_list& - operator=(forward_list&&) = default; - - forward_list& - operator=(std::initializer_list<_Tp> __il) - { - _M_base() = __il; - return *this; - } - - void - swap(forward_list& __fl) - noexcept( noexcept(declval<_Base&>().swap(__fl)) ) - { _Base::swap(__fl); } - - void - splice_after(const_iterator __pos, forward_list&& __fl) - { _Base::splice_after(__pos, std::move(__fl)); } - - void - splice_after(const_iterator __pos, forward_list& __list) - { _Base::splice_after(__pos, __list); } - - void - splice_after(const_iterator __pos, forward_list&& __list, - const_iterator __i) - { _Base::splice_after(__pos, std::move(__list), __i); } - - void - splice_after(const_iterator __pos, forward_list& __list, - const_iterator __i) - { _Base::splice_after(__pos, __list, __i); } - - void - splice_after(const_iterator __pos, forward_list&& __list, - const_iterator __before, const_iterator __last) - { _Base::splice_after(__pos, std::move(__list), __before, __last); } - - void - splice_after(const_iterator __pos, forward_list& __list, - const_iterator __before, const_iterator __last) - { _Base::splice_after(__pos, __list, __before, __last); } - - void - merge(forward_list&& __list) - { _Base::merge(std::move(__list)); } - - void - merge(forward_list& __list) - { _Base::merge(__list); } - - template - void - merge(forward_list&& __list, _Comp __comp) - { _Base::merge(std::move(__list), __comp); } - - template - void - merge(forward_list& __list, _Comp __comp) - { _Base::merge(__list, __comp); } - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - }; - - template - inline bool - operator==(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return __lx._M_base() == __ly._M_base(); } - - template - inline bool - operator<(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return __lx._M_base() < __ly._M_base(); } - - template - inline bool - operator!=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return !(__lx == __ly); } - - /// Based on operator< - template - inline bool - operator>(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return (__ly < __lx); } - - /// Based on operator< - template - inline bool - operator>=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return !(__lx < __ly); } - - /// Based on operator< - template - inline bool - operator<=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) - { return !(__ly < __lx); } - - /// See std::forward_list::swap(). - template - inline void - swap(forward_list<_Tp, _Alloc>& __lx, - forward_list<_Tp, _Alloc>& __ly) - noexcept(noexcept(__lx.swap(__ly))) - { __lx.swap(__ly); } - -} // namespace __profile -} // namespace std - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/list deleted file mode 100644 index 7dc63b163..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/list +++ /dev/null @@ -1,650 +0,0 @@ -// Profiling list implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/list - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_LIST -#define _GLIBCXX_PROFILE_LIST 1 - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - template - class _List_profile - { - _List& - _M_conjure() - { return *static_cast<_List*>(this); } - - public: - __gnu_profile::__list2slist_info* _M_list2slist_info; - __gnu_profile::__list2vector_info* _M_list2vector_info; - - _List_profile() _GLIBCXX_NOEXCEPT - { _M_profile_construct(); } - - void - _M_profile_construct() _GLIBCXX_NOEXCEPT - { - _M_list2slist_info = __profcxx_list2slist_construct(); - _M_list2vector_info = __profcxx_list2vector_construct(); - } - - void - _M_profile_destruct() _GLIBCXX_NOEXCEPT - { - __profcxx_list2vector_destruct(_M_list2vector_info); - _M_list2vector_info = 0; - __profcxx_list2slist_destruct(_M_list2slist_info); - _M_list2slist_info = 0; - } - - void - _M_swap(_List_profile& __other) - { - std::swap(_M_list2slist_info, __other._M_list2slist_info); - std::swap(_M_list2vector_info, __other._M_list2vector_info); - } - -#if __cplusplus >= 201103L - _List_profile(const _List_profile&) noexcept - : _List_profile() { } - _List_profile(_List_profile&& __other) noexcept - : _List_profile() - { _M_swap(__other); } - - _List_profile& - operator=(const _List_profile&) noexcept - { - _M_profile_destruct(); - _M_profile_construct(); - } - - _List_profile& - operator=(_List_profile&& __other) noexcept - { - _M_swap(__other); - __other._M_profile_destruct(); - __other._M_profile_construct(); - } -#endif - - ~_List_profile() - { _M_profile_destruct(); } - }; - - /** @brief List wrapper with performance instrumentation. */ - template > - class list - : public _GLIBCXX_STD_C::list<_Tp, _Allocator>, - public _List_profile > - { - typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __iterator_tracker - iterator; - typedef __iterator_tracker - const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // 23.2.2.1 construct/copy/destroy: - -#if __cplusplus < 201103L - list() { } - list(const list& __x) - : _Base(__x) { } - - ~list() { } -#else - list() = default; - list(const list&) = default; - list(list&&) = default; - ~list() = default; - - list(initializer_list __l, - const allocator_type& __a = allocator_type()) - : _Base(__l, __a) { } - - list(const list& __x, const allocator_type& __a) - : _Base(__x, __a) { } - - list(list&& __x, const allocator_type& __a) - : _Base(std::move(__x), __a) { } -#endif - - explicit - list(const _Allocator& __a) _GLIBCXX_NOEXCEPT - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - list(size_type __n, const allocator_type& __a = allocator_type()) - : _Base(__n, __a) { } - - list(size_type __n, const _Tp& __value, - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#else - explicit - list(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - list(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __a) { } - - list(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - list& - operator=(const list& __x) - { - this->_M_profile_destruct(); - _M_base() = __x; - this->_M_profile_construct(); - return *this; - } -#else - list& - operator=(const list&) = default; - - list& - operator=(list&&) = default; - - list& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } -#endif - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_rewind(this->_M_list2slist_info); - return iterator(_Base::end(), this); - } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_rewind(this->_M_list2slist_info); - return const_iterator(_Base::end(), this); - } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_rewind(this->_M_list2slist_info); - return reverse_iterator(end()); - } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_rewind(this->_M_list2slist_info); - return const_reverse_iterator(end()); - } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::cbegin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::cend(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // 23.2.2.2 capacity: - reference - back() _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_rewind(this->_M_list2slist_info); - return _Base::back(); - } - - const_reference - back() const _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_rewind(this->_M_list2slist_info); - return _Base::back(); - } - - // 23.2.2.3 modifiers: - void - push_front(const value_type& __x) - { - __profcxx_list2vector_invalid_operator(this->_M_list2vector_info); - __profcxx_list2slist_operation(this->_M_list2slist_info); - _Base::push_front(__x); - } - - void - pop_front() _GLIBCXX_NOEXCEPT - { - __profcxx_list2slist_operation(this->_M_list2slist_info); - _Base::pop_front(); - } - - void - pop_back() _GLIBCXX_NOEXCEPT - { - _Base::pop_back(); - __profcxx_list2slist_rewind(this->_M_list2slist_info); - } - -#if __cplusplus >= 201103L - template - iterator - emplace(const_iterator __position, _Args&&... __args) - { - return iterator(_Base::emplace(__position.base(), - std::forward<_Args>(__args)...), - this); - } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __pos, const _Tp& __x) -#else - insert(iterator __pos, const _Tp& __x) -#endif - { - _M_profile_insert(__pos, this->size()); - return iterator(_Base::insert(__pos.base(), __x), this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __pos, _Tp&& __x) - { - _M_profile_insert(__pos, this->size()); - return iterator(_Base::emplace(__pos.base(), std::move(__x)), - this); - } - - iterator - insert(const_iterator __pos, initializer_list __l) - { - _M_profile_insert(__pos, this->size()); - return iterator(_Base::insert(__pos.base(), __l), this); - } -#endif - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __pos, size_type __n, const _Tp& __x) - { - _M_profile_insert(__pos, this->size()); - return iterator(_Base::insert(__pos.base(), __n, __x), this); - } -#else - void - insert(iterator __pos, size_type __n, const _Tp& __x) - { - _M_profile_insert(__pos, this->size()); - _Base::insert(__pos.base(), __n, __x); - } -#endif - -#if __cplusplus >= 201103L - template> - iterator - insert(const_iterator __pos, _InputIterator __first, - _InputIterator __last) - { - _M_profile_insert(__pos, this->size()); - return iterator(_Base::insert(__pos.base(), __first, __last), - this); - } -#else - template - void - insert(iterator __pos, _InputIterator __first, - _InputIterator __last) - { - _M_profile_insert(__pos, this->size()); - _Base::insert(__pos.base(), __first, __last); - } -#endif - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __pos) noexcept -#else - erase(iterator __pos) -#endif - { return iterator(_Base::erase(__pos.base()), this); } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __pos, const_iterator __last) noexcept -#else - erase(iterator __pos, iterator __last) -#endif - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 151. can't currently clear() empty container - return iterator(_Base::erase(__pos.base(), __last.base()), this); - } - - void - swap(list& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - // 23.2.2.4 list operations: - void -#if __cplusplus >= 201103L - splice(const_iterator __pos, list&& __x) noexcept -#else - splice(iterator __pos, list& __x) -#endif - { this->splice(__pos, _GLIBCXX_MOVE(__x), __x.begin(), __x.end()); } - -#if __cplusplus >= 201103L - void - splice(const_iterator __pos, list& __x) noexcept - { this->splice(__pos, std::move(__x)); } - - void - splice(const_iterator __pos, list& __x, const_iterator __i) - { this->splice(__pos, std::move(__x), __i); } -#endif - - void -#if __cplusplus >= 201103L - splice(const_iterator __pos, list&& __x, const_iterator __i) noexcept -#else - splice(iterator __pos, list& __x, iterator __i) -#endif - { - // We used to perform the splice_alloc check: not anymore, redundant - // after implementing the relevant bits of N1599. - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - _Base::splice(__pos.base(), _GLIBCXX_MOVE(__x._M_base()), - __i.base()); - } - - void -#if __cplusplus >= 201103L - splice(const_iterator __pos, list&& __x, const_iterator __first, - const_iterator __last) noexcept -#else - splice(iterator __pos, list& __x, iterator __first, - iterator __last) -#endif - { - _Base::splice(__pos.base(), _GLIBCXX_MOVE(__x._M_base()), - __first.base(), __last.base()); - } - -#if __cplusplus >= 201103L - void - splice(const_iterator __pos, list& __x, - const_iterator __first, const_iterator __last) noexcept - { this->splice(__pos, std::move(__x), __first, __last); } -#endif - - void - remove(const _Tp& __value) - { - for (iterator __x = begin(); __x != end(); ) - { - if (*__x == __value) - __x = erase(__x); - else - ++__x; - } - } - - template - void - remove_if(_Predicate __pred) - { - for (iterator __x = begin(); __x != end(); ) - { - __profcxx_list2slist_operation(this->_M_list2slist_info); - if (__pred(*__x)) - __x = erase(__x); - else - ++__x; - } - } - - void - unique() - { - iterator __first = begin(); - iterator __last = end(); - if (__first == __last) - return; - iterator __next = __first; - while (++__next != __last) - { - __profcxx_list2slist_operation(this->_M_list2slist_info); - if (*__first == *__next) - erase(__next); - else - __first = __next; - __next = __first; - } - } - - template - void - unique(_BinaryPredicate __binary_pred) - { - iterator __first = begin(); - iterator __last = end(); - if (__first == __last) - return; - iterator __next = __first; - while (++__next != __last) - { - __profcxx_list2slist_operation(this->_M_list2slist_info); - if (__binary_pred(*__first, *__next)) - erase(__next); - else - __first = __next; - __next = __first; - } - } - - void -#if __cplusplus >= 201103L - merge(list&& __x) -#else - merge(list& __x) -#endif - { _Base::merge(_GLIBCXX_MOVE(__x._M_base())); } - -#if __cplusplus >= 201103L - void - merge(list& __x) - { this->merge(std::move(__x)); } -#endif - - template - void -#if __cplusplus >= 201103L - merge(list&& __x, _Compare __comp) -#else - merge(list& __x, _Compare __comp) -#endif - { _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp); } - -#if __cplusplus >= 201103L - template - void - merge(list& __x, _Compare __comp) - { this->merge(std::move(__x), __comp); } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - void _M_profile_iterate(int __rewind = 0) const - { - __profcxx_list2slist_operation(this->_M_list2slist_info); - __profcxx_list2vector_iterate(this->_M_list2vector_info, __rewind); - if (__rewind) - __profcxx_list2slist_rewind(this->_M_list2slist_info); - } - - private: - size_type - _M_profile_insert(const_iterator __pos, size_type __size) - { - size_type __shift = 0; - typename _Base::const_iterator __it = __pos.base(); - for (; __it != _Base::end(); ++__it) - __shift++; - __profcxx_list2slist_rewind(this->_M_list2slist_info); - __profcxx_list2slist_operation(this->_M_list2slist_info); - __profcxx_list2vector_insert(this->_M_list2vector_info, __shift, __size); - } - }; - - template - inline bool - operator==(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const list<_Tp, _Alloc>& __lhs, - const list<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __profile -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/map deleted file mode 100644 index c102f97eb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/map +++ /dev/null @@ -1,35 +0,0 @@ -// Profiling map/multimap implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/map - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_MAP -#define _GLIBCXX_PROFILE_MAP 1 - -#include -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/map.h deleted file mode 100644 index f66401e42..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/map.h +++ /dev/null @@ -1,705 +0,0 @@ -// Profiling map implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/map.h - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_MAP_H -#define _GLIBCXX_PROFILE_MAP_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::map wrapper with performance instrumentation. - template, - typename _Allocator = std::allocator > > - class map - : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>, - public _Ordered_profile > - { - typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef typename _Base::value_type value_type; - typedef _Compare key_compare; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __iterator_tracker<_Base_iterator, map> iterator; - typedef __iterator_tracker<_Base_const_iterator, - map> const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - // 23.3.1.1 construct/copy/destroy: - -#if __cplusplus < 201103L - map() - : _Base() { } - map(const map& __x) - : _Base(__x) { } - ~map() - { } -#else - map() = default; - map(const map&) = default; - map(map&&) = default; - ~map() = default; -#endif - - explicit - map(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - -#if __cplusplus >= 201103L - template> -#else - template -#endif - map(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __comp, __a) { } - - map(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus >= 201103L - map(initializer_list __l, - const _Compare& __c = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__l, __c, __a) { } - - explicit - map(const _Allocator& __a) - : _Base(__a) { } - - map(const map& __x, const _Allocator& __a) - : _Base(__x, __a) { } - - map(map&& __x, const _Allocator& __a) - noexcept( noexcept(_Base(std::move(__x), __a)) ) - : _Base(std::move(__x), __a) { } - - map(initializer_list __l, const _Allocator& __a) - : _Base(__l, __a) { } - - template - map(_InputIterator __first, _InputIterator __last, - const _Allocator& __a) - : _Base(__first, __last, __a) { } -#endif - -#if __cplusplus < 201103L - map& - operator=(const map& __x) - { - this->_M_profile_destruct(); - _M_base() = __x; - this->_M_profile_construct(); - return *this; - } -#else - map& - operator=(const map&) = default; - - map& - operator=(map&&) = default; - - map& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } -#endif - - // iterators - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::cbegin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::cend(), this); } -#endif - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(end()); - } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(end()); - } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(begin()); - } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(begin()); - } - -#if __cplusplus >= 201103L - const_reverse_iterator - crbegin() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cend()); - } - - const_reverse_iterator - crend() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cbegin()); - } -#endif - - // 23.3.1.2 element access: - mapped_type& - operator[](const key_type& __k) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::operator[](__k); - } - -#if __cplusplus >= 201103L - mapped_type& - operator[](key_type&& __k) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::operator[](std::move(__k)); - } -#endif - - mapped_type& - at(const key_type& __k) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::at(__k); - } - - const mapped_type& - at(const key_type& __k) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::at(__k); - } - - // modifiers: -#if __cplusplus >= 201103L - template - std::pair - emplace(_Args&&... __args) - { - // The cost is the same whether or not the element is inserted so we - // always report insertion of 1 element. - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - auto __base_ret = _Base::emplace(std::forward<_Args>(__args)...); - return std::make_pair(iterator(__base_ret.first, this), - __base_ret.second); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - auto size_before = this->size(); - auto __res - = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - - std::pair - insert(const value_type& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - std::pair<_Base_iterator, bool> __base_ret = _Base::insert(__x); - return std::make_pair(iterator(__base_ret.first, this), - __base_ret.second); - } - -#if __cplusplus >= 201103L - template::value>::type> - std::pair - insert(_Pair&& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - auto __base_ret= _Base::insert(std::forward<_Pair>(__x)); - return std::make_pair(iterator(__base_ret.first, this), - __base_ret.second); - } -#endif - -#if __cplusplus >= 201103L - void - insert(std::initializer_list __list) - { insert(__list.begin(), __list.end()); } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __pos, const value_type& __x) -#else - insert(iterator __pos, const value_type& __x) -#endif - { - size_type size_before = this->size(); - _Base_iterator __res = _Base::insert(__pos.base(), __x); - - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - template::value>::type> - iterator - insert(const_iterator __pos, _Pair&& __x) - { - size_type size_before = this->size(); - auto __res = _Base::insert(__pos.base(), std::forward<_Pair>(__x)); - - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - for (; __first != __last; ++__first) - insert(*__first); - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::erase(__pos.base()), this); - } - - iterator - erase(iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::erase(__pos.base()), this); - } -#else - void - erase(iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - _Base::erase(__pos.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return _Base::erase(__x); - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - if (__first != __last) - { - iterator __ret; - for (; __first != __last;) - __ret = erase(__first++); - return __ret; - } - else - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - for (; __first != __last;) - erase(__first++); - } -#endif - - void - swap(map& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - // 23.3.1.3 map operations: - iterator - find(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return iterator(_Base::find(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } -#endif - - const_iterator - find(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return const_iterator(_Base::find(__x), this); - } - -#if __cplusplus > 201103L - template::type> - const_iterator - find(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } -#endif - - size_type - count(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } - -#if __cplusplus > 201103L - template::type> - size_type - count(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } -#endif - - iterator - lower_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::lower_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } -#endif - - const_iterator - lower_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::lower_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } -#endif - - iterator - upper_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::upper_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } -#endif - - const_iterator - upper_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::upper_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } -#endif - - std::pair - equal_range(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_iterator, _Base_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(iterator(__base_ret.first, this), - iterator(__base_ret.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - std::pair - equal_range(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(const_iterator(__base_ret.first, this), - const_iterator(__base_ret.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - private: - /** If hint is used we consider that the map and unordered_map - * operations have equivalent insertion cost so we do not update metrics - * about it. - * Note that to find out if hint has been used is libstdc++ - * implementation dependent. - */ - bool - _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) - { - return (__hint == __res - || (__hint == _M_base().end() && ++__res == _M_base().end()) - || (__hint != _M_base().end() && (++__hint == __res - || ++__res == --__hint))); - } - - - template - friend bool - operator==(const map<_K1, _T1, _C1, _A1>&, - const map<_K1, _T1, _C1, _A1>&); - - template - friend bool - operator<(const map<_K1, _T1, _C1, _A1>&, - const map<_K1, _T1, _C1, _A1>&); - }; - - template - inline bool - operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() == __rhs._M_base(); - } - - template - inline bool - operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() < __rhs._M_base(); - } - - template - inline bool - operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return !(__lhs == __rhs); } - - template - inline bool - operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return !(__rhs < __lhs); } - - template - inline bool - operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return !(__lhs < __rhs); } - - template - inline bool - operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, - const map<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __rhs < __lhs; } - - template - inline void - swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs, - map<_Key, _Tp, _Compare, _Allocator>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __profile -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/multimap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/multimap.h deleted file mode 100644 index 86d1cf829..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/multimap.h +++ /dev/null @@ -1,663 +0,0 @@ -// Profiling multimap implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/multimap.h - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_MULTIMAP_H -#define _GLIBCXX_PROFILE_MULTIMAP_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::multimap wrapper with performance instrumentation. - template, - typename _Allocator = std::allocator > > - class multimap - : public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator>, - public _Ordered_profile > - { - typedef _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> _Base; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - public: - // types: - typedef _Key key_type; - typedef _Tp mapped_type; - typedef std::pair value_type; - typedef _Compare key_compare; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __iterator_tracker<_Base_iterator, - multimap> iterator; - typedef __iterator_tracker<_Base_const_iterator, - multimap> const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - // 23.3.1.1 construct/copy/destroy: - -#if __cplusplus < 201103L - multimap() - : _Base() { } - multimap(const multimap& __x) - : _Base(__x) { } - ~multimap() { } -#else - multimap() = default; - multimap(const multimap&) = default; - multimap(multimap&&) = default; - ~multimap() = default; -#endif - - explicit multimap(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - -#if __cplusplus >= 201103L - template> -#else - template -#endif - multimap(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __comp, __a) { } - -#if __cplusplus >= 201103L - multimap(initializer_list __l, - const _Compare& __c = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__l, __c, __a) { } - - explicit - multimap(const _Allocator& __a) - : _Base(__a) { } - - multimap(const multimap& __x, const _Allocator& __a) - : _Base(__x, __a) { } - - multimap(multimap&& __x, const _Allocator& __a) - noexcept( noexcept(_Base(std::move(__x), __a)) ) - : _Base(std::move(__x), __a) { } - - multimap(initializer_list __l, const _Allocator& __a) - : _Base(__l, __a) { } - - template - multimap(_InputIterator __first, _InputIterator __last, - const _Allocator& __a) - : _Base(__first, __last, __a) { } -#endif - - multimap(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - multimap& - operator=(const multimap& __x) - { - this->_M_profile_destruct(); - _M_base() = __x; - this->_M_profile_construct(); - return *this; - } -#else - multimap& - operator=(const multimap&) = default; - - multimap& - operator=(multimap&&) = default; - - multimap& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } -#endif - - // iterators - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::cbegin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::cend(), this); } -#endif - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(end()); - } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(end()); - } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(begin()); - } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(begin()); - } - -#if __cplusplus >= 201103L - const_reverse_iterator - crbegin() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cend()); - } - - const_reverse_iterator - crend() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cbegin()); - } -#endif - - // modifiers: -#if __cplusplus >= 201103L - template - iterator - emplace(_Args&&... __args) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - auto size_before = this->size(); - auto __res - = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - - iterator - insert(const value_type& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::insert(__x), this); - } - -#if __cplusplus >= 201103L - template::value>::type> - iterator - insert(_Pair&& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::insert(std::forward<_Pair>(__x)), this); - } -#endif - -#if __cplusplus >= 201103L - void - insert(std::initializer_list __list) - { insert(__list.begin(), __list.end()); } -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __pos, const value_type& __x) -#else - insert(iterator __pos, const value_type& __x) -#endif - { - size_type size_before = this->size(); - _Base_iterator __res = _Base::insert(__pos.base(), __x); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - template::value>::type> - iterator - insert(const_iterator __pos, _Pair&& __x) - { - size_type size_before = this->size(); - auto __res = _Base::insert(__pos.base(), std::forward<_Pair>(__x)); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - for (; __first != __last; ++__first) - insert(*__first); - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::erase(__pos.base()), this); - } - - iterator - erase(iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::erase(__pos.base()), this); - } -#else - void - erase(iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - _Base::erase(__pos.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return _Base::erase(__x); - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - if (__first != __last) - { - iterator __ret; - for (; __first != __last;) - __ret = erase(__first++); - return __ret; - } - else - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - for (; __first != __last;) - erase(__first++); - } -#endif - - void - swap(multimap& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - std::swap(this->_M_map2umap_info, __x._M_map2umap_info); - _Base::swap(__x); - } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - // 23.3.1.3 multimap operations: - iterator - find(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return iterator(_Base::find(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } -#endif - - const_iterator - find(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return const_iterator(_Base::find(__x), this); - } - -#if __cplusplus > 201103L - template::type> - const_iterator - find(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } -#endif - - size_type - count(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } - -#if __cplusplus > 201103L - template::type> - size_type - count(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } -#endif - - iterator - lower_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::lower_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } -#endif - - const_iterator - lower_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::lower_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } -#endif - - iterator - upper_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::upper_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } -#endif - - const_iterator - upper_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::upper_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } -#endif - - std::pair - equal_range(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_iterator, _Base_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(iterator(__base_ret.first, this), - iterator(__base_ret.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - std::pair - equal_range(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(const_iterator(__base_ret.first, this), - const_iterator(__base_ret.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - private: - /** If hint is used we consider that the map and unordered_map - * operations have equivalent insertion cost so we do not update metrics - * about it. - * Note that to find out if hint has been used is libstdc++ - * implementation dependent. - */ - bool - _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) - { - return (__hint == __res - || (__hint == _M_base().end() && ++__res == _M_base().end()) - || (__hint != _M_base().end() && (++__hint == __res - || ++__res == --__hint))); - } - - template - friend bool - operator==(const multimap<_K1, _T1, _C1, _A1>&, - const multimap<_K1, _T1, _C1, _A1>&); - - template - friend bool - operator<(const multimap<_K1, _T1, _C1, _A1>&, - const multimap<_K1, _T1, _C1, _A1>&); - }; - - template - inline bool - operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() == __rhs._M_base(); - } - - template - inline bool - operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() < __rhs._M_base(); - } - - template - inline bool - operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return !(__lhs == __rhs); } - - template - inline bool - operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return !(__rhs < __lhs); } - - template - inline bool - operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return !(__lhs < __rhs); } - - template - inline bool - operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - { return __rhs < __lhs; } - - template - inline void - swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, - multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __profile -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/multiset.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/multiset.h deleted file mode 100644 index a545b5260..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/multiset.h +++ /dev/null @@ -1,647 +0,0 @@ -// Profiling multiset implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/multiset.h - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_MULTISET_H -#define _GLIBCXX_PROFILE_MULTISET_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::multiset wrapper with performance instrumentation. - template, - typename _Allocator = std::allocator<_Key> > - class multiset - : public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator>, - public _Ordered_profile > - { - typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - public: - // types: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - typedef _Allocator allocator_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __iterator_tracker<_Base_iterator, - multiset> iterator; - typedef __iterator_tracker<_Base_const_iterator, - multiset> const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - // 23.3.3.1 construct/copy/destroy: - -#if __cplusplus < 201103L - multiset() - : _Base() { } - multiset(const multiset& __x) - : _Base(__x) { } - ~multiset() { } -#else - multiset() = default; - multiset(const multiset&) = default; - multiset(multiset&&) = default; - ~multiset() = default; -#endif - - explicit multiset(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - -#if __cplusplus >= 201103L - template> -#else - template -#endif - multiset(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __comp, __a) { } - -#if __cplusplus >= 201103L - multiset(initializer_list __l, - const _Compare& __comp = _Compare(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __comp, __a) { } - - explicit - multiset(const allocator_type& __a) - : _Base(__a) { } - - multiset(const multiset& __x, const allocator_type& __a) - : _Base(__x, __a) { } - - multiset(multiset&& __x, const allocator_type& __a) - noexcept( noexcept(_Base(std::move(__x), __a)) ) - : _Base(std::move(__x), __a) { } - - multiset(initializer_list __l, const allocator_type& __a) - : _Base(__l, __a) { } - - template - multiset(_InputIterator __first, _InputIterator __last, - const allocator_type& __a) - : _Base(__first, __last, __a) { } -#endif - - multiset(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - multiset& - operator=(const multiset& __x) - { - this->_M_profile_destruct(); - _M_base() = __x; - this->_M_profile_construct(); - return *this; - } -#else - multiset& - operator=(const multiset&) = default; - - multiset& - operator=(multiset&&) = default; - - multiset& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } -#endif - - // iterators - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::cbegin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::cend(), this); } -#endif - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(end()); - } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(end()); - } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(begin()); - } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(begin()); - } - -#if __cplusplus >= 201103L - const_reverse_iterator - crbegin() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cend()); - } - - const_reverse_iterator - crend() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cbegin()); - } -#endif - - void - swap(multiset& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - // modifiers: -#if __cplusplus >= 201103L - template - iterator - emplace(_Args&&... __args) - { - // The cost is the same whether or not the element is inserted so we - // always report insertion of 1 element. - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - auto size_before = this->size(); - auto __res - = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - - iterator - insert(const value_type& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::insert(__x), this); - } - -#if __cplusplus >= 201103L - iterator - insert(value_type&& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::insert(std::move(__x)), this); - } -#endif - - iterator - insert(const_iterator __pos, const value_type& __x) - { - size_type size_before = this->size(); - _Base_iterator __res = _Base::insert(__pos.base(), __x); - - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __pos, value_type&& __x) - { - auto size_before = this->size(); - auto __res = _Base::insert(__pos.base(), std::move(__x)); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - void - insert(_InputIterator __first, _InputIterator __last) - { - for (; __first != __last; ++__first) - insert(*__first); - } - -#if __cplusplus >= 201103L - void - insert(initializer_list __l) - { insert(__l.begin(), __l.end()); } -#endif - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::erase(__pos.base()), this); - } -#else - void - erase(iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - _Base::erase(__pos.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return _Base::erase(__x); - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - if (__first != __last) - { - iterator __ret; - for (; __first != __last;) - __ret = erase(__first++); - return __ret; - } - else - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - for (; __first != __last;) - erase(__first++); - } -#endif - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - size_type - count(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } - -#if __cplusplus > 201103L - template::type> - size_type - count(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } -#endif - - // multiset operations: - iterator - find(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return iterator(_Base::find(__x), this); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - find(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return const_iterator(_Base::find(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } - - template::type> - const_iterator - find(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } -#endif - - iterator - lower_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return iterator(_Base::lower_bound(__x), this); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - lower_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::lower_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } - - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } -#endif - - iterator - upper_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::upper_bound(__x), this); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - const_iterator - upper_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::upper_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } - - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } -#endif - - std::pair - equal_range(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_iterator, _Base_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(iterator(__base_ret.first, this), - iterator(__base_ret.second, this)); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 214. set::find() missing const overload - std::pair - equal_range(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(const_iterator(__base_ret.first, this), - const_iterator(__base_ret.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } - - template::type> - std::pair - equal_range(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - private: - /** If hint is used we consider that the map and unordered_map - * operations have equivalent insertion cost so we do not update metrics - * about it. - * Note that to find out if hint has been used is libstdc++ - * implementation dependent. - */ - bool - _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) - { - return (__hint == __res - || (__hint == _M_base().end() && ++__res == _M_base().end()) - || (__hint != _M_base().end() && (++__hint == __res - || ++__res == --__hint))); - } - - template - friend bool - operator==(const multiset<_K1, _C1, _A1>&, - const multiset<_K1, _C1, _A1>&); - - template - friend bool - operator< (const multiset<_K1, _C1, _A1>&, - const multiset<_K1, _C1, _A1>&); - }; - - template - inline bool - operator==(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() == __rhs._M_base(); - } - - template - inline bool - operator<(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() < __rhs._M_base(); - } - - template - inline bool - operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return !(__lhs == __rhs); } - - template - inline bool - operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return !(__rhs < __lhs); } - - template - inline bool - operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return !(__lhs < __rhs); } - - template - inline bool - operator>(const multiset<_Key, _Compare, _Allocator>& __lhs, - const multiset<_Key, _Compare, _Allocator>& __rhs) - { return __rhs < __lhs; } - - template - void - swap(multiset<_Key, _Compare, _Allocator>& __x, - multiset<_Key, _Compare, _Allocator>& __y) - _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) - { return __x.swap(__y); } - -} // namespace __profile -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/set deleted file mode 100644 index 7c88d59a8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/set +++ /dev/null @@ -1,35 +0,0 @@ -// Profiling set/multiset implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/set - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_SET -#define _GLIBCXX_PROFILE_SET 1 - -#include -#include -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/set.h deleted file mode 100644 index 723e7da9c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/set.h +++ /dev/null @@ -1,628 +0,0 @@ -// Profiling set implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file profile/set.h - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_SET_H -#define _GLIBCXX_PROFILE_SET_H 1 - -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::set wrapper with performance instrumentation. - template, - typename _Allocator = std::allocator<_Key> > - class set - : public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>, - public _Ordered_profile > - { - typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - public: - // types: - typedef _Key key_type; - typedef _Key value_type; - typedef _Compare key_compare; - typedef _Compare value_compare; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __iterator_tracker<_Base_iterator, set> iterator; - typedef __iterator_tracker<_Base_const_iterator, - set> const_iterator; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - // 23.3.3.1 construct/copy/destroy: -#if __cplusplus < 201103L - set() - : _Base() { } - set(const set& __x) - : _Base(__x) { } - ~set() { } -#else - set() = default; - set(const set&) = default; - set(set&&) = default; - ~set() = default; -#endif - - explicit set(const _Compare& __comp, - const _Allocator& __a = _Allocator()) - : _Base(__comp, __a) { } - -#if __cplusplus >= 201103L - template> -#else - template -#endif - set(_InputIterator __first, _InputIterator __last, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __comp, __a) { } - -#if __cplusplus >= 201103L - set(initializer_list __l, - const _Compare& __comp = _Compare(), - const _Allocator& __a = _Allocator()) - : _Base(__l, __comp, __a) { } - - explicit - set(const _Allocator& __a) - : _Base(__a) { } - - set(const set& __x, const _Allocator& __a) - : _Base(__x, __a) { } - - set(set&& __x, const _Allocator& __a) - noexcept( noexcept(_Base(std::move(__x), __a)) ) - : _Base(std::move(__x), __a) { } - - set(initializer_list __l, const _Allocator& __a) - : _Base(__l, __a) { } - - template - set(_InputIterator __first, _InputIterator __last, - const _Allocator& __a) - : _Base(__first, __last, __a) { } -#endif - - set(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus < 201103L - set& - operator=(const set& __x) - { - this->_M_profile_destruct(); - _M_base() = __x; - this->_M_profile_construct(); - return *this; - } -#else - set& - operator=(const set&) = default; - - set& - operator=(set&&) = default; - - set& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } -#endif - - // iterators - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::cbegin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::cend(), this); } -#endif - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(end()); - } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(end()); - } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return reverse_iterator(begin()); - } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(begin()); - } - -#if __cplusplus >= 201103L - const_reverse_iterator - crbegin() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cend()); - } - - const_reverse_iterator - crend() const noexcept - { - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_reverse_iterator(cbegin()); - } -#endif - - void - swap(set& __x) - _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - // modifiers: -#if __cplusplus >= 201103L - template - std::pair - emplace(_Args&&... __args) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - auto __base_ret = _Base::emplace(std::forward<_Args>(__args)...); - return std::make_pair(iterator(__base_ret.first, this), - __base_ret.second); - } - - template - iterator - emplace_hint(const_iterator __pos, _Args&&... __args) - { - auto size_before = this->size(); - auto __res - = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } -#endif - - std::pair - insert(const value_type& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - std::pair<_Base_iterator, bool> __base_ret = _Base::insert(__x); - return std::make_pair(iterator(__base_ret.first, this), - __base_ret.second); - } - -#if __cplusplus >= 201103L - std::pair - insert(value_type&& __x) - { - __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); - std::pair<_Base_iterator, bool> __base_ret - = _Base::insert(std::move(__x)); - return std::make_pair(iterator(__base_ret.first, this), - __base_ret.second); - } -#endif - - iterator - insert(const_iterator __pos, const value_type& __x) - { - size_type size_before = this->size(); - _Base_iterator __res = _Base::insert(__pos.base(), __x); - __profcxx_map2umap_insert(this->_M_map2umap_info, - size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __pos, value_type&& __x) - { return iterator(_Base::insert(__pos.base(), std::move(__x)), this); } -#endif - - template - void - insert(_InputIterator __first, _InputIterator __last) - { - for (; __first != __last; ++__first) - insert(*__first); - } - -#if __cplusplus >= 201103L - void - insert(initializer_list __l) - { insert(__l.begin(), __l.end()); } -#endif - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return iterator(_Base::erase(__pos.base()), this); - } -#else - void - erase(iterator __pos) - { - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - _Base::erase(__pos.base()); - } -#endif - - size_type - erase(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); - return _Base::erase(__x); - } - -#if __cplusplus >= 201103L - iterator - erase(const_iterator __first, const_iterator __last) - { - if (__first != __last) - { - iterator __ret; - for (; __first != __last;) - __ret = erase(__first++); - return __ret; - } - - return iterator(_Base::erase(__first.base(), __last.base()), this); - } -#else - void - erase(iterator __first, iterator __last) - { - for (; __first != __last;) - erase(__first++); - } -#endif - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - size_type - count(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } - -#if __cplusplus > 201103L - template::type> - size_type - count(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return _Base::count(__x); - } -#endif - - // set operations: - iterator - find(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return iterator(_Base::find(__x), this); - } - - const_iterator - find(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return const_iterator(_Base::find(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - find(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } - - template::type> - const_iterator - find(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - return { _Base::find(__x), this }; - } -#endif - - iterator - lower_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::lower_bound(__x), this); - } - - const_iterator - lower_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::lower_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - lower_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } - - template::type> - const_iterator - lower_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::lower_bound(__x), this }; - } -#endif - - iterator - upper_bound(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return iterator(_Base::upper_bound(__x), this); - } - - const_iterator - upper_bound(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return const_iterator(_Base::upper_bound(__x), this); - } - -#if __cplusplus > 201103L - template::type> - iterator - upper_bound(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } - - template::type> - const_iterator - upper_bound(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - __profcxx_map2umap_invalidate(this->_M_map2umap_info); - return { _Base::upper_bound(__x), this }; - } -#endif - - std::pair - equal_range(const key_type& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_iterator, _Base_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(iterator(__base_ret.first, this), - iterator(__base_ret.second, this)); - } - - std::pair - equal_range(const key_type& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret - = _Base::equal_range(__x); - return std::make_pair(const_iterator(__base_ret.first, this), - const_iterator(__base_ret.second, this)); - } - -#if __cplusplus > 201103L - template::type> - std::pair - equal_range(const _Kt& __x) - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } - - template::type> - std::pair - equal_range(const _Kt& __x) const - { - __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); - auto __res = _Base::equal_range(__x); - return { { __res.first, this }, { __res.second, this } }; - } -#endif - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - private: - /** If hint is used we consider that the map and unordered_map - * operations have equivalent insertion cost so we do not update metrics - * about it. - * Note that to find out if hint has been used is libstdc++ - * implementation dependent. - */ - bool - _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) - { - return (__hint == __res - || (__hint == _M_base().end() && ++__res == _M_base().end()) - || (__hint != _M_base().end() && (++__hint == __res - || ++__res == --__hint))); - } - - template - friend bool - operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); - - template - friend bool - operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); - }; - - template - inline bool - operator==(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() == __rhs._M_base(); - } - - template - inline bool - operator<(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { - __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); - __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); - return __lhs._M_base() < __rhs._M_base(); - } - - template - inline bool - operator!=(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return !(__lhs == __rhs); } - - template - inline bool - operator<=(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return !(__rhs < __lhs); } - - template - inline bool - operator>=(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return !(__lhs < __rhs); } - - template - inline bool - operator>(const set<_Key, _Compare, _Allocator>& __lhs, - const set<_Key, _Compare, _Allocator>& __rhs) - { return __rhs < __lhs; } - - template - void - swap(set<_Key, _Compare, _Allocator>& __x, - set<_Key, _Compare, _Allocator>& __y) - _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) - { return __x.swap(__y); } - -} // namespace __profile -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_map deleted file mode 100644 index 32b0464bc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_map +++ /dev/null @@ -1,586 +0,0 @@ -// Profiling unordered_map/unordered_multimap implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/unordered_map - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_UNORDERED_MAP -#define _GLIBCXX_PROFILE_UNORDERED_MAP 1 - -#if __cplusplus < 201103L -# include -#else -# include - -#include -#include - -#define _GLIBCXX_BASE unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> -#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /// Class std::unordered_map wrapper with performance instrumentation. - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator > > - class unordered_map - : public _GLIBCXX_STD_BASE, - public _Unordered_profile, - true> - { - typedef typename _GLIBCXX_STD_BASE _Base; - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - typedef typename _Base::mapped_type mapped_type; - - typedef typename _Base::iterator iterator; - typedef typename _Base::const_iterator const_iterator; - - unordered_map() = default; - - explicit - unordered_map(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - unordered_map(_InputIterator __f, _InputIterator __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) { } - - unordered_map(const unordered_map&) = default; - - unordered_map(const _Base& __x) - : _Base(__x) { } - - unordered_map(unordered_map&&) = default; - - explicit - unordered_map(const allocator_type& __a) - : _Base(__a) { } - - unordered_map(const unordered_map& __umap, - const allocator_type& __a) - : _Base(__umap, __a) { } - - unordered_map(unordered_map&& __umap, - const allocator_type& __a) - : _Base(std::move(__umap._M_base()), __a) { } - - unordered_map(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) { } - - unordered_map(size_type __n, const allocator_type& __a) - : unordered_map(__n, hasher(), key_equal(), __a) - { } - - unordered_map(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_map(__n, __hf, key_equal(), __a) - { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_map(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_map(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_map(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_map(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_map(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_map(__l, __n, __hf, key_equal(), __a) - { } - - unordered_map& - operator=(const unordered_map&) = default; - - unordered_map& - operator=(unordered_map&&) = default; - - unordered_map& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } - - void - clear() noexcept - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - template - std::pair - emplace(_Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - std::pair __res - = _Base::emplace(std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - template - iterator - emplace_hint(const_iterator __it, _Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - iterator __res - = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - void - insert(std::initializer_list __l) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__l); - this->_M_profile_resize(__old_size); - } - - std::pair - insert(const value_type& __obj) - { - size_type __old_size = _Base::bucket_count(); - std::pair __res = _Base::insert(__obj); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(const_iterator __iter, const value_type& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, __v); - this->_M_profile_resize(__old_size); - return __res; - } - - template::value>::type> - std::pair - insert(_Pair&& __obj) - { - size_type __old_size = _Base::bucket_count(); - std::pair __res - = _Base::insert(std::forward<_Pair>(__obj)); - this->_M_profile_resize(__old_size); - return __res; - } - - template::value>::type> - iterator - insert(const_iterator __iter, _Pair&& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, std::forward<_Pair>(__v)); - this->_M_profile_resize(__old_size); - return __res; - } - - template - void - insert(_InputIter __first, _InputIter __last) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__first, __last); - this->_M_profile_resize(__old_size); - } - - // operator[] - mapped_type& - operator[](const _Key& __k) - { - size_type __old_size = _Base::bucket_count(); - mapped_type& __res = _M_base()[__k]; - this->_M_profile_resize(__old_size); - return __res; - } - - mapped_type& - operator[](_Key&& __k) - { - size_type __old_size = _Base::bucket_count(); - mapped_type& __res = _M_base()[std::move(__k)]; - this->_M_profile_resize(__old_size); - return __res; - } - - void - swap(unordered_map& __x) - noexcept( noexcept(__x._M_base().swap(__x)) ) - { - _Base::swap(__x._M_base()); - this->_M_swap(__x); - } - - void rehash(size_type __n) - { - size_type __old_size = _Base::bucket_count(); - _Base::rehash(__n); - this->_M_profile_resize(__old_size); - } - }; - - template - inline void - swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return static_cast(__x) == __y; } - - template - inline bool - operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -#undef _GLIBCXX_BASE -#undef _GLIBCXX_STD_BASE -#define _GLIBCXX_BASE unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> -#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE - - /// Class std::unordered_multimap wrapper with performance instrumentation. - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator > > - class unordered_multimap - : public _GLIBCXX_STD_BASE, - public _Unordered_profile, - false> - { - typedef typename _GLIBCXX_STD_BASE _Base; - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef typename _Base::iterator iterator; - typedef typename _Base::const_iterator const_iterator; - - unordered_multimap() = default; - - explicit - unordered_multimap(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) { } - - template - unordered_multimap(_InputIterator __f, _InputIterator __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) { } - - unordered_multimap(const unordered_multimap&) = default; - - unordered_multimap(const _Base& __x) - : _Base(__x) { } - - unordered_multimap(unordered_multimap&&) = default; - - explicit - unordered_multimap(const allocator_type& __a) - : _Base(__a) { } - - unordered_multimap(const unordered_multimap& __ummap, - const allocator_type& __a) - : _Base(__ummap._M_base(), __a) { } - - unordered_multimap(unordered_multimap&& __ummap, - const allocator_type& __a) - : _Base(std::move(__ummap._M_base()), __a) { } - - unordered_multimap(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) { } - - unordered_multimap(size_type __n, const allocator_type& __a) - : unordered_multimap(__n, hasher(), key_equal(), __a) - { } - - unordered_multimap(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__n, __hf, key_equal(), __a) - { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_multimap(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_multimap(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_multimap(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_multimap(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multimap(__l, __n, __hf, key_equal(), __a) - { } - - unordered_multimap& - operator=(const unordered_multimap&) = default; - - unordered_multimap& - operator=(unordered_multimap&&) = default; - - unordered_multimap& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } - - void - clear() noexcept - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - template - iterator - emplace(_Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - iterator __res - = _Base::emplace(std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - template - iterator - emplace_hint(const_iterator __it, _Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - iterator __res - = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - void - insert(std::initializer_list __l) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__l); - this->_M_profile_resize(__old_size); - } - - iterator - insert(const value_type& __obj) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__obj); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(const_iterator __iter, const value_type& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, __v); - this->_M_profile_resize(__old_size); - return __res; - } - - template::value>::type> - iterator - insert(_Pair&& __obj) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(std::forward<_Pair>(__obj)); - this->_M_profile_resize(__old_size); - return __res; - } - - template::value>::type> - iterator - insert(const_iterator __iter, _Pair&& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, std::forward<_Pair>(__v)); - this->_M_profile_resize(__old_size); - return __res; - } - - template - void - insert(_InputIter __first, _InputIter __last) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__first, __last); - this->_M_profile_resize(__old_size); - } - - void - swap(unordered_multimap& __x) - noexcept( noexcept(__x._M_base().swap(__x)) ) - { - _Base::swap(__x._M_base()); - this->_M_swap(__x); - } - - void - rehash(size_type __n) - { - size_type __old_size = _Base::bucket_count(); - _Base::rehash(__n); - this->_M_profile_resize(__old_size); - } - }; - - template - inline void - swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return static_cast(__x) == __y; } - - template - inline bool - operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -} // namespace __profile -} // namespace std - -#undef _GLIBCXX_BASE -#undef _GLIBCXX_STD_BASE - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_set deleted file mode 100644 index d1b2e445a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_set +++ /dev/null @@ -1,561 +0,0 @@ -// Profiling unordered_set/unordered_multiset implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/unordered_set - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_UNORDERED_SET -#define _GLIBCXX_PROFILE_UNORDERED_SET 1 - -#if __cplusplus < 201103L -# include -#else -# include - -#include -#include - -#define _GLIBCXX_BASE unordered_set<_Key, _Hash, _Pred, _Alloc> -#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - /** @brief Unordered_set wrapper with performance instrumentation. */ - template, - typename _Pred = std::equal_to<_Key>, - typename _Alloc = std::allocator<_Key> > - class unordered_set - : public _GLIBCXX_STD_BASE, - public _Unordered_profile, - true> - { - typedef _GLIBCXX_STD_BASE _Base; - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef typename _Base::iterator iterator; - typedef typename _Base::const_iterator const_iterator; - - unordered_set() = default; - - explicit - unordered_set(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - template - unordered_set(_InputIterator __f, _InputIterator __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) - { } - - unordered_set(const unordered_set&) = default; - - unordered_set(const _Base& __x) - : _Base(__x) - { } - - unordered_set(unordered_set&&) = default; - - explicit - unordered_set(const allocator_type& __a) - : _Base(__a) - { } - - unordered_set(const unordered_set& __uset, - const allocator_type& __a) - : _Base(__uset._M_base(), __a) - { } - - unordered_set(unordered_set&& __uset, - const allocator_type& __a) - : _Base(std::move(__uset._M_base()), __a) - { } - - unordered_set(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) - { } - - unordered_set(size_type __n, const allocator_type& __a) - : unordered_set(__n, hasher(), key_equal(), __a) - { } - - unordered_set(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__n, __hf, key_equal(), __a) - { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_set(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_set(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_set(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_set(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_set(__l, __n, __hf, key_equal(), __a) - { } - - unordered_set& - operator=(const unordered_set&) = default; - - unordered_set& - operator=(unordered_set&&) = default; - - unordered_set& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } - - void - swap(unordered_set& __x) - noexcept( noexcept(__x._M_base().swap(__x)) ) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - void - clear() noexcept - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - template - std::pair - emplace(_Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - std::pair __res - = _Base::emplace(std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - template - iterator - emplace_hint(const_iterator __it, _Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - iterator __res - = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - void - insert(std::initializer_list __l) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__l); - this->_M_profile_resize(__old_size); - } - - std::pair - insert(const value_type& __obj) - { - size_type __old_size = _Base::bucket_count(); - std::pair __res = _Base::insert(__obj); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(const_iterator __iter, const value_type& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, __v); - this->_M_profile_resize(__old_size); - return __res; - } - - std::pair - insert(value_type&& __obj) - { - size_type __old_size = _Base::bucket_count(); - std::pair __res = _Base::insert(std::move(__obj)); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(const_iterator __iter, value_type&& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, std::move(__v)); - this->_M_profile_resize(__old_size); - return __res; - } - - template - void - insert(_InputIter __first, _InputIter __last) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__first, __last); - this->_M_profile_resize(__old_size); - } - - void - rehash(size_type __n) - { - size_type __old_size = _Base::bucket_count(); - _Base::rehash(__n); - this->_M_profile_resize(__old_size); - } - }; - - template - inline void - swap(unordered_set<_Key, _Hash, _Pred, _Alloc>& __x, - unordered_set<_Key, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_set<_Key, _Hash, _Pred, _Alloc>& __x, - const unordered_set<_Key, _Hash, _Pred, _Alloc>& __y) - { return static_cast(__x) == __y; } - - template - inline bool - operator!=(const unordered_set<_Key, _Hash, _Pred, _Alloc>& __x, - const unordered_set<_Key, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -#undef _GLIBCXX_BASE -#undef _GLIBCXX_STD_BASE -#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE -#define _GLIBCXX_BASE unordered_multiset<_Value, _Hash, _Pred, _Alloc> - - /** @brief Unordered_multiset wrapper with performance instrumentation. */ - template, - typename _Pred = std::equal_to<_Value>, - typename _Alloc = std::allocator<_Value> > - class unordered_multiset - : public _GLIBCXX_STD_BASE, - public _Unordered_profile, - false> - { - typedef _GLIBCXX_STD_BASE _Base; - - _Base& - _M_base() noexcept { return *this; } - - const _Base& - _M_base() const noexcept { return *this; } - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - typedef typename _Base::key_type key_type; - typedef typename _Base::value_type value_type; - typedef typename _Base::difference_type difference_type; - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef typename _Base::iterator iterator; - typedef typename _Base::const_iterator const_iterator; - - unordered_multiset() = default; - - explicit - unordered_multiset(size_type __n, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - template - unordered_multiset(_InputIterator __f, _InputIterator __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) - { } - - unordered_multiset(const unordered_multiset&) = default; - - unordered_multiset(const _Base& __x) - : _Base(__x) - { } - - unordered_multiset(unordered_multiset&&) = default; - - explicit - unordered_multiset(const allocator_type& __a) - : _Base(__a) - { } - - unordered_multiset(const unordered_multiset& __umset, - const allocator_type& __a) - : _Base(__umset._M_base(), __a) - { } - - unordered_multiset(unordered_multiset&& __umset, - const allocator_type& __a) - : _Base(std::move(__umset._M_base()), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__l, __n, __hf, __eql, __a) - { } - - unordered_multiset(size_type __n, const allocator_type& __a) - : unordered_multiset(__n, hasher(), key_equal(), __a) - { } - - unordered_multiset(size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__n, __hf, key_equal(), __a) - { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, - const allocator_type& __a) - : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) - { } - - template - unordered_multiset(_InputIterator __first, _InputIterator __last, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n, - const allocator_type& __a) - : unordered_multiset(__l, __n, hasher(), key_equal(), __a) - { } - - unordered_multiset(initializer_list __l, - size_type __n, const hasher& __hf, - const allocator_type& __a) - : unordered_multiset(__l, __n, __hf, key_equal(), __a) - { } - - unordered_multiset& - operator=(const unordered_multiset&) = default; - - unordered_multiset& - operator=(unordered_multiset&&) = default; - - unordered_multiset& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } - - void - swap(unordered_multiset& __x) - noexcept( noexcept(__x._M_base().swap(__x)) ) - { - _Base::swap(__x); - this->_M_swap(__x); - } - - void - clear() noexcept - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - template - iterator - emplace(_Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::emplace(std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - template - iterator - emplace_hint(const_iterator __it, _Args&&... __args) - { - size_type __old_size = _Base::bucket_count(); - iterator __res - = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); - this->_M_profile_resize(__old_size); - return __res; - } - - void - insert(std::initializer_list __l) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__l); - this->_M_profile_resize(__old_size); - } - - iterator - insert(const value_type& __obj) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__obj); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(const_iterator __iter, const value_type& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, __v); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(value_type&& __obj) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(std::move(__obj)); - this->_M_profile_resize(__old_size); - return __res; - } - - iterator - insert(const_iterator __iter, value_type&& __v) - { - size_type __old_size = _Base::bucket_count(); - iterator __res = _Base::insert(__iter, std::move(__v)); - this->_M_profile_resize(__old_size); - return __res; - } - - template - void - insert(_InputIter __first, _InputIter __last) - { - size_type __old_size = _Base::bucket_count(); - _Base::insert(__first, __last); - this->_M_profile_resize(__old_size); - } - - void - rehash(size_type __n) - { - size_type __old_size = _Base::bucket_count(); - _Base::rehash(__n); - this->_M_profile_resize(__old_size); - } - }; - - template - inline void - swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - - template - inline bool - operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { return static_cast(__x) == __y; } - - template - inline bool - operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { return !(__x == __y); } - -} // namespace __profile -} // namespace std - -#undef _GLIBCXX_BASE -#undef _GLIBCXX_STD_BASE - -#endif // C++11 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/vector deleted file mode 100644 index 458f49ee1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/vector +++ /dev/null @@ -1,572 +0,0 @@ -// Profiling vector implementation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License along -// with this library; see the file COPYING3. If not see -// . - -/** @file profile/vector - * This file is a GNU profile extension to the Standard C++ Library. - */ - -#ifndef _GLIBCXX_PROFILE_VECTOR -#define _GLIBCXX_PROFILE_VECTOR 1 - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace __profile -{ - template - class _Vector_profile_pre - { - _Vector& - _M_conjure() - { return *static_cast<_Vector*>(this); } - - public: -#if __cplusplus >= 201103L - _Vector_profile_pre() = default; - _Vector_profile_pre(const _Vector_profile_pre&) = default; - _Vector_profile_pre(_Vector_profile_pre&&) = default; - - _Vector_profile_pre& - operator=(const _Vector_profile_pre&) - { _M_conjure()._M_profile_destruct(); } - - _Vector_profile_pre& - operator=(_Vector_profile_pre&&) noexcept - { _M_conjure()._M_profile_destruct(); } -#endif - }; - - template - class _Vector_profile_post - { - _Vector& - _M_conjure() - { return *static_cast<_Vector*>(this); } - - protected: - __gnu_profile::__container_size_info* _M_size_info; - __gnu_profile::__vector2list_info* _M_vect2list_info; - - _Vector_profile_post() _GLIBCXX_NOEXCEPT - { _M_profile_construct(); } - -#if __cplusplus >= 201103L - _Vector_profile_post(const _Vector_profile_post&) noexcept - : _Vector_profile_post() { } - _Vector_profile_post(_Vector_profile_post&& __other) noexcept - : _Vector_profile_post() - { _M_swap(__other); } - - _Vector_profile_post& - operator=(const _Vector_profile_post&) noexcept - { _M_profile_construct(); } - - _Vector_profile_post& - operator=(_Vector_profile_post&& __other) noexcept - { - _M_swap(__other); - __other._M_profile_construct(); - } -#endif - - ~_Vector_profile_post() - { _M_conjure()._M_profile_destruct(); } - - public: - void - _M_profile_construct() _GLIBCXX_NOEXCEPT - { - _M_size_info = - __profcxx_vector_size_construct(_M_conjure().capacity()); - _M_vect2list_info = __profcxx_vector2list_construct(); - } - - void - _M_profile_destruct() _GLIBCXX_NOEXCEPT - { - __profcxx_vector2list_destruct(_M_vect2list_info); - _M_vect2list_info = 0; - __profcxx_vector_size_destruct(_M_size_info, - _M_conjure().capacity(), - _M_conjure().size()); - _M_size_info = 0; - } - - void - _M_swap(_Vector_profile_post& __other) _GLIBCXX_NOEXCEPT - { - std::swap(_M_size_info, __other._M_size_info); - std::swap(_M_vect2list_info, __other._M_vect2list_info); - } - }; - - template > - class vector - : public _Vector_profile_pre >, - public _GLIBCXX_STD_C::vector<_Tp, _Allocator>, - public _Vector_profile_post > - { - typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base; - - typedef typename _Base::iterator _Base_iterator; - typedef typename _Base::const_iterator _Base_const_iterator; - - public: - typedef typename _Base::reference reference; - typedef typename _Base::const_reference const_reference; - - typedef __iterator_tracker<_Base_iterator, vector> - iterator; - typedef __iterator_tracker<_Base_const_iterator, vector> - const_iterator; - - typedef typename _Base::size_type size_type; - typedef typename _Base::difference_type difference_type; - - typedef _Tp value_type; - typedef _Allocator allocator_type; - typedef typename _Base::pointer pointer; - typedef typename _Base::const_pointer const_pointer; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - _Base& - _M_base() _GLIBCXX_NOEXCEPT { return *this; } - - const _Base& - _M_base() const _GLIBCXX_NOEXCEPT { return *this; } - - // 23.2.4.1 construct/copy/destroy: - -#if __cplusplus < 201103L - vector() - { } - - vector(const vector& __x) - : _Base(__x) { } -#else - vector() = default; - vector(const vector&) = default; - vector(vector&&) = default; -#endif - - explicit - vector(const _Allocator& __a) _GLIBCXX_NOEXCEPT - : _Base(__a) { } - -#if __cplusplus >= 201103L - explicit - vector(size_type __n, const _Allocator& __a = _Allocator()) - : _Base(__n, __a) { } - - vector(size_type __n, const _Tp& __value, - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#else - explicit - vector(size_type __n, const _Tp& __value = _Tp(), - const _Allocator& __a = _Allocator()) - : _Base(__n, __value, __a) { } -#endif - -#if __cplusplus >= 201103L - template> -#else - template -#endif - vector(_InputIterator __first, _InputIterator __last, - const _Allocator& __a = _Allocator()) - : _Base(__first, __last, __a) { } - - /// Construction from a normal-mode vector - vector(const _Base& __x) - : _Base(__x) { } - -#if __cplusplus >= 201103L - vector(const _Base& __x, const _Allocator& __a) - : _Base(__x, __a) { } - - vector(vector&& __x, const _Allocator& __a) - : _Base(std::move(__x), __a) { } - - vector(initializer_list __l, - const allocator_type& __a = allocator_type()) - : _Base(__l, __a) { } -#endif - -#if __cplusplus < 201103L - vector& - operator=(const vector& __x) - { - this->_M_profile_destruct(); - _M_base() = __x; - this->_M_profile_construct(); - return *this; - } -#else - vector& - operator=(const vector&) = default; - - vector& - operator=(vector&&) = default; - - vector& - operator=(initializer_list __l) - { - this->_M_profile_destruct(); - _M_base() = __l; - this->_M_profile_construct(); - return *this; - } -#endif - - // iterators: - iterator - begin() _GLIBCXX_NOEXCEPT - { return iterator(_Base::begin(), this); } - - const_iterator - begin() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::begin(), this); } - - iterator - end() _GLIBCXX_NOEXCEPT - { return iterator(_Base::end(), this); } - - const_iterator - end() const _GLIBCXX_NOEXCEPT - { return const_iterator(_Base::end(), this); } - - reverse_iterator - rbegin() _GLIBCXX_NOEXCEPT - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() _GLIBCXX_NOEXCEPT - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const _GLIBCXX_NOEXCEPT - { return const_reverse_iterator(begin()); } - -#if __cplusplus >= 201103L - const_iterator - cbegin() const noexcept - { return const_iterator(_Base::begin(), this); } - - const_iterator - cend() const noexcept - { return const_iterator(_Base::end(), this); } - - const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(end()); } - - const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(begin()); } -#endif - - // 23.2.4.2 capacity: - -#if __cplusplus >= 201103L - void - resize(size_type __sz) - { - __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); - _M_profile_resize(this->capacity(), __sz); - _Base::resize(__sz); - } - - void - resize(size_type __sz, const _Tp& __c) - { - __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); - _M_profile_resize(this->capacity(), __sz); - _Base::resize(__sz, __c); - } -#else - void - resize(size_type __sz, _Tp __c = _Tp()) - { - __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); - _M_profile_resize(this->capacity(), __sz); - _Base::resize(__sz, __c); - } -#endif - - // element access: - reference - operator[](size_type __n) _GLIBCXX_NOEXCEPT - { - __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); - return _M_base()[__n]; - } - const_reference - operator[](size_type __n) const _GLIBCXX_NOEXCEPT - { - __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); - return _M_base()[__n]; - } - - // 23.2.4.3 modifiers: - void - push_back(const _Tp& __x) - { - size_type __old_size = this->capacity(); - _Base::push_back(__x); - _M_profile_resize(__old_size, this->capacity()); - } - -#if __cplusplus >= 201103L - void - push_back(_Tp&& __x) - { - size_type __old_size = this->capacity(); - _Base::push_back(std::move(__x)); - _M_profile_resize(__old_size, this->capacity()); - } - -#endif - - iterator -#if __cplusplus >= 201103L - insert(const_iterator __pos, const _Tp& __x) -#else - insert(iterator __pos, const _Tp& __x) -#endif - { - __profcxx_vector2list_insert(this->_M_vect2list_info, - __pos.base() - _Base::begin(), - this->size()); - size_type __old_size = this->capacity(); - _Base_iterator __res = _Base::insert(__pos.base(), __x); - _M_profile_resize(__old_size, this->capacity()); - return iterator(__res, this); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __pos, _Tp&& __x) - { - __profcxx_vector2list_insert(this->_M_vect2list_info, - __pos.base() - _Base::cbegin(), - this->size()); - size_type __old_size = this->capacity(); - _Base_iterator __res = _Base::insert(__pos.base(), __x); - _M_profile_resize(__old_size, this->capacity()); - return iterator(__res, this); - } - - template - iterator - emplace(const_iterator __pos, _Args&&... __args) - { - _Base_iterator __res = _Base::emplace(__pos.base(), - std::forward<_Args>(__args)...); - return iterator(__res, this); - } - - iterator - insert(const_iterator __pos, initializer_list __l) - { return this->insert(__pos, __l.begin(), __l.end()); } -#endif - - void - swap(vector& __x) -#if __cplusplus >= 201103L - noexcept( noexcept(declval<_Base>().swap(__x)) ) -#endif - { - _Base::swap(__x); - this->_M_swap(__x); - } - -#if __cplusplus >= 201103L - iterator - insert(const_iterator __pos, size_type __n, const _Tp& __x) - { - __profcxx_vector2list_insert(this->_M_vect2list_info, - __pos.base() - _Base::cbegin(), - this->size()); - size_type __old_size = this->capacity(); - _Base_iterator __res = _Base::insert(__pos, __n, __x); - _M_profile_resize(__old_size, this->capacity()); - return iterator(__res, this); - } -#else - void - insert(iterator __pos, size_type __n, const _Tp& __x) - { - __profcxx_vector2list_insert(this->_M_vect2list_info, - __pos.base() - _Base::begin(), - this->size()); - size_type __old_size = this->capacity(); - _Base::insert(__pos, __n, __x); - _M_profile_resize(__old_size, this->capacity()); - } -#endif - -#if __cplusplus >= 201103L - template> - iterator - insert(const_iterator __pos, - _InputIterator __first, _InputIterator __last) - { - __profcxx_vector2list_insert(this->_M_vect2list_info, - __pos.base() - _Base::cbegin(), - this->size()); - size_type __old_size = this->capacity(); - _Base_iterator __res = _Base::insert(__pos, __first, __last); - _M_profile_resize(__old_size, this->capacity()); - return iterator(__res, this); - } -#else - template - void - insert(iterator __pos, - _InputIterator __first, _InputIterator __last) - { - __profcxx_vector2list_insert(this->_M_vect2list_info, - __pos.base() - _Base::begin(), - this->size()); - size_type __old_size = this->capacity(); - _Base::insert(__pos, __first, __last); - _M_profile_resize(__old_size, this->capacity()); - } -#endif - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __pos) -#else - erase(iterator __pos) -#endif - { return iterator(_Base::erase(__pos.base()), this); } - - iterator -#if __cplusplus >= 201103L - erase(const_iterator __first, const_iterator __last) -#else - erase(iterator __first, iterator __last) -#endif - { return iterator(_Base::erase(__first.base(), __last.base()), this); } - - void - clear() _GLIBCXX_NOEXCEPT - { - this->_M_profile_destruct(); - _Base::clear(); - this->_M_profile_construct(); - } - - inline void - _M_profile_iterate(int __rewind = 0) const - { __profcxx_vector2list_iterate(this->_M_vect2list_info, __rewind); } - - private: - void _M_profile_resize(size_type __old_size, size_type __new_size) - { - if (__old_size < __new_size) - { - __profcxx_vector_size_resize(this->_M_size_info, - this->size(), __new_size); - __profcxx_vector2list_resize(this->_M_vect2list_info, - this->size(), __new_size); - } - } - }; - - template - inline bool - operator==(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() == __rhs._M_base(); } - - template - inline bool - operator!=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() != __rhs._M_base(); } - - template - inline bool - operator<(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() < __rhs._M_base(); } - - template - inline bool - operator<=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() <= __rhs._M_base(); } - - template - inline bool - operator>=(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() >= __rhs._M_base(); } - - template - inline bool - operator>(const vector<_Tp, _Alloc>& __lhs, - const vector<_Tp, _Alloc>& __rhs) - { return __lhs._M_base() > __rhs._M_base(); } - - template - inline void - swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs) - _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) - { __lhs.swap(__rhs); } - -} // namespace __profile - -#if __cplusplus >= 201103L - // DR 1182. - /// std::hash specialization for vector. - template - struct hash<__profile::vector> - : public __hash_base> - { - size_t - operator()(const __profile::vector& __b) const noexcept - { - return std::hash<_GLIBCXX_STD_C::vector>()(__b._M_base()); - } - }; -#endif - -} // namespace std - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/random deleted file mode 100644 index aa5852e3a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/random +++ /dev/null @@ -1,57 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/random - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_RANDOM -#define _GLIBCXX_RANDOM 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include -#include -#include -#include - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - -#include // For uint_fast32_t, uint_fast64_t, uint_least32_t -#include -#include -#include - -#endif // _GLIBCXX_USE_C99_STDINT_TR1 - -#endif // C++11 - -#endif // _GLIBCXX_RANDOM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ratio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ratio deleted file mode 100644 index 421f6a874..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ratio +++ /dev/null @@ -1,555 +0,0 @@ -// ratio -*- C++ -*- - -// Copyright (C) 2008-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/ratio - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_RATIO -#define _GLIBCXX_RATIO 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup ratio Rational Arithmetic - * @ingroup utilities - * - * Compile time representation of finite rational numbers. - * @{ - */ - - template - struct __static_sign - : integral_constant - { }; - - template - struct __static_abs - : integral_constant::value> - { }; - - template - struct __static_gcd - : __static_gcd<_Qn, (_Pn % _Qn)> - { }; - - template - struct __static_gcd<_Pn, 0> - : integral_constant::value> - { }; - - template - struct __static_gcd<0, _Qn> - : integral_constant::value> - { }; - - // Let c = 2^(half # of bits in an intmax_t) - // then we find a1, a0, b1, b0 s.t. N = a1*c + a0, M = b1*c + b0 - // The multiplication of N and M becomes, - // N * M = (a1 * b1)c^2 + (a0 * b1 + b0 * a1)c + a0 * b0 - // Multiplication is safe if each term and the sum of the terms - // is representable by intmax_t. - template - struct __safe_multiply - { - private: - static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); - - static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; - static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; - static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; - static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; - - static_assert(__a1 == 0 || __b1 == 0, - "overflow in multiplication"); - static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), - "overflow in multiplication"); - static_assert(__b0 * __a0 <= __INTMAX_MAX__, - "overflow in multiplication"); - static_assert((__a0 * __b1 + __b0 * __a1) * __c - <= __INTMAX_MAX__ - __b0 * __a0, - "overflow in multiplication"); - - public: - static const intmax_t value = _Pn * _Qn; - }; - - // Some double-precision utilities, where numbers are represented as - // __hi*2^(8*sizeof(uintmax_t)) + __lo. - template - struct __big_less - : integral_constant - { }; - - template - struct __big_add - { - static constexpr uintmax_t __lo = __lo1 + __lo2; - static constexpr uintmax_t __hi = (__hi1 + __hi2 + - (__lo1 + __lo2 < __lo1)); // carry - }; - - // Subtract a number from a bigger one. - template - struct __big_sub - { - static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, - "Internal library error"); - static constexpr uintmax_t __lo = __lo1 - __lo2; - static constexpr uintmax_t __hi = (__hi1 - __hi2 - - (__lo1 < __lo2)); // carry - }; - - // Same principle as __safe_multiply. - template - struct __big_mul - { - private: - static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); - static constexpr uintmax_t __x0 = __x % __c; - static constexpr uintmax_t __x1 = __x / __c; - static constexpr uintmax_t __y0 = __y % __c; - static constexpr uintmax_t __y1 = __y / __c; - static constexpr uintmax_t __x0y0 = __x0 * __y0; - static constexpr uintmax_t __x0y1 = __x0 * __y1; - static constexpr uintmax_t __x1y0 = __x1 * __y0; - static constexpr uintmax_t __x1y1 = __x1 * __y1; - static constexpr uintmax_t __mix = __x0y1 + __x1y0; // possible carry... - static constexpr uintmax_t __mix_lo = __mix * __c; - static constexpr uintmax_t __mix_hi - = __mix / __c + ((__mix < __x0y1) ? __c : 0); // ... added here - typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; - public: - static constexpr uintmax_t __hi = _Res::__hi; - static constexpr uintmax_t __lo = _Res::__lo; - }; - - // Adapted from __udiv_qrnnd_c in longlong.h - // This version assumes that the high bit of __d is 1. - template - struct __big_div_impl - { - private: - static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), - "Internal library error"); - static_assert(__n1 < __d, "Internal library error"); - static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); - static constexpr uintmax_t __d1 = __d / __c; - static constexpr uintmax_t __d0 = __d % __c; - - static constexpr uintmax_t __q1x = __n1 / __d1; - static constexpr uintmax_t __r1x = __n1 % __d1; - static constexpr uintmax_t __m = __q1x * __d0; - static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; - static constexpr uintmax_t __r1z = __r1y + __d; - static constexpr uintmax_t __r1 - = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) - ? (__r1z + __d) : __r1z : __r1y) - __m; - static constexpr uintmax_t __q1 - = __q1x - ((__r1y < __m) - ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); - static constexpr uintmax_t __q0x = __r1 / __d1; - static constexpr uintmax_t __r0x = __r1 % __d1; - static constexpr uintmax_t __n = __q0x * __d0; - static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; - static constexpr uintmax_t __r0z = __r0y + __d; - static constexpr uintmax_t __r0 - = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) - ? (__r0z + __d) : __r0z : __r0y) - __n; - static constexpr uintmax_t __q0 - = __q0x - ((__r0y < __n) ? ((__r0z >= __d) - && (__r0z < __n)) ? 2 : 1 : 0); - - public: - static constexpr uintmax_t __quot = __q1 * __c + __q0; - static constexpr uintmax_t __rem = __r0; - - private: - typedef __big_mul<__quot, __d> _Prod; - typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; - static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, - "Internal library error"); - }; - - template - struct __big_div - { - private: - static_assert(__d != 0, "Internal library error"); - static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), - "This library calls __builtin_clzll on uintmax_t, which " - "is unsafe on your platform. Please complain to " - "http://gcc.gnu.org/bugzilla/"); - static constexpr int __shift = __builtin_clzll(__d); - static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; - static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; - static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; - static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; - static constexpr uintmax_t __new_d = __d * __c1; - static constexpr uintmax_t __new_n0 = __n0 * __c1; - static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; - static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; - static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; - typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; - - public: - static constexpr uintmax_t __quot_hi = __n1 / __d; - static constexpr uintmax_t __quot_lo = _Res::__quot; - static constexpr uintmax_t __rem = _Res::__rem / __c1; - - private: - typedef __big_mul<__quot_lo, __d> _P0; - typedef __big_mul<__quot_hi, __d> _P1; - typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; - // No overflow. - static_assert(_P1::__hi == 0, "Internal library error"); - static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); - // Matches the input data. - static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, - "Internal library error"); - static_assert(__rem < __d, "Internal library error"); - }; - - /** - * @brief Provides compile-time rational arithmetic. - * - * This class template represents any finite rational number with a - * numerator and denominator representable by compile-time constants of - * type intmax_t. The ratio is simplified when instantiated. - * - * For example: - * @code - * std::ratio<7,-21>::num == -1; - * std::ratio<7,-21>::den == 3; - * @endcode - * - */ - template - struct ratio - { - static_assert(_Den != 0, "denominator cannot be zero"); - static_assert(_Num >= -__INTMAX_MAX__ && _Den >= -__INTMAX_MAX__, - "out of range"); - - // Note: sign(N) * abs(N) == N - static constexpr intmax_t num = - _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; - - static constexpr intmax_t den = - __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; - - typedef ratio type; - }; - - template - constexpr intmax_t ratio<_Num, _Den>::num; - - template - constexpr intmax_t ratio<_Num, _Den>::den; - - template - struct __ratio_multiply - { - private: - static const intmax_t __gcd1 = - __static_gcd<_R1::num, _R2::den>::value; - static const intmax_t __gcd2 = - __static_gcd<_R2::num, _R1::den>::value; - - public: - typedef ratio< - __safe_multiply<(_R1::num / __gcd1), - (_R2::num / __gcd2)>::value, - __safe_multiply<(_R1::den / __gcd2), - (_R2::den / __gcd1)>::value> type; - - static constexpr intmax_t num = type::num; - static constexpr intmax_t den = type::den; - }; - - template - constexpr intmax_t __ratio_multiply<_R1, _R2>::num; - - template - constexpr intmax_t __ratio_multiply<_R1, _R2>::den; - - /// ratio_multiply - template - using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; - - template - struct __ratio_divide - { - static_assert(_R2::num != 0, "division by 0"); - - typedef typename __ratio_multiply< - _R1, - ratio<_R2::den, _R2::num>>::type type; - - static constexpr intmax_t num = type::num; - static constexpr intmax_t den = type::den; - }; - - template - constexpr intmax_t __ratio_divide<_R1, _R2>::num; - - template - constexpr intmax_t __ratio_divide<_R1, _R2>::den; - - /// ratio_divide - template - using ratio_divide = typename __ratio_divide<_R1, _R2>::type; - - /// ratio_equal - template - struct ratio_equal - : integral_constant - { }; - - /// ratio_not_equal - template - struct ratio_not_equal - : integral_constant::value> - { }; - - // Both numbers are positive. - template, - typename _Right = __big_mul<_R2::num,_R1::den> > - struct __ratio_less_impl_1 - : integral_constant::value> - { }; - - template::value - != __static_sign<_R2::num>::value)), - bool = (__static_sign<_R1::num>::value == -1 - && __static_sign<_R2::num>::value == -1)> - struct __ratio_less_impl - : __ratio_less_impl_1<_R1, _R2>::type - { }; - - template - struct __ratio_less_impl<_R1, _R2, true, false> - : integral_constant - { }; - - template - struct __ratio_less_impl<_R1, _R2, false, true> - : __ratio_less_impl_1, - ratio<-_R1::num, _R1::den> >::type - { }; - - /// ratio_less - template - struct ratio_less - : __ratio_less_impl<_R1, _R2>::type - { }; - - /// ratio_less_equal - template - struct ratio_less_equal - : integral_constant::value> - { }; - - /// ratio_greater - template - struct ratio_greater - : integral_constant::value> - { }; - - /// ratio_greater_equal - template - struct ratio_greater_equal - : integral_constant::value> - { }; - -#if __cplusplus > 201402L - template - inline constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; - template - inline constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; - template - inline constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; - template - inline constexpr bool ratio_less_equal_v = - ratio_less_equal<_R1, _R2>::value; - template - inline constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; - template - inline constexpr bool ratio_greater_equal_v - = ratio_greater_equal<_R1, _R2>::value; -#endif // C++17 - - template= 0), - bool = (_R2::num >= 0), - bool = ratio_less::value, _R1::den>, - ratio<__static_abs<_R2::num>::value, _R2::den> >::value> - struct __ratio_add_impl - { - private: - typedef typename __ratio_add_impl< - ratio<-_R1::num, _R1::den>, - ratio<-_R2::num, _R2::den> >::type __t; - public: - typedef ratio<-__t::num, __t::den> type; - }; - - // True addition of nonnegative numbers. - template - struct __ratio_add_impl<_R1, _R2, true, true, __b> - { - private: - static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; - static constexpr uintmax_t __d2 = _R2::den / __g; - typedef __big_mul<_R1::den, __d2> __d; - typedef __big_mul<_R1::num, _R2::den / __g> __x; - typedef __big_mul<_R2::num, _R1::den / __g> __y; - typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; - static_assert(__n::__hi >= __x::__hi, "Internal library error"); - typedef __big_div<__n::__hi, __n::__lo, __g> __ng; - static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; - typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; - static_assert(__n_final::__rem == 0, "Internal library error"); - static_assert(__n_final::__quot_hi == 0 && - __n_final::__quot_lo <= __INTMAX_MAX__, "overflow in addition"); - typedef __big_mul<_R1::den / __g2, __d2> __d_final; - static_assert(__d_final::__hi == 0 && - __d_final::__lo <= __INTMAX_MAX__, "overflow in addition"); - public: - typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; - }; - - template - struct __ratio_add_impl<_R1, _R2, false, true, true> - : __ratio_add_impl<_R2, _R1> - { }; - - // True subtraction of nonnegative numbers yielding a nonnegative result. - template - struct __ratio_add_impl<_R1, _R2, true, false, false> - { - private: - static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; - static constexpr uintmax_t __d2 = _R2::den / __g; - typedef __big_mul<_R1::den, __d2> __d; - typedef __big_mul<_R1::num, _R2::den / __g> __x; - typedef __big_mul<-_R2::num, _R1::den / __g> __y; - typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; - typedef __big_div<__n::__hi, __n::__lo, __g> __ng; - static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; - typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; - static_assert(__n_final::__rem == 0, "Internal library error"); - static_assert(__n_final::__quot_hi == 0 && - __n_final::__quot_lo <= __INTMAX_MAX__, "overflow in addition"); - typedef __big_mul<_R1::den / __g2, __d2> __d_final; - static_assert(__d_final::__hi == 0 && - __d_final::__lo <= __INTMAX_MAX__, "overflow in addition"); - public: - typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; - }; - - template - struct __ratio_add - { - typedef typename __ratio_add_impl<_R1, _R2>::type type; - static constexpr intmax_t num = type::num; - static constexpr intmax_t den = type::den; - }; - - template - constexpr intmax_t __ratio_add<_R1, _R2>::num; - - template - constexpr intmax_t __ratio_add<_R1, _R2>::den; - - /// ratio_add - template - using ratio_add = typename __ratio_add<_R1, _R2>::type; - - template - struct __ratio_subtract - { - typedef typename __ratio_add< - _R1, - ratio<-_R2::num, _R2::den>>::type type; - - static constexpr intmax_t num = type::num; - static constexpr intmax_t den = type::den; - }; - - template - constexpr intmax_t __ratio_subtract<_R1, _R2>::num; - - template - constexpr intmax_t __ratio_subtract<_R1, _R2>::den; - - /// ratio_subtract - template - using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; - - - typedef ratio<1, 1000000000000000000> atto; - typedef ratio<1, 1000000000000000> femto; - typedef ratio<1, 1000000000000> pico; - typedef ratio<1, 1000000000> nano; - typedef ratio<1, 1000000> micro; - typedef ratio<1, 1000> milli; - typedef ratio<1, 100> centi; - typedef ratio<1, 10> deci; - typedef ratio< 10, 1> deca; - typedef ratio< 100, 1> hecto; - typedef ratio< 1000, 1> kilo; - typedef ratio< 1000000, 1> mega; - typedef ratio< 1000000000, 1> giga; - typedef ratio< 1000000000000, 1> tera; - typedef ratio< 1000000000000000, 1> peta; - typedef ratio< 1000000000000000000, 1> exa; - - // @} group ratio -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif //_GLIBCXX_USE_C99_STDINT_TR1 - -#endif // C++11 - -#endif //_GLIBCXX_RATIO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/regex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/regex deleted file mode 100644 index 777edd96d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/regex +++ /dev/null @@ -1,67 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/regex - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_REGEX -#define _GLIBCXX_REGEX 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#ifdef _GLIBCXX_DEBUG -# include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif // C++11 - -#endif // _GLIBCXX_REGEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/set deleted file mode 100644 index 3453a6ef6..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/set +++ /dev/null @@ -1,73 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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/set - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_SET -#define _GLIBCXX_SET 1 - -#pragma GCC system_header - -#include -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif /* _GLIBCXX_SET */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stdlib.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stdlib.h deleted file mode 100644 index 272e9bd9a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stdlib.h +++ /dev/null @@ -1,86 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2002-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file stdlib.h - * This is a Standard C++ Library header. - */ - -#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS -# include_next -#else - -#ifndef _GLIBCXX_STDLIB_H -#define _GLIBCXX_STDLIB_H 1 - -# include - -using std::abort; -using std::atexit; -using std::exit; -#if __cplusplus >= 201103L -# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT - using std::at_quick_exit; -# endif -# ifdef _GLIBCXX_HAVE_QUICK_EXIT - using std::quick_exit; -# endif -#endif - -#if _GLIBCXX_HOSTED -using std::div_t; -using std::ldiv_t; - -using std::abs; -using std::atof; -using std::atoi; -using std::atol; -using std::bsearch; -using std::calloc; -using std::div; -using std::free; -using std::getenv; -using std::labs; -using std::ldiv; -using std::malloc; -#ifdef _GLIBCXX_HAVE_MBSTATE_T -using std::mblen; -using std::mbstowcs; -using std::mbtowc; -#endif // _GLIBCXX_HAVE_MBSTATE_T -using std::qsort; -using std::rand; -using std::realloc; -using std::srand; -using std::strtod; -using std::strtol; -using std::strtoul; -using std::system; -#ifdef _GLIBCXX_USE_WCHAR_T -using std::wcstombs; -using std::wctomb; -#endif // _GLIBCXX_USE_WCHAR_T -#endif - -#endif // _GLIBCXX_STDLIB_H -#endif // __cplusplus diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/string b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/string deleted file mode 100644 index 9b25eedeb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/string +++ /dev/null @@ -1,55 +0,0 @@ -// Components for manipulating sequences of characters -*- C++ -*- - -// Copyright (C) 1997-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/string - * This is a Standard C++ Library header. - */ - -// -// ISO C++ 14882: 21 Strings library -// - -#ifndef _GLIBCXX_STRING -#define _GLIBCXX_STRING 1 - -#pragma GCC system_header - -#include -#include -#include // NB: In turn includes stl_algobase.h -#include -#include -#include // For operators >>, <<, and getline. -#include -#include -#include -#include -#include // For less -#include -#include -#include -#include -#include - -#endif /* _GLIBCXX_STRING */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/string_view b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/string_view deleted file mode 100644 index f53dfcc67..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/string_view +++ /dev/null @@ -1,676 +0,0 @@ -// Components for manipulating non-owning sequences of characters -*- C++ -*- - -// Copyright (C) 2013-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file string_view - * This is a Standard C++ Library header. - */ - -// -// N3762 basic_string_view library -// - -#ifndef _GLIBCXX_STRING_VIEW -#define _GLIBCXX_STRING_VIEW 1 - -#pragma GCC system_header - -#if __cplusplus >= 201703L - -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_string_view 201603 - - /** - * @class basic_string_view - * @brief A non-owning reference to a string. - * - * @ingroup strings - * @ingroup sequences - * - * @tparam _CharT Type of character - * @tparam _Traits Traits for character type, defaults to - * char_traits<_CharT>. - * - * A basic_string_view looks like this: - * - * @code - * _CharT* _M_str - * size_t _M_len - * @endcode - */ - template> - class basic_string_view - { - public: - - // types - using traits_type = _Traits; - using value_type = _CharT; - using pointer = const _CharT*; - using const_pointer = const _CharT*; - using reference = const _CharT&; - using const_reference = const _CharT&; - using const_iterator = const _CharT*; - using iterator = const_iterator; - using const_reverse_iterator = std::reverse_iterator; - using reverse_iterator = const_reverse_iterator; - using size_type = size_t; - using difference_type = ptrdiff_t; - static constexpr size_type npos = size_type(-1); - - // [string.view.cons], construct/copy - - constexpr - basic_string_view() noexcept - : _M_len{0}, _M_str{nullptr} - { } - - constexpr basic_string_view(const basic_string_view&) noexcept = default; - - constexpr basic_string_view(const _CharT* __str) - : _M_len{__str == nullptr ? 0 : traits_type::length(__str)}, - _M_str{__str} - { } - - constexpr basic_string_view(const _CharT* __str, size_type __len) - : _M_len{__len}, - _M_str{__str} - { } - - constexpr basic_string_view& - operator=(const basic_string_view&) noexcept = default; - - // [string.view.iterators], iterators - - constexpr const_iterator - begin() const noexcept - { return this->_M_str; } - - constexpr const_iterator - end() const noexcept - { return this->_M_str + this->_M_len; } - - constexpr const_iterator - cbegin() const noexcept - { return this->_M_str; } - - constexpr const_iterator - cend() const noexcept - { return this->_M_str + this->_M_len; } - - constexpr const_reverse_iterator - rbegin() const noexcept - { return const_reverse_iterator(this->end()); } - - constexpr const_reverse_iterator - rend() const noexcept - { return const_reverse_iterator(this->begin()); } - - constexpr const_reverse_iterator - crbegin() const noexcept - { return const_reverse_iterator(this->end()); } - - constexpr const_reverse_iterator - crend() const noexcept - { return const_reverse_iterator(this->begin()); } - - // [string.view.capacity], capacity - - constexpr size_type - size() const noexcept - { return this->_M_len; } - - constexpr size_type - length() const noexcept - { return _M_len; } - - constexpr size_type - max_size() const noexcept - { - return (npos - sizeof(size_type) - sizeof(void*)) - / sizeof(value_type) / 4; - } - - constexpr bool - empty() const noexcept - { return this->_M_len == 0; } - - // [string.view.access], element access - - constexpr const _CharT& - operator[](size_type __pos) const noexcept - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(__pos < this->_M_len); - return *(this->_M_str + __pos); - } - - constexpr const _CharT& - at(size_type __pos) const - { - return __pos < this->_M_len - ? *(this->_M_str + __pos) - : (__throw_out_of_range_fmt(__N("basic_string_view::at: __pos " - "(which is %zu) >= this->size() " - "(which is %zu)"), - __pos, this->size()), - *this->_M_str); - } - - constexpr const _CharT& - front() const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(this->_M_len > 0); - return *this->_M_str; - } - - constexpr const _CharT& - back() const - { - // TODO: Assert to restore in a way compatible with the constexpr. - // __glibcxx_assert(this->_M_len > 0); - return *(this->_M_str + this->_M_len - 1); - } - - constexpr const _CharT* - data() const noexcept - { return this->_M_str; } - - // [string.view.modifiers], modifiers: - - constexpr void - remove_prefix(size_type __n) - { - __glibcxx_assert(this->_M_len >= __n); - this->_M_str += __n; - this->_M_len -= __n; - } - - constexpr void - remove_suffix(size_type __n) - { this->_M_len -= __n; } - - constexpr void - swap(basic_string_view& __sv) noexcept - { - auto __tmp = *this; - *this = __sv; - __sv = __tmp; - } - - - // [string.view.ops], string operations: - - size_type - copy(_CharT* __str, size_type __n, size_type __pos = 0) const - { - __glibcxx_requires_string_len(__str, __n); - if (__pos > this->_M_len) - __throw_out_of_range_fmt(__N("basic_string_view::copy: __pos " - "(which is %zu) > this->size() " - "(which is %zu)"), - __pos, this->size()); - size_type __rlen{std::min(__n, size_type{this->_M_len - __pos})}; - for (auto __begin = this->_M_str + __pos, - __end = __begin + __rlen; __begin != __end;) - *__str++ = *__begin++; - return __rlen; - } - - - // [string.view.ops], string operations: - - constexpr basic_string_view - substr(size_type __pos, size_type __n=npos) const - { - return __pos <= this->_M_len - ? basic_string_view{this->_M_str + __pos, - std::min(__n, size_type{this->_M_len - __pos})} - : (__throw_out_of_range_fmt(__N("basic_string_view::substr: __pos " - "(which is %zu) > this->size() " - "(which is %zu)"), - __pos, this->size()), basic_string_view{}); - } - - constexpr int - compare(basic_string_view __str) const noexcept - { - int __ret = traits_type::compare(this->_M_str, __str._M_str, - std::min(this->_M_len, __str._M_len)); - if (__ret == 0) - __ret = _S_compare(this->_M_len, __str._M_len); - return __ret; - } - - constexpr int - compare(size_type __pos1, size_type __n1, basic_string_view __str) const - { return this->substr(__pos1, __n1).compare(__str); } - - constexpr int - compare(size_type __pos1, size_type __n1, - basic_string_view __str, size_type __pos2, size_type __n2) const - { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); } - - constexpr int - compare(const _CharT* __str) const noexcept - { return this->compare(basic_string_view{__str}); } - - constexpr int - compare(size_type __pos1, size_type __n1, const _CharT* __str) const - { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } - - constexpr int - compare(size_type __pos1, size_type __n1, - const _CharT* __str, size_type __n2) const - { - return this->substr(__pos1, __n1) - .compare(basic_string_view(__str, __n2)); - } - - constexpr size_type - find(basic_string_view __str, size_type __pos = 0) const noexcept - { return this->find(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find(_CharT __c, size_type __pos=0) const noexcept; - - constexpr size_type - find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - - constexpr size_type - find(const _CharT* __str, size_type __pos=0) const noexcept - { return this->find(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - rfind(basic_string_view __str, size_type __pos = npos) const noexcept - { return this->rfind(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - rfind(_CharT __c, size_type __pos = npos) const noexcept; - - constexpr size_type - rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; - - constexpr size_type - rfind(const _CharT* __str, size_type __pos = npos) const noexcept - { return this->rfind(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept - { return this->find_first_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_first_of(_CharT __c, size_type __pos = 0) const noexcept - { return this->find(__c, __pos); } - - constexpr size_type - find_first_of(const _CharT* __str, size_type __pos, size_type __n) const; - - constexpr size_type - find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept - { return this->find_first_of(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - find_last_of(basic_string_view __str, - size_type __pos = npos) const noexcept - { return this->find_last_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_last_of(_CharT __c, size_type __pos=npos) const noexcept - { return this->rfind(__c, __pos); } - - constexpr size_type - find_last_of(const _CharT* __str, size_type __pos, size_type __n) const; - - constexpr size_type - find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept - { return this->find_last_of(__str, __pos, traits_type::length(__str)); } - - constexpr size_type - find_first_not_of(basic_string_view __str, - size_type __pos = 0) const noexcept - { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; - - constexpr size_type - find_first_not_of(const _CharT* __str, - size_type __pos, size_type __n) const; - - constexpr size_type - find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept - { - return this->find_first_not_of(__str, __pos, - traits_type::length(__str)); - } - - constexpr size_type - find_last_not_of(basic_string_view __str, - size_type __pos = npos) const noexcept - { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } - - constexpr size_type - find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; - - constexpr size_type - find_last_not_of(const _CharT* __str, - size_type __pos, size_type __n) const; - - constexpr size_type - find_last_not_of(const _CharT* __str, - size_type __pos = npos) const noexcept - { - return this->find_last_not_of(__str, __pos, - traits_type::length(__str)); - } - - constexpr size_type - _M_check(size_type __pos, const char* __s) const - { - if (__pos > this->size()) - __throw_out_of_range_fmt(__N("%s: __pos (which is %zu) > " - "this->size() (which is %zu)"), - __s, __pos, this->size()); - return __pos; - } - - // NB: _M_limit doesn't check for a bad __pos value. - constexpr size_type - _M_limit(size_type __pos, size_type __off) const _GLIBCXX_NOEXCEPT - { - const bool __testoff = __off < this->size() - __pos; - return __testoff ? __off : this->size() - __pos; - } - - private: - - static constexpr int - _S_compare(size_type __n1, size_type __n2) noexcept - { - return difference_type{__n1 - __n2} > std::numeric_limits::max() - ? std::numeric_limits::max() - : difference_type{__n1 - __n2} < std::numeric_limits::min() - ? std::numeric_limits::min() - : static_cast(difference_type{__n1 - __n2}); - } - - size_t _M_len; - const _CharT* _M_str; - }; -_GLIBCXX_END_NAMESPACE_VERSION - - // [string.view.comparison], non-member basic_string_view comparison function - - namespace __detail - { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // Identity transform to create a non-deduced context, so that only one - // argument participates in template argument deduction and the other - // argument gets implicitly converted to the deduced type. See n3766.html. - template - using __idt = common_type_t<_Tp>; -_GLIBCXX_END_NAMESPACE_VERSION - } - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - constexpr bool - operator==(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template - constexpr bool - operator==(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template - constexpr bool - operator==(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.size() == __y.size() && __x.compare(__y) == 0; } - - template - constexpr bool - operator!=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return !(__x == __y); } - - template - constexpr bool - operator!=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return !(__x == __y); } - - template - constexpr bool - operator!=(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return !(__x == __y); } - - template - constexpr bool - operator< (basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) < 0; } - - template - constexpr bool - operator< (basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) < 0; } - - template - constexpr bool - operator< (__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) < 0; } - - template - constexpr bool - operator> (basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) > 0; } - - template - constexpr bool - operator> (basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) > 0; } - - template - constexpr bool - operator> (__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) > 0; } - - template - constexpr bool - operator<=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) <= 0; } - - template - constexpr bool - operator<=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) <= 0; } - - template - constexpr bool - operator<=(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) <= 0; } - - template - constexpr bool - operator>=(basic_string_view<_CharT, _Traits> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) >= 0; } - - template - constexpr bool - operator>=(basic_string_view<_CharT, _Traits> __x, - __detail::__idt> __y) noexcept - { return __x.compare(__y) >= 0; } - - template - constexpr bool - operator>=(__detail::__idt> __x, - basic_string_view<_CharT, _Traits> __y) noexcept - { return __x.compare(__y) >= 0; } - - // [string.view.io], Inserters and extractors - template - inline basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, - basic_string_view<_CharT,_Traits> __str) - { return __ostream_insert(__os, __str.data(), __str.size()); } - - - // basic_string_view typedef names - - using string_view = basic_string_view; -#ifdef _GLIBCXX_USE_WCHAR_T - using wstring_view = basic_string_view; -#endif -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - using u16string_view = basic_string_view; - using u32string_view = basic_string_view; -#endif - - // [string.view.hash], hash support: - - template - struct hash; - - template<> - struct hash - : public __hash_base - { - size_t - operator()(const string_view& __str) const noexcept - { return std::_Hash_impl::hash(__str.data(), __str.length()); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - struct hash - : public __hash_base - { - size_t - operator()(const wstring_view& __s) const noexcept - { return std::_Hash_impl::hash(__s.data(), - __s.length() * sizeof(wchar_t)); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; -#endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - template<> - struct hash - : public __hash_base - { - size_t - operator()(const u16string_view& __s) const noexcept - { return std::_Hash_impl::hash(__s.data(), - __s.length() * sizeof(char16_t)); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; - - template<> - struct hash - : public __hash_base - { - size_t - operator()(const u32string_view& __s) const noexcept - { return std::_Hash_impl::hash(__s.data(), - __s.length() * sizeof(char32_t)); } - }; - - template<> - struct __is_fast_hash> : std::false_type - { }; -#endif -_GLIBCXX_END_NAMESPACE_VERSION - - inline namespace literals - { - inline namespace string_view_literals - { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - inline constexpr basic_string_view - operator""sv(const char* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } - -#ifdef _GLIBCXX_USE_WCHAR_T - inline constexpr basic_string_view - operator""sv(const wchar_t* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } -#endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - inline constexpr basic_string_view - operator""sv(const char16_t* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } - - inline constexpr basic_string_view - operator""sv(const char32_t* __str, size_t __len) noexcept - { return basic_string_view{__str, __len}; } -#endif - -_GLIBCXX_END_NAMESPACE_VERSION - } // namespace string_literals - } // namespace literals - -} // namespace std - -#include - -#endif // __cplusplus <= 201402L - -#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/system_error b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/system_error deleted file mode 100644 index ec7d25f25..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/system_error +++ /dev/null @@ -1,419 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/system_error - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_SYSTEM_ERROR -#define _GLIBCXX_SYSTEM_ERROR 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - class error_code; - class error_condition; - class system_error; - - /// is_error_code_enum - template - struct is_error_code_enum : public false_type { }; - - /// is_error_condition_enum - template - struct is_error_condition_enum : public false_type { }; - - template<> - struct is_error_condition_enum - : public true_type { }; - -#if __cplusplus > 201402L - template - inline constexpr bool is_error_code_enum_v = - is_error_code_enum<_Tp>::value; - template - inline constexpr bool is_error_condition_enum_v = - is_error_condition_enum<_Tp>::value; -#endif // C++17 - inline namespace _V2 { - - /// error_category - class error_category - { - public: - constexpr error_category() noexcept = default; - - virtual ~error_category(); - - error_category(const error_category&) = delete; - error_category& operator=(const error_category&) = delete; - - virtual const char* - name() const noexcept = 0; - - // We need two different virtual functions here, one returning a - // COW string and one returning an SSO string. Their positions in the - // vtable must be consistent for dynamic dispatch to work, but which one - // the name "message()" finds depends on which ABI the caller is using. -#if _GLIBCXX_USE_CXX11_ABI - private: - _GLIBCXX_DEFAULT_ABI_TAG - virtual __cow_string - _M_message(int) const; - - public: - _GLIBCXX_DEFAULT_ABI_TAG - virtual string - message(int) const = 0; -#else - virtual string - message(int) const = 0; - - private: - virtual __sso_string - _M_message(int) const; -#endif - - public: - virtual error_condition - default_error_condition(int __i) const noexcept; - - virtual bool - equivalent(int __i, const error_condition& __cond) const noexcept; - - virtual bool - equivalent(const error_code& __code, int __i) const noexcept; - - bool - operator<(const error_category& __other) const noexcept - { return less()(this, &__other); } - - bool - operator==(const error_category& __other) const noexcept - { return this == &__other; } - - bool - operator!=(const error_category& __other) const noexcept - { return this != &__other; } - }; - - // DR 890. - _GLIBCXX_CONST const error_category& system_category() noexcept; - _GLIBCXX_CONST const error_category& generic_category() noexcept; - - } // end inline namespace - - error_code make_error_code(errc) noexcept; - - template - struct hash; - - /// error_code - // Implementation-specific error identification - struct error_code - { - error_code() noexcept - : _M_value(0), _M_cat(&system_category()) { } - - error_code(int __v, const error_category& __cat) noexcept - : _M_value(__v), _M_cat(&__cat) { } - - template::value>::type> - error_code(_ErrorCodeEnum __e) noexcept - { *this = make_error_code(__e); } - - void - assign(int __v, const error_category& __cat) noexcept - { - _M_value = __v; - _M_cat = &__cat; - } - - void - clear() noexcept - { assign(0, system_category()); } - - // DR 804. - template - typename enable_if::value, - error_code&>::type - operator=(_ErrorCodeEnum __e) noexcept - { return *this = make_error_code(__e); } - - int - value() const noexcept { return _M_value; } - - const error_category& - category() const noexcept { return *_M_cat; } - - error_condition - default_error_condition() const noexcept; - - _GLIBCXX_DEFAULT_ABI_TAG - string - message() const - { return category().message(value()); } - - explicit operator bool() const noexcept - { return _M_value != 0; } - - // DR 804. - private: - friend class hash; - - int _M_value; - const error_category* _M_cat; - }; - - // 19.4.2.6 non-member functions - inline error_code - make_error_code(errc __e) noexcept - { return error_code(static_cast(__e), generic_category()); } - - inline bool - operator<(const error_code& __lhs, const error_code& __rhs) noexcept - { - return (__lhs.category() < __rhs.category() - || (__lhs.category() == __rhs.category() - && __lhs.value() < __rhs.value())); - } - - template - basic_ostream<_CharT, _Traits>& - operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) - { return (__os << __e.category().name() << ':' << __e.value()); } - - error_condition make_error_condition(errc) noexcept; - - /// error_condition - // Portable error identification - struct error_condition - { - error_condition() noexcept - : _M_value(0), _M_cat(&generic_category()) { } - - error_condition(int __v, const error_category& __cat) noexcept - : _M_value(__v), _M_cat(&__cat) { } - - template::value>::type> - error_condition(_ErrorConditionEnum __e) noexcept - { *this = make_error_condition(__e); } - - void - assign(int __v, const error_category& __cat) noexcept - { - _M_value = __v; - _M_cat = &__cat; - } - - // DR 804. - template - typename enable_if::value, error_condition&>::type - operator=(_ErrorConditionEnum __e) noexcept - { return *this = make_error_condition(__e); } - - void - clear() noexcept - { assign(0, generic_category()); } - - // 19.4.3.4 observers - int - value() const noexcept { return _M_value; } - - const error_category& - category() const noexcept { return *_M_cat; } - - _GLIBCXX_DEFAULT_ABI_TAG - string - message() const - { return category().message(value()); } - - explicit operator bool() const noexcept - { return _M_value != 0; } - - // DR 804. - private: - int _M_value; - const error_category* _M_cat; - }; - - // 19.4.3.6 non-member functions - inline error_condition - make_error_condition(errc __e) noexcept - { return error_condition(static_cast(__e), generic_category()); } - - inline bool - operator<(const error_condition& __lhs, - const error_condition& __rhs) noexcept - { - return (__lhs.category() < __rhs.category() - || (__lhs.category() == __rhs.category() - && __lhs.value() < __rhs.value())); - } - - // 19.4.4 Comparison operators - inline bool - operator==(const error_code& __lhs, const error_code& __rhs) noexcept - { return (__lhs.category() == __rhs.category() - && __lhs.value() == __rhs.value()); } - - inline bool - operator==(const error_code& __lhs, const error_condition& __rhs) noexcept - { - return (__lhs.category().equivalent(__lhs.value(), __rhs) - || __rhs.category().equivalent(__lhs, __rhs.value())); - } - - inline bool - operator==(const error_condition& __lhs, const error_code& __rhs) noexcept - { - return (__rhs.category().equivalent(__rhs.value(), __lhs) - || __lhs.category().equivalent(__rhs, __lhs.value())); - } - - inline bool - operator==(const error_condition& __lhs, - const error_condition& __rhs) noexcept - { - return (__lhs.category() == __rhs.category() - && __lhs.value() == __rhs.value()); - } - - inline bool - operator!=(const error_code& __lhs, const error_code& __rhs) noexcept - { return !(__lhs == __rhs); } - - inline bool - operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept - { return !(__lhs == __rhs); } - - inline bool - operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept - { return !(__lhs == __rhs); } - - inline bool - operator!=(const error_condition& __lhs, - const error_condition& __rhs) noexcept - { return !(__lhs == __rhs); } - - - /** - * @brief Thrown to indicate error code of underlying system. - * - * @ingroup exceptions - */ - class system_error : public std::runtime_error - { - private: - error_code _M_code; - - public: - system_error(error_code __ec = error_code()) - : runtime_error(__ec.message()), _M_code(__ec) { } - - system_error(error_code __ec, const string& __what) - : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { } - - system_error(error_code __ec, const char* __what) - : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } - - system_error(int __v, const error_category& __ecat, const char* __what) - : system_error(error_code(__v, __ecat), __what) { } - - system_error(int __v, const error_category& __ecat) - : runtime_error(error_code(__v, __ecat).message()), - _M_code(__v, __ecat) { } - - system_error(int __v, const error_category& __ecat, const string& __what) - : runtime_error(__what + ": " + error_code(__v, __ecat).message()), - _M_code(__v, __ecat) { } - - virtual ~system_error() noexcept; - - const error_code& - code() const noexcept { return _M_code; } - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#ifndef _GLIBCXX_COMPATIBILITY_CXX0X - // DR 1182. - /// std::hash specialization for error_code. - template<> - struct hash - : public __hash_base - { - size_t - operator()(const error_code& __e) const noexcept - { - const size_t __tmp = std::_Hash_impl::hash(__e._M_value); - return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp); - } - }; -#endif // _GLIBCXX_COMPATIBILITY_CXX0X - -#if __cplusplus > 201402L - // DR 2686. - /// std::hash specialization for error_condition. - template<> - struct hash - : public __hash_base - { - size_t - operator()(const error_condition& __e) const noexcept - { - const size_t __tmp = std::_Hash_impl::hash(__e.value()); - return std::_Hash_impl::__hash_combine(__e.category(), __tmp); - } - }; -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif // C++11 - -#endif // _GLIBCXX_SYSTEM_ERROR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tgmath.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tgmath.h deleted file mode 100644 index ea6952038..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tgmath.h +++ /dev/null @@ -1,42 +0,0 @@ -// -*- C++ -*- compatibility header. - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tgmath.h - * This is a Standard C++ Library header. - */ - -#include - -#if __cplusplus >= 201103L -# include -#else -# if _GLIBCXX_HAVE_TGMATH_H -# include_next -# endif -#endif - -#ifndef _GLIBCXX_TGMATH_H -#define _GLIBCXX_TGMATH_H 1 - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/array deleted file mode 100644 index 606d019ad..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/array +++ /dev/null @@ -1,251 +0,0 @@ -// class template array -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/array - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_ARRAY -#define _GLIBCXX_TR1_ARRAY 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @brief A standard container for storing a fixed size sequence of elements. - * - * @ingroup sequences - * - * Meets the requirements of a container, a - * reversible container, and a - * sequence. - * - * Sets support random access iterators. - * - * @param Tp Type of element. Required to be a complete type. - * @param N Number of elements. - */ - template - struct array - { - typedef _Tp value_type; - typedef value_type& reference; - typedef const value_type& const_reference; - typedef value_type* iterator; - typedef const value_type* const_iterator; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef std::reverse_iterator reverse_iterator; - typedef std::reverse_iterator const_reverse_iterator; - - // Support for zero-sized arrays mandatory. - value_type _M_instance[_Nm ? _Nm : 1]; - - // No explicit construct/copy/destroy for aggregate type. - - void - assign(const value_type& __u) - { std::fill_n(begin(), size(), __u); } - - void - swap(array& __other) - { std::swap_ranges(begin(), end(), __other.begin()); } - - // Iterators. - iterator - begin() - { return iterator(std::__addressof(_M_instance[0])); } - - const_iterator - begin() const - { return const_iterator(std::__addressof(_M_instance[0])); } - - iterator - end() - { return iterator(std::__addressof(_M_instance[_Nm])); } - - const_iterator - end() const - { return const_iterator(std::__addressof(_M_instance[_Nm])); } - - reverse_iterator - rbegin() - { return reverse_iterator(end()); } - - const_reverse_iterator - rbegin() const - { return const_reverse_iterator(end()); } - - reverse_iterator - rend() - { return reverse_iterator(begin()); } - - const_reverse_iterator - rend() const - { return const_reverse_iterator(begin()); } - - // Capacity. - size_type - size() const { return _Nm; } - - size_type - max_size() const { return _Nm; } - - bool - empty() const { return size() == 0; } - - // Element access. - reference - operator[](size_type __n) - { return _M_instance[__n]; } - - const_reference - operator[](size_type __n) const - { return _M_instance[__n]; } - - reference - at(size_type __n) - { - if (__n >= _Nm) - std::__throw_out_of_range(__N("array::at")); - return _M_instance[__n]; - } - - const_reference - at(size_type __n) const - { - if (__n >= _Nm) - std::__throw_out_of_range(__N("array::at")); - return _M_instance[__n]; - } - - reference - front() - { return *begin(); } - - const_reference - front() const - { return *begin(); } - - reference - back() - { return _Nm ? *(end() - 1) : *end(); } - - const_reference - back() const - { return _Nm ? *(end() - 1) : *end(); } - - _Tp* - data() - { return std::__addressof(_M_instance[0]); } - - const _Tp* - data() const - { return std::__addressof(_M_instance[0]); } - }; - - // Array comparisons. - template - inline bool - operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return std::equal(__one.begin(), __one.end(), __two.begin()); } - - template - inline bool - operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one == __two); } - - template - inline bool - operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) - { - return std::lexicographical_compare(__a.begin(), __a.end(), - __b.begin(), __b.end()); - } - - template - inline bool - operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return __two < __one; } - - template - inline bool - operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one > __two); } - - template - inline bool - operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) - { return !(__one < __two); } - - // Specialized algorithms [6.2.2.2]. - template - inline void - swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) - { __one.swap(__two); } - - // Tuple interface to class template array [6.2.2.5]. - - /// tuple_size - template - class tuple_size; - - /// tuple_element - template - class tuple_element; - - template - struct tuple_size > - { static const int value = _Nm; }; - - template - const int - tuple_size >::value; - - template - struct tuple_element<_Int, array<_Tp, _Nm> > - { typedef _Tp type; }; - - template - inline _Tp& - get(array<_Tp, _Nm>& __arr) - { return __arr[_Int]; } - - template - inline const _Tp& - get(const array<_Tp, _Nm>& __arr) - { return __arr[_Int]; } - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ccomplex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ccomplex deleted file mode 100644 index 2c331f6a1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ccomplex +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 ccomplex -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/ccomplex - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CCOMPLEX -#define _GLIBCXX_TR1_CCOMPLEX 1 - -#include - -#endif // _GLIBCXX_TR1_CCOMPLEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cctype deleted file mode 100644 index 5bca4b78a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cctype +++ /dev/null @@ -1,49 +0,0 @@ -// TR1 cctype -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cctype - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CCTYPE -#define _GLIBCXX_TR1_CCTYPE 1 - -#include -#include - -#ifdef _GLIBCXX_USE_C99_CTYPE_TR1 - -#undef isblank - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ - using ::isblank; -} -} - -#endif - -#endif // _GLIBCXX_TR1_CCTYPE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cfenv b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cfenv deleted file mode 100644 index 7dd371afa..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cfenv +++ /dev/null @@ -1,81 +0,0 @@ -// TR1 cfenv -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cfenv - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CFENV -#define _GLIBCXX_TR1_CFENV 1 - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HAVE_FENV_H -# include -#endif - -#ifdef _GLIBCXX_USE_C99_FENV_TR1 - -#undef feclearexcept -#undef fegetexceptflag -#undef feraiseexcept -#undef fesetexceptflag -#undef fetestexcept -#undef fegetround -#undef fesetround -#undef fegetenv -#undef feholdexcept -#undef fesetenv -#undef feupdateenv - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ - // types - using ::fenv_t; - using ::fexcept_t; - - // functions - using ::feclearexcept; - using ::fegetexceptflag; - using ::feraiseexcept; - using ::fesetexceptflag; - using ::fetestexcept; - - using ::fegetround; - using ::fesetround; - - using ::fegetenv; - using ::feholdexcept; - using ::fesetenv; - using ::feupdateenv; -} -} - -#endif // _GLIBCXX_USE_C99_FENV_TR1 - -#endif // _GLIBCXX_TR1_CFENV diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cfloat b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cfloat deleted file mode 100644 index bcd77f1af..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cfloat +++ /dev/null @@ -1,42 +0,0 @@ -// TR1 cfloat -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cfloat - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CFLOAT -#define _GLIBCXX_TR1_CFLOAT 1 - -#include - -#ifndef DECIMAL_DIG -#define DECIMAL_DIG __DECIMAL_DIG__ -#endif - -#ifndef FLT_EVAL_METHOD -#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ -#endif - -#endif //_GLIBCXX_TR1_CFLOAT diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cinttypes b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cinttypes deleted file mode 100644 index a922e6990..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cinttypes +++ /dev/null @@ -1,84 +0,0 @@ -// TR1 cinttypes -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cinttypes - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CINTTYPES -#define _GLIBCXX_TR1_CINTTYPES 1 - -#pragma GCC system_header - -#include - -// For 8.11.1/1 (see C99, Note 184) -#if _GLIBCXX_HAVE_INTTYPES_H -# ifndef __STDC_FORMAT_MACROS -# define _UNDEF__STDC_FORMAT_MACROS -# define __STDC_FORMAT_MACROS -# endif -# include -# ifdef _UNDEF__STDC_FORMAT_MACROS -# undef __STDC_FORMAT_MACROS -# undef _UNDEF__STDC_FORMAT_MACROS -# endif -#endif - -#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ - // types - using ::imaxdiv_t; - - // functions - using ::imaxabs; - - // May collide with _Longlong abs(_Longlong), and is not described - // anywhere outside the synopsis. Likely, a defect. - // - // intmax_t abs(intmax_t) - - using ::imaxdiv; - - // Likewise, with lldiv_t div(_Longlong, _Longlong). - // - // imaxdiv_t div(intmax_t, intmax_t) - - using ::strtoimax; - using ::strtoumax; - -#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 - using ::wcstoimax; - using ::wcstoumax; -#endif -} -} - -#endif // _GLIBCXX_USE_C99_INTTYPES_TR1 - -#endif // _GLIBCXX_TR1_CINTTYPES diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/climits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/climits deleted file mode 100644 index d703a68a1..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/climits +++ /dev/null @@ -1,46 +0,0 @@ -// TR1 climits -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/climits - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CLIMITS -#define _GLIBCXX_TR1_CLIMITS 1 - -#include - -#ifndef LLONG_MIN -#define LLONG_MIN (-__LONG_LONG_MAX__ - 1) -#endif - -#ifndef LLONG_MAX -#define LLONG_MAX __LONG_LONG_MAX__ -#endif - -#ifndef ULLONG_MAX -#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1) -#endif - -#endif // _GLIBCXX_TR1_CLIMITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cmath deleted file mode 100644 index b24e8c2a7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cmath +++ /dev/null @@ -1,1688 +0,0 @@ -// TR1 cmath -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cmath - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CMATH -#define _GLIBCXX_TR1_CMATH 1 - -#pragma GCC system_header - -#include - -#ifdef _GLIBCXX_USE_C99_MATH_TR1 - -#undef acosh -#undef acoshf -#undef acoshl -#undef asinh -#undef asinhf -#undef asinhl -#undef atanh -#undef atanhf -#undef atanhl -#undef cbrt -#undef cbrtf -#undef cbrtl -#undef copysign -#undef copysignf -#undef copysignl -#undef erf -#undef erff -#undef erfl -#undef erfc -#undef erfcf -#undef erfcl -#undef exp2 -#undef exp2f -#undef exp2l -#undef expm1 -#undef expm1f -#undef expm1l -#undef fdim -#undef fdimf -#undef fdiml -#undef fma -#undef fmaf -#undef fmal -#undef fmax -#undef fmaxf -#undef fmaxl -#undef fmin -#undef fminf -#undef fminl -#undef hypot -#undef hypotf -#undef hypotl -#undef ilogb -#undef ilogbf -#undef ilogbl -#undef lgamma -#undef lgammaf -#undef lgammal -#undef llrint -#undef llrintf -#undef llrintl -#undef llround -#undef llroundf -#undef llroundl -#undef log1p -#undef log1pf -#undef log1pl -#undef log2 -#undef log2f -#undef log2l -#undef logb -#undef logbf -#undef logbl -#undef lrint -#undef lrintf -#undef lrintl -#undef lround -#undef lroundf -#undef lroundl -#undef nan -#undef nanf -#undef nanl -#undef nearbyint -#undef nearbyintf -#undef nearbyintl -#undef nextafter -#undef nextafterf -#undef nextafterl -#undef nexttoward -#undef nexttowardf -#undef nexttowardl -#undef remainder -#undef remainderf -#undef remainderl -#undef remquo -#undef remquof -#undef remquol -#undef rint -#undef rintf -#undef rintl -#undef round -#undef roundf -#undef roundl -#undef scalbln -#undef scalblnf -#undef scalblnl -#undef scalbn -#undef scalbnf -#undef scalbnl -#undef tgamma -#undef tgammaf -#undef tgammal -#undef trunc -#undef truncf -#undef truncl - -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#if _GLIBCXX_USE_C99_MATH_TR1 - - // Using declarations to bring names from libc's into std::tr1. - - // types - using ::double_t; - using ::float_t; - - // functions - using ::acosh; - using ::acoshf; - using ::acoshl; - - using ::asinh; - using ::asinhf; - using ::asinhl; - - using ::atanh; - using ::atanhf; - using ::atanhl; - - using ::cbrt; - using ::cbrtf; - using ::cbrtl; - - using ::copysign; - using ::copysignf; - using ::copysignl; - - using ::erf; - using ::erff; - using ::erfl; - - using ::erfc; - using ::erfcf; - using ::erfcl; - - using ::exp2; - using ::exp2f; - using ::exp2l; - - using ::expm1; - using ::expm1f; - using ::expm1l; - - using ::fdim; - using ::fdimf; - using ::fdiml; - - using ::fma; - using ::fmaf; - using ::fmal; - - using ::fmax; - using ::fmaxf; - using ::fmaxl; - - using ::fmin; - using ::fminf; - using ::fminl; - - using ::hypot; - using ::hypotf; - using ::hypotl; - - using ::ilogb; - using ::ilogbf; - using ::ilogbl; - - using ::lgamma; - using ::lgammaf; - using ::lgammal; - - using ::llrint; - using ::llrintf; - using ::llrintl; - - using ::llround; - using ::llroundf; - using ::llroundl; - - using ::log1p; - using ::log1pf; - using ::log1pl; - - using ::log2; - using ::log2f; - using ::log2l; - - using ::logb; - using ::logbf; - using ::logbl; - - using ::lrint; - using ::lrintf; - using ::lrintl; - - using ::lround; - using ::lroundf; - using ::lroundl; - - using ::nan; - using ::nanf; - using ::nanl; - - using ::nearbyint; - using ::nearbyintf; - using ::nearbyintl; - - using ::nextafter; - using ::nextafterf; - using ::nextafterl; - - using ::nexttoward; - using ::nexttowardf; - using ::nexttowardl; - - using ::remainder; - using ::remainderf; - using ::remainderl; - - using ::remquo; - using ::remquof; - using ::remquol; - - using ::rint; - using ::rintf; - using ::rintl; - - using ::round; - using ::roundf; - using ::roundl; - - using ::scalbln; - using ::scalblnf; - using ::scalblnl; - - using ::scalbn; - using ::scalbnf; - using ::scalbnl; - - using ::tgamma; - using ::tgammaf; - using ::tgammal; - - using ::trunc; - using ::truncf; - using ::truncl; - -#endif - -#if _GLIBCXX_USE_C99_MATH -#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC - - /// Function template definitions [8.16.3]. - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - fpclassify(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, - FP_SUBNORMAL, FP_ZERO, __type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isfinite(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isfinite(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isinf(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isinf(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isnan(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isnan(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isnormal(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isnormal(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - signbit(_Tp __f) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_signbit(__type(__f)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isgreater(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isgreater(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isgreaterequal(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isgreaterequal(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isless(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isless(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - islessequal(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_islessequal(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - islessgreater(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_islessgreater(__type(__f1), __type(__f2)); - } - - template - inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, - int>::__type - isunordered(_Tp __f1, _Tp __f2) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __builtin_isunordered(__type(__f1), __type(__f2)); - } - -#endif -#endif - -#if _GLIBCXX_USE_C99_MATH_TR1 - - /** Additional overloads [8.16.4]. - * @{ - */ - - // For functions defined in C++03 the additional overloads are already - // declared in so we can just re-declare them in std::tr1. - - using std::acos; - using std::asin; - using std::atan; - using std::atan2; - using std::ceil; - using std::cos; - using std::cosh; - using std::exp; - using std::floor; - using std::fmod; - using std::frexp; - using std::ldexp; - using std::log; - using std::log10; - using std::sin; - using std::sinh; - using std::sqrt; - using std::tan; - using std::tanh; - -#if __cplusplus >= 201103L - - // Since C++11, defines additional overloads for these functions - // in namespace std. - - using std::acosh; - using std::asinh; - using std::atanh; - using std::cbrt; - using std::copysign; - using std::erf; - using std::erfc; - using std::exp2; - using std::expm1; - using std::fdim; - using std::fma; - using std::fmax; - using std::fmin; - using std::hypot; - using std::ilogb; - using std::lgamma; - using std::llrint; - using std::llround; - using std::log1p; - using std::log2; - using std::logb; - using std::lrint; - using std::lround; - using std::nan; - using std::nearbyint; - using std::nextafter; - using std::nexttoward; - using std::remainder; - using std::remquo; - using std::rint; - using std::round; - using std::scalbln; - using std::scalbn; - using std::tgamma; - using std::trunc; - -#else // __cplusplus < 201103L - - // In C++03 we need to provide the additional overloads. - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - acosh(float __x) - { return __builtin_acoshf(__x); } - - inline long double - acosh(long double __x) - { return __builtin_acoshl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - acosh(_Tp __x) - { return __builtin_acosh(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - asinh(float __x) - { return __builtin_asinhf(__x); } - - inline long double - asinh(long double __x) - { return __builtin_asinhl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - asinh(_Tp __x) - { return __builtin_asinh(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - atanh(float __x) - { return __builtin_atanhf(__x); } - - inline long double - atanh(long double __x) - { return __builtin_atanhl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - atanh(_Tp __x) - { return __builtin_atanh(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - cbrt(float __x) - { return __builtin_cbrtf(__x); } - - inline long double - cbrt(long double __x) - { return __builtin_cbrtl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - cbrt(_Tp __x) - { return __builtin_cbrt(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - copysign(float __x, float __y) - { return __builtin_copysignf(__x, __y); } - - inline long double - copysign(long double __x, long double __y) - { return __builtin_copysignl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - copysign(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return copysign(__type(__x), __type(__y)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - erf(float __x) - { return __builtin_erff(__x); } - - inline long double - erf(long double __x) - { return __builtin_erfl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - erf(_Tp __x) - { return __builtin_erf(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - erfc(float __x) - { return __builtin_erfcf(__x); } - - inline long double - erfc(long double __x) - { return __builtin_erfcl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - erfc(_Tp __x) - { return __builtin_erfc(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - exp2(float __x) - { return __builtin_exp2f(__x); } - - inline long double - exp2(long double __x) - { return __builtin_exp2l(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - exp2(_Tp __x) - { return __builtin_exp2(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - expm1(float __x) - { return __builtin_expm1f(__x); } - - inline long double - expm1(long double __x) - { return __builtin_expm1l(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - expm1(_Tp __x) - { return __builtin_expm1(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - fdim(float __x, float __y) - { return __builtin_fdimf(__x, __y); } - - inline long double - fdim(long double __x, long double __y) - { return __builtin_fdiml(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fdim(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fdim(__type(__x), __type(__y)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - fma(float __x, float __y, float __z) - { return __builtin_fmaf(__x, __y, __z); } - - inline long double - fma(long double __x, long double __y, long double __z) - { return __builtin_fmal(__x, __y, __z); } -#endif - - template - inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type - fma(_Tp __x, _Up __y, _Vp __z) - { - typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; - return fma(__type(__x), __type(__y), __type(__z)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - fmax(float __x, float __y) - { return __builtin_fmaxf(__x, __y); } - - inline long double - fmax(long double __x, long double __y) - { return __builtin_fmaxl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fmax(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fmax(__type(__x), __type(__y)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - fmin(float __x, float __y) - { return __builtin_fminf(__x, __y); } - - inline long double - fmin(long double __x, long double __y) - { return __builtin_fminl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - fmin(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return fmin(__type(__x), __type(__y)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - hypot(float __x, float __y) - { return __builtin_hypotf(__x, __y); } - - inline long double - hypot(long double __x, long double __y) - { return __builtin_hypotl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - hypot(_Tp __y, _Up __x) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return hypot(__type(__y), __type(__x)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline int - ilogb(float __x) - { return __builtin_ilogbf(__x); } - - inline int - ilogb(long double __x) - { return __builtin_ilogbl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - int>::__type - ilogb(_Tp __x) - { return __builtin_ilogb(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - lgamma(float __x) - { return __builtin_lgammaf(__x); } - - inline long double - lgamma(long double __x) - { return __builtin_lgammal(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - lgamma(_Tp __x) - { return __builtin_lgamma(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline long long - llrint(float __x) - { return __builtin_llrintf(__x); } - - inline long long - llrint(long double __x) - { return __builtin_llrintl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long long>::__type - llrint(_Tp __x) - { return __builtin_llrint(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline long long - llround(float __x) - { return __builtin_llroundf(__x); } - - inline long long - llround(long double __x) - { return __builtin_llroundl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long long>::__type - llround(_Tp __x) - { return __builtin_llround(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - log1p(float __x) - { return __builtin_log1pf(__x); } - - inline long double - log1p(long double __x) - { return __builtin_log1pl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - log1p(_Tp __x) - { return __builtin_log1p(__x); } - - // DR 568. -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - log2(float __x) - { return __builtin_log2f(__x); } - - inline long double - log2(long double __x) - { return __builtin_log2l(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - log2(_Tp __x) - { return __builtin_log2(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - logb(float __x) - { return __builtin_logbf(__x); } - - inline long double - logb(long double __x) - { return __builtin_logbl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - logb(_Tp __x) - { - return __builtin_logb(__x); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline long - lrint(float __x) - { return __builtin_lrintf(__x); } - - inline long - lrint(long double __x) - { return __builtin_lrintl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long>::__type - lrint(_Tp __x) - { return __builtin_lrint(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline long - lround(float __x) - { return __builtin_lroundf(__x); } - - inline long - lround(long double __x) - { return __builtin_lroundl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - long>::__type - lround(_Tp __x) - { return __builtin_lround(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - nearbyint(float __x) - { return __builtin_nearbyintf(__x); } - - inline long double - nearbyint(long double __x) - { return __builtin_nearbyintl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - nearbyint(_Tp __x) - { return __builtin_nearbyint(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - nextafter(float __x, float __y) - { return __builtin_nextafterf(__x, __y); } - - inline long double - nextafter(long double __x, long double __y) - { return __builtin_nextafterl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - nextafter(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return nextafter(__type(__x), __type(__y)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - nexttoward(float __x, long double __y) - { return __builtin_nexttowardf(__x, __y); } - - inline long double - nexttoward(long double __x, long double __y) - { return __builtin_nexttowardl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - nexttoward(_Tp __x, long double __y) - { return __builtin_nexttoward(__x, __y); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - remainder(float __x, float __y) - { return __builtin_remainderf(__x, __y); } - - inline long double - remainder(long double __x, long double __y) - { return __builtin_remainderl(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - remainder(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return remainder(__type(__x), __type(__y)); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - remquo(float __x, float __y, int* __pquo) - { return __builtin_remquof(__x, __y, __pquo); } - - inline long double - remquo(long double __x, long double __y, int* __pquo) - { return __builtin_remquol(__x, __y, __pquo); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - remquo(_Tp __x, _Up __y, int* __pquo) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return remquo(__type(__x), __type(__y), __pquo); - } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - rint(float __x) - { return __builtin_rintf(__x); } - - inline long double - rint(long double __x) - { return __builtin_rintl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - rint(_Tp __x) - { return __builtin_rint(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - round(float __x) - { return __builtin_roundf(__x); } - - inline long double - round(long double __x) - { return __builtin_roundl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - round(_Tp __x) - { return __builtin_round(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - scalbln(float __x, long __ex) - { return __builtin_scalblnf(__x, __ex); } - - inline long double - scalbln(long double __x, long __ex) - { return __builtin_scalblnl(__x, __ex); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - scalbln(_Tp __x, long __ex) - { return __builtin_scalbln(__x, __ex); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - scalbn(float __x, int __ex) - { return __builtin_scalbnf(__x, __ex); } - - inline long double - scalbn(long double __x, int __ex) - { return __builtin_scalbnl(__x, __ex); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - scalbn(_Tp __x, int __ex) - { return __builtin_scalbn(__x, __ex); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - tgamma(float __x) - { return __builtin_tgammaf(__x); } - - inline long double - tgamma(long double __x) - { return __builtin_tgammal(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - tgamma(_Tp __x) - { return __builtin_tgamma(__x); } - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - trunc(float __x) - { return __builtin_truncf(__x); } - - inline long double - trunc(long double __x) - { return __builtin_truncl(__x); } -#endif - - template - inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, - double>::__type - trunc(_Tp __x) - { return __builtin_trunc(__x); } - -#endif // __cplusplus < 201103L - - // @} - -#endif -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // DR 550. What should the return type of pow(float,int) be? - // NB: C++11 and TR1 != C++03. - - // We cannot do "using std::pow;" because that would bring in unwanted - // pow(*, int) overloads in C++03, with the wrong return type. Instead we - // define all the necessary overloads, but the std::tr1::pow(double, double) - // overload cannot be provided here, because would add it to - // the global namespace where it would clash with ::pow(double,double) from - // libc (revealed by the fix of PR c++/54537). - // The solution is to forward std::tr1::pow(double,double) to - // std::pow(double,double) via the function template below. See - // the discussion about this issue here: - // http://gcc.gnu.org/ml/gcc-patches/2012-09/msg01278.html - -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - pow(float __x, float __y) - { return std::pow(__x, __y); } - - inline long double - pow(long double __x, long double __y) - { return std::pow(__x, __y); } -#endif - - template - inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type - pow(_Tp __x, _Up __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(__type(__x), __type(__y)); - } - -#if __cplusplus >= 201103L - // We also deal with fabs in a special way, because "using std::fabs;" - // could bring in C++11's std::fabs(const std::complex&) with a - // different return type from std::tr1::fabs(const std::complex&). - // We define the necessary overloads, except std::tr1::fabs(double) which - // could clash with ::fabs(double) from libc. - // The function template handles double as well as integers, forwarding - // to std::fabs. - -#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO -#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP - inline float - fabs(float __x) - { return __builtin_fabsf(__x); } - - inline long double - fabs(long double __x) - { return __builtin_fabsl(__x); } -#endif -#endif - - template - inline typename __gnu_cxx::__promote<_Tp>::__type - fabs(_Tp __x) - { return std::fabs(__x); } - -#else // ! C++11 - - // For C++03 just use std::fabs as there is no overload for std::complex<>. - using std::fabs; - -#endif // C++11 - - - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#if _GLIBCXX_USE_STD_SPEC_FUNCS - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup tr1_math_spec_func Mathematical Special Functions - * @ingroup numerics - * - * A collection of advanced mathematical special functions. - * @{ - */ - - using std::assoc_laguerref; - using std::assoc_laguerrel; - using std::assoc_laguerre; - - using std::assoc_legendref; - using std::assoc_legendrel; - using std::assoc_legendre; - - using std::betaf; - using std::betal; - using std::beta; - - using std::comp_ellint_1f; - using std::comp_ellint_1l; - using std::comp_ellint_1; - - using std::comp_ellint_2f; - using std::comp_ellint_2l; - using std::comp_ellint_2; - - using std::comp_ellint_3f; - using std::comp_ellint_3l; - using std::comp_ellint_3; - - using __gnu_cxx::conf_hypergf; - using __gnu_cxx::conf_hypergl; - using __gnu_cxx::conf_hyperg; - - using std::cyl_bessel_if; - using std::cyl_bessel_il; - using std::cyl_bessel_i; - - using std::cyl_bessel_jf; - using std::cyl_bessel_jl; - using std::cyl_bessel_j; - - using std::cyl_bessel_kf; - using std::cyl_bessel_kl; - using std::cyl_bessel_k; - - using std::cyl_neumannf; - using std::cyl_neumannl; - using std::cyl_neumann; - - using std::ellint_1f; - using std::ellint_1l; - using std::ellint_1; - - using std::ellint_2f; - using std::ellint_2l; - using std::ellint_2; - - using std::ellint_3f; - using std::ellint_3l; - using std::ellint_3; - - using std::expintf; - using std::expintl; - using std::expint; - - using std::hermitef; - using std::hermitel; - using std::hermite; - - using __gnu_cxx::hypergf; - using __gnu_cxx::hypergl; - using __gnu_cxx::hyperg; - - using std::laguerref; - using std::laguerrel; - using std::laguerre; - - using std::legendref; - using std::legendrel; - using std::legendre; - - using std::riemann_zetaf; - using std::riemann_zetal; - using std::riemann_zeta; - - using std::sph_besself; - using std::sph_bessell; - using std::sph_bessel; - - using std::sph_legendref; - using std::sph_legendrel; - using std::sph_legendre; - - using std::sph_neumannf; - using std::sph_neumannl; - using std::sph_neumann; - - /* @} */ // tr1_math_spec_func -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#else // ! _GLIBCXX_USE_STD_SPEC_FUNCS - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @defgroup tr1_math_spec_func Mathematical Special Functions - * @ingroup numerics - * - * A collection of advanced mathematical special functions. - * @{ - */ - - inline float - assoc_laguerref(unsigned int __n, unsigned int __m, float __x) - { return __detail::__assoc_laguerre(__n, __m, __x); } - - inline long double - assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x) - { - return __detail::__assoc_laguerre(__n, __m, __x); - } - - /// 5.2.1.1 Associated Laguerre polynomials. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__assoc_laguerre<__type>(__n, __m, __x); - } - - inline float - assoc_legendref(unsigned int __l, unsigned int __m, float __x) - { return __detail::__assoc_legendre_p(__l, __m, __x); } - - inline long double - assoc_legendrel(unsigned int __l, unsigned int __m, long double __x) - { return __detail::__assoc_legendre_p(__l, __m, __x); } - - /// 5.2.1.2 Associated Legendre functions. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__assoc_legendre_p<__type>(__l, __m, __x); - } - - inline float - betaf(float __x, float __y) - { return __detail::__beta(__x, __y); } - - inline long double - betal(long double __x, long double __y) - { return __detail::__beta(__x, __y); } - - /// 5.2.1.3 Beta functions. - template - inline typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type - beta(_Tpx __x, _Tpy __y) - { - typedef typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type __type; - return __detail::__beta<__type>(__x, __y); - } - - inline float - comp_ellint_1f(float __k) - { return __detail::__comp_ellint_1(__k); } - - inline long double - comp_ellint_1l(long double __k) - { return __detail::__comp_ellint_1(__k); } - - /// 5.2.1.4 Complete elliptic integrals of the first kind. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - comp_ellint_1(_Tp __k) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__comp_ellint_1<__type>(__k); - } - - inline float - comp_ellint_2f(float __k) - { return __detail::__comp_ellint_2(__k); } - - inline long double - comp_ellint_2l(long double __k) - { return __detail::__comp_ellint_2(__k); } - - /// 5.2.1.5 Complete elliptic integrals of the second kind. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - comp_ellint_2(_Tp __k) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__comp_ellint_2<__type>(__k); - } - - inline float - comp_ellint_3f(float __k, float __nu) - { return __detail::__comp_ellint_3(__k, __nu); } - - inline long double - comp_ellint_3l(long double __k, long double __nu) - { return __detail::__comp_ellint_3(__k, __nu); } - - /// 5.2.1.6 Complete elliptic integrals of the third kind. - template - inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type - comp_ellint_3(_Tp __k, _Tpn __nu) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type; - return __detail::__comp_ellint_3<__type>(__k, __nu); - } - - inline float - conf_hypergf(float __a, float __c, float __x) - { return __detail::__conf_hyperg(__a, __c, __x); } - - inline long double - conf_hypergl(long double __a, long double __c, long double __x) - { return __detail::__conf_hyperg(__a, __c, __x); } - - /// 5.2.1.7 Confluent hypergeometric functions. - template - inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type - conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x) - { - typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type; - return __detail::__conf_hyperg<__type>(__a, __c, __x); - } - - inline float - cyl_bessel_if(float __nu, float __x) - { return __detail::__cyl_bessel_i(__nu, __x); } - - inline long double - cyl_bessel_il(long double __nu, long double __x) - { return __detail::__cyl_bessel_i(__nu, __x); } - - /// 5.2.1.8 Regular modified cylindrical Bessel functions. - template - inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type - cyl_bessel_i(_Tpnu __nu, _Tp __x) - { - typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; - return __detail::__cyl_bessel_i<__type>(__nu, __x); - } - - inline float - cyl_bessel_jf(float __nu, float __x) - { return __detail::__cyl_bessel_j(__nu, __x); } - - inline long double - cyl_bessel_jl(long double __nu, long double __x) - { return __detail::__cyl_bessel_j(__nu, __x); } - - /// 5.2.1.9 Cylindrical Bessel functions (of the first kind). - template - inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type - cyl_bessel_j(_Tpnu __nu, _Tp __x) - { - typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; - return __detail::__cyl_bessel_j<__type>(__nu, __x); - } - - inline float - cyl_bessel_kf(float __nu, float __x) - { return __detail::__cyl_bessel_k(__nu, __x); } - - inline long double - cyl_bessel_kl(long double __nu, long double __x) - { return __detail::__cyl_bessel_k(__nu, __x); } - - /// 5.2.1.10 Irregular modified cylindrical Bessel functions. - template - inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type - cyl_bessel_k(_Tpnu __nu, _Tp __x) - { - typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; - return __detail::__cyl_bessel_k<__type>(__nu, __x); - } - - inline float - cyl_neumannf(float __nu, float __x) - { return __detail::__cyl_neumann_n(__nu, __x); } - - inline long double - cyl_neumannl(long double __nu, long double __x) - { return __detail::__cyl_neumann_n(__nu, __x); } - - /// 5.2.1.11 Cylindrical Neumann functions. - template - inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type - cyl_neumann(_Tpnu __nu, _Tp __x) - { - typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; - return __detail::__cyl_neumann_n<__type>(__nu, __x); - } - - inline float - ellint_1f(float __k, float __phi) - { return __detail::__ellint_1(__k, __phi); } - - inline long double - ellint_1l(long double __k, long double __phi) - { return __detail::__ellint_1(__k, __phi); } - - /// 5.2.1.12 Incomplete elliptic integrals of the first kind. - template - inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type - ellint_1(_Tp __k, _Tpp __phi) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; - return __detail::__ellint_1<__type>(__k, __phi); - } - - inline float - ellint_2f(float __k, float __phi) - { return __detail::__ellint_2(__k, __phi); } - - inline long double - ellint_2l(long double __k, long double __phi) - { return __detail::__ellint_2(__k, __phi); } - - /// 5.2.1.13 Incomplete elliptic integrals of the second kind. - template - inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type - ellint_2(_Tp __k, _Tpp __phi) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; - return __detail::__ellint_2<__type>(__k, __phi); - } - - inline float - ellint_3f(float __k, float __nu, float __phi) - { return __detail::__ellint_3(__k, __nu, __phi); } - - inline long double - ellint_3l(long double __k, long double __nu, long double __phi) - { return __detail::__ellint_3(__k, __nu, __phi); } - - /// 5.2.1.14 Incomplete elliptic integrals of the third kind. - template - inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type - ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi) - { - typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type; - return __detail::__ellint_3<__type>(__k, __nu, __phi); - } - - inline float - expintf(float __x) - { return __detail::__expint(__x); } - - inline long double - expintl(long double __x) - { return __detail::__expint(__x); } - - /// 5.2.1.15 Exponential integrals. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - expint(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__expint<__type>(__x); - } - - inline float - hermitef(unsigned int __n, float __x) - { return __detail::__poly_hermite(__n, __x); } - - inline long double - hermitel(unsigned int __n, long double __x) - { return __detail::__poly_hermite(__n, __x); } - - /// 5.2.1.16 Hermite polynomials. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - hermite(unsigned int __n, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__poly_hermite<__type>(__n, __x); - } - - inline float - hypergf(float __a, float __b, float __c, float __x) - { return __detail::__hyperg(__a, __b, __c, __x); } - - inline long double - hypergl(long double __a, long double __b, long double __c, long double __x) - { return __detail::__hyperg(__a, __b, __c, __x); } - - /// 5.2.1.17 Hypergeometric functions. - template - inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type - hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x) - { - typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type __type; - return __detail::__hyperg<__type>(__a, __b, __c, __x); - } - - inline float - laguerref(unsigned int __n, float __x) - { return __detail::__laguerre(__n, __x); } - - inline long double - laguerrel(unsigned int __n, long double __x) - { return __detail::__laguerre(__n, __x); } - - /// 5.2.1.18 Laguerre polynomials. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - laguerre(unsigned int __n, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__laguerre<__type>(__n, __x); - } - - inline float - legendref(unsigned int __n, float __x) - { return __detail::__poly_legendre_p(__n, __x); } - - inline long double - legendrel(unsigned int __n, long double __x) - { return __detail::__poly_legendre_p(__n, __x); } - - /// 5.2.1.19 Legendre polynomials. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - legendre(unsigned int __n, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__poly_legendre_p<__type>(__n, __x); - } - - inline float - riemann_zetaf(float __x) - { return __detail::__riemann_zeta(__x); } - - inline long double - riemann_zetal(long double __x) - { return __detail::__riemann_zeta(__x); } - - /// 5.2.1.20 Riemann zeta function. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - riemann_zeta(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__riemann_zeta<__type>(__x); - } - - inline float - sph_besself(unsigned int __n, float __x) - { return __detail::__sph_bessel(__n, __x); } - - inline long double - sph_bessell(unsigned int __n, long double __x) - { return __detail::__sph_bessel(__n, __x); } - - /// 5.2.1.21 Spherical Bessel functions. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - sph_bessel(unsigned int __n, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__sph_bessel<__type>(__n, __x); - } - - inline float - sph_legendref(unsigned int __l, unsigned int __m, float __theta) - { return __detail::__sph_legendre(__l, __m, __theta); } - - inline long double - sph_legendrel(unsigned int __l, unsigned int __m, long double __theta) - { return __detail::__sph_legendre(__l, __m, __theta); } - - /// 5.2.1.22 Spherical associated Legendre functions. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__sph_legendre<__type>(__l, __m, __theta); - } - - inline float - sph_neumannf(unsigned int __n, float __x) - { return __detail::__sph_neumann(__n, __x); } - - inline long double - sph_neumannl(unsigned int __n, long double __x) - { return __detail::__sph_neumann(__n, __x); } - - /// 5.2.1.23 Spherical Neumann functions. - template - inline typename __gnu_cxx::__promote<_Tp>::__type - sph_neumann(unsigned int __n, _Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __detail::__sph_neumann<__type>(__n, __x); - } - - /* @} */ // tr1_math_spec_func -_GLIBCXX_END_NAMESPACE_VERSION -} -} -#endif // _GLIBCXX_USE_STD_SPEC_FUNCS - -#endif // _GLIBCXX_TR1_CMATH diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/complex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/complex deleted file mode 100644 index 10dce9d1b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/complex +++ /dev/null @@ -1,420 +0,0 @@ -// TR1 complex -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/complex - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_COMPLEX -#define _GLIBCXX_TR1_COMPLEX 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup complex_numbers - * @{ - */ - -#if __cplusplus >= 201103L - using std::acos; - using std::asin; - using std::atan; - using std::acosh; - using std::asinh; - using std::atanh; -#else - template std::complex<_Tp> acos(const std::complex<_Tp>&); - template std::complex<_Tp> asin(const std::complex<_Tp>&); - template std::complex<_Tp> atan(const std::complex<_Tp>&); - template std::complex<_Tp> acosh(const std::complex<_Tp>&); - template std::complex<_Tp> asinh(const std::complex<_Tp>&); - template std::complex<_Tp> atanh(const std::complex<_Tp>&); -#endif - - // The std::fabs return type in C++11 mode is different (just _Tp). - template std::complex<_Tp> fabs(const std::complex<_Tp>&); - -#if __cplusplus < 201103L - template - inline std::complex<_Tp> - __complex_acos(const std::complex<_Tp>& __z) - { - const std::complex<_Tp> __t = std::tr1::asin(__z); - const _Tp __pi_2 = 1.5707963267948966192313216916397514L; - return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag()); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_acos(__complex__ float __z) - { return __builtin_cacosf(__z); } - - inline __complex__ double - __complex_acos(__complex__ double __z) - { return __builtin_cacos(__z); } - - inline __complex__ long double - __complex_acos(const __complex__ long double& __z) - { return __builtin_cacosl(__z); } - - template - inline std::complex<_Tp> - acos(const std::complex<_Tp>& __z) - { return __complex_acos(__z.__rep()); } -#else - /// acos(__z) [8.1.2]. - // Effects: Behaves the same as C99 function cacos, defined - // in subclause 7.3.5.1. - template - inline std::complex<_Tp> - acos(const std::complex<_Tp>& __z) - { return __complex_acos(__z); } -#endif - - template - inline std::complex<_Tp> - __complex_asin(const std::complex<_Tp>& __z) - { - std::complex<_Tp> __t(-__z.imag(), __z.real()); - __t = std::tr1::asinh(__t); - return std::complex<_Tp>(__t.imag(), -__t.real()); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_asin(__complex__ float __z) - { return __builtin_casinf(__z); } - - inline __complex__ double - __complex_asin(__complex__ double __z) - { return __builtin_casin(__z); } - - inline __complex__ long double - __complex_asin(const __complex__ long double& __z) - { return __builtin_casinl(__z); } - - template - inline std::complex<_Tp> - asin(const std::complex<_Tp>& __z) - { return __complex_asin(__z.__rep()); } -#else - /// asin(__z) [8.1.3]. - // Effects: Behaves the same as C99 function casin, defined - // in subclause 7.3.5.2. - template - inline std::complex<_Tp> - asin(const std::complex<_Tp>& __z) - { return __complex_asin(__z); } -#endif - - template - std::complex<_Tp> - __complex_atan(const std::complex<_Tp>& __z) - { - const _Tp __r2 = __z.real() * __z.real(); - const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag(); - - _Tp __num = __z.imag() + _Tp(1.0); - _Tp __den = __z.imag() - _Tp(1.0); - - __num = __r2 + __num * __num; - __den = __r2 + __den * __den; - - return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x), - _Tp(0.25) * log(__num / __den)); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_atan(__complex__ float __z) - { return __builtin_catanf(__z); } - - inline __complex__ double - __complex_atan(__complex__ double __z) - { return __builtin_catan(__z); } - - inline __complex__ long double - __complex_atan(const __complex__ long double& __z) - { return __builtin_catanl(__z); } - - template - inline std::complex<_Tp> - atan(const std::complex<_Tp>& __z) - { return __complex_atan(__z.__rep()); } -#else - /// atan(__z) [8.1.4]. - // Effects: Behaves the same as C99 function catan, defined - // in subclause 7.3.5.3. - template - inline std::complex<_Tp> - atan(const std::complex<_Tp>& __z) - { return __complex_atan(__z); } -#endif - - template - std::complex<_Tp> - __complex_acosh(const std::complex<_Tp>& __z) - { - // Kahan's formula. - return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) - + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_acosh(__complex__ float __z) - { return __builtin_cacoshf(__z); } - - inline __complex__ double - __complex_acosh(__complex__ double __z) - { return __builtin_cacosh(__z); } - - inline __complex__ long double - __complex_acosh(const __complex__ long double& __z) - { return __builtin_cacoshl(__z); } - - template - inline std::complex<_Tp> - acosh(const std::complex<_Tp>& __z) - { return __complex_acosh(__z.__rep()); } -#else - /// acosh(__z) [8.1.5]. - // Effects: Behaves the same as C99 function cacosh, defined - // in subclause 7.3.6.1. - template - inline std::complex<_Tp> - acosh(const std::complex<_Tp>& __z) - { return __complex_acosh(__z); } -#endif - - template - std::complex<_Tp> - __complex_asinh(const std::complex<_Tp>& __z) - { - std::complex<_Tp> __t((__z.real() - __z.imag()) - * (__z.real() + __z.imag()) + _Tp(1.0), - _Tp(2.0) * __z.real() * __z.imag()); - __t = std::sqrt(__t); - - return std::log(__t + __z); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_asinh(__complex__ float __z) - { return __builtin_casinhf(__z); } - - inline __complex__ double - __complex_asinh(__complex__ double __z) - { return __builtin_casinh(__z); } - - inline __complex__ long double - __complex_asinh(const __complex__ long double& __z) - { return __builtin_casinhl(__z); } - - template - inline std::complex<_Tp> - asinh(const std::complex<_Tp>& __z) - { return __complex_asinh(__z.__rep()); } -#else - /// asinh(__z) [8.1.6]. - // Effects: Behaves the same as C99 function casin, defined - // in subclause 7.3.6.2. - template - inline std::complex<_Tp> - asinh(const std::complex<_Tp>& __z) - { return __complex_asinh(__z); } -#endif - - template - std::complex<_Tp> - __complex_atanh(const std::complex<_Tp>& __z) - { - const _Tp __i2 = __z.imag() * __z.imag(); - const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real(); - - _Tp __num = _Tp(1.0) + __z.real(); - _Tp __den = _Tp(1.0) - __z.real(); - - __num = __i2 + __num * __num; - __den = __i2 + __den * __den; - - return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)), - _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x)); - } - -#if _GLIBCXX_USE_C99_COMPLEX_TR1 - inline __complex__ float - __complex_atanh(__complex__ float __z) - { return __builtin_catanhf(__z); } - - inline __complex__ double - __complex_atanh(__complex__ double __z) - { return __builtin_catanh(__z); } - - inline __complex__ long double - __complex_atanh(const __complex__ long double& __z) - { return __builtin_catanhl(__z); } - - template - inline std::complex<_Tp> - atanh(const std::complex<_Tp>& __z) - { return __complex_atanh(__z.__rep()); } -#else - /// atanh(__z) [8.1.7]. - // Effects: Behaves the same as C99 function catanh, defined - // in subclause 7.3.6.3. - template - inline std::complex<_Tp> - atanh(const std::complex<_Tp>& __z) - { return __complex_atanh(__z); } -#endif - -#endif // C++11 - - template - inline std::complex<_Tp> - /// fabs(__z) [8.1.8]. - // Effects: Behaves the same as C99 function cabs, defined - // in subclause 7.3.8.1. - fabs(const std::complex<_Tp>& __z) - { return std::abs(__z); } - - /// Additional overloads [8.1.9]. -#if __cplusplus < 201103L - - template - inline typename __gnu_cxx::__promote<_Tp>::__type - arg(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; -#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) - return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) - : __type(); -#else - return std::arg(std::complex<__type>(__x)); -#endif - } - - template - inline typename __gnu_cxx::__promote<_Tp>::__type - imag(_Tp) - { return _Tp(); } - - template - inline typename __gnu_cxx::__promote<_Tp>::__type - norm(_Tp __x) - { - typedef typename __gnu_cxx::__promote<_Tp>::__type __type; - return __type(__x) * __type(__x); - } - - template - inline typename __gnu_cxx::__promote<_Tp>::__type - real(_Tp __x) - { return __x; } - -#endif - - template - inline std::complex::__type> - pow(const std::complex<_Tp>& __x, const _Up& __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(std::complex<__type>(__x), __type(__y)); - } - - template - inline std::complex::__type> - pow(const _Tp& __x, const std::complex<_Up>& __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(__type(__x), std::complex<__type>(__y)); - } - - template - inline std::complex::__type> - pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::pow(std::complex<__type>(__x), - std::complex<__type>(__y)); - } - - using std::arg; - - template - inline std::complex<_Tp> - conj(const std::complex<_Tp>& __z) - { return std::conj(__z); } - - template - inline std::complex::__type> - conj(_Tp __x) - { return __x; } - - using std::imag; - using std::norm; - using std::polar; - - template - inline std::complex::__type> - polar(const _Tp& __rho, const _Up& __theta) - { - typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; - return std::polar(__type(__rho), __type(__theta)); - } - - using std::real; - - template - inline std::complex<_Tp> - pow(const std::complex<_Tp>& __x, const _Tp& __y) - { return std::pow(__x, __y); } - - template - inline std::complex<_Tp> - pow(const _Tp& __x, const std::complex<_Tp>& __y) - { return std::pow(__x, __y); } - - template - inline std::complex<_Tp> - pow(const std::complex<_Tp>& __x, const std::complex<_Tp>& __y) - { return std::pow(__x, __y); } - -// @} group complex_numbers - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_COMPLEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/complex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/complex.h deleted file mode 100644 index 2f5dd4896..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/complex.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 complex.h -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/complex.h - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_COMPLEX_H -#define _GLIBCXX_TR1_COMPLEX_H 1 - -#include - -#endif // _GLIBCXX_TR1_COMPLEX_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdarg b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdarg deleted file mode 100644 index d7cf8b47f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdarg +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 cstdarg -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cstdarg - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CSTDARG -#define _GLIBCXX_TR1_CSTDARG 1 - -#include - -#endif // _GLIBCXX_TR1_CSTDARG diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdbool b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdbool deleted file mode 100644 index f2fb6dd24..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdbool +++ /dev/null @@ -1,40 +0,0 @@ -// TR1 cstdbool -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cstdbool - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CSTDBOOL -#define _GLIBCXX_TR1_CSTDBOOL 1 - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HAVE_STDBOOL_H -#include -#endif - -#endif // _GLIBCXX_TR1_CSTDBOOL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdint b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdint deleted file mode 100644 index f883c26ca..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdint +++ /dev/null @@ -1,104 +0,0 @@ -// TR1 cstdint -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cstdint - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CSTDINT -#define _GLIBCXX_TR1_CSTDINT 1 - -#pragma GCC system_header - -#include - -// For 8.22.1/1 (see C99, Notes 219, 220, 222) -# if _GLIBCXX_HAVE_STDINT_H -# ifndef __STDC_LIMIT_MACROS -# define _UNDEF__STDC_LIMIT_MACROS -# define __STDC_LIMIT_MACROS -# endif -# ifndef __STDC_CONSTANT_MACROS -# define _UNDEF__STDC_CONSTANT_MACROS -# define __STDC_CONSTANT_MACROS -# endif -# include -# ifdef _UNDEF__STDC_LIMIT_MACROS -# undef __STDC_LIMIT_MACROS -# undef _UNDEF__STDC_LIMIT_MACROS -# endif -# ifdef _UNDEF__STDC_CONSTANT_MACROS -# undef __STDC_CONSTANT_MACROS -# undef _UNDEF__STDC_CONSTANT_MACROS -# endif -# endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace 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; -} -} - -#endif // _GLIBCXX_USE_C99_STDINT_TR1 - -#endif // _GLIBCXX_TR1_CSTDINT - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdio deleted file mode 100644 index b4553e932..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdio +++ /dev/null @@ -1,53 +0,0 @@ -// TR1 cstdio -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cstdio - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CSTDIO -#define _GLIBCXX_TR1_CSTDIO 1 - -#pragma GCC system_header - -#include - -#if _GLIBCXX_USE_C99_STDIO - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ - using std::snprintf; - using std::vsnprintf; - - using std::vfscanf; - using std::vscanf; - using std::vsscanf; -} -} - -#endif - -#endif // _GLIBCXX_TR1_CSTDIO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdlib b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdlib deleted file mode 100644 index 9d5bd732d..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cstdlib +++ /dev/null @@ -1,72 +0,0 @@ -// TR1 cstdlib -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cstdlib - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CSTDLIB -#define _GLIBCXX_TR1_CSTDLIB 1 - -#pragma GCC system_header - -#include - -#if _GLIBCXX_HOSTED - -#if _GLIBCXX_USE_C99_STDLIB - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - // types - using std::lldiv_t; - - // functions - using std::llabs; - using std::lldiv; -#endif - - using std::atoll; - using std::strtoll; - using std::strtoull; - - using std::strtof; - using std::strtold; - - // overloads - using std::abs; -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC - using std::div; -#endif -} -} - -#endif // _GLIBCXX_USE_C99_STDLIB - -#endif // _GLIBCXX_HOSTED - -#endif // _GLIBCXX_TR1_CSTDLIB diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctgmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctgmath deleted file mode 100644 index bbb89706c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctgmath +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 ctgmath -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/ctgmath - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CTGMATH -#define _GLIBCXX_TR1_CTGMATH 1 - -#include - -#endif // _GLIBCXX_TR1_CTGMATH diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctime b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctime deleted file mode 100644 index 2206a9fc7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctime +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 ctime -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/ctime - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CTIME -#define _GLIBCXX_TR1_CTIME 1 - -#include - -#endif // _GLIBCXX_TR1_CTIME diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cwchar b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cwchar deleted file mode 100644 index deaf92d63..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cwchar +++ /dev/null @@ -1,65 +0,0 @@ -// TR1 cwchar -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cwchar - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CWCHAR -#define _GLIBCXX_TR1_CWCHAR 1 - -#pragma GCC system_header - -#include - -#ifdef _GLIBCXX_USE_WCHAR_T - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -#if _GLIBCXX_HAVE_WCSTOF - using std::wcstof; -#endif -#if _GLIBCXX_HAVE_VFWSCANF - using std::vfwscanf; -#endif -#if _GLIBCXX_HAVE_VSWSCANF - using std::vswscanf; -#endif -#if _GLIBCXX_HAVE_VWSCANF - using std::vwscanf; -#endif - -#if _GLIBCXX_USE_C99_WCHAR - using std::wcstold; - using std::wcstoll; - using std::wcstoull; -#endif -} -} - -#endif // _GLIBCXX_USE_WCHAR_T - -#endif // _GLIBCXX_TR1_CWCHAR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cwctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cwctype deleted file mode 100644 index 9a207c876..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/cwctype +++ /dev/null @@ -1,50 +0,0 @@ -// TR1 cwctype -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/cwctype - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_CWCTYPE -#define _GLIBCXX_TR1_CWCTYPE 1 - -#pragma GCC system_header - -#include - -#ifdef _GLIBCXX_USE_WCHAR_T - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -#if _GLIBCXX_HAVE_ISWBLANK - using std::iswblank; -#endif -} -} - -#endif // _GLIBCXX_USE_WCHAR_T - -#endif // _GLIBCXX_TR1_CWCTYPE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/fenv.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/fenv.h deleted file mode 100644 index 3a14362d3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/fenv.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 fenv.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/fenv.h - * This is a TR1 C++ Library header. - */ - -#ifndef _TR1_FENV_H -#define _TR1_FENV_H 1 - -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/float.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/float.h deleted file mode 100644 index 6b6b9c68e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/float.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 float.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/float.h - * This is a TR1 C++ Library header. - */ - -#ifndef _TR1_FLOAT_H -#define _TR1_FLOAT_H 1 - -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/functional deleted file mode 100644 index 256f94d8a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/functional +++ /dev/null @@ -1,2308 +0,0 @@ -// TR1 functional header -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/functional - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_FUNCTIONAL -#define _GLIBCXX_TR1_FUNCTIONAL 1 - -#pragma GCC system_header - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include // for std::__addressof -#if __cplusplus >= 201103L -# include // for integral_constant, true_type, false_type -#endif - -namespace std _GLIBCXX_VISIBILITY(default) -{ -#if __cplusplus >= 201103L -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template struct _Placeholder; - template class _Bind; - template class _Bind_result; -_GLIBCXX_END_NAMESPACE_VERSION -#endif - -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - class _Mem_fn; - template - _Mem_fn<_Tp _Class::*> - mem_fn(_Tp _Class::*); - - /** - * Actual implementation of _Has_result_type, which uses SFINAE to - * determine if the type _Tp has a publicly-accessible member type - * result_type. - */ - template - class _Has_result_type_helper : __sfinae_types - { - template - struct _Wrap_type - { }; - - template - static __one __test(_Wrap_type*); - - template - static __two __test(...); - - public: - static const bool value = sizeof(__test<_Tp>(0)) == 1; - }; - - template - struct _Has_result_type - : integral_constant::type>::value> - { }; - - /** - * - */ - /// If we have found a result_type, extract it. - template - struct _Maybe_get_result_type - { }; - - template - struct _Maybe_get_result_type - { - typedef typename _Functor::result_type result_type; - }; - - /** - * Base class for any function object that has a weak result type, as - * defined in 3.3/3 of TR1. - */ - template - struct _Weak_result_type_impl - : _Maybe_get_result_type<_Has_result_type<_Functor>::value, _Functor> - { - }; - - /// Retrieve the result type for a function type. - template - struct _Weak_result_type_impl<_Res(_ArgTypes...)> - { - typedef _Res result_type; - }; - - /// Retrieve the result type for a function reference. - template - struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)> - { - typedef _Res result_type; - }; - - /// Retrieve the result type for a function pointer. - template - struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)> - { - typedef _Res result_type; - }; - - /// Retrieve result type for a member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)> - { - typedef _Res result_type; - }; - - /// Retrieve result type for a const member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const> - { - typedef _Res result_type; - }; - - /// Retrieve result type for a volatile member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile> - { - typedef _Res result_type; - }; - - /// Retrieve result type for a const volatile member function pointer. - template - struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)const volatile> - { - typedef _Res result_type; - }; - - /** - * Strip top-level cv-qualifiers from the function object and let - * _Weak_result_type_impl perform the real work. - */ - template - struct _Weak_result_type - : _Weak_result_type_impl::type> - { - }; - - template - class result_of; - - /** - * Actual implementation of result_of. When _Has_result_type is - * true, gets its result from _Weak_result_type. Otherwise, uses - * the function object's member template result to extract the - * result type. - */ - template - struct _Result_of_impl; - - // Handle member data pointers using _Mem_fn's logic - template - struct _Result_of_impl - { - typedef typename _Mem_fn<_Res _Class::*> - ::template _Result_type<_T1>::type type; - }; - - /** - * Determine whether we can determine a result type from @c Functor - * alone. - */ - template - class result_of<_Functor(_ArgTypes...)> - : public _Result_of_impl< - _Has_result_type<_Weak_result_type<_Functor> >::value, - _Functor(_ArgTypes...)> - { - }; - - /// We already know the result type for @c Functor; use it. - template - struct _Result_of_impl - { - typedef typename _Weak_result_type<_Functor>::result_type type; - }; - - /** - * We need to compute the result type for this invocation the hard - * way. - */ - template - struct _Result_of_impl - { - typedef typename _Functor - ::template result<_Functor(_ArgTypes...)>::type type; - }; - - /** - * It is unsafe to access ::result when there are zero arguments, so we - * return @c void instead. - */ - template - struct _Result_of_impl - { - typedef void type; - }; - - /// Determines if the type _Tp derives from unary_function. - template - struct _Derives_from_unary_function : __sfinae_types - { - private: - template - static __one __test(const volatile unary_function<_T1, _Res>*); - - // It's tempting to change "..." to const volatile void*, but - // that fails when _Tp is a function type. - static __two __test(...); - - public: - static const bool value = sizeof(__test((_Tp*)0)) == 1; - }; - - /// Determines if the type _Tp derives from binary_function. - template - struct _Derives_from_binary_function : __sfinae_types - { - private: - template - static __one __test(const volatile binary_function<_T1, _T2, _Res>*); - - // It's tempting to change "..." to const volatile void*, but - // that fails when _Tp is a function type. - static __two __test(...); - - public: - static const bool value = sizeof(__test((_Tp*)0)) == 1; - }; - - /// Turns a function type into a function pointer type - template::value> - struct _Function_to_function_pointer - { - typedef _Tp type; - }; - - template - struct _Function_to_function_pointer<_Tp, true> - { - typedef _Tp* type; - }; - - /** - * Invoke a function object, which may be either a member pointer or a - * function object. The first parameter will tell which. - */ - template - inline - typename __gnu_cxx::__enable_if< - (!is_member_pointer<_Functor>::value - && !is_function<_Functor>::value - && !is_function::type>::value), - typename result_of<_Functor(_Args...)>::type - >::__type - __invoke(_Functor& __f, _Args&... __args) - { - return __f(__args...); - } - - template - inline - typename __gnu_cxx::__enable_if< - (is_member_pointer<_Functor>::value - && !is_function<_Functor>::value - && !is_function::type>::value), - typename result_of<_Functor(_Args...)>::type - >::__type - __invoke(_Functor& __f, _Args&... __args) - { - return mem_fn(__f)(__args...); - } - - // To pick up function references (that will become function pointers) - template - inline - typename __gnu_cxx::__enable_if< - (is_pointer<_Functor>::value - && is_function::type>::value), - typename result_of<_Functor(_Args...)>::type - >::__type - __invoke(_Functor __f, _Args&... __args) - { - return __f(__args...); - } - - /** - * Knowing which of unary_function and binary_function _Tp derives - * from, derives from the same and ensures that reference_wrapper - * will have a weak result type. See cases below. - */ - template - struct _Reference_wrapper_base_impl; - - // Not a unary_function or binary_function, so try a weak result type. - template - struct _Reference_wrapper_base_impl - : _Weak_result_type<_Tp> - { }; - - // unary_function but not binary_function - template - struct _Reference_wrapper_base_impl - : unary_function - { }; - - // binary_function but not unary_function - template - struct _Reference_wrapper_base_impl - : binary_function - { }; - - // Both unary_function and binary_function. Import result_type to - // avoid conflicts. - template - struct _Reference_wrapper_base_impl - : unary_function, - binary_function - { - typedef typename _Tp::result_type result_type; - }; - - /** - * Derives from unary_function or binary_function when it - * can. Specializations handle all of the easy cases. The primary - * template determines what to do with a class type, which may - * derive from both unary_function and binary_function. - */ - template - struct _Reference_wrapper_base - : _Reference_wrapper_base_impl< - _Derives_from_unary_function<_Tp>::value, - _Derives_from_binary_function<_Tp>::value, - _Tp> - { }; - - // - a function type (unary) - template - struct _Reference_wrapper_base<_Res(_T1)> - : unary_function<_T1, _Res> - { }; - - // - a function type (binary) - template - struct _Reference_wrapper_base<_Res(_T1, _T2)> - : binary_function<_T1, _T2, _Res> - { }; - - // - a function pointer type (unary) - template - struct _Reference_wrapper_base<_Res(*)(_T1)> - : unary_function<_T1, _Res> - { }; - - // - a function pointer type (binary) - template - struct _Reference_wrapper_base<_Res(*)(_T1, _T2)> - : binary_function<_T1, _T2, _Res> - { }; - - // - a pointer to member function type (unary, no qualifiers) - template - struct _Reference_wrapper_base<_Res (_T1::*)()> - : unary_function<_T1*, _Res> - { }; - - // - a pointer to member function type (binary, no qualifiers) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2)> - : binary_function<_T1*, _T2, _Res> - { }; - - // - a pointer to member function type (unary, const) - template - struct _Reference_wrapper_base<_Res (_T1::*)() const> - : unary_function - { }; - - // - a pointer to member function type (binary, const) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const> - : binary_function - { }; - - // - a pointer to member function type (unary, volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)() volatile> - : unary_function - { }; - - // - a pointer to member function type (binary, volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile> - : binary_function - { }; - - // - a pointer to member function type (unary, const volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)() const volatile> - : unary_function - { }; - - // - a pointer to member function type (binary, const volatile) - template - struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile> - : binary_function - { }; - - /// reference_wrapper - template - class reference_wrapper - : public _Reference_wrapper_base::type> - { - // If _Tp is a function type, we can't form result_of<_Tp(...)>, - // so turn it into a function pointer type. - typedef typename _Function_to_function_pointer<_Tp>::type - _M_func_type; - - _Tp* _M_data; - public: - typedef _Tp type; - - explicit - reference_wrapper(_Tp& __indata) - : _M_data(std::__addressof(__indata)) - { } - - reference_wrapper(const reference_wrapper<_Tp>& __inref): - _M_data(__inref._M_data) - { } - - reference_wrapper& - operator=(const reference_wrapper<_Tp>& __inref) - { - _M_data = __inref._M_data; - return *this; - } - - operator _Tp&() const - { return this->get(); } - - _Tp& - get() const - { return *_M_data; } - - template - typename result_of<_M_func_type(_Args...)>::type - operator()(_Args&... __args) const - { - return __invoke(get(), __args...); - } - }; - - - // Denotes a reference should be taken to a variable. - template - inline reference_wrapper<_Tp> - ref(_Tp& __t) - { return reference_wrapper<_Tp>(__t); } - - // Denotes a const reference should be taken to a variable. - template - inline reference_wrapper - cref(const _Tp& __t) - { return reference_wrapper(__t); } - - template - inline reference_wrapper<_Tp> - ref(reference_wrapper<_Tp> __t) - { return ref(__t.get()); } - - template - inline reference_wrapper - cref(reference_wrapper<_Tp> __t) - { return cref(__t.get()); } - - template - struct _Mem_fn_const_or_non - { - typedef const _Tp& type; - }; - - template - struct _Mem_fn_const_or_non<_Tp, false> - { - typedef _Tp& type; - }; - - /** - * Derives from @c unary_function or @c binary_function, or perhaps - * nothing, depending on the number of arguments provided. The - * primary template is the basis case, which derives nothing. - */ - template - struct _Maybe_unary_or_binary_function { }; - - /// Derives from @c unary_function, as appropriate. - template - struct _Maybe_unary_or_binary_function<_Res, _T1> - : std::unary_function<_T1, _Res> { }; - - /// Derives from @c binary_function, as appropriate. - template - struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> - : std::binary_function<_T1, _T2, _Res> { }; - - /// Implementation of @c mem_fn for member function pointers. - template - class _Mem_fn<_Res (_Class::*)(_ArgTypes...)> - : public _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...> - { - typedef _Res (_Class::*_Functor)(_ArgTypes...); - - template - _Res - _M_call(_Tp& __object, const volatile _Class *, - _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - template - _Res - _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const - { return ((*__ptr).*__pmf)(__args...); } - - public: - typedef _Res result_type; - - explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } - - // Handle objects - _Res - operator()(_Class& __object, _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - // Handle pointers - _Res - operator()(_Class* __object, _ArgTypes... __args) const - { return (__object->*__pmf)(__args...); } - - // Handle smart pointers, references and pointers to derived - template - _Res - operator()(_Tp& __object, _ArgTypes... __args) const - { return _M_call(__object, &__object, __args...); } - - private: - _Functor __pmf; - }; - - /// Implementation of @c mem_fn for const member function pointers. - template - class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const> - : public _Maybe_unary_or_binary_function<_Res, const _Class*, - _ArgTypes...> - { - typedef _Res (_Class::*_Functor)(_ArgTypes...) const; - - template - _Res - _M_call(_Tp& __object, const volatile _Class *, - _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - template - _Res - _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const - { return ((*__ptr).*__pmf)(__args...); } - - public: - typedef _Res result_type; - - explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } - - // Handle objects - _Res - operator()(const _Class& __object, _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - // Handle pointers - _Res - operator()(const _Class* __object, _ArgTypes... __args) const - { return (__object->*__pmf)(__args...); } - - // Handle smart pointers, references and pointers to derived - template - _Res operator()(_Tp& __object, _ArgTypes... __args) const - { return _M_call(__object, &__object, __args...); } - - private: - _Functor __pmf; - }; - - /// Implementation of @c mem_fn for volatile member function pointers. - template - class _Mem_fn<_Res (_Class::*)(_ArgTypes...) volatile> - : public _Maybe_unary_or_binary_function<_Res, volatile _Class*, - _ArgTypes...> - { - typedef _Res (_Class::*_Functor)(_ArgTypes...) volatile; - - template - _Res - _M_call(_Tp& __object, const volatile _Class *, - _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - template - _Res - _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const - { return ((*__ptr).*__pmf)(__args...); } - - public: - typedef _Res result_type; - - explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } - - // Handle objects - _Res - operator()(volatile _Class& __object, _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - // Handle pointers - _Res - operator()(volatile _Class* __object, _ArgTypes... __args) const - { return (__object->*__pmf)(__args...); } - - // Handle smart pointers, references and pointers to derived - template - _Res - operator()(_Tp& __object, _ArgTypes... __args) const - { return _M_call(__object, &__object, __args...); } - - private: - _Functor __pmf; - }; - - /// Implementation of @c mem_fn for const volatile member function pointers. - template - class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const volatile> - : public _Maybe_unary_or_binary_function<_Res, const volatile _Class*, - _ArgTypes...> - { - typedef _Res (_Class::*_Functor)(_ArgTypes...) const volatile; - - template - _Res - _M_call(_Tp& __object, const volatile _Class *, - _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - template - _Res - _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const - { return ((*__ptr).*__pmf)(__args...); } - - public: - typedef _Res result_type; - - explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } - - // Handle objects - _Res - operator()(const volatile _Class& __object, _ArgTypes... __args) const - { return (__object.*__pmf)(__args...); } - - // Handle pointers - _Res - operator()(const volatile _Class* __object, _ArgTypes... __args) const - { return (__object->*__pmf)(__args...); } - - // Handle smart pointers, references and pointers to derived - template - _Res operator()(_Tp& __object, _ArgTypes... __args) const - { return _M_call(__object, &__object, __args...); } - - private: - _Functor __pmf; - }; - - - template - class _Mem_fn<_Res _Class::*> - { - // This bit of genius is due to Peter Dimov, improved slightly by - // Douglas Gregor. - template - _Res& - _M_call(_Tp& __object, _Class *) const - { return __object.*__pm; } - - template - _Res& - _M_call(_Tp& __object, _Up * const *) const - { return (*__object).*__pm; } - - template - const _Res& - _M_call(_Tp& __object, const _Up * const *) const - { return (*__object).*__pm; } - - template - const _Res& - _M_call(_Tp& __object, const _Class *) const - { return __object.*__pm; } - - template - const _Res& - _M_call(_Tp& __ptr, const volatile void*) const - { return (*__ptr).*__pm; } - - template static _Tp& __get_ref(); - - template - static __sfinae_types::__one __check_const(_Tp&, _Class*); - template - static __sfinae_types::__one __check_const(_Tp&, _Up * const *); - template - static __sfinae_types::__two __check_const(_Tp&, const _Up * const *); - template - static __sfinae_types::__two __check_const(_Tp&, const _Class*); - template - static __sfinae_types::__two __check_const(_Tp&, const volatile void*); - - public: - template - struct _Result_type - : _Mem_fn_const_or_non<_Res, - (sizeof(__sfinae_types::__two) - == sizeof(__check_const<_Tp>(__get_ref<_Tp>(), (_Tp*)0)))> - { }; - - template - struct result; - - template - struct result<_CVMem(_Tp)> - : public _Result_type<_Tp> { }; - - template - struct result<_CVMem(_Tp&)> - : public _Result_type<_Tp> { }; - - explicit - _Mem_fn(_Res _Class::*__pm) : __pm(__pm) { } - - // Handle objects - _Res& - operator()(_Class& __object) const - { return __object.*__pm; } - - const _Res& - operator()(const _Class& __object) const - { return __object.*__pm; } - - // Handle pointers - _Res& - operator()(_Class* __object) const - { return __object->*__pm; } - - const _Res& - operator()(const _Class* __object) const - { return __object->*__pm; } - - // Handle smart pointers and derived - template - typename _Result_type<_Tp>::type - operator()(_Tp& __unknown) const - { return _M_call(__unknown, &__unknown); } - - private: - _Res _Class::*__pm; - }; - - /** - * @brief Returns a function object that forwards to the member - * pointer @a pm. - */ - template - inline _Mem_fn<_Tp _Class::*> - mem_fn(_Tp _Class::* __pm) - { - return _Mem_fn<_Tp _Class::*>(__pm); - } - - /** - * @brief Determines if the given type _Tp is a function object - * should be treated as a subexpression when evaluating calls to - * function objects returned by bind(). [TR1 3.6.1] - */ - template - struct is_bind_expression - { static const bool value = false; }; - - template - const bool is_bind_expression<_Tp>::value; - - /** - * @brief Determines if the given type _Tp is a placeholder in a - * bind() expression and, if so, which placeholder it is. [TR1 3.6.2] - */ - template - struct is_placeholder - { static const int value = 0; }; - - template - const int is_placeholder<_Tp>::value; - - /// The type of placeholder objects defined by libstdc++. - template struct _Placeholder { }; - -_GLIBCXX_END_NAMESPACE_VERSION - - /** @namespace std::tr1::placeholders - * @brief Sub-namespace for tr1/functional. - */ - namespace placeholders - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /* Define a large number of placeholders. There is no way to - * simplify this with variadic templates, because we're introducing - * unique names for each. - */ - namespace - { - _Placeholder<1> _1; - _Placeholder<2> _2; - _Placeholder<3> _3; - _Placeholder<4> _4; - _Placeholder<5> _5; - _Placeholder<6> _6; - _Placeholder<7> _7; - _Placeholder<8> _8; - _Placeholder<9> _9; - _Placeholder<10> _10; - _Placeholder<11> _11; - _Placeholder<12> _12; - _Placeholder<13> _13; - _Placeholder<14> _14; - _Placeholder<15> _15; - _Placeholder<16> _16; - _Placeholder<17> _17; - _Placeholder<18> _18; - _Placeholder<19> _19; - _Placeholder<20> _20; - _Placeholder<21> _21; - _Placeholder<22> _22; - _Placeholder<23> _23; - _Placeholder<24> _24; - _Placeholder<25> _25; - _Placeholder<26> _26; - _Placeholder<27> _27; - _Placeholder<28> _28; - _Placeholder<29> _29; - } - _GLIBCXX_END_NAMESPACE_VERSION - } - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** - * Partial specialization of is_placeholder that provides the placeholder - * number for the placeholder objects defined by libstdc++. - */ - template - struct is_placeholder<_Placeholder<_Num> > - { static const int value = _Num; }; - - template - const int is_placeholder<_Placeholder<_Num> >::value; - -#if __cplusplus >= 201103L - template - struct is_placeholder> - : std::integral_constant - { }; - - template - struct is_placeholder> - : std::integral_constant - { }; -#endif - - /** - * Stores a tuple of indices. Used by bind() to extract the elements - * in a tuple. - */ - template - struct _Index_tuple { }; - - /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>. - template > - struct _Build_index_tuple; - - template - struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> > - : _Build_index_tuple<_Num - 1, - _Index_tuple<_Indexes..., sizeof...(_Indexes)> > - { - }; - - template - struct _Build_index_tuple<0, _Index_tuple<_Indexes...> > - { - typedef _Index_tuple<_Indexes...> __type; - }; - - /** - * Used by _Safe_tuple_element to indicate that there is no tuple - * element at this position. - */ - struct _No_tuple_element; - - /** - * Implementation helper for _Safe_tuple_element. This primary - * template handles the case where it is safe to use @c - * tuple_element. - */ - template - struct _Safe_tuple_element_impl - : tuple_element<__i, _Tuple> { }; - - /** - * Implementation helper for _Safe_tuple_element. This partial - * specialization handles the case where it is not safe to use @c - * tuple_element. We just return @c _No_tuple_element. - */ - template - struct _Safe_tuple_element_impl<__i, _Tuple, false> - { - typedef _No_tuple_element type; - }; - - /** - * Like tuple_element, but returns @c _No_tuple_element when - * tuple_element would return an error. - */ - template - struct _Safe_tuple_element - : _Safe_tuple_element_impl<__i, _Tuple, - (__i >= 0 && __i < tuple_size<_Tuple>::value)> - { - }; - - /** - * Maps an argument to bind() into an actual argument to the bound - * function object [TR1 3.6.3/5]. Only the first parameter should - * be specified: the rest are used to determine among the various - * implementations. Note that, although this class is a function - * object, it isn't entirely normal because it takes only two - * parameters regardless of the number of parameters passed to the - * bind expression. The first parameter is the bound argument and - * the second parameter is a tuple containing references to the - * rest of the arguments. - */ - template::value, - bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> - class _Mu; - - /** - * If the argument is reference_wrapper<_Tp>, returns the - * underlying reference. [TR1 3.6.3/5 bullet 1] - */ - template - class _Mu, false, false> - { - public: - typedef _Tp& result_type; - - /* Note: This won't actually work for const volatile - * reference_wrappers, because reference_wrapper::get() is const - * but not volatile-qualified. This might be a defect in the TR. - */ - template - result_type - operator()(_CVRef& __arg, const _Tuple&) const volatile - { return __arg.get(); } - }; - - /** - * If the argument is a bind expression, we invoke the underlying - * function object with the same cv-qualifiers as we are given and - * pass along all of our arguments (unwrapped). [TR1 3.6.3/5 bullet 2] - */ - template - class _Mu<_Arg, true, false> - { - public: - template class result; - - // Determine the result type when we pass the arguments along. This - // involves passing along the cv-qualifiers placed on _Mu and - // unwrapping the argument bundle. - template - class result<_CVMu(_CVArg, tuple<_Args...>)> - : public result_of<_CVArg(_Args...)> { }; - - template - typename result_of<_CVArg(_Args...)>::type - operator()(_CVArg& __arg, - const tuple<_Args...>& __tuple) const volatile - { - // Construct an index tuple and forward to __call - typedef typename _Build_index_tuple::__type - _Indexes; - return this->__call(__arg, __tuple, _Indexes()); - } - - private: - // Invokes the underlying function object __arg by unpacking all - // of the arguments in the tuple. - template - typename result_of<_CVArg(_Args...)>::type - __call(_CVArg& __arg, const tuple<_Args...>& __tuple, - const _Index_tuple<_Indexes...>&) const volatile - { - return __arg(tr1::get<_Indexes>(__tuple)...); - } - }; - - /** - * If the argument is a placeholder for the Nth argument, returns - * a reference to the Nth argument to the bind function object. - * [TR1 3.6.3/5 bullet 3] - */ - template - class _Mu<_Arg, false, true> - { - public: - template class result; - - template - class result<_CVMu(_CVArg, _Tuple)> - { - // Add a reference, if it hasn't already been done for us. - // This allows us to be a little bit sloppy in constructing - // the tuple that we pass to result_of<...>. - typedef typename _Safe_tuple_element<(is_placeholder<_Arg>::value - - 1), _Tuple>::type - __base_type; - - public: - typedef typename add_reference<__base_type>::type type; - }; - - template - typename result<_Mu(_Arg, _Tuple)>::type - operator()(const volatile _Arg&, const _Tuple& __tuple) const volatile - { - return ::std::tr1::get<(is_placeholder<_Arg>::value - 1)>(__tuple); - } - }; - - /** - * If the argument is just a value, returns a reference to that - * value. The cv-qualifiers on the reference are the same as the - * cv-qualifiers on the _Mu object. [TR1 3.6.3/5 bullet 4] - */ - template - class _Mu<_Arg, false, false> - { - public: - template struct result; - - template - struct result<_CVMu(_CVArg, _Tuple)> - { - typedef typename add_reference<_CVArg>::type type; - }; - - // Pick up the cv-qualifiers of the argument - template - _CVArg& - operator()(_CVArg& __arg, const _Tuple&) const volatile - { return __arg; } - }; - - /** - * Maps member pointers into instances of _Mem_fn but leaves all - * other function objects untouched. Used by tr1::bind(). The - * primary template handles the non--member-pointer case. - */ - template - struct _Maybe_wrap_member_pointer - { - typedef _Tp type; - - static const _Tp& - __do_wrap(const _Tp& __x) - { return __x; } - }; - - /** - * Maps member pointers into instances of _Mem_fn but leaves all - * other function objects untouched. Used by tr1::bind(). This - * partial specialization handles the member pointer case. - */ - template - struct _Maybe_wrap_member_pointer<_Tp _Class::*> - { - typedef _Mem_fn<_Tp _Class::*> type; - - static type - __do_wrap(_Tp _Class::* __pm) - { return type(__pm); } - }; - - /// Type of the function object returned from bind(). - template - struct _Bind; - - template - class _Bind<_Functor(_Bound_args...)> - : public _Weak_result_type<_Functor> - { - typedef _Bind __self_type; - typedef typename _Build_index_tuple::__type - _Bound_indexes; - - _Functor _M_f; - tuple<_Bound_args...> _M_bound_args; - - // Call unqualified - template - typename result_of< - _Functor(typename result_of<_Mu<_Bound_args> - (_Bound_args, tuple<_Args...>)>::type...) - >::type - __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const - template - typename result_of< - const _Functor(typename result_of<_Mu<_Bound_args> - (const _Bound_args, tuple<_Args...>) - >::type...)>::type - __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as volatile - template - typename result_of< - volatile _Functor(typename result_of<_Mu<_Bound_args> - (volatile _Bound_args, tuple<_Args...>) - >::type...)>::type - __call(const tuple<_Args...>& __args, - _Index_tuple<_Indexes...>) volatile - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const volatile - template - typename result_of< - const volatile _Functor(typename result_of<_Mu<_Bound_args> - (const volatile _Bound_args, - tuple<_Args...>) - >::type...)>::type - __call(const tuple<_Args...>& __args, - _Index_tuple<_Indexes...>) const volatile - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - public: - explicit _Bind(_Functor __f, _Bound_args... __bound_args) - : _M_f(__f), _M_bound_args(__bound_args...) { } - - // Call unqualified - template - typename result_of< - _Functor(typename result_of<_Mu<_Bound_args> - (_Bound_args, tuple<_Args...>)>::type...) - >::type - operator()(_Args&... __args) - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - - // Call as const - template - typename result_of< - const _Functor(typename result_of<_Mu<_Bound_args> - (const _Bound_args, tuple<_Args...>)>::type...) - >::type - operator()(_Args&... __args) const - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - - - // Call as volatile - template - typename result_of< - volatile _Functor(typename result_of<_Mu<_Bound_args> - (volatile _Bound_args, tuple<_Args...>)>::type...) - >::type - operator()(_Args&... __args) volatile - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - - - // Call as const volatile - template - typename result_of< - const volatile _Functor(typename result_of<_Mu<_Bound_args> - (const volatile _Bound_args, - tuple<_Args...>)>::type...) - >::type - operator()(_Args&... __args) const volatile - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - }; - - /// Type of the function object returned from bind(). - template - struct _Bind_result; - - template - class _Bind_result<_Result, _Functor(_Bound_args...)> - { - typedef _Bind_result __self_type; - typedef typename _Build_index_tuple::__type - _Bound_indexes; - - _Functor _M_f; - tuple<_Bound_args...> _M_bound_args; - - // Call unqualified - template - _Result - __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const - template - _Result - __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as volatile - template - _Result - __call(const tuple<_Args...>& __args, - _Index_tuple<_Indexes...>) volatile - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - // Call as const volatile - template - _Result - __call(const tuple<_Args...>& __args, - _Index_tuple<_Indexes...>) const volatile - { - return _M_f(_Mu<_Bound_args>() - (tr1::get<_Indexes>(_M_bound_args), __args)...); - } - - public: - typedef _Result result_type; - - explicit - _Bind_result(_Functor __f, _Bound_args... __bound_args) - : _M_f(__f), _M_bound_args(__bound_args...) { } - - // Call unqualified - template - result_type - operator()(_Args&... __args) - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - - // Call as const - template - result_type - operator()(_Args&... __args) const - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - - // Call as volatile - template - result_type - operator()(_Args&... __args) volatile - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - - // Call as const volatile - template - result_type - operator()(_Args&... __args) const volatile - { - return this->__call(tr1::tie(__args...), _Bound_indexes()); - } - }; - - /// Class template _Bind is always a bind expression. - template - struct is_bind_expression<_Bind<_Signature> > - { static const bool value = true; }; - - template - const bool is_bind_expression<_Bind<_Signature> >::value; - - /// Class template _Bind is always a bind expression. - template - struct is_bind_expression > - { static const bool value = true; }; - - template - const bool is_bind_expression >::value; - - /// Class template _Bind is always a bind expression. - template - struct is_bind_expression > - { static const bool value = true; }; - - template - const bool is_bind_expression >::value; - - /// Class template _Bind is always a bind expression. - template - struct is_bind_expression > - { static const bool value = true; }; - - template - const bool is_bind_expression >::value; - - /// Class template _Bind_result is always a bind expression. - template - struct is_bind_expression<_Bind_result<_Result, _Signature> > - { static const bool value = true; }; - - template - const bool is_bind_expression<_Bind_result<_Result, _Signature> >::value; - - /// Class template _Bind_result is always a bind expression. - template - struct is_bind_expression > - { static const bool value = true; }; - - template - const bool - is_bind_expression >::value; - - /// Class template _Bind_result is always a bind expression. - template - struct is_bind_expression > - { static const bool value = true; }; - - template - const bool - is_bind_expression >::value; - - /// Class template _Bind_result is always a bind expression. - template - struct - is_bind_expression > - { static const bool value = true; }; - - template - const bool - is_bind_expression >::value; - -#if __cplusplus >= 201103L - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; -#endif - - /// bind - template - inline - _Bind::type(_ArgTypes...)> - bind(_Functor __f, _ArgTypes... __args) - { - typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type; - typedef typename __maybe_type::type __functor_type; - typedef _Bind<__functor_type(_ArgTypes...)> __result_type; - return __result_type(__maybe_type::__do_wrap(__f), __args...); - } - - template - inline - _Bind_result<_Result, - typename _Maybe_wrap_member_pointer<_Functor>::type - (_ArgTypes...)> - bind(_Functor __f, _ArgTypes... __args) - { - typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type; - typedef typename __maybe_type::type __functor_type; - typedef _Bind_result<_Result, __functor_type(_ArgTypes...)> - __result_type; - return __result_type(__maybe_type::__do_wrap(__f), __args...); - } - - /** - * @brief Exception class thrown when class template function's - * operator() is called with an empty target. - * @ingroup exceptions - */ - class bad_function_call : public std::exception { }; - - /** - * The integral constant expression 0 can be converted into a - * pointer to this type. It is used by the function template to - * accept NULL pointers. - */ - struct _M_clear_type; - - /** - * Trait identifying @a location-invariant types, meaning that the - * address of the object (or any of its members) will not escape. - * Also implies a trivial copy constructor and assignment operator. - */ - template - struct __is_location_invariant - : integral_constant::value - || is_member_pointer<_Tp>::value)> - { - }; - - class _Undefined_class; - - union _Nocopy_types - { - void* _M_object; - const void* _M_const_object; - void (*_M_function_pointer)(); - void (_Undefined_class::*_M_member_pointer)(); - }; - - union _Any_data - { - void* _M_access() { return &_M_pod_data[0]; } - const void* _M_access() const { return &_M_pod_data[0]; } - - template - _Tp& - _M_access() - { return *static_cast<_Tp*>(_M_access()); } - - template - const _Tp& - _M_access() const - { return *static_cast(_M_access()); } - - _Nocopy_types _M_unused; - char _M_pod_data[sizeof(_Nocopy_types)]; - }; - - enum _Manager_operation - { - __get_type_info, - __get_functor_ptr, - __clone_functor, - __destroy_functor - }; - - // Simple type wrapper that helps avoid annoying const problems - // when casting between void pointers and pointers-to-pointers. - template - struct _Simple_type_wrapper - { - _Simple_type_wrapper(_Tp __value) : __value(__value) { } - - _Tp __value; - }; - - template - struct __is_location_invariant<_Simple_type_wrapper<_Tp> > - : __is_location_invariant<_Tp> - { - }; - - // Converts a reference to a function object into a callable - // function object. - template - inline _Functor& - __callable_functor(_Functor& __f) - { return __f; } - - template - inline _Mem_fn<_Member _Class::*> - __callable_functor(_Member _Class::* &__p) - { return mem_fn(__p); } - - template - inline _Mem_fn<_Member _Class::*> - __callable_functor(_Member _Class::* const &__p) - { return mem_fn(__p); } - - template - class function; - - /// Base class of all polymorphic function object wrappers. - class _Function_base - { - public: - static const std::size_t _M_max_size = sizeof(_Nocopy_types); - static const std::size_t _M_max_align = __alignof__(_Nocopy_types); - - template - class _Base_manager - { - protected: - static const bool __stored_locally = - (__is_location_invariant<_Functor>::value - && sizeof(_Functor) <= _M_max_size - && __alignof__(_Functor) <= _M_max_align - && (_M_max_align % __alignof__(_Functor) == 0)); - - typedef integral_constant _Local_storage; - - // Retrieve a pointer to the function object - static _Functor* - _M_get_pointer(const _Any_data& __source) - { - const _Functor* __ptr = - __stored_locally? std::__addressof(__source._M_access<_Functor>()) - /* have stored a pointer */ : __source._M_access<_Functor*>(); - return const_cast<_Functor*>(__ptr); - } - - // Clone a location-invariant function object that fits within - // an _Any_data structure. - static void - _M_clone(_Any_data& __dest, const _Any_data& __source, true_type) - { - new (__dest._M_access()) _Functor(__source._M_access<_Functor>()); - } - - // Clone a function object that is not location-invariant or - // that cannot fit into an _Any_data structure. - static void - _M_clone(_Any_data& __dest, const _Any_data& __source, false_type) - { - __dest._M_access<_Functor*>() = - new _Functor(*__source._M_access<_Functor*>()); - } - - // Destroying a location-invariant object may still require - // destruction. - static void - _M_destroy(_Any_data& __victim, true_type) - { - __victim._M_access<_Functor>().~_Functor(); - } - - // Destroying an object located on the heap. - static void - _M_destroy(_Any_data& __victim, false_type) - { - delete __victim._M_access<_Functor*>(); - } - - public: - static bool - _M_manager(_Any_data& __dest, const _Any_data& __source, - _Manager_operation __op) - { - switch (__op) - { -#if __cpp_rtti - case __get_type_info: - __dest._M_access() = &typeid(_Functor); - break; -#endif - case __get_functor_ptr: - __dest._M_access<_Functor*>() = _M_get_pointer(__source); - break; - - case __clone_functor: - _M_clone(__dest, __source, _Local_storage()); - break; - - case __destroy_functor: - _M_destroy(__dest, _Local_storage()); - break; - } - return false; - } - - static void - _M_init_functor(_Any_data& __functor, const _Functor& __f) - { _M_init_functor(__functor, __f, _Local_storage()); } - - template - static bool - _M_not_empty_function(const function<_Signature>& __f) - { return static_cast(__f); } - - template - static bool - _M_not_empty_function(const _Tp*& __fp) - { return __fp; } - - template - static bool - _M_not_empty_function(_Tp _Class::* const& __mp) - { return __mp; } - - template - static bool - _M_not_empty_function(const _Tp&) - { return true; } - - private: - static void - _M_init_functor(_Any_data& __functor, const _Functor& __f, true_type) - { new (__functor._M_access()) _Functor(__f); } - - static void - _M_init_functor(_Any_data& __functor, const _Functor& __f, false_type) - { __functor._M_access<_Functor*>() = new _Functor(__f); } - }; - - template - class _Ref_manager : public _Base_manager<_Functor*> - { - typedef _Function_base::_Base_manager<_Functor*> _Base; - - public: - static bool - _M_manager(_Any_data& __dest, const _Any_data& __source, - _Manager_operation __op) - { - switch (__op) - { -#if __cpp_rtti - case __get_type_info: - __dest._M_access() = &typeid(_Functor); - break; -#endif - case __get_functor_ptr: - __dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source); - return is_const<_Functor>::value; - break; - - default: - _Base::_M_manager(__dest, __source, __op); - } - return false; - } - - static void - _M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f) - { - _Base::_M_init_functor(__functor, std::__addressof(__f.get())); - } - }; - - _Function_base() : _M_manager(0) { } - - ~_Function_base() - { - if (_M_manager) - _M_manager(_M_functor, _M_functor, __destroy_functor); - } - - - bool _M_empty() const { return !_M_manager; } - - typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, - _Manager_operation); - - _Any_data _M_functor; - _Manager_type _M_manager; - }; - - template - class _Function_handler; - - template - class _Function_handler<_Res(_ArgTypes...), _Functor> - : public _Function_base::_Base_manager<_Functor> - { - typedef _Function_base::_Base_manager<_Functor> _Base; - - public: - static _Res - _M_invoke(const _Any_data& __functor, _ArgTypes... __args) - { - return (*_Base::_M_get_pointer(__functor))(__args...); - } - }; - - template - class _Function_handler - : public _Function_base::_Base_manager<_Functor> - { - typedef _Function_base::_Base_manager<_Functor> _Base; - - public: - static void - _M_invoke(const _Any_data& __functor, _ArgTypes... __args) - { - (*_Base::_M_get_pointer(__functor))(__args...); - } - }; - - template - class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> > - : public _Function_base::_Ref_manager<_Functor> - { - typedef _Function_base::_Ref_manager<_Functor> _Base; - - public: - static _Res - _M_invoke(const _Any_data& __functor, _ArgTypes... __args) - { - return - __callable_functor(**_Base::_M_get_pointer(__functor))(__args...); - } - }; - - template - class _Function_handler > - : public _Function_base::_Ref_manager<_Functor> - { - typedef _Function_base::_Ref_manager<_Functor> _Base; - - public: - static void - _M_invoke(const _Any_data& __functor, _ArgTypes... __args) - { - __callable_functor(**_Base::_M_get_pointer(__functor))(__args...); - } - }; - - template - class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> - : public _Function_handler - { - typedef _Function_handler - _Base; - - public: - static _Res - _M_invoke(const _Any_data& __functor, _ArgTypes... __args) - { - return tr1:: - mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...); - } - }; - - template - class _Function_handler - : public _Function_base::_Base_manager< - _Simple_type_wrapper< _Member _Class::* > > - { - typedef _Member _Class::* _Functor; - typedef _Simple_type_wrapper<_Functor> _Wrapper; - typedef _Function_base::_Base_manager<_Wrapper> _Base; - - public: - static bool - _M_manager(_Any_data& __dest, const _Any_data& __source, - _Manager_operation __op) - { - switch (__op) - { -#if __cpp_rtti - case __get_type_info: - __dest._M_access() = &typeid(_Functor); - break; -#endif - case __get_functor_ptr: - __dest._M_access<_Functor*>() = - &_Base::_M_get_pointer(__source)->__value; - break; - - default: - _Base::_M_manager(__dest, __source, __op); - } - return false; - } - - static void - _M_invoke(const _Any_data& __functor, _ArgTypes... __args) - { - tr1::mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...); - } - }; - - /// class function - template - class function<_Res(_ArgTypes...)> - : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, - private _Function_base - { -#if __cplusplus < 201103L - /// This class is used to implement the safe_bool idiom. - struct _Hidden_type - { - _Hidden_type* _M_bool; - }; - - /// This typedef is used to implement the safe_bool idiom. - typedef _Hidden_type* _Hidden_type::* _Safe_bool; -#endif - - typedef _Res _Signature_type(_ArgTypes...); - - struct _Useless { }; - - public: - typedef _Res result_type; - - // [3.7.2.1] construct/copy/destroy - - /** - * @brief Default construct creates an empty function call wrapper. - * @post @c !(bool)*this - */ - function() : _Function_base() { } - - /** - * @brief Default construct creates an empty function call wrapper. - * @post @c !(bool)*this - */ - function(_M_clear_type*) : _Function_base() { } - - /** - * @brief %Function copy constructor. - * @param x A %function object with identical call signature. - * @post @c (bool)*this == (bool)x - * - * The newly-created %function contains a copy of the target of @a - * x (if it has one). - */ - function(const function& __x); - - /** - * @brief Builds a %function that targets a copy of the incoming - * function object. - * @param f A %function object that is callable with parameters of - * type @c T1, @c T2, ..., @c TN and returns a value convertible - * to @c Res. - * - * The newly-created %function object will target a copy of @a - * f. If @a f is @c reference_wrapper, then this function - * object will contain a reference to the function object @c - * f.get(). If @a f is a NULL function pointer or NULL - * pointer-to-member, the newly-created object will be empty. - * - * If @a f is a non-NULL function pointer or an object of type @c - * reference_wrapper, this function will not throw. - */ - template - function(_Functor __f, - typename __gnu_cxx::__enable_if< - !is_integral<_Functor>::value, _Useless>::__type - = _Useless()); - - /** - * @brief %Function assignment operator. - * @param x A %function with identical call signature. - * @post @c (bool)*this == (bool)x - * @returns @c *this - * - * The target of @a x is copied to @c *this. If @a x has no - * target, then @c *this will be empty. - * - * If @a x targets a function pointer or a reference to a function - * object, then this operation will not throw an %exception. - */ - function& - operator=(const function& __x) - { - function(__x).swap(*this); - return *this; - } - - /** - * @brief %Function assignment to zero. - * @post @c !(bool)*this - * @returns @c *this - * - * The target of @c *this is deallocated, leaving it empty. - */ - function& - operator=(_M_clear_type*) - { - if (_M_manager) - { - _M_manager(_M_functor, _M_functor, __destroy_functor); - _M_manager = 0; - _M_invoker = 0; - } - return *this; - } - - /** - * @brief %Function assignment to a new target. - * @param f A %function object that is callable with parameters of - * type @c T1, @c T2, ..., @c TN and returns a value convertible - * to @c Res. - * @return @c *this - * - * This %function object wrapper will target a copy of @a - * f. If @a f is @c reference_wrapper, then this function - * object will contain a reference to the function object @c - * f.get(). If @a f is a NULL function pointer or NULL - * pointer-to-member, @c this object will be empty. - * - * If @a f is a non-NULL function pointer or an object of type @c - * reference_wrapper, this function will not throw. - */ - template - typename __gnu_cxx::__enable_if::value, - function&>::__type - operator=(_Functor __f) - { - function(__f).swap(*this); - return *this; - } - - // [3.7.2.2] function modifiers - - /** - * @brief Swap the targets of two %function objects. - * @param f A %function with identical call signature. - * - * Swap the targets of @c this function object and @a f. This - * function will not throw an %exception. - */ - void swap(function& __x) - { - std::swap(_M_functor, __x._M_functor); - std::swap(_M_manager, __x._M_manager); - std::swap(_M_invoker, __x._M_invoker); - } - - // [3.7.2.3] function capacity - - /** - * @brief Determine if the %function wrapper has a target. - * - * @return @c true when this %function object contains a target, - * or @c false when it is empty. - * - * This function will not throw an %exception. - */ -#if __cplusplus >= 201103L - explicit operator bool() const - { return !_M_empty(); } -#else - operator _Safe_bool() const - { - if (_M_empty()) - return 0; - else - return &_Hidden_type::_M_bool; - } -#endif - - // [3.7.2.4] function invocation - - /** - * @brief Invokes the function targeted by @c *this. - * @returns the result of the target. - * @throws bad_function_call when @c !(bool)*this - * - * The function call operator invokes the target function object - * stored by @c this. - */ - _Res operator()(_ArgTypes... __args) const; - -#if __cpp_rtti - // [3.7.2.5] function target access - /** - * @brief Determine the type of the target of this function object - * wrapper. - * - * @returns the type identifier of the target function object, or - * @c typeid(void) if @c !(bool)*this. - * - * This function will not throw an %exception. - */ - const type_info& target_type() const; - - /** - * @brief Access the stored target function object. - * - * @return Returns a pointer to the stored target function object, - * if @c typeid(Functor).equals(target_type()); otherwise, a NULL - * pointer. - * - * This function will not throw an %exception. - */ - template _Functor* target(); - - /// @overload - template const _Functor* target() const; -#endif - - private: - // [3.7.2.6] undefined operators - template - void operator==(const function<_Function>&) const; - template - void operator!=(const function<_Function>&) const; - - typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...); - _Invoker_type _M_invoker; - }; - - template - function<_Res(_ArgTypes...)>:: - function(const function& __x) - : _Function_base() - { - if (static_cast(__x)) - { - __x._M_manager(_M_functor, __x._M_functor, __clone_functor); - _M_invoker = __x._M_invoker; - _M_manager = __x._M_manager; - } - } - - template - template - function<_Res(_ArgTypes...)>:: - function(_Functor __f, - typename __gnu_cxx::__enable_if< - !is_integral<_Functor>::value, _Useless>::__type) - : _Function_base() - { - typedef _Function_handler<_Signature_type, _Functor> _My_handler; - - if (_My_handler::_M_not_empty_function(__f)) - { - _My_handler::_M_init_functor(_M_functor, __f); - _M_invoker = &_My_handler::_M_invoke; - _M_manager = &_My_handler::_M_manager; - } - } - - template - _Res - function<_Res(_ArgTypes...)>:: - operator()(_ArgTypes... __args) const - { - if (_M_empty()) - _GLIBCXX_THROW_OR_ABORT(bad_function_call()); - return _M_invoker(_M_functor, __args...); - } - -#if __cpp_rtti - template - const type_info& - function<_Res(_ArgTypes...)>:: - target_type() const - { - if (_M_manager) - { - _Any_data __typeinfo_result; - _M_manager(__typeinfo_result, _M_functor, __get_type_info); - return *__typeinfo_result._M_access(); - } - else - return typeid(void); - } - - template - template - _Functor* - function<_Res(_ArgTypes...)>:: - target() - { - if (typeid(_Functor) == target_type() && _M_manager) - { - _Any_data __ptr; - if (_M_manager(__ptr, _M_functor, __get_functor_ptr) - && !is_const<_Functor>::value) - return 0; - else - return __ptr._M_access<_Functor*>(); - } - else - return 0; - } - - template - template - const _Functor* - function<_Res(_ArgTypes...)>:: - target() const - { - if (typeid(_Functor) == target_type() && _M_manager) - { - _Any_data __ptr; - _M_manager(__ptr, _M_functor, __get_functor_ptr); - return __ptr._M_access(); - } - else - return 0; - } -#endif - - // [3.7.2.7] null pointer comparisons - - /** - * @brief Compares a polymorphic function object wrapper against 0 - * (the NULL pointer). - * @returns @c true if the wrapper has no target, @c false otherwise - * - * This function will not throw an %exception. - */ - template - inline bool - operator==(const function<_Signature>& __f, _M_clear_type*) - { return !static_cast(__f); } - - /// @overload - template - inline bool - operator==(_M_clear_type*, const function<_Signature>& __f) - { return !static_cast(__f); } - - /** - * @brief Compares a polymorphic function object wrapper against 0 - * (the NULL pointer). - * @returns @c false if the wrapper has no target, @c true otherwise - * - * This function will not throw an %exception. - */ - template - inline bool - operator!=(const function<_Signature>& __f, _M_clear_type*) - { return static_cast(__f); } - - /// @overload - template - inline bool - operator!=(_M_clear_type*, const function<_Signature>& __f) - { return static_cast(__f); } - - // [3.7.2.8] specialized algorithms - - /** - * @brief Swap the targets of two polymorphic function object wrappers. - * - * This function will not throw an %exception. - */ - template - inline void - swap(function<_Signature>& __x, function<_Signature>& __y) - { __x.swap(__y); } - -_GLIBCXX_END_NAMESPACE_VERSION -} - -#if __cplusplus >= 201103L -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template struct is_placeholder; - - template - struct is_placeholder> - : integral_constant - { }; - - template - struct is_placeholder> - : integral_constant - { }; - - template struct is_bind_expression; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - - template - struct is_bind_expression> - : true_type { }; - -_GLIBCXX_END_NAMESPACE_VERSION -#endif -} - -#endif // _GLIBCXX_TR1_FUNCTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/functional_hash.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/functional_hash.h deleted file mode 100644 index acc766ddd..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/functional_hash.h +++ /dev/null @@ -1,200 +0,0 @@ -// TR1 functional_hash.h header -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/functional_hash.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{tr1/functional} - */ - -#ifndef _GLIBCXX_TR1_FUNCTIONAL_HASH_H -#define _GLIBCXX_TR1_FUNCTIONAL_HASH_H 1 - -#pragma GCC system_header - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// Class template hash. - // Declaration of default hash functor std::tr1::hash. The types for - // which std::tr1::hash is well-defined is in clause 6.3.3. of the PDTR. - template - struct hash : public std::unary_function<_Tp, size_t> - { - size_t - operator()(_Tp __val) const; - }; - - /// Partial specializations for pointer types. - template - struct hash<_Tp*> : public std::unary_function<_Tp*, size_t> - { - size_t - operator()(_Tp* __p) const - { return reinterpret_cast(__p); } - }; - - /// Explicit specializations for integer types. -#define _TR1_hashtable_define_trivial_hash(_Tp) \ - template<> \ - inline size_t \ - hash<_Tp>::operator()(_Tp __val) const \ - { return static_cast(__val); } - - _TR1_hashtable_define_trivial_hash(bool); - _TR1_hashtable_define_trivial_hash(char); - _TR1_hashtable_define_trivial_hash(signed char); - _TR1_hashtable_define_trivial_hash(unsigned char); - _TR1_hashtable_define_trivial_hash(wchar_t); - _TR1_hashtable_define_trivial_hash(short); - _TR1_hashtable_define_trivial_hash(int); - _TR1_hashtable_define_trivial_hash(long); - _TR1_hashtable_define_trivial_hash(long long); - _TR1_hashtable_define_trivial_hash(unsigned short); - _TR1_hashtable_define_trivial_hash(unsigned int); - _TR1_hashtable_define_trivial_hash(unsigned long); - _TR1_hashtable_define_trivial_hash(unsigned long long); - -#undef _TR1_hashtable_define_trivial_hash - - // Fowler / Noll / Vo (FNV) Hash (type FNV-1a) - // (Used by the next specializations of std::tr1::hash.) - - // N.B. These functions should work on unsigned char, otherwise they do not - // correctly implement the FNV-1a algorithm (see PR59406). - // The existing behaviour is retained for backwards compatibility. - - /// Dummy generic implementation (for sizeof(size_t) != 4, 8). - template - struct _Fnv_hash_base - { - template - static size_t - hash(const _Tp* __ptr, size_t __clength) - { - size_t __result = 0; - const char* __cptr = reinterpret_cast(__ptr); - for (; __clength; --__clength) - __result = (__result * 131) + *__cptr++; - return __result; - } - }; - - template<> - struct _Fnv_hash_base<4> - { - template - static size_t - hash(const _Tp* __ptr, size_t __clength) - { - size_t __result = static_cast(2166136261UL); - const char* __cptr = reinterpret_cast(__ptr); - for (; __clength; --__clength) - { - __result ^= static_cast(*__cptr++); - __result *= static_cast(16777619UL); - } - return __result; - } - }; - - template<> - struct _Fnv_hash_base<8> - { - template - static size_t - hash(const _Tp* __ptr, size_t __clength) - { - size_t __result - = static_cast(14695981039346656037ULL); - const char* __cptr = reinterpret_cast(__ptr); - for (; __clength; --__clength) - { - __result ^= static_cast(*__cptr++); - __result *= static_cast(1099511628211ULL); - } - return __result; - } - }; - - struct _Fnv_hash - : public _Fnv_hash_base - { - using _Fnv_hash_base::hash; - - template - static size_t - hash(const _Tp& __val) - { return hash(&__val, sizeof(__val)); } - }; - - /// Explicit specializations for float. - template<> - inline size_t - hash::operator()(float __val) const - { - // 0 and -0 both hash to zero. - return __val != 0.0f ? std::tr1::_Fnv_hash::hash(__val) : 0; - } - - /// Explicit specializations for double. - template<> - inline size_t - hash::operator()(double __val) const - { - // 0 and -0 both hash to zero. - return __val != 0.0 ? std::tr1::_Fnv_hash::hash(__val) : 0; - } - - /// Explicit specializations for long double. - template<> - _GLIBCXX_PURE size_t - hash::operator()(long double __val) const; - - /// Explicit specialization of member operator for non-builtin types. - template<> - _GLIBCXX_PURE size_t - hash::operator()(string) const; - - template<> - _GLIBCXX_PURE size_t - hash::operator()(const string&) const; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - _GLIBCXX_PURE size_t - hash::operator()(wstring) const; - - template<> - _GLIBCXX_PURE size_t - hash::operator()(const wstring&) const; -#endif - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_FUNCTIONAL_HASH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hashtable.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hashtable.h deleted file mode 100644 index 8dc7a41ad..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hashtable.h +++ /dev/null @@ -1,1181 +0,0 @@ -// TR1 hashtable.h header -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/hashtable.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. - * @headername{tr1/unordered_set, tr1/unordered_map} - */ - -#ifndef _GLIBCXX_TR1_HASHTABLE_H -#define _GLIBCXX_TR1_HASHTABLE_H 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Class template _Hashtable, class definition. - - // Meaning of class template _Hashtable's template parameters - - // _Key and _Value: arbitrary CopyConstructible types. - - // _Allocator: an allocator type ([lib.allocator.requirements]) whose - // value type is Value. As a conforming extension, we allow for - // value type != Value. - - // _ExtractKey: function object that takes a object of type Value - // and returns a value of type _Key. - - // _Equal: function object that takes two objects of type k and returns - // a bool-like value that is true if the two objects are considered equal. - - // _H1: the hash function. A unary function object with argument type - // Key and result type size_t. Return values should be distributed - // over the entire range [0, numeric_limits:::max()]. - - // _H2: the range-hashing function (in the terminology of Tavori and - // Dreizin). A binary function object whose argument types and result - // type are all size_t. Given arguments r and N, the return value is - // in the range [0, N). - - // _Hash: the ranged hash function (Tavori and Dreizin). A binary function - // whose argument types are _Key and size_t and whose result type is - // size_t. Given arguments k and N, the return value is in the range - // [0, N). Default: hash(k, N) = h2(h1(k), N). If _Hash is anything other - // than the default, _H1 and _H2 are ignored. - - // _RehashPolicy: Policy class with three members, all of which govern - // the bucket count. _M_next_bkt(n) returns a bucket count no smaller - // than n. _M_bkt_for_elements(n) returns a bucket count appropriate - // for an element count of n. _M_need_rehash(n_bkt, n_elt, n_ins) - // determines whether, if the current bucket count is n_bkt and the - // current element count is n_elt, we need to increase the bucket - // count. If so, returns make_pair(true, n), where n is the new - // bucket count. If not, returns make_pair(false, ). - - // ??? Right now it is hard-wired that the number of buckets never - // shrinks. Should we allow _RehashPolicy to change that? - - // __cache_hash_code: bool. true if we store the value of the hash - // function along with the value. This is a time-space tradeoff. - // Storing it may improve lookup speed by reducing the number of times - // we need to call the Equal function. - - // __constant_iterators: bool. true if iterator and const_iterator are - // both constant iterator types. This is true for unordered_set and - // unordered_multiset, false for unordered_map and unordered_multimap. - - // __unique_keys: bool. true if the return value of _Hashtable::count(k) - // is always at most one, false if it may be an arbitrary number. This - // true for unordered_set and unordered_map, false for unordered_multiset - // and unordered_multimap. - - template - class _Hashtable - : public __detail::_Rehash_base<_RehashPolicy, - _Hashtable<_Key, _Value, _Allocator, - _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, - __cache_hash_code, - __constant_iterators, - __unique_keys> >, - public __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, - _H1, _H2, _Hash, __cache_hash_code>, - public __detail::_Map_base<_Key, _Value, _ExtractKey, __unique_keys, - _Hashtable<_Key, _Value, _Allocator, - _ExtractKey, - _Equal, _H1, _H2, _Hash, - _RehashPolicy, - __cache_hash_code, - __constant_iterators, - __unique_keys> > - { - public: - typedef _Allocator allocator_type; - typedef _Value value_type; - typedef _Key key_type; - typedef _Equal key_equal; - // mapped_type, if present, comes from _Map_base. - // hasher, if present, comes from _Hash_code_base. - typedef typename _Allocator::difference_type difference_type; - typedef typename _Allocator::size_type size_type; - typedef typename _Allocator::pointer pointer; - typedef typename _Allocator::const_pointer const_pointer; - typedef typename _Allocator::reference reference; - typedef typename _Allocator::const_reference const_reference; - - typedef __detail::_Node_iterator - local_iterator; - typedef __detail::_Node_const_iterator - const_local_iterator; - - typedef __detail::_Hashtable_iterator - iterator; - typedef __detail::_Hashtable_const_iterator - const_iterator; - - template - friend struct __detail::_Map_base; - - private: - typedef __detail::_Hash_node<_Value, __cache_hash_code> _Node; - typedef typename _Allocator::template rebind<_Node>::other - _Node_allocator_type; - typedef typename _Allocator::template rebind<_Node*>::other - _Bucket_allocator_type; - - typedef typename _Allocator::template rebind<_Value>::other - _Value_allocator_type; - - _Node_allocator_type _M_node_allocator; - _Node** _M_buckets; - size_type _M_bucket_count; - size_type _M_element_count; - _RehashPolicy _M_rehash_policy; - - _Node* - _M_allocate_node(const value_type& __v); - - void - _M_deallocate_node(_Node* __n); - - void - _M_deallocate_nodes(_Node**, size_type); - - _Node** - _M_allocate_buckets(size_type __n); - - void - _M_deallocate_buckets(_Node**, size_type __n); - - public: - // Constructor, destructor, assignment, swap - _Hashtable(size_type __bucket_hint, - const _H1&, const _H2&, const _Hash&, - const _Equal&, const _ExtractKey&, - const allocator_type&); - - template - _Hashtable(_InputIterator __first, _InputIterator __last, - size_type __bucket_hint, - const _H1&, const _H2&, const _Hash&, - const _Equal&, const _ExtractKey&, - const allocator_type&); - - _Hashtable(const _Hashtable&); - - _Hashtable& - operator=(const _Hashtable&); - - ~_Hashtable(); - - void swap(_Hashtable&); - - // Basic container operations - iterator - begin() - { - iterator __i(_M_buckets); - if (!__i._M_cur_node) - __i._M_incr_bucket(); - return __i; - } - - const_iterator - begin() const - { - const_iterator __i(_M_buckets); - if (!__i._M_cur_node) - __i._M_incr_bucket(); - return __i; - } - - iterator - end() - { return iterator(_M_buckets + _M_bucket_count); } - - const_iterator - end() const - { return const_iterator(_M_buckets + _M_bucket_count); } - - size_type - size() const - { return _M_element_count; } - - bool - empty() const - { return size() == 0; } - - allocator_type - get_allocator() const - { return allocator_type(_M_node_allocator); } - - _Value_allocator_type - _M_get_Value_allocator() const - { return _Value_allocator_type(_M_node_allocator); } - - size_type - max_size() const - { return _M_node_allocator.max_size(); } - - // Observers - key_equal - key_eq() const - { return this->_M_eq; } - - // hash_function, if present, comes from _Hash_code_base. - - // Bucket operations - size_type - bucket_count() const - { return _M_bucket_count; } - - size_type - max_bucket_count() const - { return max_size(); } - - size_type - bucket_size(size_type __n) const - { return std::distance(begin(__n), end(__n)); } - - size_type - bucket(const key_type& __k) const - { - return this->_M_bucket_index(__k, this->_M_hash_code(__k), - bucket_count()); - } - - local_iterator - begin(size_type __n) - { return local_iterator(_M_buckets[__n]); } - - local_iterator - end(size_type) - { return local_iterator(0); } - - const_local_iterator - begin(size_type __n) const - { return const_local_iterator(_M_buckets[__n]); } - - const_local_iterator - end(size_type) const - { return const_local_iterator(0); } - - float - load_factor() const - { - return static_cast(size()) / static_cast(bucket_count()); - } - - // max_load_factor, if present, comes from _Rehash_base. - - // Generalization of max_load_factor. Extension, not found in TR1. Only - // useful if _RehashPolicy is something other than the default. - const _RehashPolicy& - __rehash_policy() const - { return _M_rehash_policy; } - - void - __rehash_policy(const _RehashPolicy&); - - // Lookup. - iterator - find(const key_type& __k); - - const_iterator - find(const key_type& __k) const; - - size_type - count(const key_type& __k) const; - - std::pair - equal_range(const key_type& __k); - - std::pair - equal_range(const key_type& __k) const; - - private: // Find, insert and erase helper functions - // ??? This dispatching is a workaround for the fact that we don't - // have partial specialization of member templates; it would be - // better to just specialize insert on __unique_keys. There may be a - // cleaner workaround. - typedef typename __gnu_cxx::__conditional_type<__unique_keys, - std::pair, iterator>::__type - _Insert_Return_Type; - - typedef typename __gnu_cxx::__conditional_type<__unique_keys, - std::_Select1st<_Insert_Return_Type>, - std::_Identity<_Insert_Return_Type> - >::__type - _Insert_Conv_Type; - - _Node* - _M_find_node(_Node*, const key_type&, - typename _Hashtable::_Hash_code_type) const; - - iterator - _M_insert_bucket(const value_type&, size_type, - typename _Hashtable::_Hash_code_type); - - std::pair - _M_insert(const value_type&, std::tr1::true_type); - - iterator - _M_insert(const value_type&, std::tr1::false_type); - - void - _M_erase_node(_Node*, _Node**); - - public: - // Insert and erase - _Insert_Return_Type - insert(const value_type& __v) - { return _M_insert(__v, std::tr1::integral_constant()); } - - iterator - insert(iterator, const value_type& __v) - { return iterator(_Insert_Conv_Type()(this->insert(__v))); } - - const_iterator - insert(const_iterator, const value_type& __v) - { return const_iterator(_Insert_Conv_Type()(this->insert(__v))); } - - template - void - insert(_InputIterator __first, _InputIterator __last); - - iterator - erase(iterator); - - const_iterator - erase(const_iterator); - - size_type - erase(const key_type&); - - iterator - erase(iterator, iterator); - - const_iterator - erase(const_iterator, const_iterator); - - void - clear(); - - // Set number of buckets to be appropriate for container of n element. - void rehash(size_type __n); - - private: - // Unconditionally change size of bucket array to n. - void _M_rehash(size_type __n); - }; - - - // Definitions of class template _Hashtable's out-of-line member functions. - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::_Node* - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_allocate_node(const value_type& __v) - { - _Node* __n = _M_node_allocator.allocate(1); - __try - { - _M_get_Value_allocator().construct(&__n->_M_v, __v); - __n->_M_next = 0; - return __n; - } - __catch(...) - { - _M_node_allocator.deallocate(__n, 1); - __throw_exception_again; - } - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_deallocate_node(_Node* __n) - { - _M_get_Value_allocator().destroy(&__n->_M_v); - _M_node_allocator.deallocate(__n, 1); - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_deallocate_nodes(_Node** __array, size_type __n) - { - for (size_type __i = 0; __i < __n; ++__i) - { - _Node* __p = __array[__i]; - while (__p) - { - _Node* __tmp = __p; - __p = __p->_M_next; - _M_deallocate_node(__tmp); - } - __array[__i] = 0; - } - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::_Node** - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_allocate_buckets(size_type __n) - { - _Bucket_allocator_type __alloc(_M_node_allocator); - - // We allocate one extra bucket to hold a sentinel, an arbitrary - // non-null pointer. Iterator increment relies on this. - _Node** __p = __alloc.allocate(__n + 1); - std::fill(__p, __p + __n, (_Node*) 0); - __p[__n] = reinterpret_cast<_Node*>(0x1000); - return __p; - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_deallocate_buckets(_Node** __p, size_type __n) - { - _Bucket_allocator_type __alloc(_M_node_allocator); - __alloc.deallocate(__p, __n + 1); - } - - template - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _Hashtable(size_type __bucket_hint, - const _H1& __h1, const _H2& __h2, const _Hash& __h, - const _Equal& __eq, const _ExtractKey& __exk, - const allocator_type& __a) - : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(), - __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, - _H1, _H2, _Hash, __chc>(__exk, __eq, - __h1, __h2, __h), - __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(), - _M_node_allocator(__a), - _M_bucket_count(0), - _M_element_count(0), - _M_rehash_policy() - { - _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint); - _M_buckets = _M_allocate_buckets(_M_bucket_count); - } - - template - template - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _Hashtable(_InputIterator __f, _InputIterator __l, - size_type __bucket_hint, - const _H1& __h1, const _H2& __h2, const _Hash& __h, - const _Equal& __eq, const _ExtractKey& __exk, - const allocator_type& __a) - : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(), - __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, - _H1, _H2, _Hash, __chc>(__exk, __eq, - __h1, __h2, __h), - __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(), - _M_node_allocator(__a), - _M_bucket_count(0), - _M_element_count(0), - _M_rehash_policy() - { - _M_bucket_count = std::max(_M_rehash_policy._M_next_bkt(__bucket_hint), - _M_rehash_policy. - _M_bkt_for_elements(__detail:: - __distance_fw(__f, - __l))); - _M_buckets = _M_allocate_buckets(_M_bucket_count); - __try - { - for (; __f != __l; ++__f) - this->insert(*__f); - } - __catch(...) - { - clear(); - _M_deallocate_buckets(_M_buckets, _M_bucket_count); - __throw_exception_again; - } - } - - template - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _Hashtable(const _Hashtable& __ht) - : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(__ht), - __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, - _H1, _H2, _Hash, __chc>(__ht), - __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(__ht), - _M_node_allocator(__ht._M_node_allocator), - _M_bucket_count(__ht._M_bucket_count), - _M_element_count(__ht._M_element_count), - _M_rehash_policy(__ht._M_rehash_policy) - { - _M_buckets = _M_allocate_buckets(_M_bucket_count); - __try - { - for (size_type __i = 0; __i < __ht._M_bucket_count; ++__i) - { - _Node* __n = __ht._M_buckets[__i]; - _Node** __tail = _M_buckets + __i; - while (__n) - { - *__tail = _M_allocate_node(__n->_M_v); - this->_M_copy_code(*__tail, __n); - __tail = &((*__tail)->_M_next); - __n = __n->_M_next; - } - } - } - __catch(...) - { - clear(); - _M_deallocate_buckets(_M_buckets, _M_bucket_count); - __throw_exception_again; - } - } - - template - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>& - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - operator=(const _Hashtable& __ht) - { - _Hashtable __tmp(__ht); - this->swap(__tmp); - return *this; - } - - template - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - ~_Hashtable() - { - clear(); - _M_deallocate_buckets(_M_buckets, _M_bucket_count); - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - swap(_Hashtable& __x) - { - // The only base class with member variables is hash_code_base. We - // define _Hash_code_base::_M_swap because different specializations - // have different members. - __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, - _H1, _H2, _Hash, __chc>::_M_swap(__x); - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 431. Swapping containers with unequal allocators. - std::__alloc_swap<_Node_allocator_type>::_S_do_it(_M_node_allocator, - __x._M_node_allocator); - - std::swap(_M_rehash_policy, __x._M_rehash_policy); - std::swap(_M_buckets, __x._M_buckets); - std::swap(_M_bucket_count, __x._M_bucket_count); - std::swap(_M_element_count, __x._M_element_count); - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - __rehash_policy(const _RehashPolicy& __pol) - { - _M_rehash_policy = __pol; - size_type __n_bkt = __pol._M_bkt_for_elements(_M_element_count); - if (__n_bkt > _M_bucket_count) - _M_rehash(__n_bkt); - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - find(const key_type& __k) - { - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - _Node* __p = _M_find_node(_M_buckets[__n], __k, __code); - return __p ? iterator(__p, _M_buckets + __n) : this->end(); - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::const_iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - find(const key_type& __k) const - { - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - _Node* __p = _M_find_node(_M_buckets[__n], __k, __code); - return __p ? const_iterator(__p, _M_buckets + __n) : this->end(); - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::size_type - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - count(const key_type& __k) const - { - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - std::size_t __result = 0; - for (_Node* __p = _M_buckets[__n]; __p; __p = __p->_M_next) - if (this->_M_compare(__k, __code, __p)) - ++__result; - return __result; - } - - template - std::pair::iterator, - typename _Hashtable<_Key, _Value, _Allocator, - _ExtractKey, _Equal, _H1, - _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::iterator> - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - equal_range(const key_type& __k) - { - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - _Node** __head = _M_buckets + __n; - _Node* __p = _M_find_node(*__head, __k, __code); - - if (__p) - { - _Node* __p1 = __p->_M_next; - for (; __p1; __p1 = __p1->_M_next) - if (!this->_M_compare(__k, __code, __p1)) - break; - - iterator __first(__p, __head); - iterator __last(__p1, __head); - if (!__p1) - __last._M_incr_bucket(); - return std::make_pair(__first, __last); - } - else - return std::make_pair(this->end(), this->end()); - } - - template - std::pair::const_iterator, - typename _Hashtable<_Key, _Value, _Allocator, - _ExtractKey, _Equal, _H1, - _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::const_iterator> - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - equal_range(const key_type& __k) const - { - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - _Node** __head = _M_buckets + __n; - _Node* __p = _M_find_node(*__head, __k, __code); - - if (__p) - { - _Node* __p1 = __p->_M_next; - for (; __p1; __p1 = __p1->_M_next) - if (!this->_M_compare(__k, __code, __p1)) - break; - - const_iterator __first(__p, __head); - const_iterator __last(__p1, __head); - if (!__p1) - __last._M_incr_bucket(); - return std::make_pair(__first, __last); - } - else - return std::make_pair(this->end(), this->end()); - } - - // Find the node whose key compares equal to k, beginning the search - // at p (usually the head of a bucket). Return zero if no node is found. - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, - _Equal, _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::_Node* - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_find_node(_Node* __p, const key_type& __k, - typename _Hashtable::_Hash_code_type __code) const - { - for (; __p; __p = __p->_M_next) - if (this->_M_compare(__k, __code, __p)) - return __p; - return 0; - } - - // Insert v in bucket n (assumes no element with its key already present). - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_insert_bucket(const value_type& __v, size_type __n, - typename _Hashtable::_Hash_code_type __code) - { - std::pair __do_rehash - = _M_rehash_policy._M_need_rehash(_M_bucket_count, - _M_element_count, 1); - - // Allocate the new node before doing the rehash so that we don't - // do a rehash if the allocation throws. - _Node* __new_node = _M_allocate_node(__v); - - __try - { - if (__do_rehash.first) - { - const key_type& __k = this->_M_extract(__v); - __n = this->_M_bucket_index(__k, __code, __do_rehash.second); - _M_rehash(__do_rehash.second); - } - - __new_node->_M_next = _M_buckets[__n]; - this->_M_store_code(__new_node, __code); - _M_buckets[__n] = __new_node; - ++_M_element_count; - return iterator(__new_node, _M_buckets + __n); - } - __catch(...) - { - _M_deallocate_node(__new_node); - __throw_exception_again; - } - } - - // Insert v if no element with its key is already present. - template - std::pair::iterator, bool> - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_insert(const value_type& __v, std::tr1::true_type) - { - const key_type& __k = this->_M_extract(__v); - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - - if (_Node* __p = _M_find_node(_M_buckets[__n], __k, __code)) - return std::make_pair(iterator(__p, _M_buckets + __n), false); - return std::make_pair(_M_insert_bucket(__v, __n, __code), true); - } - - // Insert v unconditionally. - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_insert(const value_type& __v, std::tr1::false_type) - { - std::pair __do_rehash - = _M_rehash_policy._M_need_rehash(_M_bucket_count, - _M_element_count, 1); - if (__do_rehash.first) - _M_rehash(__do_rehash.second); - - const key_type& __k = this->_M_extract(__v); - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - - // First find the node, avoid leaking new_node if compare throws. - _Node* __prev = _M_find_node(_M_buckets[__n], __k, __code); - _Node* __new_node = _M_allocate_node(__v); - - if (__prev) - { - __new_node->_M_next = __prev->_M_next; - __prev->_M_next = __new_node; - } - else - { - __new_node->_M_next = _M_buckets[__n]; - _M_buckets[__n] = __new_node; - } - this->_M_store_code(__new_node, __code); - - ++_M_element_count; - return iterator(__new_node, _M_buckets + __n); - } - - // For erase(iterator) and erase(const_iterator). - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_erase_node(_Node* __p, _Node** __b) - { - _Node* __cur = *__b; - if (__cur == __p) - *__b = __cur->_M_next; - else - { - _Node* __next = __cur->_M_next; - while (__next != __p) - { - __cur = __next; - __next = __cur->_M_next; - } - __cur->_M_next = __next->_M_next; - } - - _M_deallocate_node(__p); - --_M_element_count; - } - - template - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - insert(_InputIterator __first, _InputIterator __last) - { - size_type __n_elt = __detail::__distance_fw(__first, __last); - std::pair __do_rehash - = _M_rehash_policy._M_need_rehash(_M_bucket_count, - _M_element_count, __n_elt); - if (__do_rehash.first) - _M_rehash(__do_rehash.second); - - for (; __first != __last; ++__first) - this->insert(*__first); - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - erase(iterator __it) - { - iterator __result = __it; - ++__result; - _M_erase_node(__it._M_cur_node, __it._M_cur_bucket); - return __result; - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::const_iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - erase(const_iterator __it) - { - const_iterator __result = __it; - ++__result; - _M_erase_node(__it._M_cur_node, __it._M_cur_bucket); - return __result; - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::size_type - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - erase(const key_type& __k) - { - typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); - std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); - size_type __result = 0; - - _Node** __slot = _M_buckets + __n; - while (*__slot && !this->_M_compare(__k, __code, *__slot)) - __slot = &((*__slot)->_M_next); - - _Node** __saved_slot = 0; - while (*__slot && this->_M_compare(__k, __code, *__slot)) - { - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 526. Is it undefined if a function in the standard changes - // in parameters? - if (&this->_M_extract((*__slot)->_M_v) != &__k) - { - _Node* __p = *__slot; - *__slot = __p->_M_next; - _M_deallocate_node(__p); - --_M_element_count; - ++__result; - } - else - { - __saved_slot = __slot; - __slot = &((*__slot)->_M_next); - } - } - - if (__saved_slot) - { - _Node* __p = *__saved_slot; - *__saved_slot = __p->_M_next; - _M_deallocate_node(__p); - --_M_element_count; - ++__result; - } - - return __result; - } - - // ??? This could be optimized by taking advantage of the bucket - // structure, but it's not clear that it's worth doing. It probably - // wouldn't even be an optimization unless the load factor is large. - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - erase(iterator __first, iterator __last) - { - while (__first != __last) - __first = this->erase(__first); - return __last; - } - - template - typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, - __chc, __cit, __uk>::const_iterator - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - erase(const_iterator __first, const_iterator __last) - { - while (__first != __last) - __first = this->erase(__first); - return __last; - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - clear() - { - _M_deallocate_nodes(_M_buckets, _M_bucket_count); - _M_element_count = 0; - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - rehash(size_type __n) - { - _M_rehash(std::max(_M_rehash_policy._M_next_bkt(__n), - _M_rehash_policy._M_bkt_for_elements(_M_element_count - + 1))); - } - - template - void - _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, - _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: - _M_rehash(size_type __n) - { - _Node** __new_array = _M_allocate_buckets(__n); - __try - { - for (size_type __i = 0; __i < _M_bucket_count; ++__i) - while (_Node* __p = _M_buckets[__i]) - { - std::size_t __new_index = this->_M_bucket_index(__p, __n); - _M_buckets[__i] = __p->_M_next; - __p->_M_next = __new_array[__new_index]; - __new_array[__new_index] = __p; - } - _M_deallocate_buckets(_M_buckets, _M_bucket_count); - _M_bucket_count = __n; - _M_buckets = __new_array; - } - __catch(...) - { - // A failure here means that a hash function threw an exception. - // We can't restore the previous state without calling the hash - // function again, so the only sensible recovery is to delete - // everything. - _M_deallocate_nodes(__new_array, __n); - _M_deallocate_buckets(__new_array, __n); - _M_deallocate_nodes(_M_buckets, _M_bucket_count); - _M_element_count = 0; - __throw_exception_again; - } - } - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace tr1 -} // namespace std - -#endif // _GLIBCXX_TR1_HASHTABLE_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hashtable_policy.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hashtable_policy.h deleted file mode 100644 index f44d0cf9a..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hashtable_policy.h +++ /dev/null @@ -1,778 +0,0 @@ -// Internal policy header for TR1 unordered_set and unordered_map -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/hashtable_policy.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. - * @headername{tr1/unordered_map, tr1/unordered_set} - */ - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -namespace __detail -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Helper function: return distance(first, last) for forward - // iterators, or 0 for input iterators. - template - inline typename std::iterator_traits<_Iterator>::difference_type - __distance_fw(_Iterator __first, _Iterator __last, - std::input_iterator_tag) - { return 0; } - - template - inline typename std::iterator_traits<_Iterator>::difference_type - __distance_fw(_Iterator __first, _Iterator __last, - std::forward_iterator_tag) - { return std::distance(__first, __last); } - - template - inline typename std::iterator_traits<_Iterator>::difference_type - __distance_fw(_Iterator __first, _Iterator __last) - { - typedef typename std::iterator_traits<_Iterator>::iterator_category _Tag; - return __distance_fw(__first, __last, _Tag()); - } - - // Auxiliary types used for all instantiations of _Hashtable: nodes - // and iterators. - - // Nodes, used to wrap elements stored in the hash table. A policy - // template parameter of class template _Hashtable controls whether - // nodes also store a hash code. In some cases (e.g. strings) this - // may be a performance win. - template - struct _Hash_node; - - template - struct _Hash_node<_Value, true> - { - _Value _M_v; - std::size_t _M_hash_code; - _Hash_node* _M_next; - }; - - template - struct _Hash_node<_Value, false> - { - _Value _M_v; - _Hash_node* _M_next; - }; - - // Local iterators, used to iterate within a bucket but not between - // buckets. - template - struct _Node_iterator_base - { - _Node_iterator_base(_Hash_node<_Value, __cache>* __p) - : _M_cur(__p) { } - - void - _M_incr() - { _M_cur = _M_cur->_M_next; } - - _Hash_node<_Value, __cache>* _M_cur; - }; - - template - inline bool - operator==(const _Node_iterator_base<_Value, __cache>& __x, - const _Node_iterator_base<_Value, __cache>& __y) - { return __x._M_cur == __y._M_cur; } - - template - inline bool - operator!=(const _Node_iterator_base<_Value, __cache>& __x, - const _Node_iterator_base<_Value, __cache>& __y) - { return __x._M_cur != __y._M_cur; } - - template - struct _Node_iterator - : public _Node_iterator_base<_Value, __cache> - { - typedef _Value value_type; - typedef typename - __gnu_cxx::__conditional_type<__constant_iterators, - const _Value*, _Value*>::__type - pointer; - typedef typename - __gnu_cxx::__conditional_type<__constant_iterators, - const _Value&, _Value&>::__type - reference; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - _Node_iterator() - : _Node_iterator_base<_Value, __cache>(0) { } - - explicit - _Node_iterator(_Hash_node<_Value, __cache>* __p) - : _Node_iterator_base<_Value, __cache>(__p) { } - - reference - operator*() const - { return this->_M_cur->_M_v; } - - pointer - operator->() const - { return std::__addressof(this->_M_cur->_M_v); } - - _Node_iterator& - operator++() - { - this->_M_incr(); - return *this; - } - - _Node_iterator - operator++(int) - { - _Node_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - template - struct _Node_const_iterator - : public _Node_iterator_base<_Value, __cache> - { - typedef _Value value_type; - typedef const _Value* pointer; - typedef const _Value& reference; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - _Node_const_iterator() - : _Node_iterator_base<_Value, __cache>(0) { } - - explicit - _Node_const_iterator(_Hash_node<_Value, __cache>* __p) - : _Node_iterator_base<_Value, __cache>(__p) { } - - _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, - __cache>& __x) - : _Node_iterator_base<_Value, __cache>(__x._M_cur) { } - - reference - operator*() const - { return this->_M_cur->_M_v; } - - pointer - operator->() const - { return std::__addressof(this->_M_cur->_M_v); } - - _Node_const_iterator& - operator++() - { - this->_M_incr(); - return *this; - } - - _Node_const_iterator - operator++(int) - { - _Node_const_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - template - struct _Hashtable_iterator_base - { - _Hashtable_iterator_base(_Hash_node<_Value, __cache>* __node, - _Hash_node<_Value, __cache>** __bucket) - : _M_cur_node(__node), _M_cur_bucket(__bucket) { } - - void - _M_incr() - { - _M_cur_node = _M_cur_node->_M_next; - if (!_M_cur_node) - _M_incr_bucket(); - } - - void - _M_incr_bucket(); - - _Hash_node<_Value, __cache>* _M_cur_node; - _Hash_node<_Value, __cache>** _M_cur_bucket; - }; - - // Global iterators, used for arbitrary iteration within a hash - // table. Larger and more expensive than local iterators. - template - void - _Hashtable_iterator_base<_Value, __cache>:: - _M_incr_bucket() - { - ++_M_cur_bucket; - - // This loop requires the bucket array to have a non-null sentinel. - while (!*_M_cur_bucket) - ++_M_cur_bucket; - _M_cur_node = *_M_cur_bucket; - } - - template - inline bool - operator==(const _Hashtable_iterator_base<_Value, __cache>& __x, - const _Hashtable_iterator_base<_Value, __cache>& __y) - { return __x._M_cur_node == __y._M_cur_node; } - - template - inline bool - operator!=(const _Hashtable_iterator_base<_Value, __cache>& __x, - const _Hashtable_iterator_base<_Value, __cache>& __y) - { return __x._M_cur_node != __y._M_cur_node; } - - template - struct _Hashtable_iterator - : public _Hashtable_iterator_base<_Value, __cache> - { - typedef _Value value_type; - typedef typename - __gnu_cxx::__conditional_type<__constant_iterators, - const _Value*, _Value*>::__type - pointer; - typedef typename - __gnu_cxx::__conditional_type<__constant_iterators, - const _Value&, _Value&>::__type - reference; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - _Hashtable_iterator() - : _Hashtable_iterator_base<_Value, __cache>(0, 0) { } - - _Hashtable_iterator(_Hash_node<_Value, __cache>* __p, - _Hash_node<_Value, __cache>** __b) - : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { } - - explicit - _Hashtable_iterator(_Hash_node<_Value, __cache>** __b) - : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { } - - reference - operator*() const - { return this->_M_cur_node->_M_v; } - - pointer - operator->() const - { return std::__addressof(this->_M_cur_node->_M_v); } - - _Hashtable_iterator& - operator++() - { - this->_M_incr(); - return *this; - } - - _Hashtable_iterator - operator++(int) - { - _Hashtable_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - template - struct _Hashtable_const_iterator - : public _Hashtable_iterator_base<_Value, __cache> - { - typedef _Value value_type; - typedef const _Value* pointer; - typedef const _Value& reference; - typedef std::ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; - - _Hashtable_const_iterator() - : _Hashtable_iterator_base<_Value, __cache>(0, 0) { } - - _Hashtable_const_iterator(_Hash_node<_Value, __cache>* __p, - _Hash_node<_Value, __cache>** __b) - : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { } - - explicit - _Hashtable_const_iterator(_Hash_node<_Value, __cache>** __b) - : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { } - - _Hashtable_const_iterator(const _Hashtable_iterator<_Value, - __constant_iterators, __cache>& __x) - : _Hashtable_iterator_base<_Value, __cache>(__x._M_cur_node, - __x._M_cur_bucket) { } - - reference - operator*() const - { return this->_M_cur_node->_M_v; } - - pointer - operator->() const - { return std::__addressof(this->_M_cur_node->_M_v); } - - _Hashtable_const_iterator& - operator++() - { - this->_M_incr(); - return *this; - } - - _Hashtable_const_iterator - operator++(int) - { - _Hashtable_const_iterator __tmp(*this); - this->_M_incr(); - return __tmp; - } - }; - - - // Many of class template _Hashtable's template parameters are policy - // classes. These are defaults for the policies. - - // Default range hashing function: use division to fold a large number - // into the range [0, N). - struct _Mod_range_hashing - { - typedef std::size_t first_argument_type; - typedef std::size_t second_argument_type; - typedef std::size_t result_type; - - result_type - operator()(first_argument_type __num, second_argument_type __den) const - { return __num % __den; } - }; - - // Default ranged hash function H. In principle it should be a - // function object composed from objects of type H1 and H2 such that - // h(k, N) = h2(h1(k), N), but that would mean making extra copies of - // h1 and h2. So instead we'll just use a tag to tell class template - // hashtable to do that composition. - struct _Default_ranged_hash { }; - - // Default value for rehash policy. Bucket size is (usually) the - // smallest prime that keeps the load factor small enough. - struct _Prime_rehash_policy - { - _Prime_rehash_policy(float __z = 1.0) - : _M_max_load_factor(__z), _M_growth_factor(2.f), _M_next_resize(0) { } - - float - max_load_factor() const - { return _M_max_load_factor; } - - // Return a bucket size no smaller than n. - std::size_t - _M_next_bkt(std::size_t __n) const; - - // Return a bucket count appropriate for n elements - std::size_t - _M_bkt_for_elements(std::size_t __n) const; - - // __n_bkt is current bucket count, __n_elt is current element count, - // and __n_ins is number of elements to be inserted. Do we need to - // increase bucket count? If so, return make_pair(true, n), where n - // is the new bucket count. If not, return make_pair(false, 0). - std::pair - _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, - std::size_t __n_ins) const; - - enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 }; - - float _M_max_load_factor; - float _M_growth_factor; - mutable std::size_t _M_next_resize; - }; - - extern const unsigned long __prime_list[]; - - // XXX This is a hack. There's no good reason for any of - // _Prime_rehash_policy's member functions to be inline. - - // Return a prime no smaller than n. - inline std::size_t - _Prime_rehash_policy:: - _M_next_bkt(std::size_t __n) const - { - // Don't include the last prime in the search, so that anything - // higher than the second-to-last prime returns a past-the-end - // iterator that can be dereferenced to get the last prime. - const unsigned long* __p - = std::lower_bound(__prime_list, __prime_list + _S_n_primes - 1, __n); - _M_next_resize = - static_cast(__builtin_ceil(*__p * _M_max_load_factor)); - return *__p; - } - - // Return the smallest prime p such that alpha p >= n, where alpha - // is the load factor. - inline std::size_t - _Prime_rehash_policy:: - _M_bkt_for_elements(std::size_t __n) const - { - const float __min_bkts = __n / _M_max_load_factor; - return _M_next_bkt(__builtin_ceil(__min_bkts)); - } - - // Finds the smallest prime p such that alpha p > __n_elt + __n_ins. - // If p > __n_bkt, return make_pair(true, p); otherwise return - // make_pair(false, 0). In principle this isn't very different from - // _M_bkt_for_elements. - - // The only tricky part is that we're caching the element count at - // which we need to rehash, so we don't have to do a floating-point - // multiply for every insertion. - - inline std::pair - _Prime_rehash_policy:: - _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, - std::size_t __n_ins) const - { - if (__n_elt + __n_ins > _M_next_resize) - { - float __min_bkts = ((float(__n_ins) + float(__n_elt)) - / _M_max_load_factor); - if (__min_bkts > __n_bkt) - { - __min_bkts = std::max(__min_bkts, _M_growth_factor * __n_bkt); - return std::make_pair(true, - _M_next_bkt(__builtin_ceil(__min_bkts))); - } - else - { - _M_next_resize = static_cast - (__builtin_ceil(__n_bkt * _M_max_load_factor)); - return std::make_pair(false, 0); - } - } - else - return std::make_pair(false, 0); - } - - // Base classes for std::tr1::_Hashtable. We define these base - // classes because in some cases we want to do different things - // depending on the value of a policy class. In some cases the - // policy class affects which member functions and nested typedefs - // are defined; we handle that by specializing base class templates. - // Several of the base class templates need to access other members - // of class template _Hashtable, so we use the "curiously recurring - // template pattern" for them. - - // class template _Map_base. If the hashtable has a value type of the - // form pair and a key extraction policy that returns the - // first part of the pair, the hashtable gets a mapped_type typedef. - // If it satisfies those criteria and also has unique keys, then it - // also gets an operator[]. - template - struct _Map_base { }; - - template - struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, false, _Hashtable> - { - typedef typename _Pair::second_type mapped_type; - }; - - template - struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable> - { - typedef typename _Pair::second_type mapped_type; - - mapped_type& - operator[](const _Key& __k); - }; - - template - typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>, - true, _Hashtable>::mapped_type& - _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>:: - operator[](const _Key& __k) - { - _Hashtable* __h = static_cast<_Hashtable*>(this); - typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k); - std::size_t __n = __h->_M_bucket_index(__k, __code, - __h->_M_bucket_count); - - typename _Hashtable::_Node* __p = - __h->_M_find_node(__h->_M_buckets[__n], __k, __code); - if (!__p) - return __h->_M_insert_bucket(std::make_pair(__k, mapped_type()), - __n, __code)->second; - return (__p->_M_v).second; - } - - // class template _Rehash_base. Give hashtable the max_load_factor - // functions iff the rehash policy is _Prime_rehash_policy. - template - struct _Rehash_base { }; - - template - struct _Rehash_base<_Prime_rehash_policy, _Hashtable> - { - float - max_load_factor() const - { - const _Hashtable* __this = static_cast(this); - return __this->__rehash_policy().max_load_factor(); - } - - void - max_load_factor(float __z) - { - _Hashtable* __this = static_cast<_Hashtable*>(this); - __this->__rehash_policy(_Prime_rehash_policy(__z)); - } - }; - - // Class template _Hash_code_base. Encapsulates two policy issues that - // aren't quite orthogonal. - // (1) the difference between using a ranged hash function and using - // the combination of a hash function and a range-hashing function. - // In the former case we don't have such things as hash codes, so - // we have a dummy type as placeholder. - // (2) Whether or not we cache hash codes. Caching hash codes is - // meaningless if we have a ranged hash function. - // We also put the key extraction and equality comparison function - // objects here, for convenience. - - // Primary template: unused except as a hook for specializations. - template - struct _Hash_code_base; - - // Specialization: ranged hash function, no caching hash codes. H1 - // and H2 are provided but ignored. We define a dummy hash code type. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, - _Hash, false> - { - protected: - _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq, - const _H1&, const _H2&, const _Hash& __h) - : _M_extract(__ex), _M_eq(__eq), _M_ranged_hash(__h) { } - - typedef void* _Hash_code_type; - - _Hash_code_type - _M_hash_code(const _Key& __key) const - { return 0; } - - std::size_t - _M_bucket_index(const _Key& __k, _Hash_code_type, - std::size_t __n) const - { return _M_ranged_hash(__k, __n); } - - std::size_t - _M_bucket_index(const _Hash_node<_Value, false>* __p, - std::size_t __n) const - { return _M_ranged_hash(_M_extract(__p->_M_v), __n); } - - bool - _M_compare(const _Key& __k, _Hash_code_type, - _Hash_node<_Value, false>* __n) const - { return _M_eq(__k, _M_extract(__n->_M_v)); } - - void - _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const - { } - - void - _M_copy_code(_Hash_node<_Value, false>*, - const _Hash_node<_Value, false>*) const - { } - - void - _M_swap(_Hash_code_base& __x) - { - std::swap(_M_extract, __x._M_extract); - std::swap(_M_eq, __x._M_eq); - std::swap(_M_ranged_hash, __x._M_ranged_hash); - } - - protected: - _ExtractKey _M_extract; - _Equal _M_eq; - _Hash _M_ranged_hash; - }; - - - // No specialization for ranged hash function while caching hash codes. - // That combination is meaningless, and trying to do it is an error. - - - // Specialization: ranged hash function, cache hash codes. This - // combination is meaningless, so we provide only a declaration - // and no definition. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, - _Hash, true>; - - // Specialization: hash function and range-hashing function, no - // caching of hash codes. H is provided but ignored. Provides - // typedef and accessor required by TR1. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, - _Default_ranged_hash, false> - { - typedef _H1 hasher; - - hasher - hash_function() const - { return _M_h1; } - - protected: - _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq, - const _H1& __h1, const _H2& __h2, - const _Default_ranged_hash&) - : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { } - - typedef std::size_t _Hash_code_type; - - _Hash_code_type - _M_hash_code(const _Key& __k) const - { return _M_h1(__k); } - - std::size_t - _M_bucket_index(const _Key&, _Hash_code_type __c, - std::size_t __n) const - { return _M_h2(__c, __n); } - - std::size_t - _M_bucket_index(const _Hash_node<_Value, false>* __p, - std::size_t __n) const - { return _M_h2(_M_h1(_M_extract(__p->_M_v)), __n); } - - bool - _M_compare(const _Key& __k, _Hash_code_type, - _Hash_node<_Value, false>* __n) const - { return _M_eq(__k, _M_extract(__n->_M_v)); } - - void - _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const - { } - - void - _M_copy_code(_Hash_node<_Value, false>*, - const _Hash_node<_Value, false>*) const - { } - - void - _M_swap(_Hash_code_base& __x) - { - std::swap(_M_extract, __x._M_extract); - std::swap(_M_eq, __x._M_eq); - std::swap(_M_h1, __x._M_h1); - std::swap(_M_h2, __x._M_h2); - } - - protected: - _ExtractKey _M_extract; - _Equal _M_eq; - _H1 _M_h1; - _H2 _M_h2; - }; - - // Specialization: hash function and range-hashing function, - // caching hash codes. H is provided but ignored. Provides - // typedef and accessor required by TR1. - template - struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, - _Default_ranged_hash, true> - { - typedef _H1 hasher; - - hasher - hash_function() const - { return _M_h1; } - - protected: - _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq, - const _H1& __h1, const _H2& __h2, - const _Default_ranged_hash&) - : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { } - - typedef std::size_t _Hash_code_type; - - _Hash_code_type - _M_hash_code(const _Key& __k) const - { return _M_h1(__k); } - - std::size_t - _M_bucket_index(const _Key&, _Hash_code_type __c, - std::size_t __n) const - { return _M_h2(__c, __n); } - - std::size_t - _M_bucket_index(const _Hash_node<_Value, true>* __p, - std::size_t __n) const - { return _M_h2(__p->_M_hash_code, __n); } - - bool - _M_compare(const _Key& __k, _Hash_code_type __c, - _Hash_node<_Value, true>* __n) const - { return __c == __n->_M_hash_code && _M_eq(__k, _M_extract(__n->_M_v)); } - - void - _M_store_code(_Hash_node<_Value, true>* __n, _Hash_code_type __c) const - { __n->_M_hash_code = __c; } - - void - _M_copy_code(_Hash_node<_Value, true>* __to, - const _Hash_node<_Value, true>* __from) const - { __to->_M_hash_code = __from->_M_hash_code; } - - void - _M_swap(_Hash_code_base& __x) - { - std::swap(_M_extract, __x._M_extract); - std::swap(_M_eq, __x._M_eq); - std::swap(_M_h1, __x._M_h1); - std::swap(_M_h2, __x._M_h2); - } - - protected: - _ExtractKey _M_extract; - _Equal _M_eq; - _H1 _M_h1; - _H2 _M_h2; - }; -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace __detail -} -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/limits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/limits.h deleted file mode 100644 index 107e3ebb7..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/limits.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 limits.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/limits.h - * This is a TR1 C++ Library header. - */ - -#ifndef _TR1_LIMITS_H -#define _TR1_LIMITS_H 1 - -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/math.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/math.h deleted file mode 100644 index 382ffd13c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/math.h +++ /dev/null @@ -1,186 +0,0 @@ -// TR1 math.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/math.h - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_MATH_H -#define _GLIBCXX_TR1_MATH_H 1 - -#include - -#if _GLIBCXX_USE_C99_MATH_TR1 - -using std::tr1::acos; -using std::tr1::acosh; -using std::tr1::asin; -using std::tr1::asinh; -using std::tr1::atan; -using std::tr1::atan2; -using std::tr1::atanh; -using std::tr1::cbrt; -using std::tr1::ceil; -using std::tr1::copysign; -using std::tr1::cos; -using std::tr1::cosh; -using std::tr1::erf; -using std::tr1::erfc; -using std::tr1::exp; -using std::tr1::exp2; -using std::tr1::expm1; -using std::tr1::fabs; -using std::tr1::fdim; -using std::tr1::floor; -using std::tr1::fma; -using std::tr1::fmax; -using std::tr1::fmin; -using std::tr1::fmod; -using std::tr1::frexp; -using std::tr1::hypot; -using std::tr1::ilogb; -using std::tr1::ldexp; -using std::tr1::lgamma; -using std::tr1::llrint; -using std::tr1::llround; -using std::tr1::log; -using std::tr1::log10; -using std::tr1::log1p; -using std::tr1::log2; -using std::tr1::logb; -using std::tr1::lrint; -using std::tr1::lround; -using std::tr1::nearbyint; -using std::tr1::nextafter; -using std::tr1::nexttoward; -using std::tr1::pow; -using std::tr1::remainder; -using std::tr1::remquo; -using std::tr1::rint; -using std::tr1::round; -using std::tr1::scalbln; -using std::tr1::scalbn; -using std::tr1::sin; -using std::tr1::sinh; -using std::tr1::sqrt; -using std::tr1::tan; -using std::tr1::tanh; -using std::tr1::tgamma; -using std::tr1::trunc; - -#endif - -using std::tr1::assoc_laguerref; -using std::tr1::assoc_laguerre; -using std::tr1::assoc_laguerrel; - -using std::tr1::assoc_legendref; -using std::tr1::assoc_legendre; -using std::tr1::assoc_legendrel; - -using std::tr1::betaf; -using std::tr1::beta; -using std::tr1::betal; - -using std::tr1::comp_ellint_1f; -using std::tr1::comp_ellint_1; -using std::tr1::comp_ellint_1l; - -using std::tr1::comp_ellint_2f; -using std::tr1::comp_ellint_2; -using std::tr1::comp_ellint_2l; - -using std::tr1::comp_ellint_3f; -using std::tr1::comp_ellint_3; -using std::tr1::comp_ellint_3l; - -using std::tr1::conf_hypergf; -using std::tr1::conf_hyperg; -using std::tr1::conf_hypergl; - -using std::tr1::cyl_bessel_if; -using std::tr1::cyl_bessel_i; -using std::tr1::cyl_bessel_il; - -using std::tr1::cyl_bessel_jf; -using std::tr1::cyl_bessel_j; -using std::tr1::cyl_bessel_jl; - -using std::tr1::cyl_bessel_kf; -using std::tr1::cyl_bessel_k; -using std::tr1::cyl_bessel_kl; - -using std::tr1::cyl_neumannf; -using std::tr1::cyl_neumann; -using std::tr1::cyl_neumannl; - -using std::tr1::ellint_1f; -using std::tr1::ellint_1; -using std::tr1::ellint_1l; - -using std::tr1::ellint_2f; -using std::tr1::ellint_2; -using std::tr1::ellint_2l; - -using std::tr1::ellint_3f; -using std::tr1::ellint_3; -using std::tr1::ellint_3l; - -using std::tr1::expintf; -using std::tr1::expint; -using std::tr1::expintl; - -using std::tr1::hermitef; -using std::tr1::hermite; -using std::tr1::hermitel; - -using std::tr1::hypergf; -using std::tr1::hyperg; -using std::tr1::hypergl; - -using std::tr1::laguerref; -using std::tr1::laguerre; -using std::tr1::laguerrel; - -using std::tr1::legendref; -using std::tr1::legendre; -using std::tr1::legendrel; - -using std::tr1::riemann_zetaf; -using std::tr1::riemann_zeta; -using std::tr1::riemann_zetal; - -using std::tr1::sph_besself; -using std::tr1::sph_bessel; -using std::tr1::sph_bessell; - -using std::tr1::sph_legendref; -using std::tr1::sph_legendre; -using std::tr1::sph_legendrel; - -using std::tr1::sph_neumannf; -using std::tr1::sph_neumann; -using std::tr1::sph_neumannl; - -#endif // _GLIBCXX_TR1_MATH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/memory deleted file mode 100644 index 137ca5b4e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/memory +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** - * @file tr1/memory - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_MEMORY -#define _GLIBCXX_TR1_MEMORY 1 - -#pragma GCC system_header - -#if defined(_GLIBCXX_INCLUDE_AS_CXX11) -# error TR1 header cannot be included from C++11 header -#endif - -#include -#include // std::exception -#include // std::type_info in get_deleter -#include // std::swap -#include // std::basic_ostream -#include -#include -#include -#include // std::less -#include -#include -#include - -#endif // _GLIBCXX_TR1_MEMORY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random deleted file mode 100644 index c982ba722..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random +++ /dev/null @@ -1,50 +0,0 @@ -// random number generation -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** - * @file tr1/random - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_RANDOM -#define _GLIBCXX_TR1_RANDOM 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif // _GLIBCXX_TR1_RANDOM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random.h deleted file mode 100644 index 67654a8bb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random.h +++ /dev/null @@ -1,2417 +0,0 @@ -// random number generation -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** - * @file tr1/random.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{tr1/random} - */ - -#ifndef _GLIBCXX_TR1_RANDOM_H -#define _GLIBCXX_TR1_RANDOM_H 1 - -#pragma GCC system_header - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ - // [5.1] Random number generation - - /** - * @addtogroup tr1_random Random Number Generation - * A facility for generating random numbers on selected distributions. - * @{ - */ - - /* - * Implementation-space details. - */ - namespace __detail - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - template::digits> - struct _Shift - { static const _UIntType __value = 0; }; - - template - struct _Shift<_UIntType, __w, true> - { static const _UIntType __value = _UIntType(1) << __w; }; - - template - struct _Mod; - - // Dispatch based on modulus value to prevent divide-by-zero compile-time - // errors when m == 0. - template - inline _Tp - __mod(_Tp __x) - { return _Mod<_Tp, __a, __c, __m, __m == 0>::__calc(__x); } - - typedef __gnu_cxx::__conditional_type<(sizeof(unsigned) == 4), - unsigned, unsigned long>::__type _UInt32Type; - - /* - * An adaptor class for converting the output of any Generator into - * the input for a specific Distribution. - */ - template - struct _Adaptor - { - typedef typename remove_reference<_Engine>::type _BEngine; - typedef typename _BEngine::result_type _Engine_result_type; - typedef typename _Distribution::input_type result_type; - - public: - _Adaptor(const _Engine& __g) - : _M_g(__g) { } - - result_type - min() const - { - result_type __return_value; - if (is_integral<_Engine_result_type>::value - && is_integral::value) - __return_value = _M_g.min(); - else - __return_value = result_type(0); - return __return_value; - } - - result_type - max() const - { - result_type __return_value; - if (is_integral<_Engine_result_type>::value - && is_integral::value) - __return_value = _M_g.max(); - else if (!is_integral::value) - __return_value = result_type(1); - else - __return_value = std::numeric_limits::max() - 1; - return __return_value; - } - - /* - * Converts a value generated by the adapted random number generator - * into a value in the input domain for the dependent random number - * distribution. - * - * Because the type traits are compile time constants only the - * appropriate clause of the if statements will actually be emitted - * by the compiler. - */ - result_type - operator()() - { - result_type __return_value; - if (is_integral<_Engine_result_type>::value - && is_integral::value) - __return_value = _M_g(); - else if (!is_integral<_Engine_result_type>::value - && !is_integral::value) - __return_value = result_type(_M_g() - _M_g.min()) - / result_type(_M_g.max() - _M_g.min()); - else if (is_integral<_Engine_result_type>::value - && !is_integral::value) - __return_value = result_type(_M_g() - _M_g.min()) - / result_type(_M_g.max() - _M_g.min() + result_type(1)); - else - __return_value = (((_M_g() - _M_g.min()) - / (_M_g.max() - _M_g.min())) - * std::numeric_limits::max()); - return __return_value; - } - - private: - _Engine _M_g; - }; - - // Specialization for _Engine*. - template - struct _Adaptor<_Engine*, _Distribution> - { - typedef typename _Engine::result_type _Engine_result_type; - typedef typename _Distribution::input_type result_type; - - public: - _Adaptor(_Engine* __g) - : _M_g(__g) { } - - result_type - min() const - { - result_type __return_value; - if (is_integral<_Engine_result_type>::value - && is_integral::value) - __return_value = _M_g->min(); - else - __return_value = result_type(0); - return __return_value; - } - - result_type - max() const - { - result_type __return_value; - if (is_integral<_Engine_result_type>::value - && is_integral::value) - __return_value = _M_g->max(); - else if (!is_integral::value) - __return_value = result_type(1); - else - __return_value = std::numeric_limits::max() - 1; - return __return_value; - } - - result_type - operator()() - { - result_type __return_value; - if (is_integral<_Engine_result_type>::value - && is_integral::value) - __return_value = (*_M_g)(); - else if (!is_integral<_Engine_result_type>::value - && !is_integral::value) - __return_value = result_type((*_M_g)() - _M_g->min()) - / result_type(_M_g->max() - _M_g->min()); - else if (is_integral<_Engine_result_type>::value - && !is_integral::value) - __return_value = result_type((*_M_g)() - _M_g->min()) - / result_type(_M_g->max() - _M_g->min() + result_type(1)); - else - __return_value = ((((*_M_g)() - _M_g->min()) - / (_M_g->max() - _M_g->min())) - * std::numeric_limits::max()); - return __return_value; - } - - private: - _Engine* _M_g; - }; - - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace __detail - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * Produces random numbers on a given distribution function using a - * non-uniform random number generation engine. - * - * @todo the engine_value_type needs to be studied more carefully. - */ - template - class variate_generator - { - // Concept requirements. - __glibcxx_class_requires(_Engine, _CopyConstructibleConcept) - // __glibcxx_class_requires(_Engine, _EngineConcept) - // __glibcxx_class_requires(_Dist, _EngineConcept) - - public: - typedef _Engine engine_type; - typedef __detail::_Adaptor<_Engine, _Dist> engine_value_type; - typedef _Dist distribution_type; - typedef typename _Dist::result_type result_type; - - // tr1:5.1.1 table 5.1 requirement - typedef typename __gnu_cxx::__enable_if< - is_arithmetic::value, result_type>::__type _IsValidType; - - /** - * Constructs a variate generator with the uniform random number - * generator @p __eng for the random distribution @p __dist. - * - * @throws Any exceptions which may thrown by the copy constructors of - * the @p _Engine or @p _Dist objects. - */ - variate_generator(engine_type __eng, distribution_type __dist) - : _M_engine(__eng), _M_dist(__dist) { } - - /** - * Gets the next generated value on the distribution. - */ - result_type - operator()() - { return _M_dist(_M_engine); } - - /** - * WTF? - */ - template - result_type - operator()(_Tp __value) - { return _M_dist(_M_engine, __value); } - - /** - * Gets a reference to the underlying uniform random number generator - * object. - */ - engine_value_type& - engine() - { return _M_engine; } - - /** - * Gets a const reference to the underlying uniform random number - * generator object. - */ - const engine_value_type& - engine() const - { return _M_engine; } - - /** - * Gets a reference to the underlying random distribution. - */ - distribution_type& - distribution() - { return _M_dist; } - - /** - * Gets a const reference to the underlying random distribution. - */ - const distribution_type& - distribution() const - { return _M_dist; } - - /** - * Gets the closed lower bound of the distribution interval. - */ - result_type - min() const - { return this->distribution().min(); } - - /** - * Gets the closed upper bound of the distribution interval. - */ - result_type - max() const - { return this->distribution().max(); } - - private: - engine_value_type _M_engine; - distribution_type _M_dist; - }; - - - /** - * @addtogroup tr1_random_generators Random Number Generators - * @ingroup tr1_random - * - * These classes define objects which provide random or pseudorandom - * numbers, either from a discrete or a continuous interval. The - * random number generator supplied as a part of this library are - * all uniform random number generators which provide a sequence of - * random number uniformly distributed over their range. - * - * A number generator is a function object with an operator() that - * takes zero arguments and returns a number. - * - * A compliant random number generator must satisfy the following - * requirements. - * - *
Random Number Generator Requirements
To be documented.
- * - * @{ - */ - - /** - * @brief A model of a linear congruential random number generator. - * - * A random number generator that produces pseudorandom numbers using the - * linear function @f$x_{i+1}\leftarrow(ax_{i} + c) \bmod m @f$. - * - * The template parameter @p _UIntType must be an unsigned integral type - * large enough to store values up to (__m-1). If the template parameter - * @p __m is 0, the modulus @p __m used is - * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template - * parameters @p __a and @p __c must be less than @p __m. - * - * The size of the state is @f$ 1 @f$. - */ - template - class linear_congruential - { - __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept) - // __glibcpp_class_requires(__a < __m && __c < __m) - - public: - /** The type of the generated random value. */ - typedef _UIntType result_type; - - /** The multiplier. */ - static const _UIntType multiplier = __a; - /** An increment. */ - static const _UIntType increment = __c; - /** The modulus. */ - static const _UIntType modulus = __m; - - /** - * Constructs a %linear_congruential random number generator engine with - * seed @p __s. The default seed value is 1. - * - * @param __s The initial seed value. - */ - explicit - linear_congruential(unsigned long __x0 = 1) - { this->seed(__x0); } - - /** - * Constructs a %linear_congruential random number generator engine - * seeded from the generator function @p __g. - * - * @param __g The seed generator function. - */ - template - linear_congruential(_Gen& __g) - { this->seed(__g); } - - /** - * Reseeds the %linear_congruential random number generator engine - * sequence to the seed @g __s. - * - * @param __s The new seed. - */ - void - seed(unsigned long __s = 1); - - /** - * Reseeds the %linear_congruential random number generator engine - * sequence using values from the generator function @p __g. - * - * @param __g the seed generator function. - */ - template - void - seed(_Gen& __g) - { seed(__g, typename is_fundamental<_Gen>::type()); } - - /** - * Gets the smallest possible value in the output range. - * - * The minimum depends on the @p __c parameter: if it is zero, the - * minimum generated must be > 0, otherwise 0 is allowed. - */ - result_type - min() const - { return (__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) ? 1 : 0; } - - /** - * Gets the largest possible value in the output range. - */ - result_type - max() const - { return __m - 1; } - - /** - * Gets the next random number in the sequence. - */ - result_type - operator()(); - - /** - * Compares two linear congruential random number generator - * objects of the same type for equality. - * - * @param __lhs A linear congruential random number generator object. - * @param __rhs Another linear congruential random number generator obj. - * - * @returns true if the two objects are equal, false otherwise. - */ - friend bool - operator==(const linear_congruential& __lhs, - const linear_congruential& __rhs) - { return __lhs._M_x == __rhs._M_x; } - - /** - * Compares two linear congruential random number generator - * objects of the same type for inequality. - * - * @param __lhs A linear congruential random number generator object. - * @param __rhs Another linear congruential random number generator obj. - * - * @returns true if the two objects are not equal, false otherwise. - */ - friend bool - operator!=(const linear_congruential& __lhs, - const linear_congruential& __rhs) - { return !(__lhs == __rhs); } - - /** - * Writes the textual representation of the state x(i) of x to @p __os. - * - * @param __os The output stream. - * @param __lcr A % linear_congruential random number generator. - * @returns __os. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const linear_congruential<_UIntType1, __a1, __c1, - __m1>& __lcr); - - /** - * Sets the state of the engine by reading its textual - * representation from @p __is. - * - * The textual representation must have been previously written using an - * output stream whose imbued locale and whose type's template - * specialization arguments _CharT and _Traits were the same as those of - * @p __is. - * - * @param __is The input stream. - * @param __lcr A % linear_congruential random number generator. - * @returns __is. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - linear_congruential<_UIntType1, __a1, __c1, __m1>& __lcr); - - private: - template - void - seed(_Gen& __g, true_type) - { return seed(static_cast(__g)); } - - template - void - seed(_Gen& __g, false_type); - - _UIntType _M_x; - }; - - /** - * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller. - */ - typedef linear_congruential minstd_rand0; - - /** - * An alternative LCR (Lehmer Generator function) . - */ - typedef linear_congruential minstd_rand; - - - /** - * A generalized feedback shift register discrete random number generator. - * - * This algorithm avoids multiplication and division and is designed to be - * friendly to a pipelined architecture. If the parameters are chosen - * correctly, this generator will produce numbers with a very long period and - * fairly good apparent entropy, although still not cryptographically strong. - * - * The best way to use this generator is with the predefined mt19937 class. - * - * This algorithm was originally invented by Makoto Matsumoto and - * Takuji Nishimura. - * - * @var word_size The number of bits in each element of the state vector. - * @var state_size The degree of recursion. - * @var shift_size The period parameter. - * @var mask_bits The separation point bit index. - * @var parameter_a The last row of the twist matrix. - * @var output_u The first right-shift tempering matrix parameter. - * @var output_s The first left-shift tempering matrix parameter. - * @var output_b The first left-shift tempering matrix mask. - * @var output_t The second left-shift tempering matrix parameter. - * @var output_c The second left-shift tempering matrix mask. - * @var output_l The second right-shift tempering matrix parameter. - */ - template - class mersenne_twister - { - __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept) - - public: - // types - typedef _UIntType result_type; - - // parameter values - static const int word_size = __w; - static const int state_size = __n; - static const int shift_size = __m; - static const int mask_bits = __r; - static const _UIntType parameter_a = __a; - static const int output_u = __u; - static const int output_s = __s; - static const _UIntType output_b = __b; - static const int output_t = __t; - static const _UIntType output_c = __c; - static const int output_l = __l; - - // constructors and member function - mersenne_twister() - { seed(); } - - explicit - mersenne_twister(unsigned long __value) - { seed(__value); } - - template - mersenne_twister(_Gen& __g) - { seed(__g); } - - void - seed() - { seed(5489UL); } - - void - seed(unsigned long __value); - - template - void - seed(_Gen& __g) - { seed(__g, typename is_fundamental<_Gen>::type()); } - - result_type - min() const - { return 0; }; - - result_type - max() const - { return __detail::_Shift<_UIntType, __w>::__value - 1; } - - result_type - operator()(); - - /** - * Compares two % mersenne_twister random number generator objects of - * the same type for equality. - * - * @param __lhs A % mersenne_twister random number generator object. - * @param __rhs Another % mersenne_twister random number generator - * object. - * - * @returns true if the two objects are equal, false otherwise. - */ - friend bool - operator==(const mersenne_twister& __lhs, - const mersenne_twister& __rhs) - { return std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x); } - - /** - * Compares two % mersenne_twister random number generator objects of - * the same type for inequality. - * - * @param __lhs A % mersenne_twister random number generator object. - * @param __rhs Another % mersenne_twister random number generator - * object. - * - * @returns true if the two objects are not equal, false otherwise. - */ - friend bool - operator!=(const mersenne_twister& __lhs, - const mersenne_twister& __rhs) - { return !(__lhs == __rhs); } - - /** - * Inserts the current state of a % mersenne_twister random number - * generator engine @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A % mersenne_twister random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1, - __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x); - - /** - * Extracts the current state of a % mersenne_twister random number - * generator engine @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A % mersenne_twister random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1, - __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x); - - private: - template - void - seed(_Gen& __g, true_type) - { return seed(static_cast(__g)); } - - template - void - seed(_Gen& __g, false_type); - - _UIntType _M_x[state_size]; - int _M_p; - }; - - /** - * The classic Mersenne Twister. - * - * Reference: - * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally - * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions - * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30. - */ - typedef mersenne_twister< - unsigned long, 32, 624, 397, 31, - 0x9908b0dful, 11, 7, - 0x9d2c5680ul, 15, - 0xefc60000ul, 18 - > mt19937; - - - /** - * @brief The Marsaglia-Zaman generator. - * - * This is a model of a Generalized Fibonacci discrete random number - * generator, sometimes referred to as the SWC generator. - * - * A discrete random number generator that produces pseudorandom - * numbers using @f$x_{i}\leftarrow(x_{i - s} - x_{i - r} - - * carry_{i-1}) \bmod m @f$. - * - * The size of the state is @f$ r @f$ - * and the maximum period of the generator is @f$ m^r - m^s -1 @f$. - * - * N1688[4.13] says the template parameter _IntType shall denote - * an integral type large enough to store values up to m. - * - * @var _M_x The state of the generator. This is a ring buffer. - * @var _M_carry The carry. - * @var _M_p Current index of x(i - r). - */ - template - class subtract_with_carry - { - __glibcxx_class_requires(_IntType, _IntegerConcept) - - public: - /** The type of the generated random value. */ - typedef _IntType result_type; - - // parameter values - static const _IntType modulus = __m; - static const int long_lag = __r; - static const int short_lag = __s; - - /** - * Constructs a default-initialized % subtract_with_carry random number - * generator. - */ - subtract_with_carry() - { this->seed(); } - - /** - * Constructs an explicitly seeded % subtract_with_carry random number - * generator. - */ - explicit - subtract_with_carry(unsigned long __value) - { this->seed(__value); } - - /** - * Constructs a %subtract_with_carry random number generator engine - * seeded from the generator function @p __g. - * - * @param __g The seed generator function. - */ - template - subtract_with_carry(_Gen& __g) - { this->seed(__g); } - - /** - * Seeds the initial state @f$ x_0 @f$ of the random number generator. - * - * N1688[4.19] modifies this as follows. If @p __value == 0, - * sets value to 19780503. In any case, with a linear - * congruential generator lcg(i) having parameters @f$ m_{lcg} = - * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value - * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m - * \dots lcg(r) \bmod m @f$ respectively. If @f$ x_{-1} = 0 @f$ - * set carry to 1, otherwise sets carry to 0. - */ - void - seed(unsigned long __value = 19780503); - - /** - * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry - * random number generator. - */ - template - void - seed(_Gen& __g) - { seed(__g, typename is_fundamental<_Gen>::type()); } - - /** - * Gets the inclusive minimum value of the range of random integers - * returned by this generator. - */ - result_type - min() const - { return 0; } - - /** - * Gets the inclusive maximum value of the range of random integers - * returned by this generator. - */ - result_type - max() const - { return this->modulus - 1; } - - /** - * Gets the next random number in the sequence. - */ - result_type - operator()(); - - /** - * Compares two % subtract_with_carry random number generator objects of - * the same type for equality. - * - * @param __lhs A % subtract_with_carry random number generator object. - * @param __rhs Another % subtract_with_carry random number generator - * object. - * - * @returns true if the two objects are equal, false otherwise. - */ - friend bool - operator==(const subtract_with_carry& __lhs, - const subtract_with_carry& __rhs) - { return std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x); } - - /** - * Compares two % subtract_with_carry random number generator objects of - * the same type for inequality. - * - * @param __lhs A % subtract_with_carry random number generator object. - * @param __rhs Another % subtract_with_carry random number generator - * object. - * - * @returns true if the two objects are not equal, false otherwise. - */ - friend bool - operator!=(const subtract_with_carry& __lhs, - const subtract_with_carry& __rhs) - { return !(__lhs == __rhs); } - - /** - * Inserts the current state of a % subtract_with_carry random number - * generator engine @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A % subtract_with_carry random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const subtract_with_carry<_IntType1, __m1, __s1, - __r1>& __x); - - /** - * Extracts the current state of a % subtract_with_carry random number - * generator engine @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A % subtract_with_carry random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - subtract_with_carry<_IntType1, __m1, __s1, __r1>& __x); - - private: - template - void - seed(_Gen& __g, true_type) - { return seed(static_cast(__g)); } - - template - void - seed(_Gen& __g, false_type); - - typedef typename __gnu_cxx::__add_unsigned<_IntType>::__type _UIntType; - - _UIntType _M_x[long_lag]; - _UIntType _M_carry; - int _M_p; - }; - - - /** - * @brief The Marsaglia-Zaman generator (floats version). - * - * @var _M_x The state of the generator. This is a ring buffer. - * @var _M_carry The carry. - * @var _M_p Current index of x(i - r). - * @var _M_npows Precomputed negative powers of 2. - */ - template - class subtract_with_carry_01 - { - public: - /** The type of the generated random value. */ - typedef _RealType result_type; - - // parameter values - static const int word_size = __w; - static const int long_lag = __r; - static const int short_lag = __s; - - /** - * Constructs a default-initialized % subtract_with_carry_01 random - * number generator. - */ - subtract_with_carry_01() - { - this->seed(); - _M_initialize_npows(); - } - - /** - * Constructs an explicitly seeded % subtract_with_carry_01 random number - * generator. - */ - explicit - subtract_with_carry_01(unsigned long __value) - { - this->seed(__value); - _M_initialize_npows(); - } - - /** - * Constructs a % subtract_with_carry_01 random number generator engine - * seeded from the generator function @p __g. - * - * @param __g The seed generator function. - */ - template - subtract_with_carry_01(_Gen& __g) - { - this->seed(__g); - _M_initialize_npows(); - } - - /** - * Seeds the initial state @f$ x_0 @f$ of the random number generator. - */ - void - seed(unsigned long __value = 19780503); - - /** - * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry_01 - * random number generator. - */ - template - void - seed(_Gen& __g) - { seed(__g, typename is_fundamental<_Gen>::type()); } - - /** - * Gets the minimum value of the range of random floats - * returned by this generator. - */ - result_type - min() const - { return 0.0; } - - /** - * Gets the maximum value of the range of random floats - * returned by this generator. - */ - result_type - max() const - { return 1.0; } - - /** - * Gets the next random number in the sequence. - */ - result_type - operator()(); - - /** - * Compares two % subtract_with_carry_01 random number generator objects - * of the same type for equality. - * - * @param __lhs A % subtract_with_carry_01 random number - * generator object. - * @param __rhs Another % subtract_with_carry_01 random number generator - * object. - * - * @returns true if the two objects are equal, false otherwise. - */ - friend bool - operator==(const subtract_with_carry_01& __lhs, - const subtract_with_carry_01& __rhs) - { - for (int __i = 0; __i < long_lag; ++__i) - if (!std::equal(__lhs._M_x[__i], __lhs._M_x[__i] + __n, - __rhs._M_x[__i])) - return false; - return true; - } - - /** - * Compares two % subtract_with_carry_01 random number generator objects - * of the same type for inequality. - * - * @param __lhs A % subtract_with_carry_01 random number - * generator object. - * - * @param __rhs Another % subtract_with_carry_01 random number generator - * object. - * - * @returns true if the two objects are not equal, false otherwise. - */ - friend bool - operator!=(const subtract_with_carry_01& __lhs, - const subtract_with_carry_01& __rhs) - { return !(__lhs == __rhs); } - - /** - * Inserts the current state of a % subtract_with_carry_01 random number - * generator engine @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A % subtract_with_carry_01 random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const subtract_with_carry_01<_RealType1, __w1, __s1, - __r1>& __x); - - /** - * Extracts the current state of a % subtract_with_carry_01 random number - * generator engine @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A % subtract_with_carry_01 random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - subtract_with_carry_01<_RealType1, __w1, __s1, __r1>& __x); - - private: - template - void - seed(_Gen& __g, true_type) - { return seed(static_cast(__g)); } - - template - void - seed(_Gen& __g, false_type); - - void - _M_initialize_npows(); - - static const int __n = (__w + 31) / 32; - - typedef __detail::_UInt32Type _UInt32Type; - _UInt32Type _M_x[long_lag][__n]; - _RealType _M_npows[__n]; - _UInt32Type _M_carry; - int _M_p; - }; - - typedef subtract_with_carry_01 ranlux_base_01; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 508. Bad parameters for ranlux64_base_01. - typedef subtract_with_carry_01 ranlux64_base_01; - - - /** - * Produces random numbers from some base engine by discarding blocks of - * data. - * - * 0 <= @p __r <= @p __p - */ - template - class discard_block - { - // __glibcxx_class_requires(typename base_type::result_type, - // ArithmeticTypeConcept) - - public: - /** The type of the underlying generator engine. */ - typedef _UniformRandomNumberGenerator base_type; - /** The type of the generated random value. */ - typedef typename base_type::result_type result_type; - - // parameter values - static const int block_size = __p; - static const int used_block = __r; - - /** - * Constructs a default %discard_block engine. - * - * The underlying engine is default constructed as well. - */ - discard_block() - : _M_n(0) { } - - /** - * Copy constructs a %discard_block engine. - * - * Copies an existing base class random number generator. - * @param rng An existing (base class) engine object. - */ - explicit - discard_block(const base_type& __rng) - : _M_b(__rng), _M_n(0) { } - - /** - * Seed constructs a %discard_block engine. - * - * Constructs the underlying generator engine seeded with @p __s. - * @param __s A seed value for the base class engine. - */ - explicit - discard_block(unsigned long __s) - : _M_b(__s), _M_n(0) { } - - /** - * Generator construct a %discard_block engine. - * - * @param __g A seed generator function. - */ - template - discard_block(_Gen& __g) - : _M_b(__g), _M_n(0) { } - - /** - * Reseeds the %discard_block object with the default seed for the - * underlying base class generator engine. - */ - void seed() - { - _M_b.seed(); - _M_n = 0; - } - - /** - * Reseeds the %discard_block object with the given seed generator - * function. - * @param __g A seed generator function. - */ - template - void seed(_Gen& __g) - { - _M_b.seed(__g); - _M_n = 0; - } - - /** - * Gets a const reference to the underlying generator engine object. - */ - const base_type& - base() const - { return _M_b; } - - /** - * Gets the minimum value in the generated random number range. - */ - result_type - min() const - { return _M_b.min(); } - - /** - * Gets the maximum value in the generated random number range. - */ - result_type - max() const - { return _M_b.max(); } - - /** - * Gets the next value in the generated random number sequence. - */ - result_type - operator()(); - - /** - * Compares two %discard_block random number generator objects of - * the same type for equality. - * - * @param __lhs A %discard_block random number generator object. - * @param __rhs Another %discard_block random number generator - * object. - * - * @returns true if the two objects are equal, false otherwise. - */ - friend bool - operator==(const discard_block& __lhs, const discard_block& __rhs) - { return (__lhs._M_b == __rhs._M_b) && (__lhs._M_n == __rhs._M_n); } - - /** - * Compares two %discard_block random number generator objects of - * the same type for inequality. - * - * @param __lhs A %discard_block random number generator object. - * @param __rhs Another %discard_block random number generator - * object. - * - * @returns true if the two objects are not equal, false otherwise. - */ - friend bool - operator!=(const discard_block& __lhs, const discard_block& __rhs) - { return !(__lhs == __rhs); } - - /** - * Inserts the current state of a %discard_block random number - * generator engine @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %discard_block random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const discard_block<_UniformRandomNumberGenerator1, - __p1, __r1>& __x); - - /** - * Extracts the current state of a % subtract_with_carry random number - * generator engine @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %discard_block random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - discard_block<_UniformRandomNumberGenerator1, - __p1, __r1>& __x); - - private: - base_type _M_b; - int _M_n; - }; - - - /** - * James's luxury-level-3 integer adaptation of Luescher's generator. - */ - typedef discard_block< - subtract_with_carry, - 223, - 24 - > ranlux3; - - /** - * James's luxury-level-4 integer adaptation of Luescher's generator. - */ - typedef discard_block< - subtract_with_carry, - 389, - 24 - > ranlux4; - - typedef discard_block< - subtract_with_carry_01, - 223, - 24 - > ranlux3_01; - - typedef discard_block< - subtract_with_carry_01, - 389, - 24 - > ranlux4_01; - - - /** - * A random number generator adaptor class that combines two random number - * generator engines into a single output sequence. - */ - template - class xor_combine - { - // __glibcxx_class_requires(typename _UniformRandomNumberGenerator1:: - // result_type, ArithmeticTypeConcept) - // __glibcxx_class_requires(typename _UniformRandomNumberGenerator2:: - // result_type, ArithmeticTypeConcept) - - public: - /** The type of the first underlying generator engine. */ - typedef _UniformRandomNumberGenerator1 base1_type; - /** The type of the second underlying generator engine. */ - typedef _UniformRandomNumberGenerator2 base2_type; - - private: - typedef typename base1_type::result_type _Result_type1; - typedef typename base2_type::result_type _Result_type2; - - public: - /** The type of the generated random value. */ - typedef typename __gnu_cxx::__conditional_type<(sizeof(_Result_type1) - > sizeof(_Result_type2)), - _Result_type1, _Result_type2>::__type result_type; - - // parameter values - static const int shift1 = __s1; - static const int shift2 = __s2; - - // constructors and member function - xor_combine() - : _M_b1(), _M_b2() - { _M_initialize_max(); } - - xor_combine(const base1_type& __rng1, const base2_type& __rng2) - : _M_b1(__rng1), _M_b2(__rng2) - { _M_initialize_max(); } - - xor_combine(unsigned long __s) - : _M_b1(__s), _M_b2(__s + 1) - { _M_initialize_max(); } - - template - xor_combine(_Gen& __g) - : _M_b1(__g), _M_b2(__g) - { _M_initialize_max(); } - - void - seed() - { - _M_b1.seed(); - _M_b2.seed(); - } - - template - void - seed(_Gen& __g) - { - _M_b1.seed(__g); - _M_b2.seed(__g); - } - - const base1_type& - base1() const - { return _M_b1; } - - const base2_type& - base2() const - { return _M_b2; } - - result_type - min() const - { return 0; } - - result_type - max() const - { return _M_max; } - - /** - * Gets the next random number in the sequence. - */ - // NB: Not exactly the TR1 formula, per N2079 instead. - result_type - operator()() - { - return ((result_type(_M_b1() - _M_b1.min()) << shift1) - ^ (result_type(_M_b2() - _M_b2.min()) << shift2)); - } - - /** - * Compares two %xor_combine random number generator objects of - * the same type for equality. - * - * @param __lhs A %xor_combine random number generator object. - * @param __rhs Another %xor_combine random number generator - * object. - * - * @returns true if the two objects are equal, false otherwise. - */ - friend bool - operator==(const xor_combine& __lhs, const xor_combine& __rhs) - { - return (__lhs.base1() == __rhs.base1()) - && (__lhs.base2() == __rhs.base2()); - } - - /** - * Compares two %xor_combine random number generator objects of - * the same type for inequality. - * - * @param __lhs A %xor_combine random number generator object. - * @param __rhs Another %xor_combine random number generator - * object. - * - * @returns true if the two objects are not equal, false otherwise. - */ - friend bool - operator!=(const xor_combine& __lhs, const xor_combine& __rhs) - { return !(__lhs == __rhs); } - - /** - * Inserts the current state of a %xor_combine random number - * generator engine @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %xor_combine random number generator engine. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const xor_combine<_UniformRandomNumberGenerator11, __s11, - _UniformRandomNumberGenerator21, __s21>& __x); - - /** - * Extracts the current state of a %xor_combine random number - * generator engine @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %xor_combine random number generator engine. - * - * @returns The input stream with the state of @p __x extracted or in - * an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - xor_combine<_UniformRandomNumberGenerator11, __s11, - _UniformRandomNumberGenerator21, __s21>& __x); - - private: - void - _M_initialize_max(); - - result_type - _M_initialize_max_aux(result_type, result_type, int); - - base1_type _M_b1; - base2_type _M_b2; - result_type _M_max; - }; - - - /** - * A standard interface to a platform-specific non-deterministic - * random number generator (if any are available). - */ - class random_device - { - public: - // types - typedef unsigned int result_type; - - // constructors, destructors and member functions - -#ifdef _GLIBCXX_USE_RANDOM_TR1 - - explicit - random_device(const std::string& __token = "/dev/urandom") - { - if ((__token != "/dev/urandom" && __token != "/dev/random") - || !(_M_file = std::fopen(__token.c_str(), "rb"))) - std::__throw_runtime_error(__N("random_device::" - "random_device(const std::string&)")); - } - - ~random_device() - { std::fclose(_M_file); } - -#else - - explicit - random_device(const std::string& __token = "mt19937") - : _M_mt(_M_strtoul(__token)) { } - - private: - static unsigned long - _M_strtoul(const std::string& __str) - { - unsigned long __ret = 5489UL; - if (__str != "mt19937") - { - const char* __nptr = __str.c_str(); - char* __endptr; - __ret = std::strtoul(__nptr, &__endptr, 0); - if (*__nptr == '\0' || *__endptr != '\0') - std::__throw_runtime_error(__N("random_device::_M_strtoul" - "(const std::string&)")); - } - return __ret; - } - - public: - -#endif - - result_type - min() const - { return std::numeric_limits::min(); } - - result_type - max() const - { return std::numeric_limits::max(); } - - double - entropy() const - { return 0.0; } - - result_type - operator()() - { -#ifdef _GLIBCXX_USE_RANDOM_TR1 - result_type __ret; - std::fread(reinterpret_cast(&__ret), sizeof(result_type), - 1, _M_file); - return __ret; -#else - return _M_mt(); -#endif - } - - private: - random_device(const random_device&); - void operator=(const random_device&); - -#ifdef _GLIBCXX_USE_RANDOM_TR1 - FILE* _M_file; -#else - mt19937 _M_mt; -#endif - }; - - /* @} */ // group tr1_random_generators - - /** - * @addtogroup tr1_random_distributions Random Number Distributions - * @ingroup tr1_random - * @{ - */ - - /** - * @addtogroup tr1_random_distributions_discrete Discrete Distributions - * @ingroup tr1_random_distributions - * @{ - */ - - /** - * @brief Uniform discrete distribution for random numbers. - * A discrete random distribution on the range @f$[min, max]@f$ with equal - * probability throughout the range. - */ - template - class uniform_int - { - __glibcxx_class_requires(_IntType, _IntegerConcept) - - public: - /** The type of the parameters of the distribution. */ - typedef _IntType input_type; - /** The type of the range of the distribution. */ - typedef _IntType result_type; - - public: - /** - * Constructs a uniform distribution object. - */ - explicit - uniform_int(_IntType __min = 0, _IntType __max = 9) - : _M_min(__min), _M_max(__max) - { - _GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max); - } - - /** - * Gets the inclusive lower bound of the distribution range. - */ - result_type - min() const - { return _M_min; } - - /** - * Gets the inclusive upper bound of the distribution range. - */ - result_type - max() const - { return _M_max; } - - /** - * Resets the distribution state. - * - * Does nothing for the uniform integer distribution. - */ - void - reset() { } - - /** - * Gets a uniformly distributed random number in the range - * @f$(min, max)@f$. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { - typedef typename _UniformRandomNumberGenerator::result_type - _UResult_type; - return _M_call(__urng, _M_min, _M_max, - typename is_integral<_UResult_type>::type()); - } - - /** - * Gets a uniform random number in the range @f$[0, n)@f$. - * - * This function is aimed at use with std::random_shuffle. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng, result_type __n) - { - typedef typename _UniformRandomNumberGenerator::result_type - _UResult_type; - return _M_call(__urng, 0, __n - 1, - typename is_integral<_UResult_type>::type()); - } - - /** - * Inserts a %uniform_int random number distribution @p __x into the - * output stream @p os. - * - * @param __os An output stream. - * @param __x A %uniform_int random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const uniform_int<_IntType1>& __x); - - /** - * Extracts a %uniform_int random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %uniform_int random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - uniform_int<_IntType1>& __x); - - private: - template - result_type - _M_call(_UniformRandomNumberGenerator& __urng, - result_type __min, result_type __max, true_type); - - template - result_type - _M_call(_UniformRandomNumberGenerator& __urng, - result_type __min, result_type __max, false_type) - { - return result_type((__urng() - __urng.min()) - / (__urng.max() - __urng.min()) - * (__max - __min + 1)) + __min; - } - - _IntType _M_min; - _IntType _M_max; - }; - - - /** - * @brief A Bernoulli random number distribution. - * - * Generates a sequence of true and false values with likelihood @f$ p @f$ - * that true will come up and @f$ (1 - p) @f$ that false will appear. - */ - class bernoulli_distribution - { - public: - typedef int input_type; - typedef bool result_type; - - public: - /** - * Constructs a Bernoulli distribution with likelihood @p p. - * - * @param __p [IN] The likelihood of a true result being returned. Must - * be in the interval @f$ [0, 1] @f$. - */ - explicit - bernoulli_distribution(double __p = 0.5) - : _M_p(__p) - { - _GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0)); - } - - /** - * Gets the @p p parameter of the distribution. - */ - double - p() const - { return _M_p; } - - /** - * Resets the distribution state. - * - * Does nothing for a Bernoulli distribution. - */ - void - reset() { } - - /** - * Gets the next value in the Bernoullian sequence. - */ - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { - if ((__urng() - __urng.min()) < _M_p * (__urng.max() - __urng.min())) - return true; - return false; - } - - /** - * Inserts a %bernoulli_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %bernoulli_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bernoulli_distribution& __x); - - /** - * Extracts a %bernoulli_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %bernoulli_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - bernoulli_distribution& __x) - { return __is >> __x._M_p; } - - private: - double _M_p; - }; - - - /** - * @brief A discrete geometric random number distribution. - * - * The formula for the geometric probability mass function is - * @f$ p(i) = (1 - p)p^{i-1} @f$ where @f$ p @f$ is the parameter of the - * distribution. - */ - template - class geometric_distribution - { - public: - // types - typedef _RealType input_type; - typedef _IntType result_type; - - // constructors and member function - explicit - geometric_distribution(const _RealType& __p = _RealType(0.5)) - : _M_p(__p) - { - _GLIBCXX_DEBUG_ASSERT((_M_p > 0.0) && (_M_p < 1.0)); - _M_initialize(); - } - - /** - * Gets the distribution parameter @p p. - */ - _RealType - p() const - { return _M_p; } - - void - reset() { } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - /** - * Inserts a %geometric_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %geometric_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const geometric_distribution<_IntType1, _RealType1>& __x); - - /** - * Extracts a %geometric_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %geometric_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - geometric_distribution& __x) - { - __is >> __x._M_p; - __x._M_initialize(); - return __is; - } - - private: - void - _M_initialize() - { _M_log_p = std::log(_M_p); } - - _RealType _M_p; - _RealType _M_log_p; - }; - - - template - class normal_distribution; - - /** - * @brief A discrete Poisson random number distribution. - * - * The formula for the Poisson probability mass function is - * @f$ p(i) = \frac{mean^i}{i!} e^{-mean} @f$ where @f$ mean @f$ is the - * parameter of the distribution. - */ - template - class poisson_distribution - { - public: - // types - typedef _RealType input_type; - typedef _IntType result_type; - - // constructors and member function - explicit - poisson_distribution(const _RealType& __mean = _RealType(1)) - : _M_mean(__mean), _M_nd() - { - _GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0); - _M_initialize(); - } - - /** - * Gets the distribution parameter @p mean. - */ - _RealType - mean() const - { return _M_mean; } - - void - reset() - { _M_nd.reset(); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - /** - * Inserts a %poisson_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %poisson_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const poisson_distribution<_IntType1, _RealType1>& __x); - - /** - * Extracts a %poisson_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %poisson_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - poisson_distribution<_IntType1, _RealType1>& __x); - - private: - void - _M_initialize(); - - // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. - normal_distribution<_RealType> _M_nd; - - _RealType _M_mean; - - // Hosts either log(mean) or the threshold of the simple method. - _RealType _M_lm_thr; -#if _GLIBCXX_USE_C99_MATH_TR1 - _RealType _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; -#endif - }; - - - /** - * @brief A discrete binomial random number distribution. - * - * The formula for the binomial probability mass function is - * @f$ p(i) = \binom{n}{i} p^i (1 - p)^{t - i} @f$ where @f$ t @f$ - * and @f$ p @f$ are the parameters of the distribution. - */ - template - class binomial_distribution - { - public: - // types - typedef _RealType input_type; - typedef _IntType result_type; - - // constructors and member function - explicit - binomial_distribution(_IntType __t = 1, - const _RealType& __p = _RealType(0.5)) - : _M_t(__t), _M_p(__p), _M_nd() - { - _GLIBCXX_DEBUG_ASSERT((_M_t >= 0) && (_M_p >= 0.0) && (_M_p <= 1.0)); - _M_initialize(); - } - - /** - * Gets the distribution @p t parameter. - */ - _IntType - t() const - { return _M_t; } - - /** - * Gets the distribution @p p parameter. - */ - _RealType - p() const - { return _M_p; } - - void - reset() - { _M_nd.reset(); } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - /** - * Inserts a %binomial_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %binomial_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const binomial_distribution<_IntType1, _RealType1>& __x); - - /** - * Extracts a %binomial_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %binomial_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - binomial_distribution<_IntType1, _RealType1>& __x); - - private: - void - _M_initialize(); - - template - result_type - _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t); - - // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. - normal_distribution<_RealType> _M_nd; - - _RealType _M_q; -#if _GLIBCXX_USE_C99_MATH_TR1 - _RealType _M_d1, _M_d2, _M_s1, _M_s2, _M_c, - _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; -#endif - _RealType _M_p; - _IntType _M_t; - - bool _M_easy; - }; - - /* @} */ // group tr1_random_distributions_discrete - - /** - * @addtogroup tr1_random_distributions_continuous Continuous Distributions - * @ingroup tr1_random_distributions - * @{ - */ - - /** - * @brief Uniform continuous distribution for random numbers. - * - * A continuous random distribution on the range [min, max) with equal - * probability throughout the range. The URNG should be real-valued and - * deliver number in the range [0, 1). - */ - template - class uniform_real - { - public: - // types - typedef _RealType input_type; - typedef _RealType result_type; - - public: - /** - * Constructs a uniform_real object. - * - * @param __min [IN] The lower bound of the distribution. - * @param __max [IN] The upper bound of the distribution. - */ - explicit - uniform_real(_RealType __min = _RealType(0), - _RealType __max = _RealType(1)) - : _M_min(__min), _M_max(__max) - { - _GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max); - } - - result_type - min() const - { return _M_min; } - - result_type - max() const - { return _M_max; } - - void - reset() { } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return (__urng() * (_M_max - _M_min)) + _M_min; } - - /** - * Inserts a %uniform_real random number distribution @p __x into the - * output stream @p __os. - * - * @param __os An output stream. - * @param __x A %uniform_real random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const uniform_real<_RealType1>& __x); - - /** - * Extracts a %uniform_real random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %uniform_real random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - uniform_real<_RealType1>& __x); - - private: - _RealType _M_min; - _RealType _M_max; - }; - - - /** - * @brief An exponential continuous distribution for random numbers. - * - * The formula for the exponential probability mass function is - * @f$ p(x) = \lambda e^{-\lambda x} @f$. - * - * - * - * - * - * - * - * - *
Distribution Statistics
Mean@f$ \frac{1}{\lambda} @f$
Median@f$ \frac{\ln 2}{\lambda} @f$
Mode@f$ zero @f$
Range@f$[0, \infty]@f$
Standard Deviation@f$ \frac{1}{\lambda} @f$
- */ - template - class exponential_distribution - { - public: - // types - typedef _RealType input_type; - typedef _RealType result_type; - - public: - /** - * Constructs an exponential distribution with inverse scale parameter - * @f$ \lambda @f$. - */ - explicit - exponential_distribution(const result_type& __lambda = result_type(1)) - : _M_lambda(__lambda) - { - _GLIBCXX_DEBUG_ASSERT(_M_lambda > 0); - } - - /** - * Gets the inverse scale parameter of the distribution. - */ - _RealType - lambda() const - { return _M_lambda; } - - /** - * Resets the distribution. - * - * Has no effect on exponential distributions. - */ - void - reset() { } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng) - { return -std::log(__urng()) / _M_lambda; } - - /** - * Inserts a %exponential_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %exponential_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const exponential_distribution<_RealType1>& __x); - - /** - * Extracts a %exponential_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %exponential_distribution random number - * generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - exponential_distribution& __x) - { return __is >> __x._M_lambda; } - - private: - result_type _M_lambda; - }; - - - /** - * @brief A normal continuous distribution for random numbers. - * - * The formula for the normal probability mass function is - * @f$ p(x) = \frac{1}{\sigma \sqrt{2 \pi}} - * e^{- \frac{{x - mean}^ {2}}{2 \sigma ^ {2}} } @f$. - */ - template - class normal_distribution - { - public: - // types - typedef _RealType input_type; - typedef _RealType result_type; - - public: - /** - * Constructs a normal distribution with parameters @f$ mean @f$ and - * @f$ \sigma @f$. - */ - explicit - normal_distribution(const result_type& __mean = result_type(0), - const result_type& __sigma = result_type(1)) - : _M_mean(__mean), _M_sigma(__sigma), _M_saved_available(false) - { - _GLIBCXX_DEBUG_ASSERT(_M_sigma > 0); - } - - /** - * Gets the mean of the distribution. - */ - _RealType - mean() const - { return _M_mean; } - - /** - * Gets the @f$ \sigma @f$ of the distribution. - */ - _RealType - sigma() const - { return _M_sigma; } - - /** - * Resets the distribution. - */ - void - reset() - { _M_saved_available = false; } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - /** - * Inserts a %normal_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %normal_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const normal_distribution<_RealType1>& __x); - - /** - * Extracts a %normal_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %normal_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - normal_distribution<_RealType1>& __x); - - private: - result_type _M_mean; - result_type _M_sigma; - result_type _M_saved; - bool _M_saved_available; - }; - - - /** - * @brief A gamma continuous distribution for random numbers. - * - * The formula for the gamma probability mass function is - * @f$ p(x) = \frac{1}{\Gamma(\alpha)} x^{\alpha - 1} e^{-x} @f$. - */ - template - class gamma_distribution - { - public: - // types - typedef _RealType input_type; - typedef _RealType result_type; - - public: - /** - * Constructs a gamma distribution with parameters @f$ \alpha @f$. - */ - explicit - gamma_distribution(const result_type& __alpha_val = result_type(1)) - : _M_alpha(__alpha_val) - { - _GLIBCXX_DEBUG_ASSERT(_M_alpha > 0); - _M_initialize(); - } - - /** - * Gets the @f$ \alpha @f$ of the distribution. - */ - _RealType - alpha() const - { return _M_alpha; } - - /** - * Resets the distribution. - */ - void - reset() { } - - template - result_type - operator()(_UniformRandomNumberGenerator& __urng); - - /** - * Inserts a %gamma_distribution random number distribution - * @p __x into the output stream @p __os. - * - * @param __os An output stream. - * @param __x A %gamma_distribution random number distribution. - * - * @returns The output stream with the state of @p __x inserted or in - * an error state. - */ - template - friend std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const gamma_distribution<_RealType1>& __x); - - /** - * Extracts a %gamma_distribution random number distribution - * @p __x from the input stream @p __is. - * - * @param __is An input stream. - * @param __x A %gamma_distribution random number generator engine. - * - * @returns The input stream with @p __x extracted or in an error state. - */ - template - friend std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - gamma_distribution& __x) - { - __is >> __x._M_alpha; - __x._M_initialize(); - return __is; - } - - private: - void - _M_initialize(); - - result_type _M_alpha; - - // Hosts either lambda of GB or d of modified Vaduva's. - result_type _M_l_d; - }; - - /* @} */ // group tr1_random_distributions_continuous - /* @} */ // group tr1_random_distributions - /* @} */ // group tr1_random -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random.tcc deleted file mode 100644 index 265bd0bc2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/random.tcc +++ /dev/null @@ -1,1721 +0,0 @@ -// random number generation (out of line) -*- C++ -*- - -// Copyright (C) 2009-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - - -/** @file tr1/random.tcc - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{tr1/random} - */ - -#ifndef _GLIBCXX_TR1_RANDOM_TCC -#define _GLIBCXX_TR1_RANDOM_TCC 1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ - /* - * (Further) implementation-space details. - */ - namespace __detail - { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - - // General case for x = (ax + c) mod m -- use Schrage's algorithm to avoid - // integer overflow. - // - // Because a and c are compile-time integral constants the compiler kindly - // elides any unreachable paths. - // - // Preconditions: a > 0, m > 0. - // - template - struct _Mod - { - static _Tp - __calc(_Tp __x) - { - if (__a == 1) - __x %= __m; - else - { - static const _Tp __q = __m / __a; - static const _Tp __r = __m % __a; - - _Tp __t1 = __a * (__x % __q); - _Tp __t2 = __r * (__x / __q); - if (__t1 >= __t2) - __x = __t1 - __t2; - else - __x = __m - __t2 + __t1; - } - - if (__c != 0) - { - const _Tp __d = __m - __x; - if (__d > __c) - __x += __c; - else - __x = __c - __d; - } - return __x; - } - }; - - // Special case for m == 0 -- use unsigned integer overflow as modulo - // operator. - template - struct _Mod<_Tp, __a, __c, __m, true> - { - static _Tp - __calc(_Tp __x) - { return __a * __x + __c; } - }; - _GLIBCXX_END_NAMESPACE_VERSION - } // namespace __detail - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - const _UIntType - linear_congruential<_UIntType, __a, __c, __m>::multiplier; - - template - const _UIntType - linear_congruential<_UIntType, __a, __c, __m>::increment; - - template - const _UIntType - linear_congruential<_UIntType, __a, __c, __m>::modulus; - - /** - * Seeds the LCR with integral value @p __x0, adjusted so that the - * ring identity is never a member of the convergence set. - */ - template - void - linear_congruential<_UIntType, __a, __c, __m>:: - seed(unsigned long __x0) - { - if ((__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) - && (__detail::__mod<_UIntType, 1, 0, __m>(__x0) == 0)) - _M_x = __detail::__mod<_UIntType, 1, 0, __m>(1); - else - _M_x = __detail::__mod<_UIntType, 1, 0, __m>(__x0); - } - - /** - * Seeds the LCR engine with a value generated by @p __g. - */ - template - template - void - linear_congruential<_UIntType, __a, __c, __m>:: - seed(_Gen& __g, false_type) - { - _UIntType __x0 = __g(); - if ((__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) - && (__detail::__mod<_UIntType, 1, 0, __m>(__x0) == 0)) - _M_x = __detail::__mod<_UIntType, 1, 0, __m>(1); - else - _M_x = __detail::__mod<_UIntType, 1, 0, __m>(__x0); - } - - /** - * Gets the next generated value in sequence. - */ - template - typename linear_congruential<_UIntType, __a, __c, __m>::result_type - linear_congruential<_UIntType, __a, __c, __m>:: - operator()() - { - _M_x = __detail::__mod<_UIntType, __a, __c, __m>(_M_x); - return _M_x; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const linear_congruential<_UIntType, __a, __c, __m>& __lcr) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__os.widen(' ')); - - __os << __lcr._M_x; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - linear_congruential<_UIntType, __a, __c, __m>& __lcr) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec); - - __is >> __lcr._M_x; - - __is.flags(__flags); - return __is; - } - - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::word_size; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::state_size; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::shift_size; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::mask_bits; - - template - const _UIntType - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::parameter_a; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::output_u; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::output_s; - - template - const _UIntType - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::output_b; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::output_t; - - template - const _UIntType - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::output_c; - - template - const int - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::output_l; - - template - void - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>:: - seed(unsigned long __value) - { - _M_x[0] = __detail::__mod<_UIntType, 1, 0, - __detail::_Shift<_UIntType, __w>::__value>(__value); - - for (int __i = 1; __i < state_size; ++__i) - { - _UIntType __x = _M_x[__i - 1]; - __x ^= __x >> (__w - 2); - __x *= 1812433253ul; - __x += __i; - _M_x[__i] = __detail::__mod<_UIntType, 1, 0, - __detail::_Shift<_UIntType, __w>::__value>(__x); - } - _M_p = state_size; - } - - template - template - void - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>:: - seed(_Gen& __gen, false_type) - { - for (int __i = 0; __i < state_size; ++__i) - _M_x[__i] = __detail::__mod<_UIntType, 1, 0, - __detail::_Shift<_UIntType, __w>::__value>(__gen()); - _M_p = state_size; - } - - template - typename - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>::result_type - mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, - __b, __t, __c, __l>:: - operator()() - { - // Reload the vector - cost is O(n) amortized over n calls. - if (_M_p >= state_size) - { - const _UIntType __upper_mask = (~_UIntType()) << __r; - const _UIntType __lower_mask = ~__upper_mask; - - for (int __k = 0; __k < (__n - __m); ++__k) - { - _UIntType __y = ((_M_x[__k] & __upper_mask) - | (_M_x[__k + 1] & __lower_mask)); - _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) - ^ ((__y & 0x01) ? __a : 0)); - } - - for (int __k = (__n - __m); __k < (__n - 1); ++__k) - { - _UIntType __y = ((_M_x[__k] & __upper_mask) - | (_M_x[__k + 1] & __lower_mask)); - _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) - ^ ((__y & 0x01) ? __a : 0)); - } - - _UIntType __y = ((_M_x[__n - 1] & __upper_mask) - | (_M_x[0] & __lower_mask)); - _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) - ^ ((__y & 0x01) ? __a : 0)); - _M_p = 0; - } - - // Calculate o(x(i)). - result_type __z = _M_x[_M_p++]; - __z ^= (__z >> __u); - __z ^= (__z << __s) & __b; - __z ^= (__z << __t) & __c; - __z ^= (__z >> __l); - - return __z; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const mersenne_twister<_UIntType, __w, __n, __m, - __r, __a, __u, __s, __b, __t, __c, __l>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - for (int __i = 0; __i < __n - 1; ++__i) - __os << __x._M_x[__i] << __space; - __os << __x._M_x[__n - 1]; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - mersenne_twister<_UIntType, __w, __n, __m, - __r, __a, __u, __s, __b, __t, __c, __l>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - for (int __i = 0; __i < __n; ++__i) - __is >> __x._M_x[__i]; - - __is.flags(__flags); - return __is; - } - - - template - const _IntType - subtract_with_carry<_IntType, __m, __s, __r>::modulus; - - template - const int - subtract_with_carry<_IntType, __m, __s, __r>::long_lag; - - template - const int - subtract_with_carry<_IntType, __m, __s, __r>::short_lag; - - template - void - subtract_with_carry<_IntType, __m, __s, __r>:: - seed(unsigned long __value) - { - if (__value == 0) - __value = 19780503; - - std::tr1::linear_congruential - __lcg(__value); - - for (int __i = 0; __i < long_lag; ++__i) - _M_x[__i] = __detail::__mod<_UIntType, 1, 0, modulus>(__lcg()); - - _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; - _M_p = 0; - } - - template - template - void - subtract_with_carry<_IntType, __m, __s, __r>:: - seed(_Gen& __gen, false_type) - { - const int __n = (std::numeric_limits<_UIntType>::digits + 31) / 32; - - for (int __i = 0; __i < long_lag; ++__i) - { - _UIntType __tmp = 0; - _UIntType __factor = 1; - for (int __j = 0; __j < __n; ++__j) - { - __tmp += __detail::__mod<__detail::_UInt32Type, 1, 0, 0> - (__gen()) * __factor; - __factor *= __detail::_Shift<_UIntType, 32>::__value; - } - _M_x[__i] = __detail::__mod<_UIntType, 1, 0, modulus>(__tmp); - } - _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; - _M_p = 0; - } - - template - typename subtract_with_carry<_IntType, __m, __s, __r>::result_type - subtract_with_carry<_IntType, __m, __s, __r>:: - operator()() - { - // Derive short lag index from current index. - int __ps = _M_p - short_lag; - if (__ps < 0) - __ps += long_lag; - - // Calculate new x(i) without overflow or division. - // NB: Thanks to the requirements for _IntType, _M_x[_M_p] + _M_carry - // cannot overflow. - _UIntType __xi; - if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) - { - __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; - _M_carry = 0; - } - else - { - __xi = modulus - _M_x[_M_p] - _M_carry + _M_x[__ps]; - _M_carry = 1; - } - _M_x[_M_p] = __xi; - - // Adjust current index to loop around in ring buffer. - if (++_M_p >= long_lag) - _M_p = 0; - - return __xi; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const subtract_with_carry<_IntType, __m, __s, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - for (int __i = 0; __i < __r; ++__i) - __os << __x._M_x[__i] << __space; - __os << __x._M_carry; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - subtract_with_carry<_IntType, __m, __s, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - for (int __i = 0; __i < __r; ++__i) - __is >> __x._M_x[__i]; - __is >> __x._M_carry; - - __is.flags(__flags); - return __is; - } - - - template - const int - subtract_with_carry_01<_RealType, __w, __s, __r>::word_size; - - template - const int - subtract_with_carry_01<_RealType, __w, __s, __r>::long_lag; - - template - const int - subtract_with_carry_01<_RealType, __w, __s, __r>::short_lag; - - template - void - subtract_with_carry_01<_RealType, __w, __s, __r>:: - _M_initialize_npows() - { - for (int __j = 0; __j < __n; ++__j) -#if _GLIBCXX_USE_C99_MATH_TR1 - _M_npows[__j] = std::tr1::ldexp(_RealType(1), -__w + __j * 32); -#else - _M_npows[__j] = std::pow(_RealType(2), -__w + __j * 32); -#endif - } - - template - void - subtract_with_carry_01<_RealType, __w, __s, __r>:: - seed(unsigned long __value) - { - if (__value == 0) - __value = 19780503; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 512. Seeding subtract_with_carry_01 from a single unsigned long. - std::tr1::linear_congruential - __lcg(__value); - - this->seed(__lcg); - } - - template - template - void - subtract_with_carry_01<_RealType, __w, __s, __r>:: - seed(_Gen& __gen, false_type) - { - for (int __i = 0; __i < long_lag; ++__i) - { - for (int __j = 0; __j < __n - 1; ++__j) - _M_x[__i][__j] = __detail::__mod<_UInt32Type, 1, 0, 0>(__gen()); - _M_x[__i][__n - 1] = __detail::__mod<_UInt32Type, 1, 0, - __detail::_Shift<_UInt32Type, __w % 32>::__value>(__gen()); - } - - _M_carry = 1; - for (int __j = 0; __j < __n; ++__j) - if (_M_x[long_lag - 1][__j] != 0) - { - _M_carry = 0; - break; - } - - _M_p = 0; - } - - template - typename subtract_with_carry_01<_RealType, __w, __s, __r>::result_type - subtract_with_carry_01<_RealType, __w, __s, __r>:: - operator()() - { - // Derive short lag index from current index. - int __ps = _M_p - short_lag; - if (__ps < 0) - __ps += long_lag; - - _UInt32Type __new_carry; - for (int __j = 0; __j < __n - 1; ++__j) - { - if (_M_x[__ps][__j] > _M_x[_M_p][__j] - || (_M_x[__ps][__j] == _M_x[_M_p][__j] && _M_carry == 0)) - __new_carry = 0; - else - __new_carry = 1; - - _M_x[_M_p][__j] = _M_x[__ps][__j] - _M_x[_M_p][__j] - _M_carry; - _M_carry = __new_carry; - } - - if (_M_x[__ps][__n - 1] > _M_x[_M_p][__n - 1] - || (_M_x[__ps][__n - 1] == _M_x[_M_p][__n - 1] && _M_carry == 0)) - __new_carry = 0; - else - __new_carry = 1; - - _M_x[_M_p][__n - 1] = __detail::__mod<_UInt32Type, 1, 0, - __detail::_Shift<_UInt32Type, __w % 32>::__value> - (_M_x[__ps][__n - 1] - _M_x[_M_p][__n - 1] - _M_carry); - _M_carry = __new_carry; - - result_type __ret = 0.0; - for (int __j = 0; __j < __n; ++__j) - __ret += _M_x[_M_p][__j] * _M_npows[__j]; - - // Adjust current index to loop around in ring buffer. - if (++_M_p >= long_lag) - _M_p = 0; - - return __ret; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const subtract_with_carry_01<_RealType, __w, __s, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - for (int __i = 0; __i < __r; ++__i) - for (int __j = 0; __j < __x.__n; ++__j) - __os << __x._M_x[__i][__j] << __space; - __os << __x._M_carry; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - subtract_with_carry_01<_RealType, __w, __s, __r>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - for (int __i = 0; __i < __r; ++__i) - for (int __j = 0; __j < __x.__n; ++__j) - __is >> __x._M_x[__i][__j]; - __is >> __x._M_carry; - - __is.flags(__flags); - return __is; - } - - template - const int - discard_block<_UniformRandomNumberGenerator, __p, __r>::block_size; - - template - const int - discard_block<_UniformRandomNumberGenerator, __p, __r>::used_block; - - template - typename discard_block<_UniformRandomNumberGenerator, - __p, __r>::result_type - discard_block<_UniformRandomNumberGenerator, __p, __r>:: - operator()() - { - if (_M_n >= used_block) - { - while (_M_n < block_size) - { - _M_b(); - ++_M_n; - } - _M_n = 0; - } - ++_M_n; - return _M_b(); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const discard_block<_UniformRandomNumberGenerator, - __p, __r>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed - | __ios_base::left); - __os.fill(__space); - - __os << __x._M_b << __space << __x._M_n; - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - discard_block<_UniformRandomNumberGenerator, __p, __r>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - __is >> __x._M_b >> __x._M_n; - - __is.flags(__flags); - return __is; - } - - - template - const int - xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>::shift1; - - template - const int - xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>::shift2; - - template - void - xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>:: - _M_initialize_max() - { - const int __w = std::numeric_limits::digits; - - const result_type __m1 = - std::min(result_type(_M_b1.max() - _M_b1.min()), - __detail::_Shift::__value - 1); - - const result_type __m2 = - std::min(result_type(_M_b2.max() - _M_b2.min()), - __detail::_Shift::__value - 1); - - // NB: In TR1 s1 is not required to be >= s2. - if (__s1 < __s2) - _M_max = _M_initialize_max_aux(__m2, __m1, __s2 - __s1) << __s1; - else - _M_max = _M_initialize_max_aux(__m1, __m2, __s1 - __s2) << __s2; - } - - template - typename xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>::result_type - xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>:: - _M_initialize_max_aux(result_type __a, result_type __b, int __d) - { - const result_type __two2d = result_type(1) << __d; - const result_type __c = __a * __two2d; - - if (__a == 0 || __b < __two2d) - return __c + __b; - - const result_type __t = std::max(__c, __b); - const result_type __u = std::min(__c, __b); - - result_type __ub = __u; - result_type __p; - for (__p = 0; __ub != 1; __ub >>= 1) - ++__p; - - const result_type __two2p = result_type(1) << __p; - const result_type __k = __t / __two2p; - - if (__k & 1) - return (__k + 1) * __two2p - 1; - - if (__c >= __b) - return (__k + 1) * __two2p + _M_initialize_max_aux((__t % __two2p) - / __two2d, - __u % __two2p, __d); - else - return (__k + 1) * __two2p + _M_initialize_max_aux((__u % __two2p) - / __two2d, - __t % __two2p, __d); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); - __os.fill(__space); - - __os << __x.base1() << __space << __x.base2(); - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - xor_combine<_UniformRandomNumberGenerator1, __s1, - _UniformRandomNumberGenerator2, __s2>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - __is >> __x._M_b1 >> __x._M_b2; - - __is.flags(__flags); - return __is; - } - - - template - template - typename uniform_int<_IntType>::result_type - uniform_int<_IntType>:: - _M_call(_UniformRandomNumberGenerator& __urng, - result_type __min, result_type __max, true_type) - { - // XXX Must be fixed to work well for *arbitrary* __urng.max(), - // __urng.min(), __max, __min. Currently works fine only in the - // most common case __urng.max() - __urng.min() >= __max - __min, - // with __urng.max() > __urng.min() >= 0. - typedef typename __gnu_cxx::__add_unsigned::__type __urntype; - typedef typename __gnu_cxx::__add_unsigned::__type - __utype; - typedef typename __gnu_cxx::__conditional_type<(sizeof(__urntype) - > sizeof(__utype)), - __urntype, __utype>::__type __uctype; - - result_type __ret; - - const __urntype __urnmin = __urng.min(); - const __urntype __urnmax = __urng.max(); - const __urntype __urnrange = __urnmax - __urnmin; - const __uctype __urange = __max - __min; - const __uctype __udenom = (__urnrange <= __urange - ? 1 : __urnrange / (__urange + 1)); - do - __ret = (__urntype(__urng()) - __urnmin) / __udenom; - while (__ret > __max - __min); - - return __ret + __min; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const uniform_int<_IntType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - - __os << __x.min() << __space << __x.max(); - - __os.flags(__flags); - __os.fill(__fill); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - uniform_int<_IntType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - __is >> __x._M_min >> __x._M_max; - - __is.flags(__flags); - return __is; - } - - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const bernoulli_distribution& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(__gnu_cxx::__numeric_traits::__max_digits10); - - __os << __x.p(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - - template - template - typename geometric_distribution<_IntType, _RealType>::result_type - geometric_distribution<_IntType, _RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - // About the epsilon thing see this thread: - // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html - const _RealType __naf = - (1 - std::numeric_limits<_RealType>::epsilon()) / 2; - // The largest _RealType convertible to _IntType. - const _RealType __thr = - std::numeric_limits<_IntType>::max() + __naf; - - _RealType __cand; - do - __cand = std::ceil(std::log(__urng()) / _M_log_p); - while (__cand >= __thr); - - return result_type(__cand + __naf); - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const geometric_distribution<_IntType, _RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x.p(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - - template - void - poisson_distribution<_IntType, _RealType>:: - _M_initialize() - { -#if _GLIBCXX_USE_C99_MATH_TR1 - if (_M_mean >= 12) - { - const _RealType __m = std::floor(_M_mean); - _M_lm_thr = std::log(_M_mean); - _M_lfm = std::tr1::lgamma(__m + 1); - _M_sm = std::sqrt(__m); - - const _RealType __pi_4 = 0.7853981633974483096156608458198757L; - const _RealType __dx = std::sqrt(2 * __m * std::log(32 * __m - / __pi_4)); - _M_d = std::tr1::round(std::max(_RealType(6), - std::min(__m, __dx))); - const _RealType __cx = 2 * __m + _M_d; - _M_scx = std::sqrt(__cx / 2); - _M_1cx = 1 / __cx; - - _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); - _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) / _M_d; - } - else -#endif - _M_lm_thr = std::exp(-_M_mean); - } - - /** - * A rejection algorithm when mean >= 12 and a simple method based - * upon the multiplication of uniform random variates otherwise. - * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 - * is defined. - * - * Reference: - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!). - */ - template - template - typename poisson_distribution<_IntType, _RealType>::result_type - poisson_distribution<_IntType, _RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { -#if _GLIBCXX_USE_C99_MATH_TR1 - if (_M_mean >= 12) - { - _RealType __x; - - // See comments above... - const _RealType __naf = - (1 - std::numeric_limits<_RealType>::epsilon()) / 2; - const _RealType __thr = - std::numeric_limits<_IntType>::max() + __naf; - - const _RealType __m = std::floor(_M_mean); - // sqrt(pi / 2) - const _RealType __spi_2 = 1.2533141373155002512078826424055226L; - const _RealType __c1 = _M_sm * __spi_2; - const _RealType __c2 = _M_c2b + __c1; - const _RealType __c3 = __c2 + 1; - const _RealType __c4 = __c3 + 1; - // e^(1 / 78) - const _RealType __e178 = 1.0129030479320018583185514777512983L; - const _RealType __c5 = __c4 + __e178; - const _RealType __c = _M_cb + __c5; - const _RealType __2cx = 2 * (2 * __m + _M_d); - - bool __reject = true; - do - { - const _RealType __u = __c * __urng(); - const _RealType __e = -std::log(__urng()); - - _RealType __w = 0.0; - - if (__u <= __c1) - { - const _RealType __n = _M_nd(__urng); - const _RealType __y = -std::abs(__n) * _M_sm - 1; - __x = std::floor(__y); - __w = -__n * __n / 2; - if (__x < -__m) - continue; - } - else if (__u <= __c2) - { - const _RealType __n = _M_nd(__urng); - const _RealType __y = 1 + std::abs(__n) * _M_scx; - __x = std::ceil(__y); - __w = __y * (2 - __y) * _M_1cx; - if (__x > _M_d) - continue; - } - else if (__u <= __c3) - // NB: This case not in the book, nor in the Errata, - // but should be ok... - __x = -1; - else if (__u <= __c4) - __x = 0; - else if (__u <= __c5) - __x = 1; - else - { - const _RealType __v = -std::log(__urng()); - const _RealType __y = _M_d + __v * __2cx / _M_d; - __x = std::ceil(__y); - __w = -_M_d * _M_1cx * (1 + __y / 2); - } - - __reject = (__w - __e - __x * _M_lm_thr - > _M_lfm - std::tr1::lgamma(__x + __m + 1)); - - __reject |= __x + __m >= __thr; - - } while (__reject); - - return result_type(__x + __m + __naf); - } - else -#endif - { - _IntType __x = 0; - _RealType __prod = 1.0; - - do - { - __prod *= __urng(); - __x += 1; - } - while (__prod > _M_lm_thr); - - return __x - 1; - } - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const poisson_distribution<_IntType, _RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x.mean() << __space << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - poisson_distribution<_IntType, _RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - __is >> __x._M_mean >> __x._M_nd; - __x._M_initialize(); - - __is.flags(__flags); - return __is; - } - - - template - void - binomial_distribution<_IntType, _RealType>:: - _M_initialize() - { - const _RealType __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; - - _M_easy = true; - -#if _GLIBCXX_USE_C99_MATH_TR1 - if (_M_t * __p12 >= 8) - { - _M_easy = false; - const _RealType __np = std::floor(_M_t * __p12); - const _RealType __pa = __np / _M_t; - const _RealType __1p = 1 - __pa; - - const _RealType __pi_4 = 0.7853981633974483096156608458198757L; - const _RealType __d1x = - std::sqrt(__np * __1p * std::log(32 * __np - / (81 * __pi_4 * __1p))); - _M_d1 = std::tr1::round(std::max(_RealType(1), __d1x)); - const _RealType __d2x = - std::sqrt(__np * __1p * std::log(32 * _M_t * __1p - / (__pi_4 * __pa))); - _M_d2 = std::tr1::round(std::max(_RealType(1), __d2x)); - - // sqrt(pi / 2) - const _RealType __spi_2 = 1.2533141373155002512078826424055226L; - _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); - _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p)); - _M_c = 2 * _M_d1 / __np; - _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; - const _RealType __a12 = _M_a1 + _M_s2 * __spi_2; - const _RealType __s1s = _M_s1 * _M_s1; - _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) - * 2 * __s1s / _M_d1 - * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); - const _RealType __s2s = _M_s2 * _M_s2; - _M_s = (_M_a123 + 2 * __s2s / _M_d2 - * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); - _M_lf = (std::tr1::lgamma(__np + 1) - + std::tr1::lgamma(_M_t - __np + 1)); - _M_lp1p = std::log(__pa / __1p); - - _M_q = -std::log(1 - (__p12 - __pa) / __1p); - } - else -#endif - _M_q = -std::log(1 - __p12); - } - - template - template - typename binomial_distribution<_IntType, _RealType>::result_type - binomial_distribution<_IntType, _RealType>:: - _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t) - { - _IntType __x = 0; - _RealType __sum = 0; - - do - { - const _RealType __e = -std::log(__urng()); - __sum += __e / (__t - __x); - __x += 1; - } - while (__sum <= _M_q); - - return __x - 1; - } - - /** - * A rejection algorithm when t * p >= 8 and a simple waiting time - * method - the second in the referenced book - otherwise. - * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 - * is defined. - * - * Reference: - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. X, Sect. 4 (+ Errata!). - */ - template - template - typename binomial_distribution<_IntType, _RealType>::result_type - binomial_distribution<_IntType, _RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __ret; - const _RealType __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; - -#if _GLIBCXX_USE_C99_MATH_TR1 - if (!_M_easy) - { - _RealType __x; - - // See comments above... - const _RealType __naf = - (1 - std::numeric_limits<_RealType>::epsilon()) / 2; - const _RealType __thr = - std::numeric_limits<_IntType>::max() + __naf; - - const _RealType __np = std::floor(_M_t * __p12); - const _RealType __pa = __np / _M_t; - - // sqrt(pi / 2) - const _RealType __spi_2 = 1.2533141373155002512078826424055226L; - const _RealType __a1 = _M_a1; - const _RealType __a12 = __a1 + _M_s2 * __spi_2; - const _RealType __a123 = _M_a123; - const _RealType __s1s = _M_s1 * _M_s1; - const _RealType __s2s = _M_s2 * _M_s2; - - bool __reject; - do - { - const _RealType __u = _M_s * __urng(); - - _RealType __v; - - if (__u <= __a1) - { - const _RealType __n = _M_nd(__urng); - const _RealType __y = _M_s1 * std::abs(__n); - __reject = __y >= _M_d1; - if (!__reject) - { - const _RealType __e = -std::log(__urng()); - __x = std::floor(__y); - __v = -__e - __n * __n / 2 + _M_c; - } - } - else if (__u <= __a12) - { - const _RealType __n = _M_nd(__urng); - const _RealType __y = _M_s2 * std::abs(__n); - __reject = __y >= _M_d2; - if (!__reject) - { - const _RealType __e = -std::log(__urng()); - __x = std::floor(-__y); - __v = -__e - __n * __n / 2; - } - } - else if (__u <= __a123) - { - const _RealType __e1 = -std::log(__urng()); - const _RealType __e2 = -std::log(__urng()); - - const _RealType __y = _M_d1 + 2 * __s1s * __e1 / _M_d1; - __x = std::floor(__y); - __v = (-__e2 + _M_d1 * (1 / (_M_t - __np) - -__y / (2 * __s1s))); - __reject = false; - } - else - { - const _RealType __e1 = -std::log(__urng()); - const _RealType __e2 = -std::log(__urng()); - - const _RealType __y = _M_d2 + 2 * __s2s * __e1 / _M_d2; - __x = std::floor(-__y); - __v = -__e2 - _M_d2 * __y / (2 * __s2s); - __reject = false; - } - - __reject = __reject || __x < -__np || __x > _M_t - __np; - if (!__reject) - { - const _RealType __lfx = - std::tr1::lgamma(__np + __x + 1) - + std::tr1::lgamma(_M_t - (__np + __x) + 1); - __reject = __v > _M_lf - __lfx + __x * _M_lp1p; - } - - __reject |= __x + __np >= __thr; - } - while (__reject); - - __x += __np + __naf; - - const _IntType __z = _M_waiting(__urng, _M_t - _IntType(__x)); - __ret = _IntType(__x) + __z; - } - else -#endif - __ret = _M_waiting(__urng, _M_t); - - if (__p12 != _M_p) - __ret = _M_t - __ret; - return __ret; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const binomial_distribution<_IntType, _RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x.t() << __space << __x.p() - << __space << __x._M_nd; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - binomial_distribution<_IntType, _RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - __is >> __x._M_t >> __x._M_p >> __x._M_nd; - __x._M_initialize(); - - __is.flags(__flags); - return __is; - } - - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const uniform_real<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x.min() << __space << __x.max(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - uniform_real<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::skipws); - - __is >> __x._M_min >> __x._M_max; - - __is.flags(__flags); - return __is; - } - - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const exponential_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x.lambda(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - - /** - * Polar method due to Marsaglia. - * - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. V, Sect. 4.4. - */ - template - template - typename normal_distribution<_RealType>::result_type - normal_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __ret; - - if (_M_saved_available) - { - _M_saved_available = false; - __ret = _M_saved; - } - else - { - result_type __x, __y, __r2; - do - { - __x = result_type(2.0) * __urng() - 1.0; - __y = result_type(2.0) * __urng() - 1.0; - __r2 = __x * __x + __y * __y; - } - while (__r2 > 1.0 || __r2 == 0.0); - - const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); - _M_saved = __x * __mult; - _M_saved_available = true; - __ret = __y * __mult; - } - - __ret = __ret * _M_sigma + _M_mean; - return __ret; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const normal_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - const _CharT __space = __os.widen(' '); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__space); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x._M_saved_available << __space - << __x.mean() << __space - << __x.sigma(); - if (__x._M_saved_available) - __os << __space << __x._M_saved; - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - - template - std::basic_istream<_CharT, _Traits>& - operator>>(std::basic_istream<_CharT, _Traits>& __is, - normal_distribution<_RealType>& __x) - { - typedef std::basic_istream<_CharT, _Traits> __istream_type; - typedef typename __istream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __is.flags(); - __is.flags(__ios_base::dec | __ios_base::skipws); - - __is >> __x._M_saved_available >> __x._M_mean - >> __x._M_sigma; - if (__x._M_saved_available) - __is >> __x._M_saved; - - __is.flags(__flags); - return __is; - } - - - template - void - gamma_distribution<_RealType>:: - _M_initialize() - { - if (_M_alpha >= 1) - _M_l_d = std::sqrt(2 * _M_alpha - 1); - else - _M_l_d = (std::pow(_M_alpha, _M_alpha / (1 - _M_alpha)) - * (1 - _M_alpha)); - } - - /** - * Cheng's rejection algorithm GB for alpha >= 1 and a modification - * of Vaduva's rejection from Weibull algorithm due to Devroye for - * alpha < 1. - * - * References: - * Cheng, R. C. The Generation of Gamma Random Variables with Non-integral - * Shape Parameter. Applied Statistics, 26, 71-75, 1977. - * - * Vaduva, I. Computer Generation of Gamma Gandom Variables by Rejection - * and Composition Procedures. Math. Operationsforschung and Statistik, - * Series in Statistics, 8, 545-576, 1977. - * - * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, - * New York, 1986, Ch. IX, Sect. 3.4 (+ Errata!). - */ - template - template - typename gamma_distribution<_RealType>::result_type - gamma_distribution<_RealType>:: - operator()(_UniformRandomNumberGenerator& __urng) - { - result_type __x; - - bool __reject; - if (_M_alpha >= 1) - { - // alpha - log(4) - const result_type __b = _M_alpha - - result_type(1.3862943611198906188344642429163531L); - const result_type __c = _M_alpha + _M_l_d; - const result_type __1l = 1 / _M_l_d; - - // 1 + log(9 / 2) - const result_type __k = 2.5040773967762740733732583523868748L; - - do - { - const result_type __u = __urng(); - const result_type __v = __urng(); - - const result_type __y = __1l * std::log(__v / (1 - __v)); - __x = _M_alpha * std::exp(__y); - - const result_type __z = __u * __v * __v; - const result_type __r = __b + __c * __y - __x; - - __reject = __r < result_type(4.5) * __z - __k; - if (__reject) - __reject = __r < std::log(__z); - } - while (__reject); - } - else - { - const result_type __c = 1 / _M_alpha; - - do - { - const result_type __z = -std::log(__urng()); - const result_type __e = -std::log(__urng()); - - __x = std::pow(__z, __c); - - __reject = __z + __e < _M_l_d + __x; - } - while (__reject); - } - - return __x; - } - - template - std::basic_ostream<_CharT, _Traits>& - operator<<(std::basic_ostream<_CharT, _Traits>& __os, - const gamma_distribution<_RealType>& __x) - { - typedef std::basic_ostream<_CharT, _Traits> __ostream_type; - typedef typename __ostream_type::ios_base __ios_base; - - const typename __ios_base::fmtflags __flags = __os.flags(); - const _CharT __fill = __os.fill(); - const std::streamsize __precision = __os.precision(); - __os.flags(__ios_base::scientific | __ios_base::left); - __os.fill(__os.widen(' ')); - __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); - - __os << __x.alpha(); - - __os.flags(__flags); - __os.fill(__fill); - __os.precision(__precision); - return __os; - } - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/regex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/regex deleted file mode 100644 index bfb5ef770..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/regex +++ /dev/null @@ -1,2730 +0,0 @@ -// class template regex -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** - * @file tr1/regex - * @author Stephen M. Webb - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_REGEX -#define _GLIBCXX_TR1_REGEX 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -/** - * @defgroup tr1_regex Regular Expressions - * A facility for performing regular expression pattern matching. - */ - //@{ - -/** @namespace std::regex_constants - * @brief ISO C++ 0x entities sub namespace for regex. - */ -namespace regex_constants -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @name 5.1 Regular Expression Syntax Options - */ - //@{ - enum __syntax_option - { - _S_icase, - _S_nosubs, - _S_optimize, - _S_collate, - _S_ECMAScript, - _S_basic, - _S_extended, - _S_awk, - _S_grep, - _S_egrep, - _S_syntax_last - }; - - /** - * @brief This is a bitmask type indicating how to interpret the regex. - * - * The @c syntax_option_type is implementation defined but it is valid to - * perform bitwise operations on these values and expect the right thing to - * happen. - * - * A valid value of type syntax_option_type shall have exactly one of the - * elements @c ECMAScript, @c basic, @c extended, @c awk, @c grep, @c egrep - * %set. - */ - typedef unsigned int syntax_option_type; - - /** - * Specifies that the matching of regular expressions against a character - * sequence shall be performed without regard to case. - */ - static const syntax_option_type icase = 1 << _S_icase; - - /** - * Specifies that when a regular expression is matched against a character - * container sequence, no sub-expression matches are to be stored in the - * supplied match_results structure. - */ - static const syntax_option_type nosubs = 1 << _S_nosubs; - - /** - * Specifies that the regular expression engine should pay more attention to - * the speed with which regular expressions are matched, and less to the - * speed with which regular expression objects are constructed. Otherwise - * it has no detectable effect on the program output. - */ - static const syntax_option_type optimize = 1 << _S_optimize; - - /** - * Specifies that character ranges of the form [a-b] should be locale - * sensitive. - */ - static const syntax_option_type collate = 1 << _S_collate; - - /** - * Specifies that the grammar recognized by the regular expression engine is - * that used by ECMAScript in ECMA-262 [Ecma International, ECMAScript - * Language Specification, Standard Ecma-262, third edition, 1999], as - * modified in tr1 section [7.13]. This grammar is similar to that defined - * in the PERL scripting language but extended with elements found in the - * POSIX regular expression grammar. - */ - static const syntax_option_type ECMAScript = 1 << _S_ECMAScript; - - /** - * Specifies that the grammar recognized by the regular expression engine is - * that used by POSIX basic regular expressions in IEEE Std 1003.1-2001, - * Portable Operating System Interface (POSIX), Base Definitions and - * Headers, Section 9, Regular Expressions [IEEE, Information Technology -- - * Portable Operating System Interface (POSIX), IEEE Standard 1003.1-2001]. - */ - static const syntax_option_type basic = 1 << _S_basic; - - /** - * Specifies that the grammar recognized by the regular expression engine is - * that used by POSIX extended regular expressions in IEEE Std 1003.1-2001, - * Portable Operating System Interface (POSIX), Base Definitions and Headers, - * Section 9, Regular Expressions. - */ - static const syntax_option_type extended = 1 << _S_extended; - - /** - * Specifies that the grammar recognized by the regular expression engine is - * that used by POSIX utility awk in IEEE Std 1003.1-2001. This option is - * identical to syntax_option_type extended, except that C-style escape - * sequences are supported. These sequences are: - * \\\\, \\a, \\b, \\f, - * \\n, \\r, \\t , \\v, - * \\', ', and \\ddd - * (where ddd is one, two, or three octal digits). - */ - static const syntax_option_type awk = 1 << _S_awk; - - /** - * Specifies that the grammar recognized by the regular expression engine is - * that used by POSIX utility grep in IEEE Std 1003.1-2001. This option is - * identical to syntax_option_type basic, except that newlines are treated - * as whitespace. - */ - static const syntax_option_type grep = 1 << _S_grep; - - /** - * Specifies that the grammar recognized by the regular expression engine is - * that used by POSIX utility grep when given the -E option in - * IEEE Std 1003.1-2001. This option is identical to syntax_option_type - * extended, except that newlines are treated as whitespace. - */ - static const syntax_option_type egrep = 1 << _S_egrep; - - //@} - - /** - * @name 5.2 Matching Rules - * - * Matching a regular expression against a sequence of characters [first, - * last) proceeds according to the rules of the grammar specified for the - * regular expression object, modified according to the effects listed - * below for any bitmask elements set. - * - */ - //@{ - - enum __match_flag - { - _S_not_bol, - _S_not_eol, - _S_not_bow, - _S_not_eow, - _S_any, - _S_not_null, - _S_continuous, - _S_prev_avail, - _S_sed, - _S_no_copy, - _S_first_only, - _S_match_flag_last - }; - - /** - * @brief This is a bitmask type indicating regex matching rules. - * - * The @c match_flag_type is implementation defined but it is valid to - * perform bitwise operations on these values and expect the right thing to - * happen. - */ - typedef std::bitset<_S_match_flag_last> match_flag_type; - - /** - * The default matching rules. - */ - static const match_flag_type match_default = 0; - - /** - * The first character in the sequence [first, last) is treated as though it - * is not at the beginning of a line, so the character (^) in the regular - * expression shall not match [first, first). - */ - static const match_flag_type match_not_bol = 1 << _S_not_bol; - - /** - * The last character in the sequence [first, last) is treated as though it - * is not at the end of a line, so the character ($) in the regular - * expression shall not match [last, last). - */ - static const match_flag_type match_not_eol = 1 << _S_not_eol; - - /** - * The expression \\b is not matched against the sub-sequence - * [first,first). - */ - static const match_flag_type match_not_bow = 1 << _S_not_bow; - - /** - * The expression \\b should not be matched against the sub-sequence - * [last,last). - */ - static const match_flag_type match_not_eow = 1 << _S_not_eow; - - /** - * If more than one match is possible then any match is an acceptable - * result. - */ - static const match_flag_type match_any = 1 << _S_any; - - /** - * The expression does not match an empty sequence. - */ - static const match_flag_type match_not_null = 1 << _S_not_null; - - /** - * The expression only matches a sub-sequence that begins at first . - */ - static const match_flag_type match_continuous = 1 << _S_continuous; - - /** - * --first is a valid iterator position. When this flag is set then the - * flags match_not_bol and match_not_bow are ignored by the regular - * expression algorithms 7.11 and iterators 7.12. - */ - static const match_flag_type match_prev_avail = 1 << _S_prev_avail; - - /** - * When a regular expression match is to be replaced by a new string, the - * new string is constructed using the rules used by the ECMAScript replace - * function in ECMA- 262 [Ecma International, ECMAScript Language - * Specification, Standard Ecma-262, third edition, 1999], part 15.5.4.11 - * String.prototype.replace. In addition, during search and replace - * operations all non-overlapping occurrences of the regular expression - * are located and replaced, and sections of the input that did not match - * the expression are copied unchanged to the output string. - * - * Format strings (from ECMA-262 [15.5.4.11]): - * @li $$ The dollar-sign itself ($) - * @li $& The matched substring. - * @li $` The portion of @a string that precedes the matched substring. - * This would be match_results::prefix(). - * @li $' The portion of @a string that follows the matched substring. - * This would be match_results::suffix(). - * @li $n The nth capture, where n is in [1,9] and $n is not followed by a - * decimal digit. If n <= match_results::size() and the nth capture - * is undefined, use the empty string instead. If n > - * match_results::size(), the result is implementation-defined. - * @li $nn The nnth capture, where nn is a two-digit decimal number on - * [01, 99]. If nn <= match_results::size() and the nth capture is - * undefined, use the empty string instead. If - * nn > match_results::size(), the result is implementation-defined. - */ - static const match_flag_type format_default = 0; - - /** - * When a regular expression match is to be replaced by a new string, the - * new string is constructed using the rules used by the POSIX sed utility - * in IEEE Std 1003.1- 2001 [IEEE, Information Technology -- Portable - * Operating System Interface (POSIX), IEEE Standard 1003.1-2001]. - */ - static const match_flag_type format_sed = 1 << _S_sed; - - /** - * During a search and replace operation, sections of the character - * container sequence being searched that do not match the regular - * expression shall not be copied to the output string. - */ - static const match_flag_type format_no_copy = 1 << _S_no_copy; - - /** - * When specified during a search and replace operation, only the first - * occurrence of the regular expression shall be replaced. - */ - static const match_flag_type format_first_only = 1 << _S_first_only; - - //@} - - /** - * @name 5.3 Error Types - */ - //@{ - - enum error_type - { - _S_error_collate, - _S_error_ctype, - _S_error_escape, - _S_error_backref, - _S_error_brack, - _S_error_paren, - _S_error_brace, - _S_error_badbrace, - _S_error_range, - _S_error_space, - _S_error_badrepeat, - _S_error_complexity, - _S_error_stack, - _S_error_last - }; - - /** The expression contained an invalid collating element name. */ - static const error_type error_collate(_S_error_collate); - - /** The expression contained an invalid character class name. */ - static const error_type error_ctype(_S_error_ctype); - - /** - * The expression contained an invalid escaped character, or a trailing - * escape. - */ - static const error_type error_escape(_S_error_escape); - - /** The expression contained an invalid back reference. */ - static const error_type error_backref(_S_error_backref); - - /** The expression contained mismatched [ and ]. */ - static const error_type error_brack(_S_error_brack); - - /** The expression contained mismatched ( and ). */ - static const error_type error_paren(_S_error_paren); - - /** The expression contained mismatched { and } */ - static const error_type error_brace(_S_error_brace); - - /** The expression contained an invalid range in a {} expression. */ - static const error_type error_badbrace(_S_error_badbrace); - - /** - * The expression contained an invalid character range, - * such as [b-a] in most encodings. - */ - static const error_type error_range(_S_error_range); - - /** - * There was insufficient memory to convert the expression into a - * finite state machine. - */ - static const error_type error_space(_S_error_space); - - /** - * One of *?+{ was not preceded by a valid regular expression. - */ - static const error_type error_badrepeat(_S_error_badrepeat); - - /** - * The complexity of an attempted match against a regular expression - * exceeded a pre-set level. - */ - static const error_type error_complexity(_S_error_complexity); - - /** - * There was insufficient memory to determine whether the - * regular expression could match the specified character sequence. - */ - static const error_type error_stack(_S_error_stack); - - //@} -_GLIBCXX_END_NAMESPACE_VERSION -} - -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // [7.8] Class regex_error - /** - * @brief A regular expression exception class. - * @ingroup exceptions - * - * The regular expression library throws objects of this class on error. - */ - class regex_error - : public std::runtime_error - { - public: - /** - * @brief Constructs a regex_error object. - * - * @param ecode the regex error code. - */ - explicit - regex_error(regex_constants::error_type __ecode) - : std::runtime_error("regex_error"), _M_code(__ecode) - { } - - /** - * @brief Gets the regex error code. - * - * @returns the regex error code. - */ - regex_constants::error_type - code() const - { return _M_code; } - - protected: - regex_constants::error_type _M_code; - }; - - // [7.7] Class regex_traits - /** - * @brief Describes aspects of a regular expression. - * - * A regular expression traits class that satisfies the requirements of tr1 - * section [7.2]. - * - * The class %regex is parameterized around a set of related types and - * functions used to complete the definition of its semantics. This class - * satisfies the requirements of such a traits class. - */ - template - struct regex_traits - { - public: - typedef _Ch_type char_type; - typedef std::basic_string string_type; - typedef std::locale locale_type; - typedef std::ctype_base::mask char_class_type; - - public: - /** - * @brief Constructs a default traits object. - */ - regex_traits() - { } - - /** - * @brief Gives the length of a C-style string starting at @p __p. - * - * @param __p a pointer to the start of a character sequence. - * - * @returns the number of characters between @p *__p and the first - * default-initialized value of type @p char_type. In other words, uses - * the C-string algorithm for determining the length of a sequence of - * characters. - */ - static std::size_t - length(const char_type* __p) - { return string_type::traits_type::length(__p); } - - /** - * @brief Performs the identity translation. - * - * @param c A character to the locale-specific character set. - * - * @returns c. - */ - char_type - translate(char_type __c) const - { return __c; } - - /** - * @brief Translates a character into a case-insensitive equivalent. - * - * @param c A character to the locale-specific character set. - * - * @returns the locale-specific lower-case equivalent of c. - * @throws std::bad_cast if the imbued locale does not support the ctype - * facet. - */ - char_type - translate_nocase(char_type __c) const - { - using std::ctype; - using std::use_facet; - return use_facet >(_M_locale).tolower(__c); - } - - /** - * @brief Gets a sort key for a character sequence. - * - * @param first beginning of the character sequence. - * @param last one-past-the-end of the character sequence. - * - * Returns a sort key for the character sequence designated by the - * iterator range [F1, F2) such that if the character sequence [G1, G2) - * sorts before the character sequence [H1, H2) then - * v.transform(G1, G2) < v.transform(H1, H2). - * - * What this really does is provide a more efficient way to compare a - * string to multiple other strings in locales with fancy collation - * rules and equivalence classes. - * - * @returns a locale-specific sort key equivalent to the input range. - * - * @throws std::bad_cast if the current locale does not have a collate - * facet. - */ - template - string_type - transform(_Fwd_iter __first, _Fwd_iter __last) const - { - using std::collate; - using std::use_facet; - const collate<_Ch_type>& __c(use_facet< - collate<_Ch_type> >(_M_locale)); - string_type __s(__first, __last); - return __c.transform(__s.data(), __s.data() + __s.size()); - } - - /** - * @brief Dunno. - * - * @param first beginning of the character sequence. - * @param last one-past-the-end of the character sequence. - * - * Effects: if typeid(use_facet >) == - * typeid(collate_byname<_Ch_type>) and the form of the sort key - * returned by collate_byname<_Ch_type>::transform(first, last) is known - * and can be converted into a primary sort key then returns that key, - * otherwise returns an empty string. WTF?? - * - * @todo Implement this function. - */ - template - string_type - transform_primary(_Fwd_iter __first, _Fwd_iter __last) const; - - /** - * @brief Gets a collation element by name. - * - * @param first beginning of the collation element name. - * @param last one-past-the-end of the collation element name. - * - * @returns a sequence of one or more characters that represents the - * collating element consisting of the character sequence designated by - * the iterator range [first, last). Returns an empty string if the - * character sequence is not a valid collating element. - * - * @todo Implement this function. - */ - template - string_type - lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const; - - /** - * @brief Maps one or more characters to a named character - * classification. - * - * @param first beginning of the character sequence. - * @param last one-past-the-end of the character sequence. - * - * @returns an unspecified value that represents the character - * classification named by the character sequence designated by the - * iterator range [first, last). The value returned shall be independent - * of the case of the characters in the character sequence. If the name - * is not recognized then returns a value that compares equal to 0. - * - * At least the following names (or their wide-character equivalent) are - * supported. - * - d - * - w - * - s - * - alnum - * - alpha - * - blank - * - cntrl - * - digit - * - graph - * - lower - * - print - * - punct - * - space - * - upper - * - xdigit - * - * @todo Implement this function. - */ - template - char_class_type - lookup_classname(_Fwd_iter __first, _Fwd_iter __last) const; - - /** - * @brief Determines if @p c is a member of an identified class. - * - * @param c a character. - * @param f a class type (as returned from lookup_classname). - * - * @returns true if the character @p c is a member of the classification - * represented by @p f, false otherwise. - * - * @throws std::bad_cast if the current locale does not have a ctype - * facet. - */ - bool - isctype(_Ch_type __c, char_class_type __f) const; - - /** - * @brief Converts a digit to an int. - * - * @param ch a character representing a digit. - * @param radix the radix if the numeric conversion (limited to 8, 10, - * or 16). - * - * @returns the value represented by the digit ch in base radix if the - * character ch is a valid digit in base radix; otherwise returns -1. - */ - int - value(_Ch_type __ch, int __radix) const; - - /** - * @brief Imbues the regex_traits object with a copy of a new locale. - * - * @param loc A locale. - * - * @returns a copy of the previous locale in use by the regex_traits - * object. - * - * @note Calling imbue with a different locale than the one currently in - * use invalidates all cached data held by *this. - */ - locale_type - imbue(locale_type __loc) - { - std::swap(_M_locale, __loc); - return __loc; - } - - /** - * @brief Gets a copy of the current locale in use by the regex_traits - * object. - */ - locale_type - getloc() const - { return _M_locale; } - - protected: - locale_type _M_locale; - }; - - template - bool regex_traits<_Ch_type>:: - isctype(_Ch_type __c, char_class_type __f) const - { - using std::ctype; - using std::use_facet; - const ctype<_Ch_type>& __ctype(use_facet< - ctype<_Ch_type> >(_M_locale)); - - if (__ctype.is(__c, __f)) - return true; -#if 0 - // special case of underscore in [[:w:]] - if (__c == __ctype.widen('_')) - { - const char* const __wb[] = "w"; - char_class_type __wt = this->lookup_classname(__wb, - __wb + sizeof(__wb)); - if (__f | __wt) - return true; - } - - // special case of [[:space:]] in [[:blank:]] - if (__c == __ctype.isspace(__c)) - { - const char* const __bb[] = "blank"; - char_class_type __bt = this->lookup_classname(__bb, - __bb + sizeof(__bb)); - if (__f | __bt) - return true; - } -#endif - return false; - } - - template - int regex_traits<_Ch_type>:: - value(_Ch_type __ch, int __radix) const - { - std::basic_istringstream<_Ch_type> __is(string_type(1, __ch)); - int __v; - if (__radix == 8) - __is >> std::oct; - else if (__radix == 16) - __is >> std::hex; - __is >> __v; - return __is.fail() ? -1 : __v; - } - - // [7.8] Class basic_regex - /** - * Objects of specializations of this class represent regular expressions - * constructed from sequences of character type @p _Ch_type. - * - * Storage for the regular expression is allocated and deallocated as - * necessary by the member functions of this class. - */ - template > - class basic_regex - { - public: - // types: - typedef _Ch_type value_type; - typedef regex_constants::syntax_option_type flag_type; - typedef typename _Rx_traits::locale_type locale_type; - typedef typename _Rx_traits::string_type string_type; - - /** - * @name Constants - * tr1 [7.8.1] std [28.8.1] - */ - //@{ - static const regex_constants::syntax_option_type icase - = regex_constants::icase; - static const regex_constants::syntax_option_type nosubs - = regex_constants::nosubs; - static const regex_constants::syntax_option_type optimize - = regex_constants::optimize; - static const regex_constants::syntax_option_type collate - = regex_constants::collate; - static const regex_constants::syntax_option_type ECMAScript - = regex_constants::ECMAScript; - static const regex_constants::syntax_option_type basic - = regex_constants::basic; - static const regex_constants::syntax_option_type extended - = regex_constants::extended; - static const regex_constants::syntax_option_type awk - = regex_constants::awk; - static const regex_constants::syntax_option_type grep - = regex_constants::grep; - static const regex_constants::syntax_option_type egrep - = regex_constants::egrep; - //@} - - // [7.8.2] construct/copy/destroy - /** - * Constructs a basic regular expression that does not match any - * character sequence. - */ - basic_regex() - : _M_flags(regex_constants::ECMAScript), _M_pattern(), _M_mark_count(0) - { _M_compile(); } - - /** - * @brief Constructs a basic regular expression from the sequence - * [p, p + char_traits<_Ch_type>::length(p)) interpreted according to the - * flags in @p f. - * - * @param p A pointer to the start of a C-style null-terminated string - * containing a regular expression. - * @param f Flags indicating the syntax rules and options. - * - * @throws regex_error if @p p is not a valid regular expression. - */ - explicit - basic_regex(const _Ch_type* __p, - flag_type __f = regex_constants::ECMAScript) - : _M_flags(__f), _M_pattern(__p), _M_mark_count(0) - { _M_compile(); } - - /** - * @brief Constructs a basic regular expression from the sequence - * [p, p + len) interpreted according to the flags in @p f. - * - * @param p A pointer to the start of a string containing a regular - * expression. - * @param len The length of the string containing the regular expression. - * @param f Flags indicating the syntax rules and options. - * - * @throws regex_error if @p p is not a valid regular expression. - */ - basic_regex(const _Ch_type* __p, std::size_t __len, flag_type __f) - : _M_flags(__f) , _M_pattern(__p, __len), _M_mark_count(0) - { _M_compile(); } - - /** - * @brief Copy-constructs a basic regular expression. - * - * @param rhs A @p regex object. - */ - basic_regex(const basic_regex& __rhs) - : _M_flags(__rhs._M_flags), _M_pattern(__rhs._M_pattern), - _M_mark_count(__rhs._M_mark_count) - { _M_compile(); } - - /** - * @brief Constructs a basic regular expression from the string - * @p s interpreted according to the flags in @p f. - * - * @param s A string containing a regular expression. - * @param f Flags indicating the syntax rules and options. - * - * @throws regex_error if @p s is not a valid regular expression. - */ - template - explicit - basic_regex(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, - flag_type __f = regex_constants::ECMAScript) - : _M_flags(__f), _M_pattern(__s.begin(), __s.end()), _M_mark_count(0) - { _M_compile(); } - - /** - * @brief Constructs a basic regular expression from the range - * [first, last) interpreted according to the flags in @p f. - * - * @param first The start of a range containing a valid regular - * expression. - * @param last The end of a range containing a valid regular - * expression. - * @param f The format flags of the regular expression. - * - * @throws regex_error if @p [first, last) is not a valid regular - * expression. - */ - template - basic_regex(_InputIterator __first, _InputIterator __last, - flag_type __f = regex_constants::ECMAScript) - : _M_flags(__f), _M_pattern(__first, __last), _M_mark_count(0) - { _M_compile(); } - -#ifdef _GLIBCXX_INCLUDE_AS_CXX11 - /** - * @brief Constructs a basic regular expression from an initializer list. - * - * @param l The initializer list. - * @param f The format flags of the regular expression. - * - * @throws regex_error if @p l is not a valid regular expression. - */ - basic_regex(initializer_list<_Ch_type> __l, - flag_type __f = regex_constants::ECMAScript) - : _M_flags(__f), _M_pattern(__l.begin(), __l.end()), _M_mark_count(0) - { _M_compile(); } -#endif - - /** - * @brief Destroys a basic regular expression. - */ - ~basic_regex() - { } - - /** - * @brief Assigns one regular expression to another. - */ - basic_regex& - operator=(const basic_regex& __rhs) - { return this->assign(__rhs); } - - /** - * @brief Replaces a regular expression with a new one constructed from - * a C-style null-terminated string. - * - * @param A pointer to the start of a null-terminated C-style string - * containing a regular expression. - */ - basic_regex& - operator=(const _Ch_type* __p) - { return this->assign(__p, flags()); } - - /** - * @brief Replaces a regular expression with a new one constructed from - * a string. - * - * @param A pointer to a string containing a regular expression. - */ - template - basic_regex& - operator=(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s) - { return this->assign(__s, flags()); } - - // [7.8.3] assign - /** - * @brief the real assignment operator. - * - * @param that Another regular expression object. - */ - basic_regex& - assign(const basic_regex& __that) - { - basic_regex __tmp(__that); - this->swap(__tmp); - return *this; - } - - /** - * @brief Assigns a new regular expression to a regex object from a - * C-style null-terminated string containing a regular expression - * pattern. - * - * @param p A pointer to a C-style null-terminated string containing - * a regular expression pattern. - * @param flags Syntax option flags. - * - * @throws regex_error if p does not contain a valid regular expression - * pattern interpreted according to @p flags. If regex_error is thrown, - * *this remains unchanged. - */ - basic_regex& - assign(const _Ch_type* __p, - flag_type __flags = regex_constants::ECMAScript) - { return this->assign(string_type(__p), __flags); } - - /** - * @brief Assigns a new regular expression to a regex object from a - * C-style string containing a regular expression pattern. - * - * @param p A pointer to a C-style string containing a - * regular expression pattern. - * @param len The length of the regular expression pattern string. - * @param flags Syntax option flags. - * - * @throws regex_error if p does not contain a valid regular expression - * pattern interpreted according to @p flags. If regex_error is thrown, - * *this remains unchanged. - */ - basic_regex& - assign(const _Ch_type* __p, std::size_t __len, flag_type __flags) - { return this->assign(string_type(__p, __len), __flags); } - - /** - * @brief Assigns a new regular expression to a regex object from a - * string containing a regular expression pattern. - * - * @param s A string containing a regular expression pattern. - * @param flags Syntax option flags. - * - * @throws regex_error if p does not contain a valid regular expression - * pattern interpreted according to @p flags. If regex_error is thrown, - * *this remains unchanged. - */ - template - basic_regex& - assign(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s, - flag_type __f = regex_constants::ECMAScript) - { - basic_regex __tmp(__s, __f); - this->swap(__tmp); - return *this; - } - - /** - * @brief Assigns a new regular expression to a regex object. - * - * @param first The start of a range containing a valid regular - * expression. - * @param last The end of a range containing a valid regular - * expression. - * @param flags Syntax option flags. - * - * @throws regex_error if p does not contain a valid regular expression - * pattern interpreted according to @p flags. If regex_error is thrown, - * the object remains unchanged. - */ - template - basic_regex& - assign(_InputIterator __first, _InputIterator __last, - flag_type __flags = regex_constants::ECMAScript) - { return this->assign(string_type(__first, __last), __flags); } - -#ifdef _GLIBCXX_INCLUDE_AS_CXX11 - /** - * @brief Assigns a new regular expression to a regex object. - * - * @param l An initializer list representing a regular expression. - * @param flags Syntax option flags. - * - * @throws regex_error if @p l does not contain a valid regular - * expression pattern interpreted according to @p flags. If regex_error - * is thrown, the object remains unchanged. - */ - basic_regex& - assign(initializer_list<_Ch_type> __l, - flag_type __f = regex_constants::ECMAScript) - { return this->assign(__l.begin(), __l.end(), __f); } -#endif - - // [7.8.4] const operations - /** - * @brief Gets the number of marked subexpressions within the regular - * expression. - */ - unsigned int - mark_count() const - { return _M_mark_count; } - - /** - * @brief Gets the flags used to construct the regular expression - * or in the last call to assign(). - */ - flag_type - flags() const - { return _M_flags; } - - // [7.8.5] locale - /** - * @brief Imbues the regular expression object with the given locale. - * - * @param loc A locale. - */ - locale_type - imbue(locale_type __loc) - { return _M_traits.imbue(__loc); } - - /** - * @brief Gets the locale currently imbued in the regular expression - * object. - */ - locale_type - getloc() const - { return _M_traits.getloc(); } - - // [7.8.6] swap - /** - * @brief Swaps the contents of two regular expression objects. - * - * @param rhs Another regular expression object. - */ - void - swap(basic_regex& __rhs) - { - std::swap(_M_flags, __rhs._M_flags); - std::swap(_M_pattern, __rhs._M_pattern); - std::swap(_M_mark_count, __rhs._M_mark_count); - std::swap(_M_traits, __rhs._M_traits); - } - - private: - /** - * @brief Compiles a regular expression pattern into a NFA. - * @todo Implement this function. - */ - void _M_compile(); - - protected: - flag_type _M_flags; - string_type _M_pattern; - unsigned int _M_mark_count; - _Rx_traits _M_traits; - }; - - /** @brief Standard regular expressions. */ - typedef basic_regex regex; -#ifdef _GLIBCXX_USE_WCHAR_T - /** @brief Standard wide-character regular expressions. */ - typedef basic_regex wregex; -#endif - - - // [7.8.6] basic_regex swap - /** - * @brief Swaps the contents of two regular expression objects. - * @param lhs First regular expression. - * @param rhs Second regular expression. - */ - template - inline void - swap(basic_regex<_Ch_type, _Rx_traits>& __lhs, - basic_regex<_Ch_type, _Rx_traits>& __rhs) - { __lhs.swap(__rhs); } - - - // [7.9] Class template sub_match - /** - * A sequence of characters matched by a particular marked sub-expression. - * - * An object of this class is essentially a pair of iterators marking a - * matched subexpression within a regular expression pattern match. Such - * objects can be converted to and compared with std::basic_string objects - * of a similar base character type as the pattern matched by the regular - * expression. - * - * The iterators that make up the pair are the usual half-open interval - * referencing the actual original pattern matched. - */ - template - class sub_match : public std::pair<_BiIter, _BiIter> - { - public: - typedef typename iterator_traits<_BiIter>::value_type value_type; - typedef typename iterator_traits<_BiIter>::difference_type - difference_type; - typedef _BiIter iterator; - - public: - bool matched; - - /** - * Gets the length of the matching sequence. - */ - difference_type - length() const - { return this->matched ? std::distance(this->first, this->second) : 0; } - - /** - * @brief Gets the matching sequence as a string. - * - * @returns the matching sequence as a string. - * - * This is the implicit conversion operator. It is identical to the - * str() member function except that it will want to pop up in - * unexpected places and cause a great deal of confusion and cursing - * from the unwary. - */ - operator basic_string() const - { - return this->matched - ? std::basic_string(this->first, this->second) - : std::basic_string(); - } - - /** - * @brief Gets the matching sequence as a string. - * - * @returns the matching sequence as a string. - */ - basic_string - str() const - { - return this->matched - ? std::basic_string(this->first, this->second) - : std::basic_string(); - } - - /** - * @brief Compares this and another matched sequence. - * - * @param s Another matched sequence to compare to this one. - * - * @retval <0 this matched sequence will collate before @p s. - * @retval =0 this matched sequence is equivalent to @p s. - * @retval <0 this matched sequence will collate after @p s. - */ - int - compare(const sub_match& __s) const - { return this->str().compare(__s.str()); } - - /** - * @brief Compares this sub_match to a string. - * - * @param s A string to compare to this sub_match. - * - * @retval <0 this matched sequence will collate before @p s. - * @retval =0 this matched sequence is equivalent to @p s. - * @retval <0 this matched sequence will collate after @p s. - */ - int - compare(const basic_string& __s) const - { return this->str().compare(__s); } - - /** - * @brief Compares this sub_match to a C-style string. - * - * @param s A C-style string to compare to this sub_match. - * - * @retval <0 this matched sequence will collate before @p s. - * @retval =0 this matched sequence is equivalent to @p s. - * @retval <0 this matched sequence will collate after @p s. - */ - int - compare(const value_type* __s) const - { return this->str().compare(__s); } - }; - - - /** @brief Standard regex submatch over a C-style null-terminated string. */ - typedef sub_match csub_match; - /** @brief Standard regex submatch over a standard string. */ - typedef sub_match ssub_match; -#ifdef _GLIBCXX_USE_WCHAR_T - /** @brief Regex submatch over a C-style null-terminated wide string. */ - typedef sub_match wcsub_match; - /** @brief Regex submatch over a standard wide string. */ - typedef sub_match wssub_match; -#endif - - // [7.9.2] sub_match non-member operators - - /** - * @brief Tests the equivalence of two regular expression submatches. - * @param lhs First regular expression submatch. - * @param rhs Second regular expression submatch. - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(const sub_match<_BiIter>& __lhs, - const sub_match<_BiIter>& __rhs) - { return __lhs.compare(__rhs) == 0; } - - /** - * @brief Tests the inequivalence of two regular expression submatches. - * @param lhs First regular expression submatch. - * @param rhs Second regular expression submatch. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(const sub_match<_BiIter>& __lhs, - const sub_match<_BiIter>& __rhs) - { return __lhs.compare(__rhs) != 0; } - - /** - * @brief Tests the ordering of two regular expression submatches. - * @param lhs First regular expression submatch. - * @param rhs Second regular expression submatch. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(const sub_match<_BiIter>& __lhs, - const sub_match<_BiIter>& __rhs) - { return __lhs.compare(__rhs) < 0; } - - /** - * @brief Tests the ordering of two regular expression submatches. - * @param lhs First regular expression submatch. - * @param rhs Second regular expression submatch. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(const sub_match<_BiIter>& __lhs, - const sub_match<_BiIter>& __rhs) - { return __lhs.compare(__rhs) <= 0; } - - /** - * @brief Tests the ordering of two regular expression submatches. - * @param lhs First regular expression submatch. - * @param rhs Second regular expression submatch. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(const sub_match<_BiIter>& __lhs, - const sub_match<_BiIter>& __rhs) - { return __lhs.compare(__rhs) >= 0; } - - /** - * @brief Tests the ordering of two regular expression submatches. - * @param lhs First regular expression submatch. - * @param rhs Second regular expression submatch. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(const sub_match<_BiIter>& __lhs, - const sub_match<_BiIter>& __rhs) - { return __lhs.compare(__rhs) > 0; } - - /** - * @brief Tests the equivalence of a string and a regular expression - * submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs == __rhs.str(); } - - /** - * @brief Tests the inequivalence of a string and a regular expression - * submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __lhs != __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __lhs < __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __lhs > __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __lhs >= __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) - { return __lhs <= __rhs.str(); } - - /** - * @brief Tests the equivalence of a regular expression submatch and a - * string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(const sub_match<_Bi_iter>& __lhs, - const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.str() == __rhs; } - - /** - * @brief Tests the inequivalence of a regular expression submatch and a - * string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(const sub_match<_Bi_iter>& __lhs, - const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.str() != __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(const sub_match<_Bi_iter>& __lhs, - const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.str() < __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(const sub_match<_Bi_iter>& __lhs, - const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.str() > __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(const sub_match<_Bi_iter>& __lhs, - const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.str() >= __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(const sub_match<_Bi_iter>& __lhs, - const basic_string< - typename iterator_traits<_Bi_iter>::value_type, - _Ch_traits, _Ch_alloc>& __rhs) - { return __lhs.str() <= __rhs; } - - /** - * @brief Tests the equivalence of a C string and a regular expression - * submatch. - * @param lhs A C string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs == __rhs.str(); } - - /** - * @brief Tests the inequivalence of an iterator value and a regular - * expression submatch. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs != __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs < __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(typename iterator_traits<_Bi_iter>::value_type const* __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs > __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs >= __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs <= __rhs.str(); } - - /** - * @brief Tests the equivalence of a regular expression submatch and a - * string. - * @param lhs A regular expression submatch. - * @param rhs A pointer to a string? - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const* __rhs) - { return __lhs.str() == __rhs; } - - /** - * @brief Tests the inequivalence of a regular expression submatch and a - * string. - * @param lhs A regular expression submatch. - * @param rhs A pointer to a string. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const* __rhs) - { return __lhs.str() != __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const* __rhs) - { return __lhs.str() < __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const* __rhs) - { return __lhs.str() > __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const* __rhs) - { return __lhs.str() >= __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A string. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const* __rhs) - { return __lhs.str() <= __rhs; } - - /** - * @brief Tests the equivalence of a string and a regular expression - * submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs == __rhs.str(); } - - /** - * @brief Tests the inequivalence of a string and a regular expression - * submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs != __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs < __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(typename iterator_traits<_Bi_iter>::value_type const& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs > __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs >= __rhs.str(); } - - /** - * @brief Tests the ordering of a string and a regular expression submatch. - * @param lhs A string. - * @param rhs A regular expression submatch. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, - const sub_match<_Bi_iter>& __rhs) - { return __lhs <= __rhs.str(); } - - /** - * @brief Tests the equivalence of a regular expression submatch and a - * string. - * @param lhs A regular expression submatch. - * @param rhs A const string reference. - * @returns true if @a lhs is equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator==(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const& __rhs) - { return __lhs.str() == __rhs; } - - /** - * @brief Tests the inequivalence of a regular expression submatch and a - * string. - * @param lhs A regular expression submatch. - * @param rhs A const string reference. - * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. - */ - template - inline bool - operator!=(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const& __rhs) - { return __lhs.str() != __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A const string reference. - * @returns true if @a lhs precedes @a rhs, false otherwise. - */ - template - inline bool - operator<(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const& __rhs) - { return __lhs.str() < __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A const string reference. - * @returns true if @a lhs succeeds @a rhs, false otherwise. - */ - template - inline bool - operator>(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const& __rhs) - { return __lhs.str() > __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A const string reference. - * @returns true if @a lhs does not precede @a rhs, false otherwise. - */ - template - inline bool - operator>=(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const& __rhs) - { return __lhs.str() >= __rhs; } - - /** - * @brief Tests the ordering of a regular expression submatch and a string. - * @param lhs A regular expression submatch. - * @param rhs A const string reference. - * @returns true if @a lhs does not succeed @a rhs, false otherwise. - */ - template - inline bool - operator<=(const sub_match<_Bi_iter>& __lhs, - typename iterator_traits<_Bi_iter>::value_type const& __rhs) - { return __lhs.str() <= __rhs; } - - /** - * @brief Inserts a matched string into an output stream. - * - * @param os The output stream. - * @param m A submatch string. - * - * @returns the output stream with the submatch string inserted. - */ - template - inline - basic_ostream<_Ch_type, _Ch_traits>& - operator<<(basic_ostream<_Ch_type, _Ch_traits>& __os, - const sub_match<_Bi_iter>& __m) - { return __os << __m.str(); } - - // [7.10] Class template match_results - /** - * @brief The results of a match or search operation. - * - * A collection of character sequences representing the result of a regular - * expression match. Storage for the collection is allocated and freed as - * necessary by the member functions of class template match_results. - * - * This class satisfies the Sequence requirements, with the exception that - * only the operations defined for a const-qualified Sequence are supported. - * - * The sub_match object stored at index 0 represents sub-expression 0, i.e. - * the whole match. In this case the sub_match member matched is always true. - * The sub_match object stored at index n denotes what matched the marked - * sub-expression n within the matched expression. If the sub-expression n - * participated in a regular expression match then the sub_match member - * matched evaluates to true, and members first and second denote the range - * of characters [first, second) which formed that match. Otherwise matched - * is false, and members first and second point to the end of the sequence - * that was searched. - * - * @nosubgrouping - */ - template > > - class match_results - : private std::vector, _Allocator> - { - private: - typedef std::vector, _Allocator> - _Base_type; - - public: - /** - * @name 10.? Public Types - */ - //@{ - typedef sub_match<_Bi_iter> value_type; - typedef typename _Allocator::const_reference const_reference; - typedef const_reference reference; - typedef typename _Base_type::const_iterator const_iterator; - typedef const_iterator iterator; - typedef typename iterator_traits<_Bi_iter>::difference_type - difference_type; - typedef typename _Allocator::size_type size_type; - typedef _Allocator allocator_type; - typedef typename iterator_traits<_Bi_iter>::value_type char_type; - typedef basic_string string_type; - //@} - - public: - /** - * @name 10.1 Construction, Copying, and Destruction - */ - //@{ - - /** - * @brief Constructs a default %match_results container. - * @post size() returns 0 and str() returns an empty string. - */ - explicit - match_results(const _Allocator& __a = _Allocator()) - : _Base_type(__a), _M_matched(false) - { } - - /** - * @brief Copy constructs a %match_results. - */ - match_results(const match_results& __rhs) - : _Base_type(__rhs), _M_matched(__rhs._M_matched), - _M_prefix(__rhs._M_prefix), _M_suffix(__rhs._M_suffix) - { } - - /** - * @brief Assigns rhs to *this. - */ - match_results& - operator=(const match_results& __rhs) - { - match_results __tmp(__rhs); - this->swap(__tmp); - return *this; - } - - /** - * @brief Destroys a %match_results object. - */ - ~match_results() - { } - - //@} - - /** - * @name 10.2 Size - */ - //@{ - - /** - * @brief Gets the number of matches and submatches. - * - * The number of matches for a given regular expression will be either 0 - * if there was no match or mark_count() + 1 if a match was successful. - * Some matches may be empty. - * - * @returns the number of matches found. - */ - size_type - size() const - { return _M_matched ? _Base_type::size() + 1 : 0; } - - //size_type - //max_size() const; - using _Base_type::max_size; - - /** - * @brief Indicates if the %match_results contains no results. - * @retval true The %match_results object is empty. - * @retval false The %match_results object is not empty. - */ - bool - empty() const - { return size() == 0; } - - //@} - - /** - * @name 10.3 Element Access - */ - //@{ - - /** - * @brief Gets the length of the indicated submatch. - * @param sub indicates the submatch. - * - * This function returns the length of the indicated submatch, or the - * length of the entire match if @p sub is zero (the default). - */ - difference_type - length(size_type __sub = 0) const - { return _M_matched ? this->str(__sub).length() : 0; } - - /** - * @brief Gets the offset of the beginning of the indicated submatch. - * @param sub indicates the submatch. - * - * This function returns the offset from the beginning of the target - * sequence to the beginning of the submatch, unless the value of @p sub - * is zero (the default), in which case this function returns the offset - * from the beginning of the target sequence to the beginning of the - * match. - */ - difference_type - position(size_type __sub = 0) const - { - return _M_matched ? std::distance(this->prefix().first, - (*this)[__sub].first) : 0; - } - - /** - * @brief Gets the match or submatch converted to a string type. - * @param sub indicates the submatch. - * - * This function gets the submatch (or match, if @p sub is zero) extracted - * from the target range and converted to the associated string type. - */ - string_type - str(size_type __sub = 0) const - { return _M_matched ? (*this)[__sub].str() : string_type(); } - - /** - * @brief Gets a %sub_match reference for the match or submatch. - * @param sub indicates the submatch. - * - * This function gets a reference to the indicated submatch, or the entire - * match if @p sub is zero. - * - * If @p sub >= size() then this function returns a %sub_match with a - * special value indicating no submatch. - */ - const_reference - operator[](size_type __sub) const - { return _Base_type::operator[](__sub); } - - /** - * @brief Gets a %sub_match representing the match prefix. - * - * This function gets a reference to a %sub_match object representing the - * part of the target range between the start of the target range and the - * start of the match. - */ - const_reference - prefix() const - { return _M_prefix; } - - /** - * @brief Gets a %sub_match representing the match suffix. - * - * This function gets a reference to a %sub_match object representing the - * part of the target range between the end of the match and the end of - * the target range. - */ - const_reference - suffix() const - { return _M_suffix; } - - /** - * @brief Gets an iterator to the start of the %sub_match collection. - */ - const_iterator - begin() const - { return _Base_type::begin(); } - -#ifdef _GLIBCXX_INCLUDE_AS_CXX11 - /** - * @brief Gets an iterator to the start of the %sub_match collection. - */ - const_iterator - cbegin() const - { return _Base_type::begin(); } -#endif - - /** - * @brief Gets an iterator to one-past-the-end of the collection. - */ - const_iterator - end() const - { return _Base_type::end(); } - -#ifdef _GLIBCXX_INCLUDE_AS_CXX11 - /** - * @brief Gets an iterator to one-past-the-end of the collection. - */ - const_iterator - cend() const - { return _Base_type::end(); } -#endif - - //@} - - /** - * @name 10.4 Formatting - * - * These functions perform formatted substitution of the matched - * character sequences into their target. The format specifiers - * and escape sequences accepted by these functions are - * determined by their @p flags parameter as documented above. - */ - //@{ - - /** - * @todo Implement this function. - */ - template - _Out_iter - format(_Out_iter __out, const string_type& __fmt, - regex_constants::match_flag_type __flags - = regex_constants::format_default) const; - - /** - * @todo Implement this function. - */ - string_type - format(const string_type& __fmt, - regex_constants::match_flag_type __flags - = regex_constants::format_default) const; - - //@} - - /** - * @name 10.5 Allocator - */ - //@{ - - /** - * @brief Gets a copy of the allocator. - */ - //allocator_type - //get_allocator() const; - using _Base_type::get_allocator; - - //@} - - /** - * @name 10.6 Swap - */ - //@{ - - /** - * @brief Swaps the contents of two match_results. - */ - void - swap(match_results& __that) - { - _Base_type::swap(__that); - std::swap(_M_matched, __that._M_matched); - std::swap(_M_prefix, __that._M_prefix); - std::swap(_M_suffix, __that._M_suffix); - } - //@} - - private: - bool _M_matched; - value_type _M_prefix; - value_type _M_suffix; - }; - - typedef match_results cmatch; - typedef match_results smatch; -#ifdef _GLIBCXX_USE_WCHAR_T - typedef match_results wcmatch; - typedef match_results wsmatch; -#endif - - // match_results comparisons - /** - * @brief Compares two match_results for equality. - * @returns true if the two objects refer to the same match, - * false otherwise. - * @todo Implement this function. - */ - template - inline bool - operator==(const match_results<_Bi_iter, _Allocator>& __m1, - const match_results<_Bi_iter, _Allocator>& __m2); - - /** - * @brief Compares two match_results for inequality. - * @returns true if the two objects do not refer to the same match, - * false otherwise. - */ - template - inline bool - operator!=(const match_results<_Bi_iter, _Allocator>& __m1, - const match_results<_Bi_iter, _Allocator>& __m2) - { return !(__m1 == __m2); } - - // [7.10.6] match_results swap - /** - * @brief Swaps two match results. - * @param lhs A match result. - * @param rhs A match result. - * - * The contents of the two match_results objects are swapped. - */ - template - inline void - swap(match_results<_Bi_iter, _Allocator>& __lhs, - match_results<_Bi_iter, _Allocator>& __rhs) - { __lhs.swap(__rhs); } - - // [7.11.2] Function template regex_match - /** - * @name Matching, Searching, and Replacing - */ - //@{ - - /** - * @brief Determines if there is a match between the regular expression @p e - * and all of the character sequence [first, last). - * - * @param first Beginning of the character sequence to match. - * @param last One-past-the-end of the character sequence to match. - * @param m The match results. - * @param re The regular expression. - * @param flags Controls how the regular expression is matched. - * - * @retval true A match exists. - * @retval false Otherwise. - * - * @throws an exception of type regex_error. - * - * @todo Implement this function. - */ - template - bool - regex_match(_Bi_iter __first, _Bi_iter __last, - match_results<_Bi_iter, _Allocator>& __m, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags - = regex_constants::match_default); - - /** - * @brief Indicates if there is a match between the regular expression @p e - * and all of the character sequence [first, last). - * - * @param first Beginning of the character sequence to match. - * @param last One-past-the-end of the character sequence to match. - * @param re The regular expression. - * @param flags Controls how the regular expression is matched. - * - * @retval true A match exists. - * @retval false Otherwise. - * - * @throws an exception of type regex_error. - */ - template - bool - regex_match(_Bi_iter __first, _Bi_iter __last, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags - = regex_constants::match_default) - { - match_results<_Bi_iter> __what; - return regex_match(__first, __last, __what, __re, __flags); - } - - /** - * @brief Determines if there is a match between the regular expression @p e - * and a C-style null-terminated string. - * - * @param s The C-style null-terminated string to match. - * @param m The match results. - * @param re The regular expression. - * @param f Controls how the regular expression is matched. - * - * @retval true A match exists. - * @retval false Otherwise. - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_match(const _Ch_type* __s, - match_results& __m, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __f - = regex_constants::match_default) - { return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); } - - /** - * @brief Determines if there is a match between the regular expression @p e - * and a string. - * - * @param s The string to match. - * @param m The match results. - * @param re The regular expression. - * @param flags Controls how the regular expression is matched. - * - * @retval true A match exists. - * @retval false Otherwise. - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, - match_results::const_iterator, _Allocator>& __m, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags - = regex_constants::match_default) - { return regex_match(__s.begin(), __s.end(), __m, __re, __flags); } - - /** - * @brief Indicates if there is a match between the regular expression @p e - * and a C-style null-terminated string. - * - * @param s The C-style null-terminated string to match. - * @param re The regular expression. - * @param f Controls how the regular expression is matched. - * - * @retval true A match exists. - * @retval false Otherwise. - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_match(const _Ch_type* __s, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __f - = regex_constants::match_default) - { return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); } - - /** - * @brief Indicates if there is a match between the regular expression @p e - * and a string. - * - * @param s [IN] The string to match. - * @param re [IN] The regular expression. - * @param flags [IN] Controls how the regular expression is matched. - * - * @retval true A match exists. - * @retval false Otherwise. - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_match(const basic_string<_Ch_type, _Ch_traits, _Str_allocator>& __s, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags - = regex_constants::match_default) - { return regex_match(__s.begin(), __s.end(), __re, __flags); } - - // [7.11.3] Function template regex_search - /** - * Searches for a regular expression within a range. - * @param first [IN] The start of the string to search. - * @param last [IN] One-past-the-end of the string to search. - * @param m [OUT] The match results. - * @param re [IN] The regular expression to search for. - * @param flags [IN] Search policy flags. - * @retval true A match was found within the string. - * @retval false No match was found within the string, the content of %m is - * undefined. - * - * @throws an exception of type regex_error. - * - * @todo Implement this function. - */ - template - inline bool - regex_search(_Bi_iter __first, _Bi_iter __last, - match_results<_Bi_iter, _Allocator>& __m, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags - = regex_constants::match_default); - - /** - * Searches for a regular expression within a range. - * @param first [IN] The start of the string to search. - * @param last [IN] One-past-the-end of the string to search. - * @param re [IN] The regular expression to search for. - * @param flags [IN] Search policy flags. - * @retval true A match was found within the string. - * @retval false No match was found within the string. - * @doctodo - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_search(_Bi_iter __first, _Bi_iter __last, - const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags - = regex_constants::match_default) - { - match_results<_Bi_iter> __what; - return regex_search(__first, __last, __what, __re, __flags); - } - - /** - * @brief Searches for a regular expression within a C-string. - * @param s [IN] A C-string to search for the regex. - * @param m [OUT] The set of regex matches. - * @param e [IN] The regex to search for in @p s. - * @param f [IN] The search flags. - * @retval true A match was found within the string. - * @retval false No match was found within the string, the content of %m is - * undefined. - * @doctodo - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_search(const _Ch_type* __s, - match_results& __m, - const basic_regex<_Ch_type, _Rx_traits>& __e, - regex_constants::match_flag_type __f - = regex_constants::match_default) - { return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); } - - /** - * @brief Searches for a regular expression within a C-string. - * @param s [IN] The C-string to search. - * @param e [IN] The regular expression to search for. - * @param f [IN] Search policy flags. - * @retval true A match was found within the string. - * @retval false No match was found within the string. - * @doctodo - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_search(const _Ch_type* __s, - const basic_regex<_Ch_type, _Rx_traits>& __e, - regex_constants::match_flag_type __f - = regex_constants::match_default) - { return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); } - - /** - * @brief Searches for a regular expression within a string. - * @param s [IN] The string to search. - * @param e [IN] The regular expression to search for. - * @param flags [IN] Search policy flags. - * @retval true A match was found within the string. - * @retval false No match was found within the string. - * @doctodo - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_search(const basic_string<_Ch_type, _Ch_traits, - _String_allocator>& __s, - const basic_regex<_Ch_type, _Rx_traits>& __e, - regex_constants::match_flag_type __flags - = regex_constants::match_default) - { return regex_search(__s.begin(), __s.end(), __e, __flags); } - - /** - * @brief Searches for a regular expression within a string. - * @param s [IN] A C++ string to search for the regex. - * @param m [OUT] The set of regex matches. - * @param e [IN] The regex to search for in @p s. - * @param f [IN] The search flags. - * @retval true A match was found within the string. - * @retval false No match was found within the string, the content of %m is - * undefined. - * - * @throws an exception of type regex_error. - */ - template - inline bool - regex_search(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, - match_results::const_iterator, _Allocator>& __m, - const basic_regex<_Ch_type, _Rx_traits>& __e, - regex_constants::match_flag_type __f - = regex_constants::match_default) - { return regex_search(__s.begin(), __s.end(), __m, __e, __f); } - - // tr1 [7.11.4] std [28.11.4] Function template regex_replace - /** - * @doctodo - * @param out - * @param first - * @param last - * @param e - * @param fmt - * @param flags - * - * @returns out - * @throws an exception of type regex_error. - * - * @todo Implement this function. - */ - template - inline _Out_iter - regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last, - const basic_regex<_Ch_type, _Rx_traits>& __e, - const basic_string<_Ch_type>& __fmt, - regex_constants::match_flag_type __flags - = regex_constants::match_default); - - /** - * @doctodo - * @param s - * @param e - * @param fmt - * @param flags - * - * @returns a copy of string @p s with replacements. - * - * @throws an exception of type regex_error. - */ - template - inline basic_string<_Ch_type> - regex_replace(const basic_string<_Ch_type>& __s, - const basic_regex<_Ch_type, _Rx_traits>& __e, - const basic_string<_Ch_type>& __fmt, - regex_constants::match_flag_type __flags - = regex_constants::match_default) - { - std::string __result; - regex_replace(std::back_inserter(__result), - __s.begin(), __s.end(), __e, __fmt, __flags); - return __result; - } - - //@} - - // tr1 [7.12.1] std [28.12] Class template regex_iterator - /** - * An iterator adaptor that will provide repeated calls of regex_search over - * a range until no more matches remain. - */ - template::value_type, - typename _Rx_traits = regex_traits<_Ch_type> > - class regex_iterator - { - public: - typedef basic_regex<_Ch_type, _Rx_traits> regex_type; - typedef match_results<_Bi_iter> value_type; - typedef std::ptrdiff_t difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - public: - /** - * @brief Provides a singular iterator, useful for indicating - * one-past-the-end of a range. - * @todo Implement this function. - * @doctodo - */ - regex_iterator(); - - /** - * Constructs a %regex_iterator... - * @param a [IN] The start of a text range to search. - * @param b [IN] One-past-the-end of the text range to search. - * @param re [IN] The regular expression to match. - * @param m [IN] Policy flags for match rules. - * @todo Implement this function. - * @doctodo - */ - regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re, - regex_constants::match_flag_type __m - = regex_constants::match_default); - - /** - * Copy constructs a %regex_iterator. - * @todo Implement this function. - * @doctodo - */ - regex_iterator(const regex_iterator& __rhs); - - /** - * @todo Implement this function. - * @doctodo - */ - regex_iterator& - operator=(const regex_iterator& __rhs); - - /** - * @todo Implement this function. - * @doctodo - */ - bool - operator==(const regex_iterator& __rhs); - - /** - * @todo Implement this function. - * @doctodo - */ - bool - operator!=(const regex_iterator& __rhs); - - /** - * @todo Implement this function. - * @doctodo - */ - const value_type& - operator*(); - - /** - * @todo Implement this function. - * @doctodo - */ - const value_type* - operator->(); - - /** - * @todo Implement this function. - * @doctodo - */ - regex_iterator& - operator++(); - - /** - * @todo Implement this function. - * @doctodo - */ - regex_iterator - operator++(int); - - private: - // these members are shown for exposition only: - _Bi_iter begin; - _Bi_iter end; - const regex_type* pregex; - regex_constants::match_flag_type flags; - match_results<_Bi_iter> match; - }; - - typedef regex_iterator cregex_iterator; - typedef regex_iterator sregex_iterator; -#ifdef _GLIBCXX_USE_WCHAR_T - typedef regex_iterator wcregex_iterator; - typedef regex_iterator wsregex_iterator; -#endif - - // [7.12.2] Class template regex_token_iterator - /** - * Iterates over submatches in a range (or @a splits a text string). - * - * The purpose of this iterator is to enumerate all, or all specified, - * matches of a regular expression within a text range. The dereferenced - * value of an iterator of this class is a std::tr1::sub_match object. - */ - template::value_type, - typename _Rx_traits = regex_traits<_Ch_type> > - class regex_token_iterator - { - public: - typedef basic_regex<_Ch_type, _Rx_traits> regex_type; - typedef sub_match<_Bi_iter> value_type; - typedef std::ptrdiff_t difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; - - public: - /** - * @brief Default constructs a %regex_token_iterator. - * @todo Implement this function. - * - * A default-constructed %regex_token_iterator is a singular iterator - * that will compare equal to the one-past-the-end value for any - * iterator of the same type. - */ - regex_token_iterator(); - - /** - * Constructs a %regex_token_iterator... - * @param a [IN] The start of the text to search. - * @param b [IN] One-past-the-end of the text to search. - * @param re [IN] The regular expression to search for. - * @param submatch [IN] Which submatch to return. There are some - * special values for this parameter: - * - -1 each enumerated subexpression does NOT - * match the regular expression (aka field - * splitting) - * - 0 the entire string matching the - * subexpression is returned for each match - * within the text. - * - >0 enumerates only the indicated - * subexpression from a match within the text. - * @param m [IN] Policy flags for match rules. - * - * @todo Implement this function. - * @doctodo - */ - regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re, - int __submatch = 0, - regex_constants::match_flag_type __m - = regex_constants::match_default); - - /** - * Constructs a %regex_token_iterator... - * @param a [IN] The start of the text to search. - * @param b [IN] One-past-the-end of the text to search. - * @param re [IN] The regular expression to search for. - * @param submatches [IN] A list of subexpressions to return for each - * regular expression match within the text. - * @param m [IN] Policy flags for match rules. - * - * @todo Implement this function. - * @doctodo - */ - regex_token_iterator(_Bi_iter __a, _Bi_iter __b, - const regex_type& __re, - const std::vector& __submatches, - regex_constants::match_flag_type __m - = regex_constants::match_default); - - /** - * Constructs a %regex_token_iterator... - * @param a [IN] The start of the text to search. - * @param b [IN] One-past-the-end of the text to search. - * @param re [IN] The regular expression to search for. - * @param submatches [IN] A list of subexpressions to return for each - * regular expression match within the text. - * @param m [IN] Policy flags for match rules. - - * @todo Implement this function. - * @doctodo - */ - template - regex_token_iterator(_Bi_iter __a, _Bi_iter __b, - const regex_type& __re, - const int (&__submatches)[_Nm], - regex_constants::match_flag_type __m - = regex_constants::match_default); - - /** - * @brief Copy constructs a %regex_token_iterator. - * @param rhs [IN] A %regex_token_iterator to copy. - * @todo Implement this function. - */ - regex_token_iterator(const regex_token_iterator& __rhs); - - /** - * @brief Assigns a %regex_token_iterator to another. - * @param rhs [IN] A %regex_token_iterator to copy. - * @todo Implement this function. - */ - regex_token_iterator& - operator=(const regex_token_iterator& __rhs); - - /** - * @brief Compares a %regex_token_iterator to another for equality. - * @todo Implement this function. - */ - bool - operator==(const regex_token_iterator& __rhs); - - /** - * @brief Compares a %regex_token_iterator to another for inequality. - * @todo Implement this function. - */ - bool - operator!=(const regex_token_iterator& __rhs); - - /** - * @brief Dereferences a %regex_token_iterator. - * @todo Implement this function. - */ - const value_type& - operator*(); - - /** - * @brief Selects a %regex_token_iterator member. - * @todo Implement this function. - */ - const value_type* - operator->(); - - /** - * @brief Increments a %regex_token_iterator. - * @todo Implement this function. - */ - regex_token_iterator& - operator++(); - - /** - * @brief Postincrements a %regex_token_iterator. - * @todo Implement this function. - */ - regex_token_iterator - operator++(int); - - private: // data members for exposition only: - typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> position_iterator; - - position_iterator __position; - const value_type* __result; - value_type __suffix; - std::size_t __n; - std::vector __subs; - }; - - /** @brief Token iterator for C-style NULL-terminated strings. */ - typedef regex_token_iterator cregex_token_iterator; - /** @brief Token iterator for standard strings. */ - typedef regex_token_iterator sregex_token_iterator; -#ifdef _GLIBCXX_USE_WCHAR_T - /** @brief Token iterator for C-style NULL-terminated wide strings. */ - typedef regex_token_iterator wcregex_token_iterator; - /** @brief Token iterator for standard wide-character strings. */ - typedef regex_token_iterator wsregex_token_iterator; -#endif - - //@} - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_REGEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/shared_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/shared_ptr.h deleted file mode 100644 index f702cd689..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/shared_ptr.h +++ /dev/null @@ -1,1170 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -// shared_count.hpp -// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. - -// shared_ptr.hpp -// Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. -// Copyright (C) 2001, 2002, 2003 Peter Dimov - -// weak_ptr.hpp -// Copyright (C) 2001, 2002, 2003 Peter Dimov - -// enable_shared_from_this.hpp -// Copyright (C) 2002 Peter Dimov - -// 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) - -// GCC Note: based on version 1.32.0 of the Boost library. - -/** @file tr1/shared_ptr.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{tr1/memory} - */ - -#ifndef _TR1_SHARED_PTR_H -#define _TR1_SHARED_PTR_H 1 - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @brief Exception possibly thrown by @c shared_ptr. - * @ingroup exceptions - */ - class bad_weak_ptr : public std::exception - { - public: - virtual char const* - what() const throw() - { return "tr1::bad_weak_ptr"; } - }; - - // Substitute for bad_weak_ptr object in the case of -fno-exceptions. - inline void - __throw_bad_weak_ptr() - { _GLIBCXX_THROW_OR_ABORT(bad_weak_ptr()); } - - using __gnu_cxx::_Lock_policy; - using __gnu_cxx::__default_lock_policy; - using __gnu_cxx::_S_single; - using __gnu_cxx::_S_mutex; - using __gnu_cxx::_S_atomic; - - // Empty helper class except when the template argument is _S_mutex. - template<_Lock_policy _Lp> - class _Mutex_base - { - protected: - // The atomic policy uses fully-fenced builtins, single doesn't care. - enum { _S_need_barriers = 0 }; - }; - - template<> - class _Mutex_base<_S_mutex> - : public __gnu_cxx::__mutex - { - protected: - // This policy is used when atomic builtins are not available. - // The replacement atomic operations might not have the necessary - // memory barriers. - enum { _S_need_barriers = 1 }; - }; - - template<_Lock_policy _Lp = __default_lock_policy> - class _Sp_counted_base - : public _Mutex_base<_Lp> - { - public: - _Sp_counted_base() - : _M_use_count(1), _M_weak_count(1) { } - - virtual - ~_Sp_counted_base() // nothrow - { } - - // Called when _M_use_count drops to zero, to release the resources - // managed by *this. - virtual void - _M_dispose() = 0; // nothrow - - // Called when _M_weak_count drops to zero. - virtual void - _M_destroy() // nothrow - { delete this; } - - virtual void* - _M_get_deleter(const std::type_info&) = 0; - - void - _M_add_ref_copy() - { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } - - void - _M_add_ref_lock(); - - void - _M_release() // nothrow - { - // Be race-detector-friendly. For more info see bits/c++config. - _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_use_count); - if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) - { - _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_use_count); - _M_dispose(); - // There must be a memory barrier between dispose() and destroy() - // to ensure that the effects of dispose() are observed in the - // thread that runs destroy(). - // See http://gcc.gnu.org/ml/libstdc++/2005-11/msg00136.html - if (_Mutex_base<_Lp>::_S_need_barriers) - { - __atomic_thread_fence (__ATOMIC_ACQ_REL); - } - - // Be race-detector-friendly. For more info see bits/c++config. - _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count); - if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, - -1) == 1) - { - _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count); - _M_destroy(); - } - } - } - - void - _M_weak_add_ref() // nothrow - { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } - - void - _M_weak_release() // nothrow - { - // Be race-detector-friendly. For more info see bits/c++config. - _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count); - if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) - { - _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count); - if (_Mutex_base<_Lp>::_S_need_barriers) - { - // See _M_release(), - // destroy() must observe results of dispose() - __atomic_thread_fence (__ATOMIC_ACQ_REL); - } - _M_destroy(); - } - } - - long - _M_get_use_count() const // nothrow - { - // No memory barrier is used here so there is no synchronization - // with other threads. - return const_cast(_M_use_count); - } - - private: - _Sp_counted_base(_Sp_counted_base const&); - _Sp_counted_base& operator=(_Sp_counted_base const&); - - _Atomic_word _M_use_count; // #shared - _Atomic_word _M_weak_count; // #weak + (#shared != 0) - }; - - template<> - inline void - _Sp_counted_base<_S_single>:: - _M_add_ref_lock() - { - if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) - { - _M_use_count = 0; - __throw_bad_weak_ptr(); - } - } - - template<> - inline void - _Sp_counted_base<_S_mutex>:: - _M_add_ref_lock() - { - __gnu_cxx::__scoped_lock sentry(*this); - if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) - { - _M_use_count = 0; - __throw_bad_weak_ptr(); - } - } - - template<> - inline void - _Sp_counted_base<_S_atomic>:: - _M_add_ref_lock() - { - // Perform lock-free add-if-not-zero operation. - _Atomic_word __count = _M_use_count; - do - { - if (__count == 0) - __throw_bad_weak_ptr(); - // Replace the current counter value with the old value + 1, as - // long as it's not changed meanwhile. - } - while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, - true, __ATOMIC_ACQ_REL, - __ATOMIC_RELAXED)); - } - - template - class _Sp_counted_base_impl - : public _Sp_counted_base<_Lp> - { - public: - // Precondition: __d(__p) must not throw. - _Sp_counted_base_impl(_Ptr __p, _Deleter __d) - : _M_ptr(__p), _M_del(__d) { } - - virtual void - _M_dispose() // nothrow - { _M_del(_M_ptr); } - - virtual void* - _M_get_deleter(const std::type_info& __ti) - { -#if __cpp_rtti - return __ti == typeid(_Deleter) ? &_M_del : 0; -#else - return 0; -#endif - } - - private: - _Sp_counted_base_impl(const _Sp_counted_base_impl&); - _Sp_counted_base_impl& operator=(const _Sp_counted_base_impl&); - - _Ptr _M_ptr; // copy constructor must not throw - _Deleter _M_del; // copy constructor must not throw - }; - - template<_Lock_policy _Lp = __default_lock_policy> - class __weak_count; - - template - struct _Sp_deleter - { - typedef void result_type; - typedef _Tp* argument_type; - void operator()(_Tp* __p) const { delete __p; } - }; - - template<_Lock_policy _Lp = __default_lock_policy> - class __shared_count - { - public: - __shared_count() - : _M_pi(0) // nothrow - { } - - template - __shared_count(_Ptr __p) : _M_pi(0) - { - __try - { - typedef typename std::tr1::remove_pointer<_Ptr>::type _Tp; - _M_pi = new _Sp_counted_base_impl<_Ptr, _Sp_deleter<_Tp>, _Lp>( - __p, _Sp_deleter<_Tp>()); - } - __catch(...) - { - delete __p; - __throw_exception_again; - } - } - - template - __shared_count(_Ptr __p, _Deleter __d) : _M_pi(0) - { - __try - { - _M_pi = new _Sp_counted_base_impl<_Ptr, _Deleter, _Lp>(__p, __d); - } - __catch(...) - { - __d(__p); // Call _Deleter on __p. - __throw_exception_again; - } - } - - // Special case for auto_ptr<_Tp> to provide the strong guarantee. - template - explicit - __shared_count(std::auto_ptr<_Tp>& __r) - : _M_pi(new _Sp_counted_base_impl<_Tp*, - _Sp_deleter<_Tp>, _Lp >(__r.get(), _Sp_deleter<_Tp>())) - { __r.release(); } - - // Throw bad_weak_ptr when __r._M_get_use_count() == 0. - explicit - __shared_count(const __weak_count<_Lp>& __r); - - ~__shared_count() // nothrow - { - if (_M_pi != 0) - _M_pi->_M_release(); - } - - __shared_count(const __shared_count& __r) - : _M_pi(__r._M_pi) // nothrow - { - if (_M_pi != 0) - _M_pi->_M_add_ref_copy(); - } - - __shared_count& - operator=(const __shared_count& __r) // nothrow - { - _Sp_counted_base<_Lp>* __tmp = __r._M_pi; - if (__tmp != _M_pi) - { - if (__tmp != 0) - __tmp->_M_add_ref_copy(); - if (_M_pi != 0) - _M_pi->_M_release(); - _M_pi = __tmp; - } - return *this; - } - - void - _M_swap(__shared_count& __r) // nothrow - { - _Sp_counted_base<_Lp>* __tmp = __r._M_pi; - __r._M_pi = _M_pi; - _M_pi = __tmp; - } - - long - _M_get_use_count() const // nothrow - { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } - - bool - _M_unique() const // nothrow - { return this->_M_get_use_count() == 1; } - - friend inline bool - operator==(const __shared_count& __a, const __shared_count& __b) - { return __a._M_pi == __b._M_pi; } - - friend inline bool - operator<(const __shared_count& __a, const __shared_count& __b) - { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); } - - void* - _M_get_deleter(const std::type_info& __ti) const - { return _M_pi ? _M_pi->_M_get_deleter(__ti) : 0; } - - private: - friend class __weak_count<_Lp>; - - _Sp_counted_base<_Lp>* _M_pi; - }; - - - template<_Lock_policy _Lp> - class __weak_count - { - public: - __weak_count() - : _M_pi(0) // nothrow - { } - - __weak_count(const __shared_count<_Lp>& __r) - : _M_pi(__r._M_pi) // nothrow - { - if (_M_pi != 0) - _M_pi->_M_weak_add_ref(); - } - - __weak_count(const __weak_count<_Lp>& __r) - : _M_pi(__r._M_pi) // nothrow - { - if (_M_pi != 0) - _M_pi->_M_weak_add_ref(); - } - - ~__weak_count() // nothrow - { - if (_M_pi != 0) - _M_pi->_M_weak_release(); - } - - __weak_count<_Lp>& - operator=(const __shared_count<_Lp>& __r) // nothrow - { - _Sp_counted_base<_Lp>* __tmp = __r._M_pi; - if (__tmp != 0) - __tmp->_M_weak_add_ref(); - if (_M_pi != 0) - _M_pi->_M_weak_release(); - _M_pi = __tmp; - return *this; - } - - __weak_count<_Lp>& - operator=(const __weak_count<_Lp>& __r) // nothrow - { - _Sp_counted_base<_Lp>* __tmp = __r._M_pi; - if (__tmp != 0) - __tmp->_M_weak_add_ref(); - if (_M_pi != 0) - _M_pi->_M_weak_release(); - _M_pi = __tmp; - return *this; - } - - void - _M_swap(__weak_count<_Lp>& __r) // nothrow - { - _Sp_counted_base<_Lp>* __tmp = __r._M_pi; - __r._M_pi = _M_pi; - _M_pi = __tmp; - } - - long - _M_get_use_count() const // nothrow - { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } - - friend inline bool - operator==(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b) - { return __a._M_pi == __b._M_pi; } - - friend inline bool - operator<(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b) - { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); } - - private: - friend class __shared_count<_Lp>; - - _Sp_counted_base<_Lp>* _M_pi; - }; - - // now that __weak_count is defined we can define this constructor: - template<_Lock_policy _Lp> - inline - __shared_count<_Lp>:: - __shared_count(const __weak_count<_Lp>& __r) - : _M_pi(__r._M_pi) - { - if (_M_pi != 0) - _M_pi->_M_add_ref_lock(); - else - __throw_bad_weak_ptr(); - } - - // Forward declarations. - template - class __shared_ptr; - - template - class __weak_ptr; - - template - class __enable_shared_from_this; - - template - class shared_ptr; - - template - class weak_ptr; - - template - class enable_shared_from_this; - - // Support for enable_shared_from_this. - - // Friend of __enable_shared_from_this. - template<_Lock_policy _Lp, typename _Tp1, typename _Tp2> - void - __enable_shared_from_this_helper(const __shared_count<_Lp>&, - const __enable_shared_from_this<_Tp1, - _Lp>*, const _Tp2*); - - // Friend of enable_shared_from_this. - template - void - __enable_shared_from_this_helper(const __shared_count<>&, - const enable_shared_from_this<_Tp1>*, - const _Tp2*); - - template<_Lock_policy _Lp> - inline void - __enable_shared_from_this_helper(const __shared_count<_Lp>&, ...) - { } - - - struct __static_cast_tag { }; - struct __const_cast_tag { }; - struct __dynamic_cast_tag { }; - - // A smart pointer with reference-counted copy semantics. The - // object pointed to is deleted when the last shared_ptr pointing to - // it is destroyed or reset. - template - class __shared_ptr - { - public: - typedef _Tp element_type; - - __shared_ptr() - : _M_ptr(0), _M_refcount() // never throws - { } - - template - explicit - __shared_ptr(_Tp1* __p) - : _M_ptr(__p), _M_refcount(__p) - { - __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) - typedef int _IsComplete[sizeof(_Tp1)]; - __enable_shared_from_this_helper(_M_refcount, __p, __p); - } - - template - __shared_ptr(_Tp1* __p, _Deleter __d) - : _M_ptr(__p), _M_refcount(__p, __d) - { - __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) - // TODO requires _Deleter CopyConstructible and __d(__p) well-formed - __enable_shared_from_this_helper(_M_refcount, __p, __p); - } - - // generated copy constructor, assignment, destructor are fine. - - template - __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r) - : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws - { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) } - - template - explicit - __shared_ptr(const __weak_ptr<_Tp1, _Lp>& __r) - : _M_refcount(__r._M_refcount) // may throw - { - __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) - // It is now safe to copy __r._M_ptr, as _M_refcount(__r._M_refcount) - // did not throw. - _M_ptr = __r._M_ptr; - } - -#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED - // Postcondition: use_count() == 1 and __r.get() == 0 - template - explicit - __shared_ptr(std::auto_ptr<_Tp1>& __r) - : _M_ptr(__r.get()), _M_refcount() - { // TODO requries delete __r.release() well-formed - __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) - typedef int _IsComplete[sizeof(_Tp1)]; - _Tp1* __tmp = __r.get(); - _M_refcount = __shared_count<_Lp>(__r); - __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp); - } - -#endif - - template - __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __static_cast_tag) - : _M_ptr(static_cast(__r._M_ptr)), - _M_refcount(__r._M_refcount) - { } - - template - __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __const_cast_tag) - : _M_ptr(const_cast(__r._M_ptr)), - _M_refcount(__r._M_refcount) - { } - - template - __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __dynamic_cast_tag) - : _M_ptr(dynamic_cast(__r._M_ptr)), - _M_refcount(__r._M_refcount) - { - if (_M_ptr == 0) // need to allocate new counter -- the cast failed - _M_refcount = __shared_count<_Lp>(); - } - - template - __shared_ptr& - operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws - { - _M_ptr = __r._M_ptr; - _M_refcount = __r._M_refcount; // __shared_count::op= doesn't throw - return *this; - } - -#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED - template - __shared_ptr& - operator=(std::auto_ptr<_Tp1>& __r) - { - __shared_ptr(__r).swap(*this); - return *this; - } -#endif - - void - reset() // never throws - { __shared_ptr().swap(*this); } - - template - void - reset(_Tp1* __p) // _Tp1 must be complete. - { - // Catch self-reset errors. - _GLIBCXX_DEBUG_ASSERT(__p == 0 || __p != _M_ptr); - __shared_ptr(__p).swap(*this); - } - - template - void - reset(_Tp1* __p, _Deleter __d) - { __shared_ptr(__p, __d).swap(*this); } - - // Allow class instantiation when _Tp is [cv-qual] void. - typename std::tr1::add_reference<_Tp>::type - operator*() const // never throws - { - _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); - return *_M_ptr; - } - - _Tp* - operator->() const // never throws - { - _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); - return _M_ptr; - } - - _Tp* - get() const // never throws - { return _M_ptr; } - - // Implicit conversion to "bool" - private: - typedef _Tp* __shared_ptr::*__unspecified_bool_type; - - public: - operator __unspecified_bool_type() const // never throws - { return _M_ptr == 0 ? 0 : &__shared_ptr::_M_ptr; } - - bool - unique() const // never throws - { return _M_refcount._M_unique(); } - - long - use_count() const // never throws - { return _M_refcount._M_get_use_count(); } - - void - swap(__shared_ptr<_Tp, _Lp>& __other) // never throws - { - std::swap(_M_ptr, __other._M_ptr); - _M_refcount._M_swap(__other._M_refcount); - } - - private: - void* - _M_get_deleter(const std::type_info& __ti) const - { return _M_refcount._M_get_deleter(__ti); } - - template - bool - _M_less(const __shared_ptr<_Tp1, _Lp1>& __rhs) const - { return _M_refcount < __rhs._M_refcount; } - - template friend class __shared_ptr; - template friend class __weak_ptr; - - template - friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&); - - // Friends injected into enclosing namespace and found by ADL: - template - friend inline bool - operator==(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) - { return __a.get() == __b.get(); } - - template - friend inline bool - operator!=(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) - { return __a.get() != __b.get(); } - - template - friend inline bool - operator<(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) - { return __a._M_less(__b); } - - _Tp* _M_ptr; // Contained pointer. - __shared_count<_Lp> _M_refcount; // Reference counter. - }; - - // 2.2.3.8 shared_ptr specialized algorithms. - template - inline void - swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) - { __a.swap(__b); } - - // 2.2.3.9 shared_ptr casts - /* The seemingly equivalent - * shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get())) - * will eventually result in undefined behaviour, - * attempting to delete the same object twice. - */ - template - inline __shared_ptr<_Tp, _Lp> - static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) - { return __shared_ptr<_Tp, _Lp>(__r, __static_cast_tag()); } - - /* The seemingly equivalent - * shared_ptr<_Tp, _Lp>(const_cast<_Tp*>(__r.get())) - * will eventually result in undefined behaviour, - * attempting to delete the same object twice. - */ - template - inline __shared_ptr<_Tp, _Lp> - const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) - { return __shared_ptr<_Tp, _Lp>(__r, __const_cast_tag()); } - - /* The seemingly equivalent - * shared_ptr<_Tp, _Lp>(dynamic_cast<_Tp*>(__r.get())) - * will eventually result in undefined behaviour, - * attempting to delete the same object twice. - */ - template - inline __shared_ptr<_Tp, _Lp> - dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) - { return __shared_ptr<_Tp, _Lp>(__r, __dynamic_cast_tag()); } - - // 2.2.3.7 shared_ptr I/O - template - std::basic_ostream<_Ch, _Tr>& - operator<<(std::basic_ostream<_Ch, _Tr>& __os, - const __shared_ptr<_Tp, _Lp>& __p) - { - __os << __p.get(); - return __os; - } - - // 2.2.3.10 shared_ptr get_deleter (experimental) - template - inline _Del* - get_deleter(const __shared_ptr<_Tp, _Lp>& __p) - { -#if __cpp_rtti - return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); -#else - return 0; -#endif - } - - - template - class __weak_ptr - { - public: - typedef _Tp element_type; - - __weak_ptr() - : _M_ptr(0), _M_refcount() // never throws - { } - - // Generated copy constructor, assignment, destructor are fine. - - // The "obvious" converting constructor implementation: - // - // template - // __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) - // : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws - // { } - // - // has a serious problem. - // - // __r._M_ptr may already have been invalidated. The _M_ptr(__r._M_ptr) - // conversion may require access to *__r._M_ptr (virtual inheritance). - // - // It is not possible to avoid spurious access violations since - // in multithreaded programs __r._M_ptr may be invalidated at any point. - template - __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) - : _M_refcount(__r._M_refcount) // never throws - { - __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) - _M_ptr = __r.lock().get(); - } - - template - __weak_ptr(const __shared_ptr<_Tp1, _Lp>& __r) - : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws - { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) } - - template - __weak_ptr& - operator=(const __weak_ptr<_Tp1, _Lp>& __r) // never throws - { - _M_ptr = __r.lock().get(); - _M_refcount = __r._M_refcount; - return *this; - } - - template - __weak_ptr& - operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws - { - _M_ptr = __r._M_ptr; - _M_refcount = __r._M_refcount; - return *this; - } - - __shared_ptr<_Tp, _Lp> - lock() const // never throws - { -#ifdef __GTHREADS - // Optimization: avoid throw overhead. - if (expired()) - return __shared_ptr(); - - __try - { - return __shared_ptr(*this); - } - __catch(const bad_weak_ptr&) - { - // Q: How can we get here? - // A: Another thread may have invalidated r after the - // use_count test above. - return __shared_ptr(); - } - -#else - // Optimization: avoid try/catch overhead when single threaded. - return expired() ? __shared_ptr() - : __shared_ptr(*this); - -#endif - } // XXX MT - - long - use_count() const // never throws - { return _M_refcount._M_get_use_count(); } - - bool - expired() const // never throws - { return _M_refcount._M_get_use_count() == 0; } - - void - reset() // never throws - { __weak_ptr().swap(*this); } - - void - swap(__weak_ptr& __s) // never throws - { - std::swap(_M_ptr, __s._M_ptr); - _M_refcount._M_swap(__s._M_refcount); - } - - private: - // Used by __enable_shared_from_this. - void - _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) - { - _M_ptr = __ptr; - _M_refcount = __refcount; - } - - template - bool - _M_less(const __weak_ptr<_Tp1, _Lp>& __rhs) const - { return _M_refcount < __rhs._M_refcount; } - - template friend class __shared_ptr; - template friend class __weak_ptr; - friend class __enable_shared_from_this<_Tp, _Lp>; - friend class enable_shared_from_this<_Tp>; - - // Friend injected into namespace and found by ADL. - template - friend inline bool - operator<(const __weak_ptr& __lhs, const __weak_ptr<_Tp1, _Lp>& __rhs) - { return __lhs._M_less(__rhs); } - - _Tp* _M_ptr; // Contained pointer. - __weak_count<_Lp> _M_refcount; // Reference counter. - }; - - // 2.2.4.7 weak_ptr specialized algorithms. - template - inline void - swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) - { __a.swap(__b); } - - - template - class __enable_shared_from_this - { - protected: - __enable_shared_from_this() { } - - __enable_shared_from_this(const __enable_shared_from_this&) { } - - __enable_shared_from_this& - operator=(const __enable_shared_from_this&) - { return *this; } - - ~__enable_shared_from_this() { } - - public: - __shared_ptr<_Tp, _Lp> - shared_from_this() - { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } - - __shared_ptr - shared_from_this() const - { return __shared_ptr(this->_M_weak_this); } - - private: - template - void - _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const - { _M_weak_this._M_assign(__p, __n); } - - template - friend void - __enable_shared_from_this_helper(const __shared_count<_Lp>& __pn, - const __enable_shared_from_this* __pe, - const _Tp1* __px) - { - if (__pe != 0) - __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn); - } - - mutable __weak_ptr<_Tp, _Lp> _M_weak_this; - }; - - - // The actual shared_ptr, with forwarding constructors and - // assignment operators. - template - class shared_ptr - : public __shared_ptr<_Tp> - { - public: - shared_ptr() - : __shared_ptr<_Tp>() { } - - template - explicit - shared_ptr(_Tp1* __p) - : __shared_ptr<_Tp>(__p) { } - - template - shared_ptr(_Tp1* __p, _Deleter __d) - : __shared_ptr<_Tp>(__p, __d) { } - - template - shared_ptr(const shared_ptr<_Tp1>& __r) - : __shared_ptr<_Tp>(__r) { } - - template - explicit - shared_ptr(const weak_ptr<_Tp1>& __r) - : __shared_ptr<_Tp>(__r) { } - -#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED - template - explicit - shared_ptr(std::auto_ptr<_Tp1>& __r) - : __shared_ptr<_Tp>(__r) { } -#endif - - template - shared_ptr(const shared_ptr<_Tp1>& __r, __static_cast_tag) - : __shared_ptr<_Tp>(__r, __static_cast_tag()) { } - - template - shared_ptr(const shared_ptr<_Tp1>& __r, __const_cast_tag) - : __shared_ptr<_Tp>(__r, __const_cast_tag()) { } - - template - shared_ptr(const shared_ptr<_Tp1>& __r, __dynamic_cast_tag) - : __shared_ptr<_Tp>(__r, __dynamic_cast_tag()) { } - - template - shared_ptr& - operator=(const shared_ptr<_Tp1>& __r) // never throws - { - this->__shared_ptr<_Tp>::operator=(__r); - return *this; - } - -#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED - template - shared_ptr& - operator=(std::auto_ptr<_Tp1>& __r) - { - this->__shared_ptr<_Tp>::operator=(__r); - return *this; - } -#endif - }; - - // 2.2.3.8 shared_ptr specialized algorithms. - template - inline void - swap(__shared_ptr<_Tp>& __a, __shared_ptr<_Tp>& __b) - { __a.swap(__b); } - - template - inline shared_ptr<_Tp> - static_pointer_cast(const shared_ptr<_Tp1>& __r) - { return shared_ptr<_Tp>(__r, __static_cast_tag()); } - - template - inline shared_ptr<_Tp> - const_pointer_cast(const shared_ptr<_Tp1>& __r) - { return shared_ptr<_Tp>(__r, __const_cast_tag()); } - - template - inline shared_ptr<_Tp> - dynamic_pointer_cast(const shared_ptr<_Tp1>& __r) - { return shared_ptr<_Tp>(__r, __dynamic_cast_tag()); } - - - // The actual weak_ptr, with forwarding constructors and - // assignment operators. - template - class weak_ptr - : public __weak_ptr<_Tp> - { - public: - weak_ptr() - : __weak_ptr<_Tp>() { } - - template - weak_ptr(const weak_ptr<_Tp1>& __r) - : __weak_ptr<_Tp>(__r) { } - - template - weak_ptr(const shared_ptr<_Tp1>& __r) - : __weak_ptr<_Tp>(__r) { } - - template - weak_ptr& - operator=(const weak_ptr<_Tp1>& __r) // never throws - { - this->__weak_ptr<_Tp>::operator=(__r); - return *this; - } - - template - weak_ptr& - operator=(const shared_ptr<_Tp1>& __r) // never throws - { - this->__weak_ptr<_Tp>::operator=(__r); - return *this; - } - - shared_ptr<_Tp> - lock() const // never throws - { -#ifdef __GTHREADS - if (this->expired()) - return shared_ptr<_Tp>(); - - __try - { - return shared_ptr<_Tp>(*this); - } - __catch(const bad_weak_ptr&) - { - return shared_ptr<_Tp>(); - } -#else - return this->expired() ? shared_ptr<_Tp>() - : shared_ptr<_Tp>(*this); -#endif - } - }; - - template - class enable_shared_from_this - { - protected: - enable_shared_from_this() { } - - enable_shared_from_this(const enable_shared_from_this&) { } - - enable_shared_from_this& - operator=(const enable_shared_from_this&) - { return *this; } - - ~enable_shared_from_this() { } - - public: - shared_ptr<_Tp> - shared_from_this() - { return shared_ptr<_Tp>(this->_M_weak_this); } - - shared_ptr - shared_from_this() const - { return shared_ptr(this->_M_weak_this); } - - private: - template - void - _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const - { _M_weak_this._M_assign(__p, __n); } - - template - friend void - __enable_shared_from_this_helper(const __shared_count<>& __pn, - const enable_shared_from_this* __pe, - const _Tp1* __px) - { - if (__pe != 0) - __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn); - } - - mutable weak_ptr<_Tp> _M_weak_this; - }; - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _TR1_SHARED_PTR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdarg.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdarg.h deleted file mode 100644 index 759729e6f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdarg.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 stdarg.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/stdarg.h - * This is a TR1 C++ Library header. - */ - -#ifndef _TR1_STDARG_H -#define _TR1_STDARG_H 1 - -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdbool.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdbool.h deleted file mode 100644 index 1e74c139b..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdbool.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 stdbool.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/stdbool.h - * This is a TR1 C++ Library header. - */ - -#ifndef _TR1_STDBOOL_H -#define _TR1_STDBOOL_H 1 - -#include - -#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdlib.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdlib.h deleted file mode 100644 index 7b8080abb..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdlib.h +++ /dev/null @@ -1,52 +0,0 @@ -// TR1 stdlib.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/stdlib.h - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_STDLIB_H -#define _GLIBCXX_TR1_STDLIB_H 1 - -#include - -#if _GLIBCXX_HOSTED - -#if _GLIBCXX_USE_C99_STDLIB - -using std::tr1::atoll; -using std::tr1::strtoll; -using std::tr1::strtoull; - -using std::tr1::abs; -#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC -using std::tr1::div; -#endif - -#endif - -#endif - -#endif // _GLIBCXX_TR1_STDLIB_H - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/tgmath.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/tgmath.h deleted file mode 100644 index c782df8fc..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/tgmath.h +++ /dev/null @@ -1,34 +0,0 @@ -// TR1 tgmath.h -*- C++ -*- - -// Copyright (C) 2006-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/tgmath.h - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_TGMATH_H -#define _GLIBCXX_TR1_TGMATH_H 1 - -#include - -#endif // _GLIBCXX_TR1_TGMATH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/tuple b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/tuple deleted file mode 100644 index fe53a8b99..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/tuple +++ /dev/null @@ -1,426 +0,0 @@ -// class template tuple -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/tuple -* This is a TR1 C++ Library header. -*/ - -// Chris Jefferson -// Variadic Templates support by Douglas Gregor - -#ifndef _GLIBCXX_TR1_TUPLE -#define _GLIBCXX_TR1_TUPLE 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // Adds a const reference to a non-reference type. - template - struct __add_c_ref - { typedef const _Tp& type; }; - - template - struct __add_c_ref<_Tp&> - { typedef _Tp& type; }; - - // Adds a reference to a non-reference type. - template - struct __add_ref - { typedef _Tp& type; }; - - template - struct __add_ref<_Tp&> - { typedef _Tp& type; }; - - /** - * Contains the actual implementation of the @c tuple template, stored - * as a recursive inheritance hierarchy from the first element (most - * derived class) to the last (least derived class). The @c Idx - * parameter gives the 0-based index of the element stored at this - * point in the hierarchy; we use it to implement a constant-time - * get() operation. - */ - template - struct _Tuple_impl; - - /** - * Zero-element tuple implementation. This is the basis case for the - * inheritance recursion. - */ - template - struct _Tuple_impl<_Idx> { }; - - /** - * Recursive tuple implementation. Here we store the @c Head element - * and derive from a @c Tuple_impl containing the remaining elements - * (which contains the @c Tail). - */ - template - struct _Tuple_impl<_Idx, _Head, _Tail...> - : public _Tuple_impl<_Idx + 1, _Tail...> - { - typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; - - _Head _M_head; - - _Inherited& _M_tail() { return *this; } - const _Inherited& _M_tail() const { return *this; } - - _Tuple_impl() : _Inherited(), _M_head() { } - - explicit - _Tuple_impl(typename __add_c_ref<_Head>::type __head, - typename __add_c_ref<_Tail>::type... __tail) - : _Inherited(__tail...), _M_head(__head) { } - - template - _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) - : _Inherited(__in._M_tail()), _M_head(__in._M_head) { } - - _Tuple_impl(const _Tuple_impl& __in) - : _Inherited(__in._M_tail()), _M_head(__in._M_head) { } - - template - _Tuple_impl& - operator=(const _Tuple_impl<_Idx, _UElements...>& __in) - { - _M_head = __in._M_head; - _M_tail() = __in._M_tail(); - return *this; - } - - _Tuple_impl& - operator=(const _Tuple_impl& __in) - { - _M_head = __in._M_head; - _M_tail() = __in._M_tail(); - return *this; - } - }; - - template - class tuple : public _Tuple_impl<0, _Elements...> - { - typedef _Tuple_impl<0, _Elements...> _Inherited; - - public: - tuple() : _Inherited() { } - - explicit - tuple(typename __add_c_ref<_Elements>::type... __elements) - : _Inherited(__elements...) { } - - template - tuple(const tuple<_UElements...>& __in) - : _Inherited(__in) { } - - tuple(const tuple& __in) - : _Inherited(__in) { } - - template - tuple& - operator=(const tuple<_UElements...>& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - tuple& - operator=(const tuple& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - }; - - template<> class tuple<> { }; - - // 2-element tuple, with construction and assignment from a pair. - template - class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> - { - typedef _Tuple_impl<0, _T1, _T2> _Inherited; - - public: - tuple() : _Inherited() { } - - explicit - tuple(typename __add_c_ref<_T1>::type __a1, - typename __add_c_ref<_T2>::type __a2) - : _Inherited(__a1, __a2) { } - - template - tuple(const tuple<_U1, _U2>& __in) - : _Inherited(__in) { } - - tuple(const tuple& __in) - : _Inherited(__in) { } - - template - tuple(const pair<_U1, _U2>& __in) - : _Inherited(_Tuple_impl<0, - typename __add_c_ref<_U1>::type, - typename __add_c_ref<_U2>::type>(__in.first, - __in.second)) - { } - - template - tuple& - operator=(const tuple<_U1, _U2>& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - tuple& - operator=(const tuple& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - template - tuple& - operator=(const pair<_U1, _U2>& __in) - { - this->_M_head = __in.first; - this->_M_tail()._M_head = __in.second; - return *this; - } - }; - - - /// Gives the type of the ith element of a given tuple type. - template - struct tuple_element; - - /** - * Recursive case for tuple_element: strip off the first element in - * the tuple and retrieve the (i-1)th element of the remaining tuple. - */ - template - struct tuple_element<__i, tuple<_Head, _Tail...> > - : tuple_element<__i - 1, tuple<_Tail...> > { }; - - /** - * Basis case for tuple_element: The first element is the one we're seeking. - */ - template - struct tuple_element<0, tuple<_Head, _Tail...> > - { - typedef _Head type; - }; - - /// Finds the size of a given tuple type. - template - struct tuple_size; - - /// class tuple_size - template - struct tuple_size > - { - static const int value = sizeof...(_Elements); - }; - - template - const int tuple_size >::value; - - template - inline typename __add_ref<_Head>::type - __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) - { - return __t._M_head; - } - - template - inline typename __add_c_ref<_Head>::type - __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) - { - return __t._M_head; - } - - // Return a reference (const reference) to the ith element of a tuple. - // Any const or non-const ref elements are returned with their original type. - template - inline typename __add_ref< - typename tuple_element<__i, tuple<_Elements...> >::type - >::type - get(tuple<_Elements...>& __t) - { - return __get_helper<__i>(__t); - } - - template - inline typename __add_c_ref< - typename tuple_element<__i, tuple<_Elements...> >::type - >::type - get(const tuple<_Elements...>& __t) - { - return __get_helper<__i>(__t); - } - - // This class helps construct the various comparison operations on tuples - template - struct __tuple_compare; - - template - struct __tuple_compare<0, __i, __j, _Tp, _Up> - { - static bool __eq(const _Tp& __t, const _Up& __u) - { - return (get<__i>(__t) == get<__i>(__u) && - __tuple_compare<0, __i+1, __j, _Tp, _Up>::__eq(__t, __u)); - } - - static bool __less(const _Tp& __t, const _Up& __u) - { - return ((get<__i>(__t) < get<__i>(__u)) - || !(get<__i>(__u) < get<__i>(__t)) && - __tuple_compare<0, __i+1, __j, _Tp, _Up>::__less(__t, __u)); - } - }; - - template - struct __tuple_compare<0, __i, __i, _Tp, _Up> - { - static bool __eq(const _Tp&, const _Up&) - { return true; } - - static bool __less(const _Tp&, const _Up&) - { return false; } - }; - - template - bool - operator==(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { - typedef tuple<_TElements...> _Tp; - typedef tuple<_UElements...> _Up; - return (__tuple_compare::value - tuple_size<_Up>::value, - 0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u)); - } - - template - bool - operator<(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { - typedef tuple<_TElements...> _Tp; - typedef tuple<_UElements...> _Up; - return (__tuple_compare::value - tuple_size<_Up>::value, - 0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u)); - } - - template - inline bool - operator!=(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return !(__t == __u); } - - template - inline bool - operator>(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return __u < __t; } - - template - inline bool - operator<=(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return !(__u < __t); } - - template - inline bool - operator>=(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return !(__t < __u); } - - template - class reference_wrapper; - - // Helper which adds a reference to a type when given a reference_wrapper - template - struct __strip_reference_wrapper - { - typedef _Tp __type; - }; - - template - struct __strip_reference_wrapper > - { - typedef _Tp& __type; - }; - - template - struct __strip_reference_wrapper > - { - typedef _Tp& __type; - }; - - template - inline tuple::__type...> - make_tuple(_Elements... __args) - { - typedef tuple::__type...> - __result_type; - return __result_type(__args...); - } - - template - inline tuple<_Elements&...> - tie(_Elements&... __args) - { - return tuple<_Elements&...>(__args...); - } - - // A class (and instance) which can be used in 'tie' when an element - // of a tuple is not required - struct _Swallow_assign - { - template - _Swallow_assign& - operator=(const _Tp&) - { return *this; } - }; - - // TODO: Put this in some kind of shared file. - namespace - { - _Swallow_assign ignore; - }; // anonymous namespace - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_TUPLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/type_traits deleted file mode 100644 index abdb83b48..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/type_traits +++ /dev/null @@ -1,687 +0,0 @@ -// TR1 type_traits -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/type_traits - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_TYPE_TRAITS -#define _GLIBCXX_TR1_TYPE_TRAITS 1 - -#pragma GCC system_header - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup metaprogramming - * @{ - */ - - struct __sfinae_types - { - typedef char __one; - typedef struct { char __arr[2]; } __two; - }; - -#define _DEFINE_SPEC_0_HELPER \ - template<> - -#define _DEFINE_SPEC_1_HELPER \ - template - -#define _DEFINE_SPEC_2_HELPER \ - template - -#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value) \ - _DEFINE_SPEC_##_Order##_HELPER \ - struct _Trait<_Type> \ - : public integral_constant { }; - - // helper classes [4.3]. - - /// integral_constant - template - struct integral_constant - { - static const _Tp value = __v; - typedef _Tp value_type; - typedef integral_constant<_Tp, __v> type; - }; - - /// typedef for true_type - typedef integral_constant true_type; - - /// typedef for false_type - typedef integral_constant false_type; - - template - const _Tp integral_constant<_Tp, __v>::value; - - /// remove_cv - template - struct remove_cv; - - template - struct __is_void_helper - : public false_type { }; - _DEFINE_SPEC(0, __is_void_helper, void, true) - - // primary type categories [4.5.1]. - - /// is_void - template - struct is_void - : public integral_constant::type>::value)> - { }; - - template - struct __is_integral_helper - : public false_type { }; - _DEFINE_SPEC(0, __is_integral_helper, bool, true) - _DEFINE_SPEC(0, __is_integral_helper, char, true) - _DEFINE_SPEC(0, __is_integral_helper, signed char, true) - _DEFINE_SPEC(0, __is_integral_helper, unsigned char, true) -#ifdef _GLIBCXX_USE_WCHAR_T - _DEFINE_SPEC(0, __is_integral_helper, wchar_t, true) -#endif - _DEFINE_SPEC(0, __is_integral_helper, short, true) - _DEFINE_SPEC(0, __is_integral_helper, unsigned short, true) - _DEFINE_SPEC(0, __is_integral_helper, int, true) - _DEFINE_SPEC(0, __is_integral_helper, unsigned int, true) - _DEFINE_SPEC(0, __is_integral_helper, long, true) - _DEFINE_SPEC(0, __is_integral_helper, unsigned long, true) - _DEFINE_SPEC(0, __is_integral_helper, long long, true) - _DEFINE_SPEC(0, __is_integral_helper, unsigned long long, true) - - /// is_integral - template - struct is_integral - : public integral_constant::type>::value)> - { }; - - template - struct __is_floating_point_helper - : public false_type { }; - _DEFINE_SPEC(0, __is_floating_point_helper, float, true) - _DEFINE_SPEC(0, __is_floating_point_helper, double, true) - _DEFINE_SPEC(0, __is_floating_point_helper, long double, true) - - /// is_floating_point - template - struct is_floating_point - : public integral_constant::type>::value)> - { }; - - /// is_array - template - struct is_array - : public false_type { }; - - template - struct is_array<_Tp[_Size]> - : public true_type { }; - - template - struct is_array<_Tp[]> - : public true_type { }; - - template - struct __is_pointer_helper - : public false_type { }; - _DEFINE_SPEC(1, __is_pointer_helper, _Tp*, true) - - /// is_pointer - template - struct is_pointer - : public integral_constant::type>::value)> - { }; - - /// is_reference - template - struct is_reference; - - /// is_function - template - struct is_function; - - template - struct __is_member_object_pointer_helper - : public false_type { }; - _DEFINE_SPEC(2, __is_member_object_pointer_helper, _Tp _Cp::*, - !is_function<_Tp>::value) - - /// is_member_object_pointer - template - struct is_member_object_pointer - : public integral_constant::type>::value)> - { }; - - template - struct __is_member_function_pointer_helper - : public false_type { }; - _DEFINE_SPEC(2, __is_member_function_pointer_helper, _Tp _Cp::*, - is_function<_Tp>::value) - - /// is_member_function_pointer - template - struct is_member_function_pointer - : public integral_constant::type>::value)> - { }; - - /// is_enum - template - struct is_enum - : public integral_constant - { }; - - /// is_union - template - struct is_union - : public integral_constant - { }; - - /// is_class - template - struct is_class - : public integral_constant - { }; - - /// is_function - template - struct is_function - : public false_type { }; - template - struct is_function<_Res(_ArgTypes...)> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes......)> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes...) const> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes......) const> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes...) volatile> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes......) volatile> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes...) const volatile> - : public true_type { }; - template - struct is_function<_Res(_ArgTypes......) const volatile> - : public true_type { }; - - // composite type traits [4.5.2]. - - /// is_arithmetic - template - struct is_arithmetic - : public integral_constant::value - || is_floating_point<_Tp>::value)> - { }; - - /// is_fundamental - template - struct is_fundamental - : public integral_constant::value - || is_void<_Tp>::value)> - { }; - - /// is_object - template - struct is_object - : public integral_constant::value - || is_reference<_Tp>::value - || is_void<_Tp>::value)> - { }; - - /// is_member_pointer - template - struct is_member_pointer; - - /// is_scalar - template - struct is_scalar - : public integral_constant::value - || is_enum<_Tp>::value - || is_pointer<_Tp>::value - || is_member_pointer<_Tp>::value)> - { }; - - /// is_compound - template - struct is_compound - : public integral_constant::value> { }; - - /// is_member_pointer - template - struct __is_member_pointer_helper - : public false_type { }; - _DEFINE_SPEC(2, __is_member_pointer_helper, _Tp _Cp::*, true) - - template - struct is_member_pointer - : public integral_constant::type>::value)> - { }; - - // type properties [4.5.3]. - /// is_const - template - struct is_const - : public false_type { }; - - template - struct is_const<_Tp const> - : public true_type { }; - - /// is_volatile - template - struct is_volatile - : public false_type { }; - - template - struct is_volatile<_Tp volatile> - : public true_type { }; - - /// is_empty - template - struct is_empty - : public integral_constant - { }; - - /// is_polymorphic - template - struct is_polymorphic - : public integral_constant - { }; - - /// is_abstract - template - struct is_abstract - : public integral_constant - { }; - - /// has_virtual_destructor - template - struct has_virtual_destructor - : public integral_constant - { }; - - /// alignment_of - template - struct alignment_of - : public integral_constant { }; - - /// rank - template - struct rank - : public integral_constant { }; - - template - struct rank<_Tp[_Size]> - : public integral_constant::value> { }; - - template - struct rank<_Tp[]> - : public integral_constant::value> { }; - - /// extent - template - struct extent - : public integral_constant { }; - - template - struct extent<_Tp[_Size], _Uint> - : public integral_constant::value> - { }; - - template - struct extent<_Tp[], _Uint> - : public integral_constant::value> - { }; - - // relationships between types [4.6]. - - /// is_same - template - struct is_same - : public false_type { }; - - template - struct is_same<_Tp, _Tp> - : public true_type { }; - - // const-volatile modifications [4.7.1]. - - /// remove_const - template - struct remove_const - { typedef _Tp type; }; - - template - struct remove_const<_Tp const> - { typedef _Tp type; }; - - /// remove_volatile - template - struct remove_volatile - { typedef _Tp type; }; - - template - struct remove_volatile<_Tp volatile> - { typedef _Tp type; }; - - /// remove_cv - template - struct remove_cv - { - typedef typename - remove_const::type>::type type; - }; - - /// add_const - template - struct add_const - { typedef _Tp const type; }; - - /// add_volatile - template - struct add_volatile - { typedef _Tp volatile type; }; - - /// add_cv - template - struct add_cv - { - typedef typename - add_const::type>::type type; - }; - - // array modifications [4.7.3]. - - /// remove_extent - template - struct remove_extent - { typedef _Tp type; }; - - template - struct remove_extent<_Tp[_Size]> - { typedef _Tp type; }; - - template - struct remove_extent<_Tp[]> - { typedef _Tp type; }; - - /// remove_all_extents - template - struct remove_all_extents - { typedef _Tp type; }; - - template - struct remove_all_extents<_Tp[_Size]> - { typedef typename remove_all_extents<_Tp>::type type; }; - - template - struct remove_all_extents<_Tp[]> - { typedef typename remove_all_extents<_Tp>::type type; }; - - // pointer modifications [4.7.4]. - - template - struct __remove_pointer_helper - { typedef _Tp type; }; - - template - struct __remove_pointer_helper<_Tp, _Up*> - { typedef _Up type; }; - - /// remove_pointer - template - struct remove_pointer - : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> - { }; - - template - struct remove_reference; - - /// add_pointer - template - struct add_pointer - { typedef typename remove_reference<_Tp>::type* type; }; - - template - struct is_reference - : public false_type { }; - - template - struct is_reference<_Tp&> - : public true_type { }; - - template - struct is_pod - : public integral_constant::value> - { }; - - template - struct has_trivial_constructor - : public integral_constant::value> - { }; - - template - struct has_trivial_copy - : public integral_constant::value> - { }; - - template - struct has_trivial_assign - : public integral_constant::value> - { }; - - template - struct has_trivial_destructor - : public integral_constant::value> - { }; - - template - struct has_nothrow_constructor - : public integral_constant::value> - { }; - - template - struct has_nothrow_copy - : public integral_constant::value> - { }; - - template - struct has_nothrow_assign - : public integral_constant::value> - { }; - - template - struct __is_signed_helper - : public false_type { }; - _DEFINE_SPEC(0, __is_signed_helper, signed char, true) - _DEFINE_SPEC(0, __is_signed_helper, short, true) - _DEFINE_SPEC(0, __is_signed_helper, int, true) - _DEFINE_SPEC(0, __is_signed_helper, long, true) - _DEFINE_SPEC(0, __is_signed_helper, long long, true) - - template - struct is_signed - : public integral_constant::type>::value)> - { }; - - template - struct __is_unsigned_helper - : public false_type { }; - _DEFINE_SPEC(0, __is_unsigned_helper, unsigned char, true) - _DEFINE_SPEC(0, __is_unsigned_helper, unsigned short, true) - _DEFINE_SPEC(0, __is_unsigned_helper, unsigned int, true) - _DEFINE_SPEC(0, __is_unsigned_helper, unsigned long, true) - _DEFINE_SPEC(0, __is_unsigned_helper, unsigned long long, true) - - template - struct is_unsigned - : public integral_constant::type>::value)> - { }; - - template - struct __is_base_of_helper - { - typedef typename remove_cv<_Base>::type _NoCv_Base; - typedef typename remove_cv<_Derived>::type _NoCv_Derived; - static const bool __value = (is_same<_Base, _Derived>::value - || (__is_base_of(_Base, _Derived) - && !is_same<_NoCv_Base, - _NoCv_Derived>::value)); - }; - - template - struct is_base_of - : public integral_constant::__value> - { }; - - template - struct __is_convertible_simple - : public __sfinae_types - { - private: - static __one __test(_To); - static __two __test(...); - static _From __makeFrom(); - - public: - static const bool __value = sizeof(__test(__makeFrom())) == 1; - }; - - template - struct add_reference; - - template - struct __is_int_or_cref - { - typedef typename remove_reference<_Tp>::type __rr_Tp; - static const bool __value = (is_integral<_Tp>::value - || (is_integral<__rr_Tp>::value - && is_const<__rr_Tp>::value - && !is_volatile<__rr_Tp>::value)); - }; - - template::value || is_void<_To>::value - || is_function<_To>::value || is_array<_To>::value - // This special case is here only to avoid warnings. - || (is_floating_point::type>::value - && __is_int_or_cref<_To>::__value))> - struct __is_convertible_helper - { - // "An imaginary lvalue of type From...". - static const bool __value = (__is_convertible_simple::type, _To>::__value); - }; - - template - struct __is_convertible_helper<_From, _To, true> - { static const bool __value = (is_void<_To>::value - || (__is_int_or_cref<_To>::__value - && !is_void<_From>::value)); }; - - template - struct is_convertible - : public integral_constant::__value> - { }; - - // reference modifications [4.7.2]. - template - struct remove_reference - { typedef _Tp type; }; - - template - struct remove_reference<_Tp&> - { typedef _Tp type; }; - - // NB: Careful with reference to void. - template::value - || is_reference<_Tp>::value)> - struct __add_reference_helper - { typedef _Tp& type; }; - - template - struct __add_reference_helper<_Tp, true> - { typedef _Tp type; }; - - template - struct add_reference - : public __add_reference_helper<_Tp> - { }; - - // other transformations [4.8]. - template - struct aligned_storage - { - union type - { - unsigned char __data[_Len]; - struct __attribute__((__aligned__((_Align)))) { } __align; - }; - }; - -#undef _DEFINE_SPEC_0_HELPER -#undef _DEFINE_SPEC_1_HELPER -#undef _DEFINE_SPEC_2_HELPER -#undef _DEFINE_SPEC - - /// @} group metaprogramming - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_map deleted file mode 100644 index 59edbbadd..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_map +++ /dev/null @@ -1,44 +0,0 @@ -// TR1 unordered_map -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/unordered_map - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_UNORDERED_MAP -#define _GLIBCXX_TR1_UNORDERED_MAP 1 - -#pragma GCC system_header - -#include -#include -#include -#include // equal_to, _Identity, _Select1st -#include -#include -#include -#include -#include - -#endif // _GLIBCXX_TR1_UNORDERED_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_map.h deleted file mode 100644 index 34776aeea..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_map.h +++ /dev/null @@ -1,278 +0,0 @@ -// TR1 unordered_map implementation -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/unordered_map.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{tr1/unordered_map} - */ - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // NB: When we get typedef templates these class definitions - // will be unnecessary. - template, - class _Pred = std::equal_to<_Key>, - class _Alloc = std::allocator >, - bool __cache_hash_code = false> - class __unordered_map - : public _Hashtable<_Key, std::pair, _Alloc, - std::_Select1st >, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, false, true> - { - typedef _Hashtable<_Key, std::pair, _Alloc, - std::_Select1st >, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, false, true> - _Base; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - __unordered_map(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), - __eql, std::_Select1st >(), __a) - { } - - template - __unordered_map(_InputIterator __f, _InputIterator __l, - size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), - __eql, std::_Select1st >(), __a) - { } - }; - - template, - class _Pred = std::equal_to<_Key>, - class _Alloc = std::allocator >, - bool __cache_hash_code = false> - class __unordered_multimap - : public _Hashtable<_Key, std::pair, - _Alloc, - std::_Select1st >, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, false, false> - { - typedef _Hashtable<_Key, std::pair, - _Alloc, - std::_Select1st >, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, false, false> - _Base; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - __unordered_multimap(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), - __eql, std::_Select1st >(), __a) - { } - - - template - __unordered_multimap(_InputIterator __f, _InputIterator __l, - typename _Base::size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), - __eql, std::_Select1st >(), __a) - { } - }; - - template - inline void - swap(__unordered_map<_Key, _Tp, _Hash, _Pred, - _Alloc, __cache_hash_code>& __x, - __unordered_map<_Key, _Tp, _Hash, _Pred, - _Alloc, __cache_hash_code>& __y) - { __x.swap(__y); } - - template - inline void - swap(__unordered_multimap<_Key, _Tp, _Hash, _Pred, - _Alloc, __cache_hash_code>& __x, - __unordered_multimap<_Key, _Tp, _Hash, _Pred, - _Alloc, __cache_hash_code>& __y) - { __x.swap(__y); } - - - /** - * @brief A standard container composed of unique keys (containing - * at most one of each key value) that associates values of another type - * with the keys. - * - * @ingroup unordered_associative_containers - * - * Meets the requirements of a container, and - * unordered associative container - * - * @param Key Type of key objects. - * @param Tp Type of mapped objects. - * @param Hash Hashing function object type, defaults to hash. - * @param Pred Predicate function object type, defaults to equal_to. - * @param Alloc Allocator type, defaults to allocator. - * - * The resulting value type of the container is std::pair. - */ - template, - class _Pred = std::equal_to<_Key>, - class _Alloc = std::allocator > > - class unordered_map - : public __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> - { - typedef __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> _Base; - - public: - typedef typename _Base::value_type value_type; - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - unordered_map(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - template - unordered_map(_InputIterator __f, _InputIterator __l, - size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) - { } - }; - - /** - * @brief A standard container composed of equivalent keys - * (possibly containing multiple of each key value) that associates - * values of another type with the keys. - * - * @ingroup unordered_associative_containers - * - * Meets the requirements of a container, and - * unordered associative container - * - * @param Key Type of key objects. - * @param Tp Type of mapped objects. - * @param Hash Hashing function object type, defaults to hash. - * @param Pred Predicate function object type, defaults to equal_to. - * @param Alloc Allocator type, defaults to allocator. - * - * The resulting value type of the container is std::pair. - */ - template, - class _Pred = std::equal_to<_Key>, - class _Alloc = std::allocator > > - class unordered_multimap - : public __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> - { - typedef __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> _Base; - - public: - typedef typename _Base::value_type value_type; - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - unordered_multimap(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - - template - unordered_multimap(_InputIterator __f, _InputIterator __l, - typename _Base::size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) - { } - - }; - - template - inline void - swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { __x.swap(__y); } - - template - inline void - swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, - unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) - { __x.swap(__y); } - -_GLIBCXX_END_NAMESPACE_VERSION -} -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_set deleted file mode 100644 index f4bbe826f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_set +++ /dev/null @@ -1,44 +0,0 @@ -// TR1 unordered_set -*- C++ -*- - -// Copyright (C) 2005-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/unordered_set - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_UNORDERED_SET -#define _GLIBCXX_TR1_UNORDERED_SET 1 - -#pragma GCC system_header - -#include -#include -#include -#include // equal_to, _Identity, _Select1st -#include -#include -#include -#include -#include - -#endif // _GLIBCXX_TR1_UNORDERED_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_set.h deleted file mode 100644 index f9d04901c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/unordered_set.h +++ /dev/null @@ -1,267 +0,0 @@ -// TR1 unordered_set implementation -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/unordered_set.h - * This is an internal header file, included by other library headers. - * Do not attempt to use it directly. @headername{tr1/unordered_set} - */ - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - // NB: When we get typedef templates these class definitions - // will be unnecessary. - template, - class _Pred = std::equal_to<_Value>, - class _Alloc = std::allocator<_Value>, - bool __cache_hash_code = false> - class __unordered_set - : public _Hashtable<_Value, _Value, _Alloc, - std::_Identity<_Value>, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, true, true> - { - typedef _Hashtable<_Value, _Value, _Alloc, - std::_Identity<_Value>, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, true, true> - _Base; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - __unordered_set(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, - std::_Identity<_Value>(), __a) - { } - - template - __unordered_set(_InputIterator __f, _InputIterator __l, - size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, - std::_Identity<_Value>(), __a) - { } - }; - - template, - class _Pred = std::equal_to<_Value>, - class _Alloc = std::allocator<_Value>, - bool __cache_hash_code = false> - class __unordered_multiset - : public _Hashtable<_Value, _Value, _Alloc, - std::_Identity<_Value>, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, true, false> - { - typedef _Hashtable<_Value, _Value, _Alloc, - std::_Identity<_Value>, _Pred, - _Hash, __detail::_Mod_range_hashing, - __detail::_Default_ranged_hash, - __detail::_Prime_rehash_policy, - __cache_hash_code, true, false> - _Base; - - public: - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - __unordered_multiset(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, - std::_Identity<_Value>(), __a) - { } - - - template - __unordered_multiset(_InputIterator __f, _InputIterator __l, - typename _Base::size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), - __detail::_Default_ranged_hash(), __eql, - std::_Identity<_Value>(), __a) - { } - }; - - template - inline void - swap(__unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __x, - __unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __y) - { __x.swap(__y); } - - template - inline void - swap(__unordered_multiset<_Value, _Hash, _Pred, - _Alloc, __cache_hash_code>& __x, - __unordered_multiset<_Value, _Hash, _Pred, - _Alloc, __cache_hash_code>& __y) - { __x.swap(__y); } - - - /** - * @brief A standard container composed of unique keys (containing - * at most one of each key value) in which the elements' keys are - * the elements themselves. - * - * @ingroup unordered_associative_containers - * - * Meets the requirements of a container, and - * unordered associative container - * - * @param Value Type of key objects. - * @param Hash Hashing function object type, defaults to hash. - * @param Pred Predicate function object type, defaults to equal_to. - * @param Alloc Allocator type, defaults to allocator. - */ - template, - class _Pred = std::equal_to<_Value>, - class _Alloc = std::allocator<_Value> > - class unordered_set - : public __unordered_set<_Value, _Hash, _Pred, _Alloc> - { - typedef __unordered_set<_Value, _Hash, _Pred, _Alloc> _Base; - - public: - typedef typename _Base::value_type value_type; - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - unordered_set(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - template - unordered_set(_InputIterator __f, _InputIterator __l, - size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) - { } - }; - - /** - * @brief A standard container composed of equivalent keys - * (possibly containing multiple of each key value) in which the - * elements' keys are the elements themselves. - * - * @ingroup unordered_associative_containers - * - * Meets the requirements of a container, and - * unordered associative container - * - * @param Value Type of key objects. - * @param Hash Hashing function object type, defaults to hash. - * @param Pred Predicate function object type, defaults to equal_to. - * @param Alloc Allocator type, defaults to allocator. - */ - template, - class _Pred = std::equal_to<_Value>, - class _Alloc = std::allocator<_Value> > - class unordered_multiset - : public __unordered_multiset<_Value, _Hash, _Pred, _Alloc> - { - typedef __unordered_multiset<_Value, _Hash, _Pred, _Alloc> _Base; - - public: - typedef typename _Base::value_type value_type; - typedef typename _Base::size_type size_type; - typedef typename _Base::hasher hasher; - typedef typename _Base::key_equal key_equal; - typedef typename _Base::allocator_type allocator_type; - - explicit - unordered_multiset(size_type __n = 10, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__n, __hf, __eql, __a) - { } - - - template - unordered_multiset(_InputIterator __f, _InputIterator __l, - typename _Base::size_type __n = 0, - const hasher& __hf = hasher(), - const key_equal& __eql = key_equal(), - const allocator_type& __a = allocator_type()) - : _Base(__f, __l, __n, __hf, __eql, __a) - { } - }; - - template - inline void - swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) - { __x.swap(__y); } - - template - inline void - swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, - unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) - { __x.swap(__y); } - -_GLIBCXX_END_NAMESPACE_VERSION -} -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/utility b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/utility deleted file mode 100644 index 91076d988..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/utility +++ /dev/null @@ -1,108 +0,0 @@ -// TR1 utility -*- C++ -*- - -// Copyright (C) 2004-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr1/utility - * This is a TR1 C++ Library header. - */ - -#ifndef _GLIBCXX_TR1_UTILITY -#define _GLIBCXX_TR1_UTILITY 1 - -#pragma GCC system_header - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr1 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - class tuple_size; - - template - class tuple_element; - - // Various functions which give std::pair a tuple-like interface. - template - struct tuple_size > - { static const int value = 2; }; - - template - const int - tuple_size >::value; - - template - struct tuple_element<0, std::pair<_Tp1, _Tp2> > - { typedef _Tp1 type; }; - - template - struct tuple_element<1, std::pair<_Tp1, _Tp2> > - { typedef _Tp2 type; }; - - template - struct __pair_get; - - template<> - struct __pair_get<0> - { - template - static _Tp1& __get(std::pair<_Tp1, _Tp2>& __pair) - { return __pair.first; } - - template - static const _Tp1& __const_get(const std::pair<_Tp1, _Tp2>& __pair) - { return __pair.first; } - }; - - template<> - struct __pair_get<1> - { - template - static _Tp2& __get(std::pair<_Tp1, _Tp2>& __pair) - { return __pair.second; } - - template - static const _Tp2& __const_get(const std::pair<_Tp1, _Tp2>& __pair) - { return __pair.second; } - }; - - template - inline typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& - get(std::pair<_Tp1, _Tp2>& __in) - { return __pair_get<_Int>::__get(__in); } - - template - inline const typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& - get(const std::pair<_Tp1, _Tp2>& __in) - { return __pair_get<_Int>::__const_get(__in); } - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR1_UTILITY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/ratio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/ratio deleted file mode 100644 index c0a2d4d30..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/ratio +++ /dev/null @@ -1,59 +0,0 @@ -// TR2 -*- C++ -*- - -// Copyright (C) 2010-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr2/ratio - * This is a TR2 C++ Library header. - */ - -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - template - (std::numeric_limits::digits)> - struct __safe_lshift - { static const intmax_t __value = 0; }; - - template - struct __safe_lshift<_Pn, _Bit, true> - { static const intmax_t __value = _Pn << _Bit; }; - - /// Add binary prefixes (IEC 60027-2 A.2 and ISO/IEC 80000). - typedef ratio<__safe_lshift<1, 10>::__value, 1> kibi; - typedef ratio<__safe_lshift<1, 20>::__value, 1> mebi; - typedef ratio<__safe_lshift<1, 30>::__value, 1> gibi; - typedef ratio<__safe_lshift<1, 40>::__value, 1> tebi; - typedef ratio<__safe_lshift<1, 50>::__value, 1> pebi; - typedef ratio<__safe_lshift<1, 60>::__value, 1> exbi; - //typedef ratio<__safe_lshift<1, 70>::__value, 1> zebi; - //typedef ratio<__safe_lshift<1, 80>::__value, 1> yobi; - -_GLIBCXX_END_NAMESPACE_VERSION -} -} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/type_traits deleted file mode 100644 index 35f621500..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/type_traits +++ /dev/null @@ -1,106 +0,0 @@ -// TR2 -*- C++ -*- - -// Copyright (C) 2011-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file tr2/type_traits - * This is a TR2 C++ Library header. - */ - -#ifndef _GLIBCXX_TR2_TYPE_TRAITS -#define _GLIBCXX_TR2_TYPE_TRAITS 1 - -#pragma GCC system_header -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -namespace tr2 -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup metaprogramming - * @{ - */ - - /** - * See N2965: Type traits and base classes - * by Michael Spertus - */ - - /** - * Simple typelist. Compile-time list of types. - */ - template - struct __reflection_typelist; - - /// Specialization for an empty typelist. - template<> - struct __reflection_typelist<> - { - typedef std::true_type empty; - }; - - /// Partial specialization. - template - struct __reflection_typelist<_First, _Rest...> - { - typedef std::false_type empty; - - struct first - { - typedef _First type; - }; - - struct rest - { - typedef __reflection_typelist<_Rest...> type; - }; - }; - - /// Sequence abstraction metafunctions for manipulating a typelist. - - - - /// Enumerate all the base classes of a class. Form of a typelist. - template - struct bases - { - typedef __reflection_typelist<__bases(_Tp)...> type; - }; - - /// Enumerate all the direct base classes of a class. Form of a typelist. - template - struct direct_bases - { - typedef __reflection_typelist<__direct_bases(_Tp)...> type; - }; - - /// @} group metaprogramming - -_GLIBCXX_END_NAMESPACE_VERSION -} -} - -#endif // _GLIBCXX_TR2_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tuple b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tuple deleted file mode 100644 index 1f5365ad0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tuple +++ /dev/null @@ -1,1700 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/tuple - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_TUPLE -#define _GLIBCXX_TUPLE 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /** - * @addtogroup utilities - * @{ - */ - - template - class tuple; - - template - struct __is_empty_non_tuple : is_empty<_Tp> { }; - - // Using EBO for elements that are tuples causes ambiguous base errors. - template - struct __is_empty_non_tuple> : false_type { }; - - // Use the Empty Base-class Optimization for empty, non-final types. - template - using __empty_not_final - = typename conditional<__is_final(_Tp), false_type, - __is_empty_non_tuple<_Tp>>::type; - - template::value> - struct _Head_base; - - template - struct _Head_base<_Idx, _Head, true> - : public _Head - { - constexpr _Head_base() - : _Head() { } - - constexpr _Head_base(const _Head& __h) - : _Head(__h) { } - - constexpr _Head_base(const _Head_base&) = default; - constexpr _Head_base(_Head_base&&) = default; - - template - constexpr _Head_base(_UHead&& __h) - : _Head(std::forward<_UHead>(__h)) { } - - _Head_base(allocator_arg_t, __uses_alloc0) - : _Head() { } - - template - _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) - : _Head(allocator_arg, *__a._M_a) { } - - template - _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) - : _Head(*__a._M_a) { } - - template - _Head_base(__uses_alloc0, _UHead&& __uhead) - : _Head(std::forward<_UHead>(__uhead)) { } - - template - _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) - : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } - - template - _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) - : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } - - static constexpr _Head& - _M_head(_Head_base& __b) noexcept { return __b; } - - static constexpr const _Head& - _M_head(const _Head_base& __b) noexcept { return __b; } - }; - - template - struct _Head_base<_Idx, _Head, false> - { - constexpr _Head_base() - : _M_head_impl() { } - - constexpr _Head_base(const _Head& __h) - : _M_head_impl(__h) { } - - constexpr _Head_base(const _Head_base&) = default; - constexpr _Head_base(_Head_base&&) = default; - - template - constexpr _Head_base(_UHead&& __h) - : _M_head_impl(std::forward<_UHead>(__h)) { } - - _Head_base(allocator_arg_t, __uses_alloc0) - : _M_head_impl() { } - - template - _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) - : _M_head_impl(allocator_arg, *__a._M_a) { } - - template - _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) - : _M_head_impl(*__a._M_a) { } - - template - _Head_base(__uses_alloc0, _UHead&& __uhead) - : _M_head_impl(std::forward<_UHead>(__uhead)) { } - - template - _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) - : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) - { } - - template - _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) - : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } - - static constexpr _Head& - _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } - - static constexpr const _Head& - _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } - - _Head _M_head_impl; - }; - - /** - * Contains the actual implementation of the @c tuple template, stored - * as a recursive inheritance hierarchy from the first element (most - * derived class) to the last (least derived class). The @c Idx - * parameter gives the 0-based index of the element stored at this - * point in the hierarchy; we use it to implement a constant-time - * get() operation. - */ - template - struct _Tuple_impl; - - /** - * Recursive tuple implementation. Here we store the @c Head element - * and derive from a @c Tuple_impl containing the remaining elements - * (which contains the @c Tail). - */ - template - struct _Tuple_impl<_Idx, _Head, _Tail...> - : public _Tuple_impl<_Idx + 1, _Tail...>, - private _Head_base<_Idx, _Head> - { - template friend class _Tuple_impl; - - typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; - typedef _Head_base<_Idx, _Head> _Base; - - static constexpr _Head& - _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } - - static constexpr const _Head& - _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } - - static constexpr _Inherited& - _M_tail(_Tuple_impl& __t) noexcept { return __t; } - - static constexpr const _Inherited& - _M_tail(const _Tuple_impl& __t) noexcept { return __t; } - - constexpr _Tuple_impl() - : _Inherited(), _Base() { } - - explicit - constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail) - : _Inherited(__tail...), _Base(__head) { } - - template::type> - explicit - constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) - : _Inherited(std::forward<_UTail>(__tail)...), - _Base(std::forward<_UHead>(__head)) { } - - constexpr _Tuple_impl(const _Tuple_impl&) = default; - - constexpr - _Tuple_impl(_Tuple_impl&& __in) - noexcept(__and_, - is_nothrow_move_constructible<_Inherited>>::value) - : _Inherited(std::move(_M_tail(__in))), - _Base(std::forward<_Head>(_M_head(__in))) { } - - template - constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) - : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), - _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } - - template - constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) - : _Inherited(std::move - (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), - _Base(std::forward<_UHead> - (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) - : _Inherited(__tag, __a), - _Base(__tag, __use_alloc<_Head>(__a)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - const _Head& __head, const _Tail&... __tail) - : _Inherited(__tag, __a, __tail...), - _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } - - template::type> - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - _UHead&& __head, _UTail&&... __tail) - : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), - _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), - std::forward<_UHead>(__head)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - const _Tuple_impl& __in) - : _Inherited(__tag, __a, _M_tail(__in)), - _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - _Tuple_impl&& __in) - : _Inherited(__tag, __a, std::move(_M_tail(__in))), - _Base(__use_alloc<_Head, _Alloc, _Head>(__a), - std::forward<_Head>(_M_head(__in))) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - const _Tuple_impl<_Idx, _UElements...>& __in) - : _Inherited(__tag, __a, - _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), - _Base(__use_alloc<_Head, _Alloc, _Head>(__a), - _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) - : _Inherited(__tag, __a, std::move - (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), - _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), - std::forward<_UHead> - (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } - - _Tuple_impl& - operator=(const _Tuple_impl& __in) - { - _M_head(*this) = _M_head(__in); - _M_tail(*this) = _M_tail(__in); - return *this; - } - - _Tuple_impl& - operator=(_Tuple_impl&& __in) - noexcept(__and_, - is_nothrow_move_assignable<_Inherited>>::value) - { - _M_head(*this) = std::forward<_Head>(_M_head(__in)); - _M_tail(*this) = std::move(_M_tail(__in)); - return *this; - } - - template - _Tuple_impl& - operator=(const _Tuple_impl<_Idx, _UElements...>& __in) - { - _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); - _M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in); - return *this; - } - - template - _Tuple_impl& - operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) - { - _M_head(*this) = std::forward<_UHead> - (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); - _M_tail(*this) = std::move - (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)); - return *this; - } - - protected: - void - _M_swap(_Tuple_impl& __in) - noexcept(__is_nothrow_swappable<_Head>::value - && noexcept(_M_tail(__in)._M_swap(_M_tail(__in)))) - { - using std::swap; - swap(_M_head(*this), _M_head(__in)); - _Inherited::_M_swap(_M_tail(__in)); - } - }; - - // Basis case of inheritance recursion. - template - struct _Tuple_impl<_Idx, _Head> - : private _Head_base<_Idx, _Head> - { - template friend class _Tuple_impl; - - typedef _Head_base<_Idx, _Head> _Base; - - static constexpr _Head& - _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } - - static constexpr const _Head& - _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } - - constexpr _Tuple_impl() - : _Base() { } - - explicit - constexpr _Tuple_impl(const _Head& __head) - : _Base(__head) { } - - template - explicit - constexpr _Tuple_impl(_UHead&& __head) - : _Base(std::forward<_UHead>(__head)) { } - - constexpr _Tuple_impl(const _Tuple_impl&) = default; - - constexpr - _Tuple_impl(_Tuple_impl&& __in) - noexcept(is_nothrow_move_constructible<_Head>::value) - : _Base(std::forward<_Head>(_M_head(__in))) { } - - template - constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) - : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } - - template - constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) - : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) - { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) - : _Base(__tag, __use_alloc<_Head>(__a)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - const _Head& __head) - : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - _UHead&& __head) - : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), - std::forward<_UHead>(__head)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - const _Tuple_impl& __in) - : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - _Tuple_impl&& __in) - : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), - std::forward<_Head>(_M_head(__in))) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - const _Tuple_impl<_Idx, _UHead>& __in) - : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), - _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } - - template - _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, - _Tuple_impl<_Idx, _UHead>&& __in) - : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), - std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) - { } - - _Tuple_impl& - operator=(const _Tuple_impl& __in) - { - _M_head(*this) = _M_head(__in); - return *this; - } - - _Tuple_impl& - operator=(_Tuple_impl&& __in) - noexcept(is_nothrow_move_assignable<_Head>::value) - { - _M_head(*this) = std::forward<_Head>(_M_head(__in)); - return *this; - } - - template - _Tuple_impl& - operator=(const _Tuple_impl<_Idx, _UHead>& __in) - { - _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); - return *this; - } - - template - _Tuple_impl& - operator=(_Tuple_impl<_Idx, _UHead>&& __in) - { - _M_head(*this) - = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); - return *this; - } - - protected: - void - _M_swap(_Tuple_impl& __in) - noexcept(__is_nothrow_swappable<_Head>::value) - { - using std::swap; - swap(_M_head(*this), _M_head(__in)); - } - }; - - // Concept utility functions, reused in conditionally-explicit - // constructors. - template - struct _TC - { - template - static constexpr bool _ConstructibleTuple() - { - return __and_...>::value; - } - - template - static constexpr bool _ImplicitlyConvertibleTuple() - { - return __and_...>::value; - } - - template - static constexpr bool _MoveConstructibleTuple() - { - return __and_...>::value; - } - - template - static constexpr bool _ImplicitlyMoveConvertibleTuple() - { - return __and_...>::value; - } - - template - static constexpr bool _NonNestedTuple() - { - return __and_<__not_, - typename remove_cv< - typename remove_reference<_SrcTuple>::type - >::type>>, - __not_>, - __not_> - >::value; - } - template - static constexpr bool _NotSameTuple() - { - return __not_, - typename remove_const< - typename remove_reference<_UElements...>::type - >::type>>::value; - } - }; - - template - struct _TC - { - template - static constexpr bool _ConstructibleTuple() - { - return false; - } - - template - static constexpr bool _ImplicitlyConvertibleTuple() - { - return false; - } - - template - static constexpr bool _MoveConstructibleTuple() - { - return false; - } - - template - static constexpr bool _ImplicitlyMoveConvertibleTuple() - { - return false; - } - - template - static constexpr bool _NonNestedTuple() - { - return true; - } - template - static constexpr bool _NotSameTuple() - { - return true; - } - }; - - /// Primary class template, tuple - template - class tuple : public _Tuple_impl<0, _Elements...> - { - typedef _Tuple_impl<0, _Elements...> _Inherited; - - // Used for constraining the default constructor so - // that it becomes dependent on the constraints. - template - struct _TC2 - { - static constexpr bool _DefaultConstructibleTuple() - { - return __and_...>::value; - } - static constexpr bool _ImplicitlyDefaultConstructibleTuple() - { - return __and_<__is_implicitly_default_constructible<_Elements>...> - ::value; - } - }; - - public: - template:: - _ImplicitlyDefaultConstructibleTuple(), - bool>::type = true> - constexpr tuple() - : _Inherited() { } - - template:: - _DefaultConstructibleTuple() - && - !_TC2<_Dummy>:: - _ImplicitlyDefaultConstructibleTuple(), - bool>::type = false> - explicit constexpr tuple() - : _Inherited() { } - - // Shortcut for the cases where constructors taking _Elements... - // need to be constrained. - template using _TCC = - _TC::value, - _Elements...>; - - template::template - _ConstructibleTuple<_Elements...>() - && _TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_Elements...>() - && (sizeof...(_Elements) >= 1), - bool>::type=true> - constexpr tuple(const _Elements&... __elements) - : _Inherited(__elements...) { } - - template::template - _ConstructibleTuple<_Elements...>() - && !_TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_Elements...>() - && (sizeof...(_Elements) >= 1), - bool>::type=false> - explicit constexpr tuple(const _Elements&... __elements) - : _Inherited(__elements...) { } - - // Shortcut for the cases where constructors taking _UElements... - // need to be constrained. - template using _TMC = - _TC<(sizeof...(_Elements) == sizeof...(_UElements)) - && (_TC<(sizeof...(_UElements)==1), _Elements...>:: - template _NotSameTuple<_UElements...>()), - _Elements...>; - - // Shortcut for the cases where constructors taking tuple<_UElements...> - // need to be constrained. - template using _TMCT = - _TC<(sizeof...(_Elements) == sizeof...(_UElements)) - && !is_same, - tuple<_UElements...>>::value, - _Elements...>; - - template::template - _MoveConstructibleTuple<_UElements...>() - && _TMC<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>() - && (sizeof...(_Elements) >= 1), - bool>::type=true> - constexpr tuple(_UElements&&... __elements) - : _Inherited(std::forward<_UElements>(__elements)...) { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && !_TMC<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>() - && (sizeof...(_Elements) >= 1), - bool>::type=false> - explicit constexpr tuple(_UElements&&... __elements) - : _Inherited(std::forward<_UElements>(__elements)...) { } - - constexpr tuple(const tuple&) = default; - - constexpr tuple(tuple&&) = default; - - // Shortcut for the cases where constructors taking tuples - // must avoid creating temporaries. - template using _TNTC = - _TC::value && sizeof...(_Elements) == 1, - _Elements...>; - - template::template - _ConstructibleTuple<_UElements...>() - && _TMCT<_UElements...>::template - _ImplicitlyConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&>(), - bool>::type=true> - constexpr tuple(const tuple<_UElements...>& __in) - : _Inherited(static_cast&>(__in)) - { } - - template::template - _ConstructibleTuple<_UElements...>() - && !_TMCT<_UElements...>::template - _ImplicitlyConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&>(), - bool>::type=false> - explicit constexpr tuple(const tuple<_UElements...>& __in) - : _Inherited(static_cast&>(__in)) - { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && _TMCT<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&&>(), - bool>::type=true> - constexpr tuple(tuple<_UElements...>&& __in) - : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && !_TMCT<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&&>(), - bool>::type=false> - explicit constexpr tuple(tuple<_UElements...>&& __in) - : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } - - // Allocator-extended constructors. - - template - tuple(allocator_arg_t __tag, const _Alloc& __a) - : _Inherited(__tag, __a) { } - - template::template - _ConstructibleTuple<_Elements...>() - && _TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_Elements...>(), - bool>::type=true> - tuple(allocator_arg_t __tag, const _Alloc& __a, - const _Elements&... __elements) - : _Inherited(__tag, __a, __elements...) { } - - template::template - _ConstructibleTuple<_Elements...>() - && !_TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_Elements...>(), - bool>::type=false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - const _Elements&... __elements) - : _Inherited(__tag, __a, __elements...) { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && _TMC<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>(), - bool>::type=true> - tuple(allocator_arg_t __tag, const _Alloc& __a, - _UElements&&... __elements) - : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) - { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && !_TMC<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>(), - bool>::type=false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - _UElements&&... __elements) - : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) - { } - - template - tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) - : _Inherited(__tag, __a, static_cast(__in)) { } - - template - tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) - : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } - - template::template - _ConstructibleTuple<_UElements...>() - && _TMCT<_UElements...>::template - _ImplicitlyConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&&>(), - bool>::type=true> - tuple(allocator_arg_t __tag, const _Alloc& __a, - const tuple<_UElements...>& __in) - : _Inherited(__tag, __a, - static_cast&>(__in)) - { } - - template::template - _ConstructibleTuple<_UElements...>() - && !_TMCT<_UElements...>::template - _ImplicitlyConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&&>(), - bool>::type=false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - const tuple<_UElements...>& __in) - : _Inherited(__tag, __a, - static_cast&>(__in)) - { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && _TMCT<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&&>(), - bool>::type=true> - tuple(allocator_arg_t __tag, const _Alloc& __a, - tuple<_UElements...>&& __in) - : _Inherited(__tag, __a, - static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) - { } - - template::template - _MoveConstructibleTuple<_UElements...>() - && !_TMCT<_UElements...>::template - _ImplicitlyMoveConvertibleTuple<_UElements...>() - && _TNTC<_Dummy>::template - _NonNestedTuple&&>(), - bool>::type=false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - tuple<_UElements...>&& __in) - : _Inherited(__tag, __a, - static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) - { } - - tuple& - operator=(const tuple& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - tuple& - operator=(tuple&& __in) - noexcept(is_nothrow_move_assignable<_Inherited>::value) - { - static_cast<_Inherited&>(*this) = std::move(__in); - return *this; - } - - template - typename - enable_if::type - operator=(const tuple<_UElements...>& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - template - typename - enable_if::type - operator=(tuple<_UElements...>&& __in) - { - static_cast<_Inherited&>(*this) = std::move(__in); - return *this; - } - - void - swap(tuple& __in) - noexcept(noexcept(__in._M_swap(__in))) - { _Inherited::_M_swap(__in); } - }; - -#if __cpp_deduction_guides >= 201606 - template - tuple(_UTypes...) -> tuple<_UTypes...>; - template - tuple(pair<_T1, _T2>) -> tuple<_T1, _T2>; - template - tuple(allocator_arg_t, _Alloc, _UTypes...) -> tuple<_UTypes...>; - template - tuple(allocator_arg_t, _Alloc, pair<_T1, _T2>) -> tuple<_T1, _T2>; - template - tuple(allocator_arg_t, _Alloc, tuple<_UTypes...>) -> tuple<_UTypes...>; -#endif - - // Explicit specialization, zero-element tuple. - template<> - class tuple<> - { - public: - void swap(tuple&) noexcept { /* no-op */ } - // We need the default since we're going to define no-op - // allocator constructors. - tuple() = default; - // No-op allocator constructors. - template - tuple(allocator_arg_t, const _Alloc&) { } - template - tuple(allocator_arg_t, const _Alloc&, const tuple&) { } - }; - - /// Partial specialization, 2-element tuple. - /// Includes construction and assignment from a pair. - template - class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> - { - typedef _Tuple_impl<0, _T1, _T2> _Inherited; - - public: - template , - __is_implicitly_default_constructible<_U2>> - ::value, bool>::type = true> - - constexpr tuple() - : _Inherited() { } - - template , - is_default_constructible<_U2>, - __not_< - __and_<__is_implicitly_default_constructible<_U1>, - __is_implicitly_default_constructible<_U2>>>> - ::value, bool>::type = false> - - explicit constexpr tuple() - : _Inherited() { } - - // Shortcut for the cases where constructors taking _T1, _T2 - // need to be constrained. - template using _TCC = - _TC::value, _T1, _T2>; - - template::template - _ConstructibleTuple<_T1, _T2>() - && _TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_T1, _T2>(), - bool>::type = true> - constexpr tuple(const _T1& __a1, const _T2& __a2) - : _Inherited(__a1, __a2) { } - - template::template - _ConstructibleTuple<_T1, _T2>() - && !_TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_T1, _T2>(), - bool>::type = false> - explicit constexpr tuple(const _T1& __a1, const _T2& __a2) - : _Inherited(__a1, __a2) { } - - // Shortcut for the cases where constructors taking _U1, _U2 - // need to be constrained. - using _TMC = _TC; - - template() - && _TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>() - && !is_same::type, - allocator_arg_t>::value, - bool>::type = true> - constexpr tuple(_U1&& __a1, _U2&& __a2) - : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } - - template() - && !_TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>() - && !is_same::type, - allocator_arg_t>::value, - bool>::type = false> - explicit constexpr tuple(_U1&& __a1, _U2&& __a2) - : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } - - constexpr tuple(const tuple&) = default; - - constexpr tuple(tuple&&) = default; - - template() - && _TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = true> - constexpr tuple(const tuple<_U1, _U2>& __in) - : _Inherited(static_cast&>(__in)) { } - - template() - && !_TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit constexpr tuple(const tuple<_U1, _U2>& __in) - : _Inherited(static_cast&>(__in)) { } - - template() - && _TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = true> - constexpr tuple(tuple<_U1, _U2>&& __in) - : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } - - template() - && !_TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit constexpr tuple(tuple<_U1, _U2>&& __in) - : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } - - template() - && _TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = true> - constexpr tuple(const pair<_U1, _U2>& __in) - : _Inherited(__in.first, __in.second) { } - - template() - && !_TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit constexpr tuple(const pair<_U1, _U2>& __in) - : _Inherited(__in.first, __in.second) { } - - template() - && _TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = true> - constexpr tuple(pair<_U1, _U2>&& __in) - : _Inherited(std::forward<_U1>(__in.first), - std::forward<_U2>(__in.second)) { } - - template() - && !_TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit constexpr tuple(pair<_U1, _U2>&& __in) - : _Inherited(std::forward<_U1>(__in.first), - std::forward<_U2>(__in.second)) { } - - // Allocator-extended constructors. - - template - tuple(allocator_arg_t __tag, const _Alloc& __a) - : _Inherited(__tag, __a) { } - - template::template - _ConstructibleTuple<_T1, _T2>() - && _TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_T1, _T2>(), - bool>::type=true> - - tuple(allocator_arg_t __tag, const _Alloc& __a, - const _T1& __a1, const _T2& __a2) - : _Inherited(__tag, __a, __a1, __a2) { } - - template::template - _ConstructibleTuple<_T1, _T2>() - && !_TCC<_Dummy>::template - _ImplicitlyConvertibleTuple<_T1, _T2>(), - bool>::type=false> - - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - const _T1& __a1, const _T2& __a2) - : _Inherited(__tag, __a, __a1, __a2) { } - - template() - && _TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = true> - tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) - : _Inherited(__tag, __a, std::forward<_U1>(__a1), - std::forward<_U2>(__a2)) { } - - template() - && !_TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - _U1&& __a1, _U2&& __a2) - : _Inherited(__tag, __a, std::forward<_U1>(__a1), - std::forward<_U2>(__a2)) { } - - template - tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) - : _Inherited(__tag, __a, static_cast(__in)) { } - - template - tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) - : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } - - template() - && _TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = true> - tuple(allocator_arg_t __tag, const _Alloc& __a, - const tuple<_U1, _U2>& __in) - : _Inherited(__tag, __a, - static_cast&>(__in)) - { } - - template() - && !_TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - const tuple<_U1, _U2>& __in) - : _Inherited(__tag, __a, - static_cast&>(__in)) - { } - - template() - && _TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = true> - tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) - : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) - { } - - template() - && !_TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - tuple<_U1, _U2>&& __in) - : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) - { } - - template() - && _TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = true> - tuple(allocator_arg_t __tag, const _Alloc& __a, - const pair<_U1, _U2>& __in) - : _Inherited(__tag, __a, __in.first, __in.second) { } - - template() - && !_TMC::template - _ImplicitlyConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - const pair<_U1, _U2>& __in) - : _Inherited(__tag, __a, __in.first, __in.second) { } - - template() - && _TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = true> - tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) - : _Inherited(__tag, __a, std::forward<_U1>(__in.first), - std::forward<_U2>(__in.second)) { } - - template() - && !_TMC::template - _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), - bool>::type = false> - explicit tuple(allocator_arg_t __tag, const _Alloc& __a, - pair<_U1, _U2>&& __in) - : _Inherited(__tag, __a, std::forward<_U1>(__in.first), - std::forward<_U2>(__in.second)) { } - - tuple& - operator=(const tuple& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - tuple& - operator=(tuple&& __in) - noexcept(is_nothrow_move_assignable<_Inherited>::value) - { - static_cast<_Inherited&>(*this) = std::move(__in); - return *this; - } - - template - tuple& - operator=(const tuple<_U1, _U2>& __in) - { - static_cast<_Inherited&>(*this) = __in; - return *this; - } - - template - tuple& - operator=(tuple<_U1, _U2>&& __in) - { - static_cast<_Inherited&>(*this) = std::move(__in); - return *this; - } - - template - tuple& - operator=(const pair<_U1, _U2>& __in) - { - this->_M_head(*this) = __in.first; - this->_M_tail(*this)._M_head(*this) = __in.second; - return *this; - } - - template - tuple& - operator=(pair<_U1, _U2>&& __in) - { - this->_M_head(*this) = std::forward<_U1>(__in.first); - this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); - return *this; - } - - void - swap(tuple& __in) - noexcept(noexcept(__in._M_swap(__in))) - { _Inherited::_M_swap(__in); } - }; - - - /// class tuple_size - template - struct tuple_size> - : public integral_constant { }; - -#if __cplusplus > 201402L - template - inline constexpr size_t tuple_size_v = tuple_size<_Tp>::value; -#endif - - /** - * Recursive case for tuple_element: strip off the first element in - * the tuple and retrieve the (i-1)th element of the remaining tuple. - */ - template - struct tuple_element<__i, tuple<_Head, _Tail...> > - : tuple_element<__i - 1, tuple<_Tail...> > { }; - - /** - * Basis case for tuple_element: The first element is the one we're seeking. - */ - template - struct tuple_element<0, tuple<_Head, _Tail...> > - { - typedef _Head type; - }; - - /** - * Error case for tuple_element: invalid index. - */ - template - struct tuple_element<__i, tuple<>> - { - static_assert(__i < tuple_size>::value, - "tuple index is in range"); - }; - - template - constexpr _Head& - __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept - { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } - - template - constexpr const _Head& - __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept - { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } - - /// Return a reference to the ith element of a tuple. - template - constexpr __tuple_element_t<__i, tuple<_Elements...>>& - get(tuple<_Elements...>& __t) noexcept - { return std::__get_helper<__i>(__t); } - - /// Return a const reference to the ith element of a const tuple. - template - constexpr const __tuple_element_t<__i, tuple<_Elements...>>& - get(const tuple<_Elements...>& __t) noexcept - { return std::__get_helper<__i>(__t); } - - /// Return an rvalue reference to the ith element of a tuple rvalue. - template - constexpr __tuple_element_t<__i, tuple<_Elements...>>&& - get(tuple<_Elements...>&& __t) noexcept - { - typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; - return std::forward<__element_type&&>(std::get<__i>(__t)); - } - -#if __cplusplus > 201103L - -#define __cpp_lib_tuples_by_type 201304 - - template - constexpr _Head& - __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept - { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } - - template - constexpr const _Head& - __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept - { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } - - /// Return a reference to the unique element of type _Tp of a tuple. - template - constexpr _Tp& - get(tuple<_Types...>& __t) noexcept - { return std::__get_helper2<_Tp>(__t); } - - /// Return a reference to the unique element of type _Tp of a tuple rvalue. - template - constexpr _Tp&& - get(tuple<_Types...>&& __t) noexcept - { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); } - - /// Return a const reference to the unique element of type _Tp of a tuple. - template - constexpr const _Tp& - get(const tuple<_Types...>& __t) noexcept - { return std::__get_helper2<_Tp>(__t); } -#endif - - // This class performs the comparison operations on tuples - template - struct __tuple_compare - { - static constexpr bool - __eq(const _Tp& __t, const _Up& __u) - { - return bool(std::get<__i>(__t) == std::get<__i>(__u)) - && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); - } - - static constexpr bool - __less(const _Tp& __t, const _Up& __u) - { - return bool(std::get<__i>(__t) < std::get<__i>(__u)) - || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) - && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); - } - }; - - template - struct __tuple_compare<_Tp, _Up, __size, __size> - { - static constexpr bool - __eq(const _Tp&, const _Up&) { return true; } - - static constexpr bool - __less(const _Tp&, const _Up&) { return false; } - }; - - template - constexpr bool - operator==(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { - static_assert(sizeof...(_TElements) == sizeof...(_UElements), - "tuple objects can only be compared if they have equal sizes."); - using __compare = __tuple_compare, - tuple<_UElements...>, - 0, sizeof...(_TElements)>; - return __compare::__eq(__t, __u); - } - - template - constexpr bool - operator<(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { - static_assert(sizeof...(_TElements) == sizeof...(_UElements), - "tuple objects can only be compared if they have equal sizes."); - using __compare = __tuple_compare, - tuple<_UElements...>, - 0, sizeof...(_TElements)>; - return __compare::__less(__t, __u); - } - - template - constexpr bool - operator!=(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return !(__t == __u); } - - template - constexpr bool - operator>(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return __u < __t; } - - template - constexpr bool - operator<=(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return !(__u < __t); } - - template - constexpr bool - operator>=(const tuple<_TElements...>& __t, - const tuple<_UElements...>& __u) - { return !(__t < __u); } - - // NB: DR 705. - template - constexpr tuple::__type...> - make_tuple(_Elements&&... __args) - { - typedef tuple::__type...> - __result_type; - return __result_type(std::forward<_Elements>(__args)...); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2275. Why is forward_as_tuple not constexpr? - template - constexpr tuple<_Elements&&...> - forward_as_tuple(_Elements&&... __args) noexcept - { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } - - template - struct __make_tuple_impl; - - template - struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> - : __make_tuple_impl<_Idx + 1, - tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, - _Tuple, _Nm> - { }; - - template - struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> - { - typedef tuple<_Tp...> __type; - }; - - template - struct __do_make_tuple - : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> - { }; - - // Returns the std::tuple equivalent of a tuple-like type. - template - struct __make_tuple - : public __do_make_tuple::type>::type> - { }; - - // Combines several std::tuple's into a single one. - template - struct __combine_tuples; - - template<> - struct __combine_tuples<> - { - typedef tuple<> __type; - }; - - template - struct __combine_tuples> - { - typedef tuple<_Ts...> __type; - }; - - template - struct __combine_tuples, tuple<_T2s...>, _Rem...> - { - typedef typename __combine_tuples, - _Rem...>::__type __type; - }; - - // Computes the result type of tuple_cat given a set of tuple-like types. - template - struct __tuple_cat_result - { - typedef typename __combine_tuples - ::__type...>::__type __type; - }; - - // Helper to determine the index set for the first tuple-like - // type of a given set. - template - struct __make_1st_indices; - - template<> - struct __make_1st_indices<> - { - typedef std::_Index_tuple<> __type; - }; - - template - struct __make_1st_indices<_Tp, _Tpls...> - { - typedef typename std::_Build_index_tuple::type>::value>::__type __type; - }; - - // Performs the actual concatenation by step-wise expanding tuple-like - // objects into the elements, which are finally forwarded into the - // result tuple. - template - struct __tuple_concater; - - template - struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> - { - template - static constexpr _Ret - _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) - { - typedef typename __make_1st_indices<_Tpls...>::__type __idx; - typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; - return __next::_S_do(std::forward<_Tpls>(__tps)..., - std::forward<_Us>(__us)..., - std::get<_Is>(std::forward<_Tp>(__tp))...); - } - }; - - template - struct __tuple_concater<_Ret, std::_Index_tuple<>> - { - template - static constexpr _Ret - _S_do(_Us&&... __us) - { - return _Ret(std::forward<_Us>(__us)...); - } - }; - - /// tuple_cat - template...>::value>::type> - constexpr auto - tuple_cat(_Tpls&&... __tpls) - -> typename __tuple_cat_result<_Tpls...>::__type - { - typedef typename __tuple_cat_result<_Tpls...>::__type __ret; - typedef typename __make_1st_indices<_Tpls...>::__type __idx; - typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; - return __concater::_S_do(std::forward<_Tpls>(__tpls)...); - } - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2301. Why is tie not constexpr? - /// tie - template - constexpr tuple<_Elements&...> - tie(_Elements&... __args) noexcept - { return tuple<_Elements&...>(__args...); } - - /// swap - template - inline -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 - // Constrained free swap overload, see p0185r1 - typename enable_if<__and_<__is_swappable<_Elements>...>::value - >::type -#else - void -#endif - swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) - noexcept(noexcept(__x.swap(__y))) - { __x.swap(__y); } - -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 - template - typename enable_if...>::value>::type - swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; -#endif - - // A class (and instance) which can be used in 'tie' when an element - // of a tuple is not required. - // _GLIBCXX14_CONSTEXPR - // 2933. PR for LWG 2773 could be clearer - struct _Swallow_assign - { - template - _GLIBCXX14_CONSTEXPR const _Swallow_assign& - operator=(const _Tp&) const - { return *this; } - }; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2773. Making std::ignore constexpr - _GLIBCXX17_INLINE constexpr _Swallow_assign ignore{}; - - /// Partial specialization for tuples - template - struct uses_allocator, _Alloc> : true_type { }; - - // See stl_pair.h... - template - template - inline - pair<_T1, _T2>:: - pair(piecewise_construct_t, - tuple<_Args1...> __first, tuple<_Args2...> __second) - : pair(__first, __second, - typename _Build_index_tuple::__type(), - typename _Build_index_tuple::__type()) - { } - - template - template - inline - pair<_T1, _T2>:: - pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, - _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) - : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), - second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) - { } - -#if __cplusplus > 201402L -# define __cpp_lib_apply 201603 - - template - constexpr decltype(auto) - __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>) - { - return std::__invoke(std::forward<_Fn>(__f), - std::get<_Idx>(std::forward<_Tuple>(__t))...); - } - - template - constexpr decltype(auto) - apply(_Fn&& __f, _Tuple&& __t) - { - using _Indices = make_index_sequence>>; - return std::__apply_impl(std::forward<_Fn>(__f), - std::forward<_Tuple>(__t), - _Indices{}); - } - -#define __cpp_lib_make_from_tuple 201606 - - template - constexpr _Tp - __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>) - { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); } - - template - constexpr _Tp - make_from_tuple(_Tuple&& __t) - { - return __make_from_tuple_impl<_Tp>( - std::forward<_Tuple>(__t), - make_index_sequence>>{}); - } -#endif // C++17 - - /// @} - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++11 - -#endif // _GLIBCXX_TUPLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/type_traits deleted file mode 100644 index 834bef745..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/type_traits +++ /dev/null @@ -1,3108 +0,0 @@ -// C++11 -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/type_traits - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_TYPE_TRAITS -#define _GLIBCXX_TYPE_TRAITS 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 -# if defined (__UINT_LEAST16_TYPE__) && defined(__UINT_LEAST32_TYPE__) -namespace std -{ - typedef __UINT_LEAST16_TYPE__ uint_least16_t; - typedef __UINT_LEAST32_TYPE__ uint_least32_t; -} -# else -# include -# endif -#endif - -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 - 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 __cplusplus > 201103L - -#define __cpp_lib_integral_constant_callable 201304 - - constexpr value_type operator()() const noexcept { return value; } -#endif - }; - - template - constexpr _Tp integral_constant<_Tp, __v>::value; - - /// The type used as a compile-time boolean with true value. - typedef integral_constant true_type; - - /// The type used as a compile-time boolean with false value. - typedef integral_constant false_type; - - template - using __bool_constant = integral_constant; - -#if __cplusplus > 201402L -# define __cpp_lib_bool_constant 201505 - template - using bool_constant = integral_constant; -#endif - - // Meta programming helper types. - - template - struct conditional; - - template - struct __or_; - - template<> - struct __or_<> - : public false_type - { }; - - template - struct __or_<_B1> - : public _B1 - { }; - - template - struct __or_<_B1, _B2> - : public conditional<_B1::value, _B1, _B2>::type - { }; - - template - struct __or_<_B1, _B2, _B3, _Bn...> - : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type - { }; - - template - struct __and_; - - template<> - struct __and_<> - : public true_type - { }; - - template - struct __and_<_B1> - : public _B1 - { }; - - template - struct __and_<_B1, _B2> - : public conditional<_B1::value, _B2, _B1>::type - { }; - - template - struct __and_<_B1, _B2, _B3, _Bn...> - : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type - { }; - - template - struct __not_ - : public __bool_constant - { }; - -#if __cplusplus >= 201703L - -#define __cpp_lib_logical_traits 201510 - - template - struct conjunction - : __and_<_Bn...> - { }; - - template - struct disjunction - : __or_<_Bn...> - { }; - - template - struct negation - : __not_<_Pp> - { }; - - template - inline constexpr bool conjunction_v = conjunction<_Bn...>::value; - - template - inline constexpr bool disjunction_v = disjunction<_Bn...>::value; - - template - inline constexpr bool negation_v = negation<_Pp>::value; - -#endif // C++17 - - // 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 - struct __success_type - { typedef _Tp type; }; - - struct __failure_type - { }; - - // Primary type categories. - - template - struct remove_cv; - - template - struct __is_void_helper - : public false_type { }; - - template<> - struct __is_void_helper - : public true_type { }; - - /// is_void - template - struct is_void - : public __is_void_helper::type>::type - { }; - - template - struct __is_integral_helper - : public false_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - -#ifdef _GLIBCXX_USE_WCHAR_T - template<> - struct __is_integral_helper - : public true_type { }; -#endif - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; - - // Conditionalizing on __STRICT_ANSI__ here will break any port that - // uses one of these types for size_t. -#if defined(__GLIBCXX_TYPE_INT_N_0) - template<> - struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_0> - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_1) - template<> - struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_1> - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_2) - template<> - struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_2> - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_3) - template<> - struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_3> - : public true_type { }; - - template<> - struct __is_integral_helper - : public true_type { }; -#endif - - /// is_integral - template - struct is_integral - : public __is_integral_helper::type>::type - { }; - - template - struct __is_floating_point_helper - : public false_type { }; - - template<> - struct __is_floating_point_helper - : public true_type { }; - - template<> - struct __is_floating_point_helper - : public true_type { }; - - template<> - struct __is_floating_point_helper - : public true_type { }; - -#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) - template<> - struct __is_floating_point_helper<__float128> - : public true_type { }; -#endif - - /// is_floating_point - template - struct is_floating_point - : public __is_floating_point_helper::type>::type - { }; - - /// is_array - template - struct is_array - : public false_type { }; - - template - struct is_array<_Tp[_Size]> - : public true_type { }; - - template - struct is_array<_Tp[]> - : public true_type { }; - - template - struct __is_pointer_helper - : public false_type { }; - - template - struct __is_pointer_helper<_Tp*> - : public true_type { }; - - /// is_pointer - template - struct is_pointer - : public __is_pointer_helper::type>::type - { }; - - /// is_lvalue_reference - template - struct is_lvalue_reference - : public false_type { }; - - template - struct is_lvalue_reference<_Tp&> - : public true_type { }; - - /// is_rvalue_reference - template - struct is_rvalue_reference - : public false_type { }; - - template - struct is_rvalue_reference<_Tp&&> - : public true_type { }; - - template - struct is_function; - - template - struct __is_member_object_pointer_helper - : public false_type { }; - - template - struct __is_member_object_pointer_helper<_Tp _Cp::*> - : public integral_constant::value> { }; - - /// is_member_object_pointer - template - struct is_member_object_pointer - : public __is_member_object_pointer_helper< - typename remove_cv<_Tp>::type>::type - { }; - - template - struct __is_member_function_pointer_helper - : public false_type { }; - - template - struct __is_member_function_pointer_helper<_Tp _Cp::*> - : public integral_constant::value> { }; - - /// is_member_function_pointer - template - struct is_member_function_pointer - : public __is_member_function_pointer_helper< - typename remove_cv<_Tp>::type>::type - { }; - - /// is_enum - template - struct is_enum - : public integral_constant - { }; - - /// is_union - template - struct is_union - : public integral_constant - { }; - - /// is_class - template - struct is_class - : public integral_constant - { }; - - /// is_function - template - struct is_function - : public false_type { }; - - template - struct is_function<_Res(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) const _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) const & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) const && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) const _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) const & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) const && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) volatile _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) volatile & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) volatile && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) volatile _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) volatile & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) volatile && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) const volatile _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) const volatile & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes...) const volatile && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) const volatile _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) const volatile & _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - - template - struct is_function<_Res(_ArgTypes......) const volatile && _GLIBCXX_NOEXCEPT_QUAL> - : public true_type { }; - -#define __cpp_lib_is_null_pointer 201309 - - template - struct __is_null_pointer_helper - : public false_type { }; - - template<> - struct __is_null_pointer_helper - : public true_type { }; - - /// is_null_pointer (LWG 2247). - template - struct is_null_pointer - : public __is_null_pointer_helper::type>::type - { }; - - /// __is_nullptr_t (extension). - template - struct __is_nullptr_t - : public is_null_pointer<_Tp> - { }; - - // Composite type categories. - - /// is_reference - template - struct is_reference - : public __or_, - is_rvalue_reference<_Tp>>::type - { }; - - /// is_arithmetic - template - struct is_arithmetic - : public __or_, is_floating_point<_Tp>>::type - { }; - - /// is_fundamental - template - struct is_fundamental - : public __or_, is_void<_Tp>, - is_null_pointer<_Tp>>::type - { }; - - /// is_object - template - struct is_object - : public __not_<__or_, is_reference<_Tp>, - is_void<_Tp>>>::type - { }; - - template - struct is_member_pointer; - - /// is_scalar - template - struct is_scalar - : public __or_, is_enum<_Tp>, is_pointer<_Tp>, - is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type - { }; - - /// is_compound - template - struct is_compound - : public integral_constant::value> { }; - - template - struct __is_member_pointer_helper - : public false_type { }; - - template - struct __is_member_pointer_helper<_Tp _Cp::*> - : public true_type { }; - - /// is_member_pointer - template - struct is_member_pointer - : public __is_member_pointer_helper::type>::type - { }; - - // Utility to detect referenceable types ([defns.referenceable]). - - template - struct __is_referenceable - : public __or_, is_reference<_Tp>>::type - { }; - - template - struct __is_referenceable<_Res(_Args...) _GLIBCXX_NOEXCEPT_QUAL> - : public true_type - { }; - - template - struct __is_referenceable<_Res(_Args......) _GLIBCXX_NOEXCEPT_QUAL> - : public true_type - { }; - - // Type properties. - - /// is_const - template - struct is_const - : public false_type { }; - - template - struct is_const<_Tp const> - : public true_type { }; - - /// is_volatile - template - struct is_volatile - : public false_type { }; - - template - struct is_volatile<_Tp volatile> - : public true_type { }; - - /// is_trivial - template - struct is_trivial - : public integral_constant - { }; - - // is_trivially_copyable - template - struct is_trivially_copyable - : public integral_constant - { }; - - /// is_standard_layout - template - struct is_standard_layout - : public integral_constant - { }; - - /// is_pod - // Could use is_standard_layout && is_trivial instead of the builtin. - template - struct is_pod - : public integral_constant - { }; - - /// is_literal_type - template - struct is_literal_type - : public integral_constant - { }; - - /// is_empty - template - struct is_empty - : public integral_constant - { }; - - /// is_polymorphic - template - struct is_polymorphic - : public integral_constant - { }; - -#if __cplusplus >= 201402L -#define __cpp_lib_is_final 201402L - /// is_final - template - struct is_final - : public integral_constant - { }; -#endif - - /// is_abstract - template - struct is_abstract - : public integral_constant - { }; - - template::value> - struct __is_signed_helper - : public false_type { }; - - template - struct __is_signed_helper<_Tp, true> - : public integral_constant - { }; - - /// is_signed - template - struct is_signed - : public __is_signed_helper<_Tp>::type - { }; - - /// is_unsigned - template - struct is_unsigned - : public __and_, __not_>> - { }; - - - // Destructible and constructible type properties. - - template - struct add_rvalue_reference; - - /** - * @brief Utility to simplify expressions used in unevaluated operands - * @ingroup utilities - */ - template - typename add_rvalue_reference<_Tp>::type declval() noexcept; - - template - struct extent; - - template - struct remove_all_extents; - - template - struct __is_array_known_bounds - : public integral_constant::value > 0)> - { }; - - template - struct __is_array_unknown_bounds - : public __and_, __not_>> - { }; - - // 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().~_Tp())> - static true_type __test(int); - - template - static false_type __test(...); - }; - - template - struct __is_destructible_impl - : public __do_is_destructible_impl - { - typedef decltype(__test<_Tp>(0)) type; - }; - - template, - __is_array_unknown_bounds<_Tp>, - is_function<_Tp>>::value, - bool = __or_, is_scalar<_Tp>>::value> - struct __is_destructible_safe; - - template - struct __is_destructible_safe<_Tp, false, false> - : public __is_destructible_impl::type>::type - { }; - - template - struct __is_destructible_safe<_Tp, true, false> - : public false_type { }; - - template - struct __is_destructible_safe<_Tp, false, true> - : public true_type { }; - - /// is_destructible - template - 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 - static integral_constant().~_Tp())> - __test(int); - - template - static false_type __test(...); - }; - - template - struct __is_nt_destructible_impl - : public __do_is_nt_destructible_impl - { - typedef decltype(__test<_Tp>(0)) type; - }; - - template, - __is_array_unknown_bounds<_Tp>, - is_function<_Tp>>::value, - bool = __or_, is_scalar<_Tp>>::value> - struct __is_nt_destructible_safe; - - template - struct __is_nt_destructible_safe<_Tp, false, false> - : public __is_nt_destructible_impl::type>::type - { }; - - template - struct __is_nt_destructible_safe<_Tp, true, false> - : public false_type { }; - - template - struct __is_nt_destructible_safe<_Tp, false, true> - : public true_type { }; - - /// is_nothrow_destructible - template - struct is_nothrow_destructible - : public __is_nt_destructible_safe<_Tp>::type - { }; - - struct __do_is_default_constructible_impl - { - template - static true_type __test(int); - - template - static false_type __test(...); - }; - - template - struct __is_default_constructible_impl - : public __do_is_default_constructible_impl - { - typedef decltype(__test<_Tp>(0)) type; - }; - - template - struct __is_default_constructible_atom - : public __and_<__not_>, - __is_default_constructible_impl<_Tp>> - { }; - - template::value> - struct __is_default_constructible_safe; - - // The following technique is a workaround for a current core language - // restriction, which does not allow for array types to occur in - // functional casts of the form T(). Complete arrays can be default- - // constructed, if the element type is default-constructible, but - // arrays with unknown bounds are not. - template - struct __is_default_constructible_safe<_Tp, true> - : public __and_<__is_array_known_bounds<_Tp>, - __is_default_constructible_atom::type>> - { }; - - template - struct __is_default_constructible_safe<_Tp, false> - : public __is_default_constructible_atom<_Tp>::type - { }; - - /// is_default_constructible - template - struct is_default_constructible - : public __is_default_constructible_safe<_Tp>::type - { }; - - - // Implementation of is_constructible. - - // The hardest part of this trait is the binary direct-initialization - // case, because we hit into a functional cast of the form T(arg). - // This implementation uses different strategies depending on the - // target type to reduce the test overhead as much as possible: - // - // a) For a reference target type, we use a static_cast expression - // modulo its extra cases. - // - // b) For a non-reference target type we use a ::new expression. - struct __do_is_static_castable_impl - { - template(declval<_From>()))> - static true_type __test(int); - - template - static false_type __test(...); - }; - - template - struct __is_static_castable_impl - : public __do_is_static_castable_impl - { - typedef decltype(__test<_From, _To>(0)) type; - }; - - template - struct __is_static_castable_safe - : public __is_static_castable_impl<_From, _To>::type - { }; - - // __is_static_castable - template - struct __is_static_castable - : public integral_constant::value)> - { }; - - // Implementation for non-reference types. To meet the proper - // variable definition semantics, we also need to test for - // is_destructible in this case. - // This form should be simplified by a single expression: - // ::delete ::new _Tp(declval<_Arg>()), see c++/51222. - struct __do_is_direct_constructible_impl - { - template()))> - static true_type __test(int); - - template - static false_type __test(...); - }; - - template - struct __is_direct_constructible_impl - : public __do_is_direct_constructible_impl - { - typedef decltype(__test<_Tp, _Arg>(0)) type; - }; - - template - struct __is_direct_constructible_new_safe - : public __and_, - __is_direct_constructible_impl<_Tp, _Arg>> - { }; - - template - struct is_same; - - template - struct is_base_of; - - template - struct remove_reference; - - template, - is_function<_From>>>::value> - struct __is_base_to_derived_ref; - - template - struct is_constructible; - - // Detect whether we have a downcast situation during - // reference binding. - template - struct __is_base_to_derived_ref<_From, _To, true> - { - typedef typename remove_cv::type>::type __src_t; - typedef typename remove_cv::type>::type __dst_t; - typedef __and_<__not_>, - is_base_of<__src_t, __dst_t>, - __not_>> type; - static constexpr bool value = type::value; - }; - - template - struct __is_base_to_derived_ref<_From, _To, false> - : public false_type - { }; - - template, - is_rvalue_reference<_To>>::value> - struct __is_lvalue_to_rvalue_ref; - - // Detect whether we have an lvalue of non-function type - // bound to a reference-compatible rvalue-reference. - template - struct __is_lvalue_to_rvalue_ref<_From, _To, true> - { - typedef typename remove_cv::type>::type __src_t; - typedef typename remove_cv::type>::type __dst_t; - typedef __and_<__not_>, - __or_, - is_base_of<__dst_t, __src_t>>> type; - static constexpr bool value = type::value; - }; - - template - struct __is_lvalue_to_rvalue_ref<_From, _To, false> - : public false_type - { }; - - // Here we handle direct-initialization to a reference type as - // equivalent to a static_cast modulo overshooting conversions. - // These are restricted to the following conversions: - // a) A base class value to a derived class reference - // b) An lvalue to an rvalue-reference of reference-compatible - // types that are not functions - template - struct __is_direct_constructible_ref_cast - : public __and_<__is_static_castable<_Arg, _Tp>, - __not_<__or_<__is_base_to_derived_ref<_Arg, _Tp>, - __is_lvalue_to_rvalue_ref<_Arg, _Tp> - >>> - { }; - - template - struct __is_direct_constructible_new - : public conditional::value, - __is_direct_constructible_ref_cast<_Tp, _Arg>, - __is_direct_constructible_new_safe<_Tp, _Arg> - >::type - { }; - - template - struct __is_direct_constructible - : public __is_direct_constructible_new<_Tp, _Arg>::type - { }; - - // Since default-construction and binary direct-initialization have - // been handled separately, the implementation of the remaining - // n-ary construction cases is rather straightforward. We can use - // here a functional cast, because array types are excluded anyway - // and this form is never interpreted as a C cast. - struct __do_is_nary_constructible_impl - { - template()...))> - static true_type __test(int); - - template - static false_type __test(...); - }; - - template - struct __is_nary_constructible_impl - : public __do_is_nary_constructible_impl - { - typedef decltype(__test<_Tp, _Args...>(0)) type; - }; - - template - struct __is_nary_constructible - : public __is_nary_constructible_impl<_Tp, _Args...>::type - { - static_assert(sizeof...(_Args) > 1, - "Only useful for > 1 arguments"); - }; - - template - struct __is_constructible_impl - : public __is_nary_constructible<_Tp, _Args...> - { }; - - template - struct __is_constructible_impl<_Tp, _Arg> - : public __is_direct_constructible<_Tp, _Arg> - { }; - - template - struct __is_constructible_impl<_Tp> - : public is_default_constructible<_Tp> - { }; - - /// is_constructible - template - struct is_constructible - : public __is_constructible_impl<_Tp, _Args...>::type - { }; - - template::value> - struct __is_copy_constructible_impl; - - template - struct __is_copy_constructible_impl<_Tp, false> - : public false_type { }; - - template - struct __is_copy_constructible_impl<_Tp, true> - : public is_constructible<_Tp, const _Tp&> - { }; - - /// is_copy_constructible - template - struct is_copy_constructible - : public __is_copy_constructible_impl<_Tp> - { }; - - template::value> - struct __is_move_constructible_impl; - - template - struct __is_move_constructible_impl<_Tp, false> - : public false_type { }; - - template - struct __is_move_constructible_impl<_Tp, true> - : public is_constructible<_Tp, _Tp&&> - { }; - - /// is_move_constructible - template - struct is_move_constructible - : public __is_move_constructible_impl<_Tp> - { }; - - template - struct __is_nt_default_constructible_atom - : public integral_constant - { }; - - template::value> - struct __is_nt_default_constructible_impl; - - template - struct __is_nt_default_constructible_impl<_Tp, true> - : public __and_<__is_array_known_bounds<_Tp>, - __is_nt_default_constructible_atom::type>> - { }; - - template - struct __is_nt_default_constructible_impl<_Tp, false> - : public __is_nt_default_constructible_atom<_Tp> - { }; - - /// is_nothrow_default_constructible - template - struct is_nothrow_default_constructible - : public __and_, - __is_nt_default_constructible_impl<_Tp>> - { }; - - template - struct __is_nt_constructible_impl - : public integral_constant()...))> - { }; - - template - struct __is_nt_constructible_impl<_Tp, _Arg> - : public integral_constant(declval<_Arg>()))> - { }; - - template - struct __is_nt_constructible_impl<_Tp> - : public is_nothrow_default_constructible<_Tp> - { }; - - /// is_nothrow_constructible - template - struct is_nothrow_constructible - : public __and_, - __is_nt_constructible_impl<_Tp, _Args...>> - { }; - - template::value> - struct __is_nothrow_copy_constructible_impl; - - template - struct __is_nothrow_copy_constructible_impl<_Tp, false> - : public false_type { }; - - template - struct __is_nothrow_copy_constructible_impl<_Tp, true> - : public is_nothrow_constructible<_Tp, const _Tp&> - { }; - - /// is_nothrow_copy_constructible - template - struct is_nothrow_copy_constructible - : public __is_nothrow_copy_constructible_impl<_Tp> - { }; - - template::value> - struct __is_nothrow_move_constructible_impl; - - template - struct __is_nothrow_move_constructible_impl<_Tp, false> - : public false_type { }; - - template - struct __is_nothrow_move_constructible_impl<_Tp, true> - : public is_nothrow_constructible<_Tp, _Tp&&> - { }; - - /// is_nothrow_move_constructible - template - struct is_nothrow_move_constructible - : public __is_nothrow_move_constructible_impl<_Tp> - { }; - - template - class __is_assignable_helper - { - template() = declval<_Up1>())> - static true_type - __test(int); - - template - static false_type - __test(...); - - public: - typedef decltype(__test<_Tp, _Up>(0)) type; - }; - - /// is_assignable - template - struct is_assignable - : public __is_assignable_helper<_Tp, _Up>::type - { }; - - template::value> - struct __is_copy_assignable_impl; - - template - struct __is_copy_assignable_impl<_Tp, false> - : public false_type { }; - - template - struct __is_copy_assignable_impl<_Tp, true> - : public is_assignable<_Tp&, const _Tp&> - { }; - - /// is_copy_assignable - template - struct is_copy_assignable - : public __is_copy_assignable_impl<_Tp> - { }; - - template::value> - struct __is_move_assignable_impl; - - template - struct __is_move_assignable_impl<_Tp, false> - : public false_type { }; - - template - struct __is_move_assignable_impl<_Tp, true> - : public is_assignable<_Tp&, _Tp&&> - { }; - - /// is_move_assignable - template - struct is_move_assignable - : public __is_move_assignable_impl<_Tp> - { }; - - template - struct __is_nt_assignable_impl - : public integral_constant() = declval<_Up>())> - { }; - - /// is_nothrow_assignable - template - struct is_nothrow_assignable - : public __and_, - __is_nt_assignable_impl<_Tp, _Up>> - { }; - - template::value> - struct __is_nt_copy_assignable_impl; - - template - struct __is_nt_copy_assignable_impl<_Tp, false> - : public false_type { }; - - template - struct __is_nt_copy_assignable_impl<_Tp, true> - : public is_nothrow_assignable<_Tp&, const _Tp&> - { }; - - /// is_nothrow_copy_assignable - template - struct is_nothrow_copy_assignable - : public __is_nt_copy_assignable_impl<_Tp> - { }; - - template::value> - struct __is_nt_move_assignable_impl; - - template - struct __is_nt_move_assignable_impl<_Tp, false> - : public false_type { }; - - template - struct __is_nt_move_assignable_impl<_Tp, true> - : public is_nothrow_assignable<_Tp&, _Tp&&> - { }; - - /// is_nothrow_move_assignable - template - struct is_nothrow_move_assignable - : public __is_nt_move_assignable_impl<_Tp> - { }; - - /// is_trivially_constructible - template - struct is_trivially_constructible - : public __and_, integral_constant> - { }; - - /// is_trivially_default_constructible - template - struct is_trivially_default_constructible - : public is_trivially_constructible<_Tp>::type - { }; - - struct __do_is_implicitly_default_constructible_impl - { - template - static void __helper(const _Tp&); - - template - static true_type __test(const _Tp&, - decltype(__helper({}))* = 0); - - static false_type __test(...); - }; - - template - struct __is_implicitly_default_constructible_impl - : public __do_is_implicitly_default_constructible_impl - { - typedef decltype(__test(declval<_Tp>())) type; - }; - - template - struct __is_implicitly_default_constructible_safe - : public __is_implicitly_default_constructible_impl<_Tp>::type - { }; - - template - struct __is_implicitly_default_constructible - : public __and_, - __is_implicitly_default_constructible_safe<_Tp>> - { }; - - /// is_trivially_copy_constructible - template - struct is_trivially_copy_constructible - : public __and_, - integral_constant> - { }; - - /// is_trivially_move_constructible - template - struct is_trivially_move_constructible - : public __and_, - integral_constant> - { }; - - /// is_trivially_assignable - template - struct is_trivially_assignable - : public __and_, - integral_constant> - { }; - - /// is_trivially_copy_assignable - template - struct is_trivially_copy_assignable - : public __and_, - integral_constant> - { }; - - /// is_trivially_move_assignable - template - struct is_trivially_move_assignable - : public __and_, - integral_constant> - { }; - - /// is_trivially_destructible - template - struct is_trivially_destructible - : public __and_, integral_constant> - { }; - - - /// has_virtual_destructor - template - struct has_virtual_destructor - : public integral_constant - { }; - - - // type property queries. - - /// alignment_of - template - struct alignment_of - : public integral_constant { }; - - /// rank - template - struct rank - : public integral_constant { }; - - template - struct rank<_Tp[_Size]> - : public integral_constant::value> { }; - - template - struct rank<_Tp[]> - : public integral_constant::value> { }; - - /// extent - template - struct extent - : public integral_constant { }; - - template - struct extent<_Tp[_Size], _Uint> - : public integral_constant::value> - { }; - - template - struct extent<_Tp[], _Uint> - : public integral_constant::value> - { }; - - - // Type relations. - - /// is_same - template - struct is_same - : public false_type { }; - - template - struct is_same<_Tp, _Tp> - : public true_type { }; - - /// is_base_of - template - struct is_base_of - : public integral_constant - { }; - - template, is_function<_To>, - is_array<_To>>::value> - struct __is_convertible_helper - { typedef typename is_void<_To>::type type; }; - - template - class __is_convertible_helper<_From, _To, false> - { - template - static void __test_aux(_To1); - - template(std::declval<_From1>()))> - static true_type - __test(int); - - template - static false_type - __test(...); - - public: - typedef decltype(__test<_From, _To>(0)) type; - }; - - - /// is_convertible - template - struct is_convertible - : public __is_convertible_helper<_From, _To>::type - { }; - - - // Const-volatile modifications. - - /// remove_const - template - struct remove_const - { typedef _Tp type; }; - - template - struct remove_const<_Tp const> - { typedef _Tp type; }; - - /// remove_volatile - template - struct remove_volatile - { typedef _Tp type; }; - - template - struct remove_volatile<_Tp volatile> - { typedef _Tp type; }; - - /// remove_cv - template - struct remove_cv - { - typedef typename - remove_const::type>::type type; - }; - - /// add_const - template - struct add_const - { typedef _Tp const type; }; - - /// add_volatile - template - struct add_volatile - { typedef _Tp volatile type; }; - - /// add_cv - template - struct add_cv - { - typedef typename - add_const::type>::type type; - }; - -#if __cplusplus > 201103L - -#define __cpp_lib_transformation_trait_aliases 201304 - - /// Alias template for remove_const - template - using remove_const_t = typename remove_const<_Tp>::type; - - /// Alias template for remove_volatile - template - using remove_volatile_t = typename remove_volatile<_Tp>::type; - - /// Alias template for remove_cv - template - using remove_cv_t = typename remove_cv<_Tp>::type; - - /// Alias template for add_const - template - using add_const_t = typename add_const<_Tp>::type; - - /// Alias template for add_volatile - template - using add_volatile_t = typename add_volatile<_Tp>::type; - - /// Alias template for add_cv - template - using add_cv_t = typename add_cv<_Tp>::type; -#endif - - // Reference transformations. - - /// remove_reference - template - struct remove_reference - { typedef _Tp type; }; - - template - struct remove_reference<_Tp&> - { typedef _Tp type; }; - - template - struct remove_reference<_Tp&&> - { typedef _Tp type; }; - - template::value> - struct __add_lvalue_reference_helper - { typedef _Tp type; }; - - template - struct __add_lvalue_reference_helper<_Tp, true> - { typedef _Tp& type; }; - - /// add_lvalue_reference - template - struct add_lvalue_reference - : public __add_lvalue_reference_helper<_Tp> - { }; - - template::value> - struct __add_rvalue_reference_helper - { typedef _Tp type; }; - - template - struct __add_rvalue_reference_helper<_Tp, true> - { typedef _Tp&& type; }; - - /// add_rvalue_reference - template - struct add_rvalue_reference - : public __add_rvalue_reference_helper<_Tp> - { }; - -#if __cplusplus > 201103L - /// Alias template for remove_reference - template - using remove_reference_t = typename remove_reference<_Tp>::type; - - /// Alias template for add_lvalue_reference - template - using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; - - /// Alias template for add_rvalue_reference - template - using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; -#endif - - // Sign modifications. - - // Utility for constructing identically cv-qualified types. - template - struct __cv_selector; - - template - struct __cv_selector<_Unqualified, false, false> - { typedef _Unqualified __type; }; - - template - struct __cv_selector<_Unqualified, false, true> - { typedef volatile _Unqualified __type; }; - - template - struct __cv_selector<_Unqualified, true, false> - { typedef const _Unqualified __type; }; - - template - struct __cv_selector<_Unqualified, true, true> - { typedef const volatile _Unqualified __type; }; - - template::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 - struct __make_unsigned - { typedef _Tp __type; }; - - template<> - struct __make_unsigned - { typedef unsigned char __type; }; - - template<> - struct __make_unsigned - { typedef unsigned char __type; }; - - template<> - struct __make_unsigned - { typedef unsigned short __type; }; - - template<> - struct __make_unsigned - { typedef unsigned int __type; }; - - template<> - struct __make_unsigned - { typedef unsigned long __type; }; - - template<> - struct __make_unsigned - { typedef unsigned long long __type; }; - -#if defined(_GLIBCXX_USE_WCHAR_T) && !defined(__WCHAR_UNSIGNED__) - template<> - struct __make_unsigned : __make_unsigned<__WCHAR_TYPE__> - { }; -#endif - -#if defined(__GLIBCXX_TYPE_INT_N_0) - template<> - struct __make_unsigned<__GLIBCXX_TYPE_INT_N_0> - { typedef unsigned __GLIBCXX_TYPE_INT_N_0 __type; }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_1) - template<> - struct __make_unsigned<__GLIBCXX_TYPE_INT_N_1> - { typedef unsigned __GLIBCXX_TYPE_INT_N_1 __type; }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_2) - template<> - struct __make_unsigned<__GLIBCXX_TYPE_INT_N_2> - { typedef unsigned __GLIBCXX_TYPE_INT_N_2 __type; }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_3) - template<> - struct __make_unsigned<__GLIBCXX_TYPE_INT_N_3> - { typedef unsigned __GLIBCXX_TYPE_INT_N_3 __type; }; -#endif - - // Select between integral and enum: not possible to be both. - template::value, - bool _IsEnum = is_enum<_Tp>::value> - class __make_unsigned_selector; - - template - class __make_unsigned_selector<_Tp, true, false> - { - typedef __make_unsigned::type> __unsignedt; - typedef typename __unsignedt::__type __unsigned_type; - typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; - - public: - typedef typename __cv_unsigned::__type __type; - }; - - template - class __make_unsigned_selector<_Tp, false, true> - { - // With -fshort-enums, an enum may be as small as a char. - typedef unsigned char __smallest; - static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); - static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short); - static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int); - static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long); - typedef conditional<__b3, unsigned long, unsigned long long> __cond3; - typedef typename __cond3::type __cond3_type; - typedef conditional<__b2, unsigned int, __cond3_type> __cond2; - typedef typename __cond2::type __cond2_type; - typedef conditional<__b1, unsigned short, __cond2_type> __cond1; - typedef typename __cond1::type __cond1_type; - - typedef typename conditional<__b0, __smallest, __cond1_type>::type - __unsigned_type; - typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; - - public: - typedef typename __cv_unsigned::__type __type; - }; - - // Given an integral/enum type, return the corresponding unsigned - // integer type. - // Primary template. - /// make_unsigned - template - struct make_unsigned - { typedef typename __make_unsigned_selector<_Tp>::__type type; }; - - // Integral, but don't define. - template<> - struct make_unsigned; - - - // Utility for finding the signed versions of unsigned integral types. - template - struct __make_signed - { typedef _Tp __type; }; - - template<> - struct __make_signed - { typedef signed char __type; }; - - template<> - struct __make_signed - { typedef signed char __type; }; - - template<> - struct __make_signed - { typedef signed short __type; }; - - template<> - struct __make_signed - { typedef signed int __type; }; - - template<> - struct __make_signed - { typedef signed long __type; }; - - template<> - struct __make_signed - { typedef signed long long __type; }; - -#if defined(_GLIBCXX_USE_WCHAR_T) && defined(__WCHAR_UNSIGNED__) - template<> - struct __make_signed : __make_signed<__WCHAR_TYPE__> - { }; -#endif - -#ifdef _GLIBCXX_USE_C99_STDINT_TR1 - template<> - struct __make_signed : __make_signed - { }; - template<> - struct __make_signed : __make_signed - { }; -#endif - -#if defined(__GLIBCXX_TYPE_INT_N_0) - template<> - struct __make_signed - { typedef __GLIBCXX_TYPE_INT_N_0 __type; }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_1) - template<> - struct __make_signed - { typedef __GLIBCXX_TYPE_INT_N_1 __type; }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_2) - template<> - struct __make_signed - { typedef __GLIBCXX_TYPE_INT_N_2 __type; }; -#endif -#if defined(__GLIBCXX_TYPE_INT_N_3) - template<> - struct __make_signed - { typedef __GLIBCXX_TYPE_INT_N_3 __type; }; -#endif - - // Select between integral and enum: not possible to be both. - template::value, - bool _IsEnum = is_enum<_Tp>::value> - class __make_signed_selector; - - template - class __make_signed_selector<_Tp, true, false> - { - typedef __make_signed::type> __signedt; - typedef typename __signedt::__type __signed_type; - typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; - - public: - typedef typename __cv_signed::__type __type; - }; - - template - class __make_signed_selector<_Tp, false, true> - { - typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; - - public: - typedef typename __make_signed_selector<__unsigned_type>::__type __type; - }; - - // Given an integral/enum type, return the corresponding signed - // integer type. - // Primary template. - /// make_signed - template - struct make_signed - { typedef typename __make_signed_selector<_Tp>::__type type; }; - - // Integral, but don't define. - template<> - struct make_signed; - -#if __cplusplus > 201103L - /// Alias template for make_signed - template - using make_signed_t = typename make_signed<_Tp>::type; - - /// Alias template for make_unsigned - template - using make_unsigned_t = typename make_unsigned<_Tp>::type; -#endif - - // Array modifications. - - /// remove_extent - template - struct remove_extent - { typedef _Tp type; }; - - template - struct remove_extent<_Tp[_Size]> - { typedef _Tp type; }; - - template - struct remove_extent<_Tp[]> - { typedef _Tp type; }; - - /// remove_all_extents - template - struct remove_all_extents - { typedef _Tp type; }; - - template - struct remove_all_extents<_Tp[_Size]> - { typedef typename remove_all_extents<_Tp>::type type; }; - - template - struct remove_all_extents<_Tp[]> - { typedef typename remove_all_extents<_Tp>::type type; }; - -#if __cplusplus > 201103L - /// Alias template for remove_extent - template - using remove_extent_t = typename remove_extent<_Tp>::type; - - /// Alias template for remove_all_extents - template - using remove_all_extents_t = typename remove_all_extents<_Tp>::type; -#endif - - // Pointer modifications. - - template - struct __remove_pointer_helper - { typedef _Tp type; }; - - template - struct __remove_pointer_helper<_Tp, _Up*> - { typedef _Up type; }; - - /// remove_pointer - template - struct remove_pointer - : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> - { }; - - /// add_pointer - template, - is_void<_Tp>>::value> - struct __add_pointer_helper - { typedef _Tp type; }; - - template - struct __add_pointer_helper<_Tp, true> - { typedef typename remove_reference<_Tp>::type* type; }; - - template - struct add_pointer - : public __add_pointer_helper<_Tp> - { }; - -#if __cplusplus > 201103L - /// Alias template for remove_pointer - template - using remove_pointer_t = typename remove_pointer<_Tp>::type; - - /// Alias template for add_pointer - template - using add_pointer_t = typename add_pointer<_Tp>::type; -#endif - - template - 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::__type)> - struct aligned_storage - { - union type - { - unsigned char __data[_Len]; - struct __attribute__((__aligned__((_Align)))) { } __align; - }; - }; - - template - struct __strictest_alignment - { - static const size_t _S_alignment = 0; - static const size_t _S_size = 0; - }; - - template - 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 - 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 - 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::value, - bool _IsFunction = is_function<_Up>::value> - struct __decay_selector; - - // NB: DR 705. - template - struct __decay_selector<_Up, false, false> - { typedef typename remove_cv<_Up>::type __type; }; - - template - struct __decay_selector<_Up, true, false> - { typedef typename remove_extent<_Up>::type* __type; }; - - template - struct __decay_selector<_Up, false, true> - { typedef typename add_pointer<_Up>::type __type; }; - - /// decay - template - class decay - { - typedef typename remove_reference<_Tp>::type __remove_type; - - public: - typedef typename __decay_selector<__remove_type>::__type type; - }; - - template - class reference_wrapper; - - // Helper which adds a reference to a type when given a reference_wrapper - template - struct __strip_reference_wrapper - { - typedef _Tp __type; - }; - - template - struct __strip_reference_wrapper > - { - typedef _Tp& __type; - }; - - template - 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 - struct enable_if - { }; - - // Partial specialization for true. - template - struct enable_if - { typedef _Tp type; }; - - template - using _Require = typename enable_if<__and_<_Cond...>::value>::type; - - // Primary template. - /// Define a member typedef @c type to one of two argument types. - template - struct conditional - { typedef _Iftrue type; }; - - // Partial specialization for false. - template - struct conditional - { typedef _Iffalse type; }; - - /// common_type - template - struct common_type; - - // Sfinae-friendly common_type implementation: - - struct __do_common_type_impl - { - template - static __success_type() - : std::declval<_Up>())>::type> _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - struct __common_type_impl - : private __do_common_type_impl - { - typedef decltype(_S_test<_Tp, _Up>(0)) type; - }; - - struct __do_member_type_wrapper - { - template - static __success_type _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - struct __member_type_wrapper - : private __do_member_type_wrapper - { - typedef decltype(_S_test<_Tp>(0)) type; - }; - - template - struct __expanded_common_type_wrapper - { - typedef common_type type; - }; - - template - struct __expanded_common_type_wrapper<__failure_type, _Args...> - { typedef __failure_type type; }; - - template - struct common_type<_Tp> - { typedef typename decay<_Tp>::type type; }; - - template - struct common_type<_Tp, _Up> - : public __common_type_impl<_Tp, _Up>::type - { }; - - template - struct common_type<_Tp, _Up, _Vp...> - : public __expanded_common_type_wrapper>::type, _Vp...>::type - { }; - - /// The underlying type of an enum. - template - struct underlying_type - { - typedef __underlying_type(_Tp) type; - }; - - template - struct __declval_protector - { - static const bool __stop = false; - static typename add_rvalue_reference<_Tp>::type __delegate(); - }; - - template - inline typename add_rvalue_reference<_Tp>::type - declval() noexcept - { - static_assert(__declval_protector<_Tp>::__stop, - "declval() must not be used!"); - return __declval_protector<_Tp>::__delegate(); - } - - /// result_of - template - 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 - struct __result_of_success : __success_type<_Tp> - { using __invoke_type = _Tag; }; - - // [func.require] paragraph 1 bullet 1: - struct __result_of_memfun_ref_impl - { - template - static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) - ), __invoke_memfun_ref> _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - 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 - static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) - ), __invoke_memfun_deref> _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - 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 - static __result_of_success().*std::declval<_Fp>() - ), __invoke_memobj_ref> _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - 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 - static __result_of_success()).*std::declval<_Fp>() - ), __invoke_memobj_deref> _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - struct __result_of_memobj_deref - : private __result_of_memobj_deref_impl - { - typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; - }; - - template - struct __result_of_memobj; - - template - struct __result_of_memobj<_Res _Class::*, _Arg> - { - typedef typename remove_cv::type>::type _Argval; - typedef _Res _Class::* _MemPtr; - typedef typename conditional<__or_, - is_base_of<_Class, _Argval>>::value, - __result_of_memobj_ref<_MemPtr, _Arg>, - __result_of_memobj_deref<_MemPtr, _Arg> - >::type::type type; - }; - - template - struct __result_of_memfun; - - template - struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> - { - typedef typename remove_cv::type>::type _Argval; - typedef _Res _Class::* _MemPtr; - typedef typename conditional<__or_, - 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::type> - struct __inv_unwrap - { - using type = _Tp; - }; - - template - struct __inv_unwrap<_Tp, reference_wrapper<_Up>> - { - using type = _Up&; - }; - - template - struct __result_of_impl - { - typedef __failure_type type; - }; - - template - struct __result_of_impl - : public __result_of_memobj::type, - typename __inv_unwrap<_Arg>::type> - { }; - - template - struct __result_of_impl - : public __result_of_memfun::type, - typename __inv_unwrap<_Arg>::type, _Args...> - { }; - - // [func.require] paragraph 1 bullet 5: - struct __result_of_other_impl - { - template - static __result_of_success()(std::declval<_Args>()...) - ), __invoke_other> _S_test(int); - - template - static __failure_type _S_test(...); - }; - - template - struct __result_of_impl - : private __result_of_other_impl - { - typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; - }; - - // __invoke_result (std::invoke_result for C++11) - template - 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 - struct result_of<_Functor(_ArgTypes...)> - : public __invoke_result<_Functor, _ArgTypes...> - { }; - -#if __cplusplus > 201103L - /// Alias template for aligned_storage - template::__type)> - using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; - - template - using aligned_union_t = typename aligned_union<_Len, _Types...>::type; - - /// Alias template for decay - template - using decay_t = typename decay<_Tp>::type; - - /// Alias template for enable_if - template - using enable_if_t = typename enable_if<_Cond, _Tp>::type; - - /// Alias template for conditional - template - using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; - - /// Alias template for common_type - template - using common_type_t = typename common_type<_Tp...>::type; - - /// Alias template for underlying_type - template - using underlying_type_t = typename underlying_type<_Tp>::type; - - /// Alias template for result_of - template - using result_of_t = typename result_of<_Tp>::type; -#endif - - template using __void_t = void; - -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 -#define __cpp_lib_void_t 201411 - /// A metafunction that always yields void, used for detecting valid types. - template using void_t = void; -#endif - - /// Implementation of the detection idiom (negative case). - template class _Op, typename... _Args> - struct __detector - { - using value_t = false_type; - using type = _Default; - }; - - /// Implementation of the detection idiom (positive case). - template 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 class _Op, - typename... _Args> - using __detected_or = __detector<_Default, void, _Op, _Args...>; - - // _Op<_Args...> if that is a valid type, otherwise _Default. - template 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> \ - struct __has_##_NTYPE \ - : false_type \ - { }; \ - template \ - struct __has_##_NTYPE<_Tp, __void_t> \ - : true_type \ - { }; - - template - struct __is_swappable; - - template - struct __is_nothrow_swappable; - - template - class tuple; - - template - struct __is_tuple_like_impl : false_type - { }; - - template - struct __is_tuple_like_impl> : true_type - { }; - - // Internal type trait that allows us to sfinae-protect tuple_cat. - template - struct __is_tuple_like - : public __is_tuple_like_impl::type>::type>::type - { }; - - template - 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_assignable<_Tp>>::value); - - template - 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(), std::declval<_Tp&>()))> - static true_type __test(int); - - template - static false_type __test(...); - }; - - struct __do_is_nothrow_swappable_impl - { - template - static __bool_constant< - noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) - > __test(int); - - template - static false_type __test(...); - }; - - } // namespace __swappable_details - - template - struct __is_swappable_impl - : public __swappable_details::__do_is_swappable_impl - { - typedef decltype(__test<_Tp>(0)) type; - }; - - template - struct __is_nothrow_swappable_impl - : public __swappable_details::__do_is_nothrow_swappable_impl - { - typedef decltype(__test<_Tp>(0)) type; - }; - - template - struct __is_swappable - : public __is_swappable_impl<_Tp>::type - { }; - - template - struct __is_nothrow_swappable - : public __is_nothrow_swappable_impl<_Tp>::type - { }; - -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 -#define __cpp_lib_is_swappable 201603 - /// Metafunctions used for detecting swappable types: p0185r1 - - /// is_swappable - template - struct is_swappable - : public __is_swappable_impl<_Tp>::type - { }; - - /// is_nothrow_swappable - template - struct is_nothrow_swappable - : public __is_nothrow_swappable_impl<_Tp>::type - { }; - -#if __cplusplus >= 201402L - /// is_swappable_v - template - _GLIBCXX17_INLINE constexpr bool is_swappable_v = - is_swappable<_Tp>::value; - - /// is_nothrow_swappable_v - template - _GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_v = - is_nothrow_swappable<_Tp>::value; -#endif // __cplusplus >= 201402L - - namespace __swappable_with_details { - using std::swap; - - struct __do_is_swappable_with_impl - { - template(), std::declval<_Up>())), - typename - = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> - static true_type __test(int); - - template - static false_type __test(...); - }; - - struct __do_is_nothrow_swappable_with_impl - { - template - static __bool_constant< - noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) - && - noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) - > __test(int); - - template - static false_type __test(...); - }; - - } // namespace __swappable_with_details - - template - 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 - struct __is_swappable_with_impl<_Tp&, _Tp&> - : public __swappable_details::__do_is_swappable_impl - { - typedef decltype(__test<_Tp&>(0)) type; - }; - - template - 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 - 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 - struct is_swappable_with - : public __is_swappable_with_impl<_Tp, _Up>::type - { }; - - /// is_nothrow_swappable_with - template - struct is_nothrow_swappable_with - : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type - { }; - -#if __cplusplus >= 201402L - /// is_swappable_with_v - template - _GLIBCXX17_INLINE constexpr bool is_swappable_with_v = - is_swappable_with<_Tp, _Up>::value; - - /// is_nothrow_swappable_with_v - template - _GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_with_v = - is_nothrow_swappable_with<_Tp, _Up>::value; -#endif // __cplusplus >= 201402L - -#endif// c++1z or gnu++11 - - // __is_invocable (std::is_invocable for C++11) - - template - struct __is_invocable_impl : false_type { }; - - template - struct __is_invocable_impl<_Result, _Ret, __void_t> - : __or_, is_convertible>::type - { }; - - template - struct __is_invocable - : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type - { }; - - template - 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 - constexpr bool __call_is_nt(__invoke_memfun_deref) - { - return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( - std::declval<_Args>()...)); - } - - template - constexpr bool __call_is_nt(__invoke_memobj_ref) - { - using _Up = typename __inv_unwrap<_Tp>::type; - return noexcept(std::declval<_Up>().*std::declval<_Fn>()); - } - - template - constexpr bool __call_is_nt(__invoke_memobj_deref) - { - return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); - } - - template - constexpr bool __call_is_nt(__invoke_other) - { - return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); - } - - template - struct __call_is_nothrow - : __bool_constant< - std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) - > - { }; - - template - using __call_is_nothrow_ - = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; - - // __is_nothrow_invocable (std::is_nothrow_invocable for C++11) - template - 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 __cplusplus > 201402L -# define __cpp_lib_is_invocable 201703 - - /// std::invoke_result - template - struct invoke_result - : public __invoke_result<_Functor, _ArgTypes...> - { }; - - /// std::invoke_result_t - template - using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; - - /// std::is_invocable - template - struct is_invocable - : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type - { }; - - /// std::is_invocable_r - template - struct is_invocable_r - : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type - { }; - - /// std::is_nothrow_invocable - template - struct is_nothrow_invocable - : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>, - __call_is_nothrow_<_Fn, _ArgTypes...>>::type - { }; - - template - struct __is_nt_invocable_impl : false_type { }; - - template - struct __is_nt_invocable_impl<_Result, _Ret, - __void_t> - : __or_, - __and_, - is_nothrow_constructible<_Ret, typename _Result::type>>> - { }; - - /// std::is_nothrow_invocable_r - template - 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 - inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; - - /// std::is_nothrow_invocable_v - template - inline constexpr bool is_nothrow_invocable_v - = is_nothrow_invocable<_Fn, _Args...>::value; - - /// std::is_invocable_r_v - template - inline constexpr bool is_invocable_r_v - = is_invocable_r<_Fn, _Args...>::value; - - /// std::is_nothrow_invocable_r_v - template - inline constexpr bool is_nothrow_invocable_r_v - = is_nothrow_invocable_r<_Fn, _Args...>::value; -#endif // C++17 - -#if __cplusplus > 201402L -# define __cpp_lib_type_trait_variable_templates 201510L -template - inline constexpr bool is_void_v = is_void<_Tp>::value; -template - inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; -template - inline constexpr bool is_integral_v = is_integral<_Tp>::value; -template - inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; -template - inline constexpr bool is_array_v = is_array<_Tp>::value; -template - inline constexpr bool is_pointer_v = is_pointer<_Tp>::value; -template - inline constexpr bool is_lvalue_reference_v = - is_lvalue_reference<_Tp>::value; -template - inline constexpr bool is_rvalue_reference_v = - is_rvalue_reference<_Tp>::value; -template - inline constexpr bool is_member_object_pointer_v = - is_member_object_pointer<_Tp>::value; -template - inline constexpr bool is_member_function_pointer_v = - is_member_function_pointer<_Tp>::value; -template - inline constexpr bool is_enum_v = is_enum<_Tp>::value; -template - inline constexpr bool is_union_v = is_union<_Tp>::value; -template - inline constexpr bool is_class_v = is_class<_Tp>::value; -template - inline constexpr bool is_function_v = is_function<_Tp>::value; -template - inline constexpr bool is_reference_v = is_reference<_Tp>::value; -template - inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; -template - inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; -template - inline constexpr bool is_object_v = is_object<_Tp>::value; -template - inline constexpr bool is_scalar_v = is_scalar<_Tp>::value; -template - inline constexpr bool is_compound_v = is_compound<_Tp>::value; -template - inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; -template - inline constexpr bool is_const_v = is_const<_Tp>::value; -template - inline constexpr bool is_volatile_v = is_volatile<_Tp>::value; -template - inline constexpr bool is_trivial_v = is_trivial<_Tp>::value; -template - inline constexpr bool is_trivially_copyable_v = - is_trivially_copyable<_Tp>::value; -template - inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value; -template - inline constexpr bool is_pod_v = is_pod<_Tp>::value; -template - inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value; -template - inline constexpr bool is_empty_v = is_empty<_Tp>::value; -template - inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value; -template - inline constexpr bool is_abstract_v = is_abstract<_Tp>::value; -template - inline constexpr bool is_final_v = is_final<_Tp>::value; -template - inline constexpr bool is_signed_v = is_signed<_Tp>::value; -template - inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; -template - inline constexpr bool is_constructible_v = - is_constructible<_Tp, _Args...>::value; -template - inline constexpr bool is_default_constructible_v = - is_default_constructible<_Tp>::value; -template - inline constexpr bool is_copy_constructible_v = - is_copy_constructible<_Tp>::value; -template - inline constexpr bool is_move_constructible_v = - is_move_constructible<_Tp>::value; -template - inline constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value; -template - inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; -template - inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; -template - inline constexpr bool is_destructible_v = is_destructible<_Tp>::value; -template - inline constexpr bool is_trivially_constructible_v = - is_trivially_constructible<_Tp, _Args...>::value; -template - inline constexpr bool is_trivially_default_constructible_v = - is_trivially_default_constructible<_Tp>::value; -template - inline constexpr bool is_trivially_copy_constructible_v = - is_trivially_copy_constructible<_Tp>::value; -template - inline constexpr bool is_trivially_move_constructible_v = - is_trivially_move_constructible<_Tp>::value; -template - inline constexpr bool is_trivially_assignable_v = - is_trivially_assignable<_Tp, _Up>::value; -template - inline constexpr bool is_trivially_copy_assignable_v = - is_trivially_copy_assignable<_Tp>::value; -template - inline constexpr bool is_trivially_move_assignable_v = - is_trivially_move_assignable<_Tp>::value; -template - inline constexpr bool is_trivially_destructible_v = - is_trivially_destructible<_Tp>::value; -template - inline constexpr bool is_nothrow_constructible_v = - is_nothrow_constructible<_Tp, _Args...>::value; -template - inline constexpr bool is_nothrow_default_constructible_v = - is_nothrow_default_constructible<_Tp>::value; -template - inline constexpr bool is_nothrow_copy_constructible_v = - is_nothrow_copy_constructible<_Tp>::value; -template - inline constexpr bool is_nothrow_move_constructible_v = - is_nothrow_move_constructible<_Tp>::value; -template - inline constexpr bool is_nothrow_assignable_v = - is_nothrow_assignable<_Tp, _Up>::value; -template - inline constexpr bool is_nothrow_copy_assignable_v = - is_nothrow_copy_assignable<_Tp>::value; -template - inline constexpr bool is_nothrow_move_assignable_v = - is_nothrow_move_assignable<_Tp>::value; -template - inline constexpr bool is_nothrow_destructible_v = - is_nothrow_destructible<_Tp>::value; -template - inline constexpr bool has_virtual_destructor_v = - has_virtual_destructor<_Tp>::value; -template - inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value; -template - inline constexpr size_t rank_v = rank<_Tp>::value; -template - inline constexpr size_t extent_v = extent<_Tp, _Idx>::value; -template - inline constexpr bool is_same_v = is_same<_Tp, _Up>::value; -template - inline constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value; -template - inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value; - -#if __GNUC__ >= 7 -# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1 -#elif defined(__is_identifier) -// For non-GNU compilers: -# if ! __is_identifier(__has_unique_object_representations) -# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1 -# endif -#endif - -#ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP -# define __cpp_lib_has_unique_object_representations 201606 - /// has_unique_object_representations - template - struct has_unique_object_representations - : bool_constant<__has_unique_object_representations( - remove_cv_t> - )> - { }; - - template - inline constexpr bool has_unique_object_representations_v - = has_unique_object_representations<_Tp>::value; -#endif -#undef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP - -#if __GNUC__ >= 7 -# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 -#elif defined(__is_identifier) -// For non-GNU compilers: -# if ! __is_identifier(__is_aggregate) -# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 -# endif -#endif - -#ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE -#define __cpp_lib_is_aggregate 201703 - /// is_aggregate - template - struct is_aggregate - : bool_constant<__is_aggregate(remove_cv_t<_Tp>)> { }; - - /// is_aggregate_v - template - inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value; -#endif -#undef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE - -#endif // C++17 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace std - -#endif // C++11 - -#endif // _GLIBCXX_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/unordered_map deleted file mode 100644 index 2cdcd3779..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/unordered_map +++ /dev/null @@ -1,61 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/unordered_map - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_UNORDERED_MAP -#define _GLIBCXX_UNORDERED_MAP 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include -#include -#include -#include -#include // equal_to, _Identity, _Select1st -#include -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif // C++11 - -#endif // _GLIBCXX_UNORDERED_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/unordered_set deleted file mode 100644 index 2646c0f2f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/unordered_set +++ /dev/null @@ -1,60 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2007-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/** @file include/unordered_set - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_UNORDERED_SET -#define _GLIBCXX_UNORDERED_SET 1 - -#pragma GCC system_header - -#if __cplusplus < 201103L -# include -#else - -#include -#include -#include -#include -#include -#include -#include -#include // equal_to, _Identity, _Select1st -#include -#include -#include -#include - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif -#endif // C++11 - -#endif // _GLIBCXX_UNORDERED_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/utility b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/utility deleted file mode 100644 index 847e5184c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/utility +++ /dev/null @@ -1,407 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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 - -#pragma GCC system_header - -/** - * @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. - */ - -#include -#include -#include - -#if __cplusplus >= 201103L - -#include -#include -#include - -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - - /// Finds the size of a given tuple type. - template - struct tuple_size; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2770. tuple_size specialization is not SFINAE compatible - -#if __cplusplus <= 201402L - template - struct __tuple_size_cv_impl { }; - - template - struct __tuple_size_cv_impl<_Tp, __void_t::value)>> - : integral_constant::value> { }; - - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2313. tuple_size should always derive from integral_constant - template - struct tuple_size : __tuple_size_cv_impl<_Tp> { }; - - template - struct tuple_size : __tuple_size_cv_impl<_Tp> { }; - - template - struct tuple_size : __tuple_size_cv_impl<_Tp> { }; -#else - template::type, - typename = typename enable_if::value>::type, - size_t = tuple_size<_Tp>::value> - using __enable_if_has_tuple_size = _Tp; - - template - struct tuple_size> - : public tuple_size<_Tp> { }; - - template - struct tuple_size> - : public tuple_size<_Tp> { }; - - template - struct tuple_size> - : public tuple_size<_Tp> { }; -#endif - - /// Gives the type of the ith element of a given tuple type. - template - struct tuple_element; - - // Duplicate of C++14's tuple_element_t for internal use in C++11 mode - template - using __tuple_element_t = typename tuple_element<__i, _Tp>::type; - - template - struct tuple_element<__i, const _Tp> - { - typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; - }; - - template - struct tuple_element<__i, volatile _Tp> - { - typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; - }; - - template - struct tuple_element<__i, const volatile _Tp> - { - typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; - }; - -#if __cplusplus > 201103L -#define __cpp_lib_tuple_element_t 201402 - - template - using tuple_element_t = typename tuple_element<__i, _Tp>::type; -#endif - - // Various functions which give std::pair a tuple-like interface. - - /// Partial specialization for std::pair - template - struct __is_tuple_like_impl> : true_type - { }; - - /// Partial specialization for std::pair - template - struct tuple_size> - : public integral_constant { }; - - /// Partial specialization for std::pair - template - struct tuple_element<0, std::pair<_Tp1, _Tp2>> - { typedef _Tp1 type; }; - - /// Partial specialization for std::pair - template - struct tuple_element<1, std::pair<_Tp1, _Tp2>> - { typedef _Tp2 type; }; - - template - struct __pair_get; - - template<> - struct __pair_get<0> - { - template - static constexpr _Tp1& - __get(std::pair<_Tp1, _Tp2>& __pair) noexcept - { return __pair.first; } - - template - static constexpr _Tp1&& - __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept - { return std::forward<_Tp1>(__pair.first); } - - template - static constexpr const _Tp1& - __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept - { return __pair.first; } - }; - - template<> - struct __pair_get<1> - { - template - static constexpr _Tp2& - __get(std::pair<_Tp1, _Tp2>& __pair) noexcept - { return __pair.second; } - - template - static constexpr _Tp2&& - __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept - { return std::forward<_Tp2>(__pair.second); } - - template - static constexpr const _Tp2& - __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept - { return __pair.second; } - }; - - template - constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& - get(std::pair<_Tp1, _Tp2>& __in) noexcept - { return __pair_get<_Int>::__get(__in); } - - template - 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 - constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& - get(const std::pair<_Tp1, _Tp2>& __in) noexcept - { return __pair_get<_Int>::__const_get(__in); } - -#if __cplusplus > 201103L - -#define __cpp_lib_tuples_by_type 201304 - - template - constexpr _Tp& - get(pair<_Tp, _Up>& __p) noexcept - { return __p.first; } - - template - constexpr const _Tp& - get(const pair<_Tp, _Up>& __p) noexcept - { return __p.first; } - - template - constexpr _Tp&& - get(pair<_Tp, _Up>&& __p) noexcept - { return std::move(__p.first); } - - template - constexpr _Tp& - get(pair<_Up, _Tp>& __p) noexcept - { return __p.second; } - - template - constexpr const _Tp& - get(const pair<_Up, _Tp>& __p) noexcept - { return __p.second; } - - template - constexpr _Tp&& - get(pair<_Up, _Tp>&& __p) noexcept - { return std::move(__p.second); } - -#define __cpp_lib_exchange_function 201304 - - /// Assign @p __new_val to @p __obj and return its previous value. - template - inline _Tp - exchange(_Tp& __obj, _Up&& __new_val) - { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } -#endif - - // Stores a tuple of indices. Used by tuple and pair, and by bind() to - // extract the elements in a tuple. - template struct _Index_tuple { }; - - // Concatenates two _Index_tuples. - template struct _Itup_cat; - - template - struct _Itup_cat<_Index_tuple<_Ind1...>, _Index_tuple<_Ind2...>> - { - using __type = _Index_tuple<_Ind1..., (_Ind2 + sizeof...(_Ind1))...>; - }; - - // Builds an _Index_tuple<0, 1, 2, ..., _Num-1>. - template - struct _Build_index_tuple - : _Itup_cat::__type, - typename _Build_index_tuple<_Num - _Num / 2>::__type> - { }; - - template<> - struct _Build_index_tuple<1> - { - typedef _Index_tuple<0> __type; - }; - - template<> - struct _Build_index_tuple<0> - { - typedef _Index_tuple<> __type; - }; - -#if __cplusplus > 201103L - -#define __cpp_lib_integer_sequence 201304 - - /// Class template integer_sequence - template - struct integer_sequence - { - typedef _Tp value_type; - static constexpr size_t size() noexcept { return sizeof...(_Idx); } - }; - - template::__type> - struct _Make_integer_sequence; - - template - struct _Make_integer_sequence<_Tp, _Num, _Index_tuple<_Idx...>> - { - static_assert( _Num >= 0, - "Cannot make integer sequence of negative length" ); - - typedef integer_sequence<_Tp, static_cast<_Tp>(_Idx)...> __type; - }; - - /// Alias template make_integer_sequence - template - using make_integer_sequence - = typename _Make_integer_sequence<_Tp, _Num>::__type; - - /// Alias template index_sequence - template - using index_sequence = integer_sequence; - - /// Alias template make_index_sequence - template - using make_index_sequence = make_integer_sequence; - - /// Alias template index_sequence_for - template - using index_sequence_for = make_index_sequence; -#endif - -#if __cplusplus > 201402L - - struct in_place_t { - explicit in_place_t() = default; - }; - - inline constexpr in_place_t in_place{}; - - template struct in_place_type_t - { - explicit in_place_type_t() = default; - }; - - template - inline constexpr in_place_type_t<_Tp> in_place_type{}; - - template struct in_place_index_t - { - explicit in_place_index_t() = default; - }; - - template - inline constexpr in_place_index_t<_Idx> in_place_index{}; - - template - struct __is_in_place_type_impl : false_type - { }; - - template - struct __is_in_place_type_impl> : true_type - { }; - - template - struct __is_in_place_type - : public __is_in_place_type_impl<_Tp> - { }; - -#define __cpp_lib_as_const 201510 - template - constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; } - - template - void as_const(const _Tp&&) = delete; - -#endif // C++17 - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - -#endif - -#endif /* _GLIBCXX_UTILITY */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/vector deleted file mode 100644 index dde507503..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/vector +++ /dev/null @@ -1,81 +0,0 @@ -// -*- C++ -*- - -// Copyright (C) 2001-2017 Free Software Foundation, Inc. -// -// This file is part of the GNU ISO C++ Library. This library is free -// software; you can redistribute it and/or modify it under the -// terms of the GNU General Public License as published by the -// Free Software Foundation; either version 3, or (at your option) -// any later version. - -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - -// Under Section 7 of GPL version 3, you are granted additional -// permissions described in the GCC Runtime Library Exception, version -// 3.1, as published by the Free Software Foundation. - -// You should have received a copy of the GNU General Public License and -// a copy of the GCC Runtime Library Exception along with this program; -// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -// . - -/* - * - * 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 - * 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/vector - * This is a Standard C++ Library header. - */ - -#ifndef _GLIBCXX_VECTOR -#define _GLIBCXX_VECTOR 1 - -#pragma GCC system_header - -#include -#include -#include -#include -#include -#include -#include - -#ifndef _GLIBCXX_EXPORT_TEMPLATE -# include -#endif - -#ifdef _GLIBCXX_DEBUG -# include -#endif - -#ifdef _GLIBCXX_PROFILE -# include -#endif - -#endif /* _GLIBCXX_VECTOR */ - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/algorithm new file mode 100644 index 000000000..0d20b1ea6 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/algorithm @@ -0,0 +1,68 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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/algorithm + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_ALGORITHM +#define _GLIBCXX_ALGORITHM 1 + +#pragma GCC system_header + +#include // UK-300. +#include +#include + +#ifdef _GLIBCXX_PARALLEL +# include +#endif + +#endif /* _GLIBCXX_ALGORITHM */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/any b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/any new file mode 100644 index 000000000..0aa9281be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/any @@ -0,0 +1,638 @@ +// -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file include/any + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_ANY +#define _GLIBCXX_ANY 1 + +#pragma GCC system_header + +#if __cplusplus >= 201703L + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup utilities + * @{ + */ + + /** + * @brief Exception class thrown by a failed @c any_cast + * @ingroup exceptions + */ + class bad_any_cast : public bad_cast + { + public: + virtual const char* what() const noexcept { return "bad any_cast"; } + }; + + [[gnu::noreturn]] inline void __throw_bad_any_cast() + { +#if __cpp_exceptions + throw bad_any_cast{}; +#else + __builtin_abort(); +#endif + } + +#define __cpp_lib_any 201606L + + /** + * @brief A type-safe container of any type. + * + * An @c any object's state is either empty or it stores a contained object + * of CopyConstructible type. + */ + class any + { + // Holds either pointer to a heap object or the contained object itself. + union _Storage + { + constexpr _Storage() : _M_ptr{nullptr} {} + + // Prevent trivial copies of this type, buffer might hold a non-POD. + _Storage(const _Storage&) = delete; + _Storage& operator=(const _Storage&) = delete; + + void* _M_ptr; + aligned_storage::type _M_buffer; + }; + + template, + bool _Fits = (sizeof(_Tp) <= sizeof(_Storage)) + && (alignof(_Tp) <= alignof(_Storage))> + using _Internal = std::integral_constant; + + template + struct _Manager_internal; // uses small-object optimization + + template + struct _Manager_external; // creates contained object on the heap + + template + using _Manager = conditional_t<_Internal<_Tp>::value, + _Manager_internal<_Tp>, + _Manager_external<_Tp>>; + + template> + using _Decay = enable_if_t::value, _Decayed>; + + /// Emplace with an object created from @p __args as the contained object. + template > + void __do_emplace(_Args&&... __args) + { + reset(); + _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...); + _M_manager = &_Mgr::_S_manage; + } + + /// Emplace with an object created from @p __il and @p __args as + /// the contained object. + template > + void __do_emplace(initializer_list<_Up> __il, _Args&&... __args) + { + reset(); + _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...); + _M_manager = &_Mgr::_S_manage; + } + + public: + // construct/destruct + + /// Default constructor, creates an empty object. + constexpr any() noexcept : _M_manager(nullptr) { } + + /// Copy constructor, copies the state of @p __other + any(const any& __other) + { + if (!__other.has_value()) + _M_manager = nullptr; + else + { + _Arg __arg; + __arg._M_any = this; + __other._M_manager(_Op_clone, &__other, &__arg); + } + } + + /** + * @brief Move constructor, transfer the state from @p __other + * + * @post @c !__other.has_value() (this postcondition is a GNU extension) + */ + any(any&& __other) noexcept + { + if (!__other.has_value()) + _M_manager = nullptr; + else + { + _Arg __arg; + __arg._M_any = this; + __other._M_manager(_Op_xfer, &__other, &__arg); + } + } + + template + using __any_constructible = + enable_if<__and_, + is_constructible<_Tp, _Args...>>::value, + _Res>; + + template + using __any_constructible_t = + typename __any_constructible::type; + + /// Construct with a copy of @p __value as the contained object. + template , + typename _Mgr = _Manager<_Tp>, + __any_constructible_t<_Tp, _ValueType&&> = true, + enable_if_t::value, bool> = true> + any(_ValueType&& __value) + : _M_manager(&_Mgr::_S_manage) + { + _Mgr::_S_create(_M_storage, std::forward<_ValueType>(__value)); + } + + /// Construct with a copy of @p __value as the contained object. + template , + typename _Mgr = _Manager<_Tp>, + enable_if_t<__and_, + __not_>, + __not_<__is_in_place_type<_Tp>>>::value, + bool> = false> + any(_ValueType&& __value) + : _M_manager(&_Mgr::_S_manage) + { + _Mgr::_S_create(_M_storage, __value); + } + + /// Construct with an object created from @p __args as the contained object. + template , + typename _Mgr = _Manager<_Tp>, + __any_constructible_t<_Tp, _Args&&...> = false> + explicit + any(in_place_type_t<_ValueType>, _Args&&... __args) + : _M_manager(&_Mgr::_S_manage) + { + _Mgr::_S_create(_M_storage, std::forward<_Args>(__args)...); + } + + /// Construct with an object created from @p __il and @p __args as + /// the contained object. + template , + typename _Mgr = _Manager<_Tp>, + __any_constructible_t<_Tp, initializer_list<_Up>, + _Args&&...> = false> + explicit + any(in_place_type_t<_ValueType>, + initializer_list<_Up> __il, _Args&&... __args) + : _M_manager(&_Mgr::_S_manage) + { + _Mgr::_S_create(_M_storage, __il, std::forward<_Args>(__args)...); + } + + /// Destructor, calls @c reset() + ~any() { reset(); } + + // assignments + + /// Copy the state of another object. + any& operator=(const any& __rhs) + { + *this = any(__rhs); + return *this; + } + + /** + * @brief Move assignment operator + * + * @post @c !__rhs.has_value() (not guaranteed for other implementations) + */ + any& operator=(any&& __rhs) noexcept + { + if (!__rhs.has_value()) + reset(); + else if (this != &__rhs) + { + reset(); + _Arg __arg; + __arg._M_any = this; + __rhs._M_manager(_Op_xfer, &__rhs, &__arg); + } + return *this; + } + + /// Store a copy of @p __rhs as the contained object. + template + enable_if_t>::value, any&> + operator=(_ValueType&& __rhs) + { + *this = any(std::forward<_ValueType>(__rhs)); + return *this; + } + + /// Emplace with an object created from @p __args as the contained object. + template + typename __any_constructible<_Decay<_ValueType>&, + _Decay<_ValueType>, _Args&&...>::type + emplace(_Args&&... __args) + { + __do_emplace<_Decay<_ValueType>>(std::forward<_Args>(__args)...); + any::_Arg __arg; + this->_M_manager(any::_Op_access, this, &__arg); + return *static_cast<_Decay<_ValueType>*>(__arg._M_obj); + } + + /// Emplace with an object created from @p __il and @p __args as + /// the contained object. + template + typename __any_constructible<_Decay<_ValueType>&, + _Decay<_ValueType>, + initializer_list<_Up>, + _Args&&...>::type + emplace(initializer_list<_Up> __il, _Args&&... __args) + { + __do_emplace<_Decay<_ValueType>, _Up>(__il, + std::forward<_Args>(__args)...); + any::_Arg __arg; + this->_M_manager(any::_Op_access, this, &__arg); + return *static_cast<_Decay<_ValueType>*>(__arg._M_obj); + } + + // modifiers + + /// If not empty, destroy the contained object. + void reset() noexcept + { + if (has_value()) + { + _M_manager(_Op_destroy, this, nullptr); + _M_manager = nullptr; + } + } + + /// Exchange state with another object. + void swap(any& __rhs) noexcept + { + if (!has_value() && !__rhs.has_value()) + return; + + if (has_value() && __rhs.has_value()) + { + if (this == &__rhs) + return; + + any __tmp; + _Arg __arg; + __arg._M_any = &__tmp; + __rhs._M_manager(_Op_xfer, &__rhs, &__arg); + __arg._M_any = &__rhs; + _M_manager(_Op_xfer, this, &__arg); + __arg._M_any = this; + __tmp._M_manager(_Op_xfer, &__tmp, &__arg); + } + else + { + any* __empty = !has_value() ? this : &__rhs; + any* __full = !has_value() ? &__rhs : this; + _Arg __arg; + __arg._M_any = __empty; + __full->_M_manager(_Op_xfer, __full, &__arg); + } + } + + // observers + + /// Reports whether there is a contained object or not. + bool has_value() const noexcept { return _M_manager != nullptr; } + +#if __cpp_rtti + /// The @c typeid of the contained object, or @c typeid(void) if empty. + const type_info& type() const noexcept + { + if (!has_value()) + return typeid(void); + _Arg __arg; + _M_manager(_Op_get_type_info, this, &__arg); + return *__arg._M_typeinfo; + } +#endif + + template + static constexpr bool __is_valid_cast() + { return __or_, is_copy_constructible<_Tp>>::value; } + + private: + enum _Op { + _Op_access, _Op_get_type_info, _Op_clone, _Op_destroy, _Op_xfer + }; + + union _Arg + { + void* _M_obj; + const std::type_info* _M_typeinfo; + any* _M_any; + }; + + void (*_M_manager)(_Op, const any*, _Arg*); + _Storage _M_storage; + + template + friend void* __any_caster(const any* __any); + + // Manage in-place contained object. + template + struct _Manager_internal + { + static void + _S_manage(_Op __which, const any* __anyp, _Arg* __arg); + + template + static void + _S_create(_Storage& __storage, _Up&& __value) + { + void* __addr = &__storage._M_buffer; + ::new (__addr) _Tp(std::forward<_Up>(__value)); + } + + template + static void + _S_create(_Storage& __storage, _Args&&... __args) + { + void* __addr = &__storage._M_buffer; + ::new (__addr) _Tp(std::forward<_Args>(__args)...); + } + }; + + // Manage external contained object. + template + struct _Manager_external + { + static void + _S_manage(_Op __which, const any* __anyp, _Arg* __arg); + + template + static void + _S_create(_Storage& __storage, _Up&& __value) + { + __storage._M_ptr = new _Tp(std::forward<_Up>(__value)); + } + template + static void + _S_create(_Storage& __storage, _Args&&... __args) + { + __storage._M_ptr = new _Tp(std::forward<_Args>(__args)...); + } + }; + }; + + /// Exchange the states of two @c any objects. + inline void swap(any& __x, any& __y) noexcept { __x.swap(__y); } + + /// Create an any holding a @c _Tp constructed from @c __args. + template + any make_any(_Args&&... __args) + { + return any(in_place_type<_Tp>, std::forward<_Args>(__args)...); + } + + /// Create an any holding a @c _Tp constructed from @c __il and @c __args. + template + any make_any(initializer_list<_Up> __il, _Args&&... __args) + { + return any(in_place_type<_Tp>, __il, std::forward<_Args>(__args)...); + } + + /** + * @brief Access the contained object. + * + * @tparam _ValueType A const-reference or CopyConstructible type. + * @param __any The object to access. + * @return The contained object. + * @throw bad_any_cast If + * __any.type() != typeid(remove_reference_t<_ValueType>) + * + */ + template + inline _ValueType any_cast(const any& __any) + { + using _Up = remove_cv_t>; + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + static_assert(is_constructible_v<_ValueType, const _Up&>, + "Template argument must be constructible from a const value."); + auto __p = any_cast<_Up>(&__any); + if (__p) + return static_cast<_ValueType>(*__p); + __throw_bad_any_cast(); + } + + /** + * @brief Access the contained object. + * + * @tparam _ValueType A reference or CopyConstructible type. + * @param __any The object to access. + * @return The contained object. + * @throw bad_any_cast If + * __any.type() != typeid(remove_reference_t<_ValueType>) + * + * + * @{ + */ + template + inline _ValueType any_cast(any& __any) + { + using _Up = remove_cv_t>; + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + static_assert(is_constructible_v<_ValueType, _Up&>, + "Template argument must be constructible from an lvalue."); + auto __p = any_cast<_Up>(&__any); + if (__p) + return static_cast<_ValueType>(*__p); + __throw_bad_any_cast(); + } + + template + inline _ValueType any_cast(any&& __any) + { + using _Up = remove_cv_t>; + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + static_assert(is_constructible_v<_ValueType, _Up>, + "Template argument must be constructible from an rvalue."); + auto __p = any_cast<_Up>(&__any); + if (__p) + return static_cast<_ValueType>(std::move(*__p)); + __throw_bad_any_cast(); + } + // @} + + /// @cond undocumented + template + void* __any_caster(const any* __any) + { + // any_cast returns non-null if __any->type() == typeid(T) and + // typeid(T) ignores cv-qualifiers so remove them: + using _Up = remove_cv_t<_Tp>; + // The contained value has a decayed type, so if decay_t is not U, + // then it's not possible to have a contained value of type U: + if constexpr (!is_same_v, _Up>) + return nullptr; + // Only copy constructible types can be used for contained values: + else if constexpr (!is_copy_constructible_v<_Up>) + return nullptr; + // First try comparing function addresses, which works without RTTI + else if (__any->_M_manager == &any::_Manager<_Up>::_S_manage +#if __cpp_rtti + || __any->type() == typeid(_Tp) +#endif + ) + { + any::_Arg __arg; + __any->_M_manager(any::_Op_access, __any, &__arg); + return __arg._M_obj; + } + return nullptr; + } + /// @endcond + + /** + * @brief Access the contained object. + * + * @tparam _ValueType The type of the contained object. + * @param __any A pointer to the object to access. + * @return The address of the contained object if + * __any != nullptr && __any.type() == typeid(_ValueType) + * , otherwise a null pointer. + * + * @{ + */ + template + inline const _ValueType* any_cast(const any* __any) noexcept + { + if constexpr (is_object_v<_ValueType>) + if (__any) + return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); + return nullptr; + } + + template + inline _ValueType* any_cast(any* __any) noexcept + { + if constexpr (is_object_v<_ValueType>) + if (__any) + return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); + return nullptr; + } + // @} + + template + void + any::_Manager_internal<_Tp>:: + _S_manage(_Op __which, const any* __any, _Arg* __arg) + { + // The contained object is in _M_storage._M_buffer + auto __ptr = reinterpret_cast(&__any->_M_storage._M_buffer); + switch (__which) + { + case _Op_access: + __arg->_M_obj = const_cast<_Tp*>(__ptr); + break; + case _Op_get_type_info: +#if __cpp_rtti + __arg->_M_typeinfo = &typeid(_Tp); +#endif + break; + case _Op_clone: + ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp(*__ptr); + __arg->_M_any->_M_manager = __any->_M_manager; + break; + case _Op_destroy: + __ptr->~_Tp(); + break; + case _Op_xfer: + ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp + (std::move(*const_cast<_Tp*>(__ptr))); + __ptr->~_Tp(); + __arg->_M_any->_M_manager = __any->_M_manager; + const_cast(__any)->_M_manager = nullptr; + break; + } + } + + template + void + any::_Manager_external<_Tp>:: + _S_manage(_Op __which, const any* __any, _Arg* __arg) + { + // The contained object is *_M_storage._M_ptr + auto __ptr = static_cast(__any->_M_storage._M_ptr); + switch (__which) + { + case _Op_access: + __arg->_M_obj = const_cast<_Tp*>(__ptr); + break; + case _Op_get_type_info: +#if __cpp_rtti + __arg->_M_typeinfo = &typeid(_Tp); +#endif + break; + case _Op_clone: + __arg->_M_any->_M_storage._M_ptr = new _Tp(*__ptr); + __arg->_M_any->_M_manager = __any->_M_manager; + break; + case _Op_destroy: + delete __ptr; + break; + case _Op_xfer: + __arg->_M_any->_M_storage._M_ptr = __any->_M_storage._M_ptr; + __arg->_M_any->_M_manager = __any->_M_manager; + const_cast(__any)->_M_manager = nullptr; + break; + } + } + + /// @} + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_ANY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++config.h new file mode 100644 index 000000000..f3009c097 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_WCHAR 1 + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/hard/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++config.h new file mode 100644 index 000000000..f3009c097 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_WCHAR 1 + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/arm/v5te/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++config.h new file mode 100644 index 000000000..f3009c097 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_WCHAR 1 + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++config.h new file mode 100644 index 000000000..f3009c097 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_WCHAR 1 + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++config.h new file mode 100644 index 000000000..f3009c097 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_WCHAR 1 + +/* Define if the compiler supports C++11 atomics. */ +/* #undef _GLIBCXX_ATOMIC_BUILTINS */ + +/* 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v6-m/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/hard/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7+fp/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7-m/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/hard/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+dp/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/hard/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m+fp/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v7e-m/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.base/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/hard/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+dp/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/hard/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main+fp/softfp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/atomic_word.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/atomic_word.h new file mode 100644 index 000000000..3a6d85605 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/atomic_word.h @@ -0,0 +1,40 @@ +// Low-level type for atomic operations -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file atomic_word.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_ATOMIC_WORD_H +#define _GLIBCXX_ATOMIC_WORD_H 1 + +typedef int _Atomic_word; + + +// This is a memory order acquire fence. +#define _GLIBCXX_READ_MEM_BARRIER __atomic_thread_fence (__ATOMIC_ACQUIRE) +// This is a memory order release fence. +#define _GLIBCXX_WRITE_MEM_BARRIER __atomic_thread_fence (__ATOMIC_RELEASE) + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/basic_file.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/basic_file.h new file mode 100644 index 000000000..58f24f670 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/basic_file.h @@ -0,0 +1,130 @@ +// Wrapper of C-language FILE struct -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 27.8 File-based streams +// + +/** @file bits/basic_file.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +#ifndef _GLIBCXX_BASIC_FILE_STDIO_H +#define _GLIBCXX_BASIC_FILE_STDIO_H 1 + +#pragma GCC system_header + +#include +#include // for __c_lock and __c_file +#include // for swap +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Generic declaration. + template + class __basic_file; + + // Specialization. + template<> + class __basic_file + { + // Underlying data source/sink. + __c_file* _M_cfile; + + // True iff we opened _M_cfile, and thus must close it ourselves. + bool _M_cfile_created; + + public: + __basic_file(__c_lock* __lock = 0) throw (); + +#if __cplusplus >= 201103L + __basic_file(__basic_file&& __rv, __c_lock* = 0) noexcept + : _M_cfile(__rv._M_cfile), _M_cfile_created(__rv._M_cfile_created) + { + __rv._M_cfile = nullptr; + __rv._M_cfile_created = false; + } + + __basic_file& operator=(const __basic_file&) = delete; + __basic_file& operator=(__basic_file&&) = delete; + + void + swap(__basic_file& __f) noexcept + { + std::swap(_M_cfile, __f._M_cfile); + std::swap(_M_cfile_created, __f._M_cfile_created); + } +#endif + + __basic_file* + open(const char* __name, ios_base::openmode __mode, int __prot = 0664); + + __basic_file* + sys_open(__c_file* __file, ios_base::openmode); + + __basic_file* + sys_open(int __fd, ios_base::openmode __mode) throw (); + + __basic_file* + close(); + + _GLIBCXX_PURE bool + is_open() const throw (); + + _GLIBCXX_PURE int + fd() throw (); + + _GLIBCXX_PURE __c_file* + file() throw (); + + ~__basic_file(); + + streamsize + xsputn(const char* __s, streamsize __n); + + streamsize + xsputn_2(const char* __s1, streamsize __n1, + const char* __s2, streamsize __n2); + + streamsize + xsgetn(char* __s, streamsize __n); + + streamoff + seekoff(streamoff __off, ios_base::seekdir __way) throw (); + + int + sync(); + + streamsize + showmanyc(); + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++allocator.h new file mode 100644 index 000000000..6392d2207 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++allocator.h @@ -0,0 +1,59 @@ +// Base to std::allocator -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/c++allocator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _GLIBCXX_CXX_ALLOCATOR_H +#define _GLIBCXX_CXX_ALLOCATOR_H 1 + +#include + +#if __cplusplus >= 201103L +namespace std +{ + /** + * @brief An alias to the base class for std::allocator. + * @ingroup allocators + * + * Used to set the std::allocator base class to + * __gnu_cxx::new_allocator. + * + * @tparam _Tp Type of allocated object. + */ + template + using __allocator_base = __gnu_cxx::new_allocator<_Tp>; +} +#else +// Define new_allocator as the base class to std::allocator. +# define __allocator_base __gnu_cxx::new_allocator +#endif + +#if defined(__SANITIZE_ADDRESS__) && !defined(_GLIBCXX_SANITIZE_STD_ALLOCATOR) +# define _GLIBCXX_SANITIZE_STD_ALLOCATOR 1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++config.h new file mode 100644 index 000000000..0f8102c02 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++config.h @@ -0,0 +1,1939 @@ +// Predefined symbols and macros -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file bits/c++config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iosfwd} + */ + +#ifndef _GLIBCXX_CXX_CONFIG_H +#define _GLIBCXX_CXX_CONFIG_H 1 + +// The major release number for the GCC release the C++ library belongs to. +#define _GLIBCXX_RELEASE 8 + +// The datestamp of the C++ library in compressed ISO date format. +#define __GLIBCXX__ 20190703 + +// Macros for various attributes. +// _GLIBCXX_PURE +// _GLIBCXX_CONST +// _GLIBCXX_NORETURN +// _GLIBCXX_NOTHROW +// _GLIBCXX_VISIBILITY +#ifndef _GLIBCXX_PURE +# define _GLIBCXX_PURE __attribute__ ((__pure__)) +#endif + +#ifndef _GLIBCXX_CONST +# define _GLIBCXX_CONST __attribute__ ((__const__)) +#endif + +#ifndef _GLIBCXX_NORETURN +# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) +#endif + +// See below for C++ +#ifndef _GLIBCXX_NOTHROW +# ifndef __cplusplus +# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) +# endif +#endif + +// Macros for visibility attributes. +// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +// _GLIBCXX_VISIBILITY +# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 + +#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY +# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) +#else +// 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 + +// Macros for deprecated attributes. +// _GLIBCXX_USE_DEPRECATED +// _GLIBCXX_DEPRECATED +// _GLIBCXX17_DEPRECATED +#ifndef _GLIBCXX_USE_DEPRECATED +# define _GLIBCXX_USE_DEPRECATED 1 +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201103L) +# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) +#else +# define _GLIBCXX_DEPRECATED +#endif + +#if defined(__DEPRECATED) && (__cplusplus >= 201703L) +# define _GLIBCXX17_DEPRECATED [[__deprecated__]] +#else +# define _GLIBCXX17_DEPRECATED +#endif + +// Macros for ABI tag attributes. +#ifndef _GLIBCXX_ABI_TAG_CXX11 +# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) +#endif + + +#if __cplusplus + +// Macro for constexpr, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_CONSTEXPR +# if __cplusplus >= 201103L +# define _GLIBCXX_CONSTEXPR constexpr +# define _GLIBCXX_USE_CONSTEXPR constexpr +# else +# define _GLIBCXX_CONSTEXPR +# define _GLIBCXX_USE_CONSTEXPR const +# endif +#endif + +#ifndef _GLIBCXX14_CONSTEXPR +# if __cplusplus >= 201402L +# define _GLIBCXX14_CONSTEXPR constexpr +# else +# define _GLIBCXX14_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_CONSTEXPR +# if __cplusplus > 201402L +# define _GLIBCXX17_CONSTEXPR constexpr +# else +# define _GLIBCXX17_CONSTEXPR +# endif +#endif + +#ifndef _GLIBCXX17_INLINE +# if __cplusplus > 201402L +# define _GLIBCXX17_INLINE inline +# else +# define _GLIBCXX17_INLINE +# endif +#endif + +// Macro for noexcept, to support in mixed 03/0x mode. +#ifndef _GLIBCXX_NOEXCEPT +# if __cplusplus >= 201103L +# define _GLIBCXX_NOEXCEPT noexcept +# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) +# define _GLIBCXX_USE_NOEXCEPT noexcept +# define _GLIBCXX_THROW(_EXC) +# else +# define _GLIBCXX_NOEXCEPT +# define _GLIBCXX_NOEXCEPT_IF(_COND) +# define _GLIBCXX_USE_NOEXCEPT throw() +# define _GLIBCXX_THROW(_EXC) throw(_EXC) +# endif +#endif + +#ifndef _GLIBCXX_NOTHROW +# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT +#endif + +#ifndef _GLIBCXX_THROW_OR_ABORT +# if __cpp_exceptions +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) +# else +# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) +# endif +#endif + +#if __cpp_noexcept_function_type +#define _GLIBCXX_NOEXCEPT_PARM , bool _NE +#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) +#else +#define _GLIBCXX_NOEXCEPT_PARM +#define _GLIBCXX_NOEXCEPT_QUAL +#endif + +// Macro for extern template, ie controlling template linkage via use +// of extern keyword on template declaration. As documented in the g++ +// manual, it inhibits all implicit instantiations and is used +// throughout the library to avoid multiple weak definitions for +// required types that are already explicitly instantiated in the +// library binary. This substantially reduces the binary size of +// resulting executables. +// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern +// templates only in basic_string, thus activating its debug-mode +// checks even at -O0. +# define _GLIBCXX_EXTERN_TEMPLATE 1 + +/* + Outline of libstdc++ namespaces. + + namespace std + { + namespace __debug { } + namespace __parallel { } + namespace __profile { } + namespace __cxx1998 { } + + namespace __detail { + namespace __variant { } // C++17 + } + + namespace rel_ops { } + + namespace tr1 + { + namespace placeholders { } + namespace regex_constants { } + namespace __detail { } + } + + namespace tr2 { } + + namespace decimal { } + + namespace chrono { } // C++11 + namespace placeholders { } // C++11 + namespace regex_constants { } // C++11 + namespace this_thread { } // C++11 + inline namespace literals { // C++14 + inline namespace chrono_literals { } // C++14 + inline namespace complex_literals { } // C++14 + inline namespace string_literals { } // C++14 + inline namespace string_view_literals { } // C++17 + } + } + + namespace abi { } + + namespace __gnu_cxx + { + namespace __detail { } + } + + For full details see: + http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html +*/ +namespace std +{ + typedef __SIZE_TYPE__ size_t; + typedef __PTRDIFF_TYPE__ ptrdiff_t; + +#if __cplusplus >= 201103L + typedef decltype(nullptr) nullptr_t; +#endif +} + +# define _GLIBCXX_USE_DUAL_ABI 1 + +#if ! _GLIBCXX_USE_DUAL_ABI +// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI +# undef _GLIBCXX_USE_CXX11_ABI +#endif + +#ifndef _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_USE_CXX11_ABI 1 +#endif + +#if _GLIBCXX_USE_CXX11_ABI +namespace std +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +namespace __gnu_cxx +{ + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +} +# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { +# define _GLIBCXX_END_NAMESPACE_CXX11 } +# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 +#else +# define _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_CXX11 +# define _GLIBCXX_DEFAULT_ABI_TAG +#endif + +// Defined if inline namespaces are used for versioning. +# define _GLIBCXX_INLINE_VERSION 0 + +// Inline namespace for symbol versioning. +#if _GLIBCXX_INLINE_VERSION +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 { +# define _GLIBCXX_END_NAMESPACE_VERSION } + +namespace std +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201402L + inline namespace literals { + inline namespace chrono_literals { } + inline namespace complex_literals { } + inline namespace string_literals { } +#if __cplusplus > 201402L + inline namespace string_view_literals { } +#endif // C++17 + } +#endif // C++14 +_GLIBCXX_END_NAMESPACE_VERSION +} + +namespace __gnu_cxx +{ +inline _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_END_NAMESPACE_VERSION +} + +#else +# define _GLIBCXX_BEGIN_NAMESPACE_VERSION +# define _GLIBCXX_END_NAMESPACE_VERSION +#endif + +// Inline namespaces for special modes: debug, parallel, profile. +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ + || defined(_GLIBCXX_PROFILE) +namespace std +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-inline namespace for components replaced by alternates in active mode. + namespace __cxx1998 + { +# if _GLIBCXX_USE_CXX11_ABI + inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +# endif + } + +_GLIBCXX_END_NAMESPACE_VERSION + + // Inline namespace for debug mode. +# ifdef _GLIBCXX_DEBUG + inline namespace __debug { } +# endif + + // Inline namespaces for parallel mode. +# ifdef _GLIBCXX_PARALLEL + inline namespace __parallel { } +# endif + + // Inline namespaces for profile mode +# ifdef _GLIBCXX_PROFILE + inline namespace __profile { } +# endif +} + +// Check for invalid usage and unsupported mixed-mode use. +# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) +# error illegal use of multiple inlined namespaces +# endif +# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) +# error illegal use of multiple inlined namespaces +# endif + +// Check for invalid use due to lack for weak symbols. +# if __NO_INLINE__ && !__GXX_WEAK__ +# warning currently using inlined namespace mode which may fail \ + without inlining due to lack of weak symbols +# endif +#endif + +// Macros for namespace scope. Either namespace std:: or the name +// of some nested namespace within it corresponding to the active mode. +// _GLIBCXX_STD_A +// _GLIBCXX_STD_C +// +// Macros for opening/closing conditional namespaces. +// _GLIBCXX_BEGIN_NAMESPACE_ALGO +// _GLIBCXX_END_NAMESPACE_ALGO +// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +// _GLIBCXX_END_NAMESPACE_CONTAINER +#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) +# define _GLIBCXX_STD_C __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ + namespace _GLIBCXX_STD_C { +# define _GLIBCXX_END_NAMESPACE_CONTAINER } +#else +# define _GLIBCXX_STD_C std +# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER +# define _GLIBCXX_END_NAMESPACE_CONTAINER +#endif + +#ifdef _GLIBCXX_PARALLEL +# define _GLIBCXX_STD_A __cxx1998 +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ + namespace _GLIBCXX_STD_A { +# define _GLIBCXX_END_NAMESPACE_ALGO } +#else +# define _GLIBCXX_STD_A std +# define _GLIBCXX_BEGIN_NAMESPACE_ALGO +# define _GLIBCXX_END_NAMESPACE_ALGO +#endif + +// GLIBCXX_ABI Deprecated +// Define if compatibility should be provided for -mlong-double-64. +#undef _GLIBCXX_LONG_DOUBLE_COMPAT + +// Inline namespace for long double 128 mode. +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ +namespace std +{ + inline namespace __gnu_cxx_ldbl128 { } +} +# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { +# define _GLIBCXX_END_NAMESPACE_LDBL } +#else +# define _GLIBCXX_NAMESPACE_LDBL +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL +# define _GLIBCXX_END_NAMESPACE_LDBL +#endif +#if _GLIBCXX_USE_CXX11_ABI +# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 +# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 +# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 +#else +# 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 + +// Debug Mode implies checking assertions. +#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) +# define _GLIBCXX_ASSERTIONS 1 +#endif + +// Disable std::string explicit instantiation declarations in order to assert. +#ifdef _GLIBCXX_ASSERTIONS +# undef _GLIBCXX_EXTERN_TEMPLATE +# define _GLIBCXX_EXTERN_TEMPLATE -1 +#endif + +// Assert. +#if defined(_GLIBCXX_ASSERTIONS) \ + || defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) +namespace std +{ + // Avoid the use of assert, because we're trying to keep the + // include out of the mix. + inline void + __replacement_assert(const char* __file, int __line, + const char* __function, const char* __condition) + { + __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, + __function, __condition); + __builtin_abort(); + } +} +#define __glibcxx_assert_impl(_Condition) \ + do \ + { \ + if (! (_Condition)) \ + std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ + #_Condition); \ + } while (false) +#endif + +#if defined(_GLIBCXX_ASSERTIONS) +# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) +#else +# define __glibcxx_assert(_Condition) +#endif + +// 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 +#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER +# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) +#endif + +// 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 +# define _GLIBCXX_BEGIN_EXTERN_C +# define _GLIBCXX_END_EXTERN_C +#endif + + +// First includes. + +// Pick up any OS-specific definitions. +#include + +// Pick up any CPU-specific definitions. +#include + +// 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 + +// 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 + +// 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 + +// Conditionally enable annotations for the Transactional Memory TS on C++11. +// Most of the following conditions are due to limitations in the current +// implementation. +#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ + && _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ + && !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ + && _GLIBCXX_USE_ALLOCATOR_NEW +#define _GLIBCXX_TXN_SAFE transaction_safe +#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic +#else +#define _GLIBCXX_TXN_SAFE +#define _GLIBCXX_TXN_SAFE_DYN +#endif + +#if __cplusplus > 201402L +// In C++17 mathematical special functions are in namespace std. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 +// For C++11 and C++14 they are in namespace std when requested. +# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 +#endif + +// 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 +# define _GLIBCXX_FAST_MATH 0 +#endif + +// 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, is known to #define min and max as macros... +#undef min +#undef max + +// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally +// so they should be tested with #if not with #ifdef. +#if __cplusplus >= 201103L +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR +# endif +#else +# ifndef _GLIBCXX_USE_C99_MATH +# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH +# endif +# ifndef _GLIBCXX_USE_C99_COMPLEX +# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX +# endif +# ifndef _GLIBCXX_USE_C99_STDIO +# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO +# endif +# ifndef _GLIBCXX_USE_C99_STDLIB +# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB +# endif +# ifndef _GLIBCXX_USE_C99_WCHAR +# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR +# endif +#endif + +/* Define if __float128 is supported on this host. */ +#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__) +#undef _GLIBCXX_USE_FLOAT128 +#endif + +// 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. */ +/* #undef _GLIBCXX_HAVE_ACOSL */ + +/* Define to 1 if you have the `aligned_alloc' function. */ +/* #undef _GLIBCXX_HAVE_ALIGNED_ALLOC */ + +/* Define to 1 if you have the `asinf' function. */ +#define _GLIBCXX_HAVE_ASINF 1 + +/* Define to 1 if you have the `asinl' function. */ +/* #undef _GLIBCXX_HAVE_ASINL */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_ATAN2L */ + +/* Define to 1 if you have the `atanf' function. */ +#define _GLIBCXX_HAVE_ATANF 1 + +/* Define to 1 if you have the `atanl' function. */ +/* #undef _GLIBCXX_HAVE_ATANL */ + +/* Define to 1 if you have the `at_quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_AT_QUICK_EXIT */ + +/* 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. */ +/* #undef _GLIBCXX_HAVE_CEILL */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_COSHL */ + +/* Define to 1 if you have the `cosl' function. */ +/* #undef _GLIBCXX_HAVE_COSL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DIRENT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_DLFCN_H */ + +/* 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 header file. */ +/* #undef _GLIBCXX_HAVE_ENDIAN_H */ + +/* 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 */ +/* #undef _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_EXECINFO_H */ + +/* Define to 1 if you have the `expf' function. */ +#define _GLIBCXX_HAVE_EXPF 1 + +/* Define to 1 if you have the `expl' function. */ +/* #undef _GLIBCXX_HAVE_EXPL */ + +/* Define to 1 if you have the `fabsf' function. */ +#define _GLIBCXX_HAVE_FABSF 1 + +/* Define to 1 if you have the `fabsl' function. */ +/* #undef _GLIBCXX_HAVE_FABSL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_FCNTL_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_FENV_H */ + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FLOORL */ + +/* Define to 1 if you have the `fmodf' function. */ +#define _GLIBCXX_HAVE_FMODF 1 + +/* 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 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. */ +/* #undef _GLIBCXX_HAVE_FREXPL */ + +/* Define if _Unwind_GetIPInfo is available. */ +#define _GLIBCXX_HAVE_GETIPINFO 1 + +/* Define if gets is available in 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. */ +/* #undef _GLIBCXX_HAVE_HYPOTF */ + +/* Define to 1 if you have the `hypotl' function. */ +/* #undef _GLIBCXX_HAVE_HYPOTL */ + +/* Define if you have the iconv() function. */ +#define _GLIBCXX_HAVE_ICONV 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_IEEEFP_H 1 + +/* Define if int64_t is available in . */ +#define _GLIBCXX_HAVE_INT64_T 1 + +/* Define if int64_t is a long. */ +/* #undef _GLIBCXX_HAVE_INT64_T_LONG */ + +/* Define if int64_t is a long long. */ +#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1 + +/* Define to 1 if you have the 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. */ +/* #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 */ + +/* Defined if iswblank exists. */ +#define _GLIBCXX_HAVE_ISWBLANK 1 + +/* Define if LC_MESSAGES is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_LDEXPL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LIBINTL_H */ + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_AS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_DATA 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_FSIZE 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_RSS 0 + +/* Only used in build directory testsuite_hooks.h. */ +#define _GLIBCXX_HAVE_LIMIT_VMEM 0 + +/* Define if futex syscall is available. */ +/* #undef _GLIBCXX_HAVE_LINUX_FUTEX */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_RANDOM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_LINUX_TYPES_H */ + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_LOG10L */ + +/* Define to 1 if you have the `logf' function. */ +#define _GLIBCXX_HAVE_LOGF 1 + +/* Define to 1 if you have the `logl' function. */ +/* #undef _GLIBCXX_HAVE_LOGL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_ENDIAN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_MACHINE_PARAM_H 1 + +/* 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 header file. */ +#define _GLIBCXX_HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `modf' function. */ +/* #undef _GLIBCXX_HAVE_MODF */ + +/* Define to 1 if you have the `modff' function. */ +#define _GLIBCXX_HAVE_MODFF 1 + +/* Define to 1 if you have the `modfl' function. */ +/* #undef _GLIBCXX_HAVE_MODFL */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_NAN_H */ + +/* Define if defines obsolete isinf function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ + +/* Define if defines obsolete isnan function. */ +/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ + +/* Define if poll is available in . */ +/* #undef _GLIBCXX_HAVE_POLL */ + +/* Define to 1 if you have the `posix_memalign' function. */ +/* #undef _GLIBCXX_HAVE_POSIX_MEMALIGN */ + +/* Define to 1 if you have the `powf' function. */ +#define _GLIBCXX_HAVE_POWF 1 + +/* 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 `quick_exit' function. */ +/* #undef _GLIBCXX_HAVE_QUICK_EXIT */ + +/* Define to 1 if you have the `setenv' function. */ +/* #undef _GLIBCXX_HAVE_SETENV */ + +/* 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. */ +#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. */ +/* #undef _GLIBCXX_HAVE_SINHL */ + +/* Define to 1 if you have the `sinl' function. */ +/* #undef _GLIBCXX_HAVE_SINL */ + +/* Defined if sleep exists. */ +#define _GLIBCXX_HAVE_SLEEP 1 + +/* Define to 1 if you have the `sqrtf' function. */ +#define _GLIBCXX_HAVE_SQRTF 1 + +/* Define to 1 if you have the `sqrtl' function. */ +/* #undef _GLIBCXX_HAVE_SQRTL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDALIGN_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDBOOL_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STDLIB_H 1 + +/* Define if strerror_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRERROR_L */ + +/* Define if strerror_r is available in . */ +#define _GLIBCXX_HAVE_STRERROR_R 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_STRINGS_H 1 + +/* Define to 1 if you have the 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. */ +/* #undef _GLIBCXX_HAVE_STRTOLD */ + +/* Define to 1 if `d_type' is a member of `struct dirent'. */ +/* #undef _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE */ + +/* Define if strxfrm_l is available in . */ +/* #undef _GLIBCXX_HAVE_STRXFRM_L */ + +/* Define to 1 if the target runtime linker supports binding the same symbol + to different versions. */ +/* #undef _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IOCTL_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_IPC_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_PARAM_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 + +/* Define to 1 if you have a suitable header file */ +/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SEM_H */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_STATVFS_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_SYSINFO_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_SYS_UIO_H */ + +/* Define if S_IFREG is available in . */ +/* #undef _GLIBCXX_HAVE_S_IFREG */ + +/* Define if S_ISREG is available in . */ +#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. */ +/* #undef _GLIBCXX_HAVE_TANHL */ + +/* Define to 1 if you have the `tanl' function. */ +/* #undef _GLIBCXX_HAVE_TANL */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_TGMATH_H 1 + +/* Define to 1 if the target supports thread-local storage. */ +/* #undef _GLIBCXX_HAVE_TLS */ + +/* Define to 1 if you have the header file. */ +/* #undef _GLIBCXX_HAVE_UCHAR_H */ + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_UNISTD_H 1 + +/* Defined if usleep exists. */ +#define _GLIBCXX_HAVE_USLEEP 1 + +/* Define to 1 if you have the 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 header file. */ +#define _GLIBCXX_HAVE_WCHAR_H 1 + +/* Defined if wcstof exists. */ +#define _GLIBCXX_HAVE_WCSTOF 1 + +/* Define to 1 if you have the header file. */ +#define _GLIBCXX_HAVE_WCTYPE_H 1 + +/* Defined if Sleep exists. */ +/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ + +/* Define if writev is available in . */ +/* #undef _GLIBCXX_HAVE_WRITEV */ + +/* Define to 1 if you have the `_acosf' function. */ +/* #undef _GLIBCXX_HAVE__ACOSF */ + +/* Define to 1 if you have the `_acosl' function. */ +/* #undef _GLIBCXX_HAVE__ACOSL */ + +/* Define to 1 if you have the `_aligned_malloc' function. */ +/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ + +/* Define to 1 if you have the `_asinf' function. */ +/* #undef _GLIBCXX_HAVE__ASINF */ + +/* Define to 1 if you have the `_asinl' function. */ +/* #undef _GLIBCXX_HAVE__ASINL */ + +/* Define to 1 if you have the `_atan2f' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2F */ + +/* Define to 1 if you have the `_atan2l' function. */ +/* #undef _GLIBCXX_HAVE__ATAN2L */ + +/* Define to 1 if you have the `_atanf' function. */ +/* #undef _GLIBCXX_HAVE__ATANF */ + +/* Define to 1 if you have the `_atanl' function. */ +/* #undef _GLIBCXX_HAVE__ATANL */ + +/* Define to 1 if you have the `_ceilf' function. */ +/* #undef _GLIBCXX_HAVE__CEILF */ + +/* Define to 1 if you have the `_ceill' function. */ +/* #undef _GLIBCXX_HAVE__CEILL */ + +/* Define to 1 if you have the `_cosf' function. */ +/* #undef _GLIBCXX_HAVE__COSF */ + +/* Define to 1 if you have the `_coshf' function. */ +/* #undef _GLIBCXX_HAVE__COSHF */ + +/* Define to 1 if you have the `_coshl' function. */ +/* #undef _GLIBCXX_HAVE__COSHL */ + +/* Define to 1 if you have the `_cosl' function. */ +/* #undef _GLIBCXX_HAVE__COSL */ + +/* Define to 1 if you have the `_expf' function. */ +/* #undef _GLIBCXX_HAVE__EXPF */ + +/* Define to 1 if you have the `_expl' function. */ +/* #undef _GLIBCXX_HAVE__EXPL */ + +/* Define to 1 if you have the `_fabsf' function. */ +/* #undef _GLIBCXX_HAVE__FABSF */ + +/* Define to 1 if you have the `_fabsl' function. */ +/* #undef _GLIBCXX_HAVE__FABSL */ + +/* Define to 1 if you have the `_finite' function. */ +/* #undef _GLIBCXX_HAVE__FINITE */ + +/* Define to 1 if you have the `_finitef' function. */ +/* #undef _GLIBCXX_HAVE__FINITEF */ + +/* Define to 1 if you have the `_finitel' function. */ +/* #undef _GLIBCXX_HAVE__FINITEL */ + +/* Define to 1 if you have the `_floorf' function. */ +/* #undef _GLIBCXX_HAVE__FLOORF */ + +/* Define to 1 if you have the `_floorl' function. */ +/* #undef _GLIBCXX_HAVE__FLOORL */ + +/* Define to 1 if you have the `_fmodf' function. */ +/* #undef _GLIBCXX_HAVE__FMODF */ + +/* Define to 1 if you have the `_fmodl' function. */ +/* #undef _GLIBCXX_HAVE__FMODL */ + +/* Define to 1 if you have the `_fpclass' function. */ +/* #undef _GLIBCXX_HAVE__FPCLASS */ + +/* Define to 1 if you have the `_frexpf' function. */ +/* #undef _GLIBCXX_HAVE__FREXPF */ + +/* Define to 1 if you have the `_frexpl' function. */ +/* #undef _GLIBCXX_HAVE__FREXPL */ + +/* Define to 1 if you have the `_hypot' function. */ +/* #undef _GLIBCXX_HAVE__HYPOT */ + +/* Define to 1 if you have the `_hypotf' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTF */ + +/* Define to 1 if you have the `_hypotl' function. */ +/* #undef _GLIBCXX_HAVE__HYPOTL */ + +/* Define to 1 if you have the `_isinf' function. */ +/* #undef _GLIBCXX_HAVE__ISINF */ + +/* Define to 1 if you have the `_isinff' function. */ +/* #undef _GLIBCXX_HAVE__ISINFF */ + +/* Define to 1 if you have the `_isinfl' function. */ +/* #undef _GLIBCXX_HAVE__ISINFL */ + +/* Define to 1 if you have the `_isnan' function. */ +/* #undef _GLIBCXX_HAVE__ISNAN */ + +/* Define to 1 if you have the `_isnanf' function. */ +/* #undef _GLIBCXX_HAVE__ISNANF */ + +/* Define to 1 if you have the `_isnanl' function. */ +/* #undef _GLIBCXX_HAVE__ISNANL */ + +/* Define to 1 if you have the `_ldexpf' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPF */ + +/* Define to 1 if you have the `_ldexpl' function. */ +/* #undef _GLIBCXX_HAVE__LDEXPL */ + +/* Define to 1 if you have the `_log10f' function. */ +/* #undef _GLIBCXX_HAVE__LOG10F */ + +/* Define to 1 if you have the `_log10l' function. */ +/* #undef _GLIBCXX_HAVE__LOG10L */ + +/* Define to 1 if you have the `_logf' function. */ +/* #undef _GLIBCXX_HAVE__LOGF */ + +/* Define to 1 if you have the `_logl' function. */ +/* #undef _GLIBCXX_HAVE__LOGL */ + +/* Define to 1 if you have the `_modf' function. */ +/* #undef _GLIBCXX_HAVE__MODF */ + +/* Define to 1 if you have the `_modff' function. */ +/* #undef _GLIBCXX_HAVE__MODFF */ + +/* Define to 1 if you have the `_modfl' function. */ +/* #undef _GLIBCXX_HAVE__MODFL */ + +/* Define to 1 if you have the `_powf' function. */ +/* #undef _GLIBCXX_HAVE__POWF */ + +/* Define to 1 if you have the `_powl' function. */ +/* #undef _GLIBCXX_HAVE__POWL */ + +/* Define to 1 if you have the `_qfpclass' function. */ +/* #undef _GLIBCXX_HAVE__QFPCLASS */ + +/* Define to 1 if you have the `_sincos' function. */ +/* #undef _GLIBCXX_HAVE__SINCOS */ + +/* Define to 1 if you have the `_sincosf' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSF */ + +/* Define to 1 if you have the `_sincosl' function. */ +/* #undef _GLIBCXX_HAVE__SINCOSL */ + +/* Define to 1 if you have the `_sinf' function. */ +/* #undef _GLIBCXX_HAVE__SINF */ + +/* Define to 1 if you have the `_sinhf' function. */ +/* #undef _GLIBCXX_HAVE__SINHF */ + +/* Define to 1 if you have the `_sinhl' function. */ +/* #undef _GLIBCXX_HAVE__SINHL */ + +/* Define to 1 if you have the `_sinl' function. */ +/* #undef _GLIBCXX_HAVE__SINL */ + +/* Define to 1 if you have the `_sqrtf' function. */ +/* #undef _GLIBCXX_HAVE__SQRTF */ + +/* Define to 1 if you have the `_sqrtl' function. */ +/* #undef _GLIBCXX_HAVE__SQRTL */ + +/* Define to 1 if you have the `_tanf' function. */ +/* #undef _GLIBCXX_HAVE__TANF */ + +/* Define to 1 if you have the `_tanhf' function. */ +/* #undef _GLIBCXX_HAVE__TANHF */ + +/* Define to 1 if you have the `_tanhl' function. */ +/* #undef _GLIBCXX_HAVE__TANHL */ + +/* Define to 1 if you have the `_tanl' function. */ +/* #undef _GLIBCXX_HAVE__TANL */ + +/* Define to 1 if you have the `__cxa_thread_atexit' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ + +/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ +/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL */ + +/* Define as const if the declaration of iconv() needs const. */ +/* #undef _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 should be used in for + C++11. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX11_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++11. */ +#define _GLIBCXX11_USE_C99_WCHAR 1 + +/* Define if C99 functions in should be used in for + C++98. Using compiler builtins for these functions requires corresponding + C99 library functions to be present. */ +/* #undef _GLIBCXX98_USE_C99_COMPLEX */ + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_MATH 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDIO 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std for C++98. */ +#define _GLIBCXX98_USE_C99_STDLIB 1 + +/* Define if C99 functions or macros in should be imported in + 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. */ +/* #undef _GLIBCXX_HAS_GTHREADS */ + +/* 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 j + +/* Define if C99 llrint and llround functions are missing from . */ +/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ + +/* Define if ptrdiff_t is int. */ +#define _GLIBCXX_PTRDIFF_T_IS_INT 1 + +/* Define if using setrlimit to set resource limits during "make check" */ +/* #undef _GLIBCXX_RES_LIMITS */ + +/* Define if size_t is unsigned int. */ +#define _GLIBCXX_SIZE_T_IS_UINT 1 + +/* 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. */ +/* #undef _GLIBCXX_SYMVER */ + +/* Define to use darwin versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_DARWIN */ + +/* Define to use GNU versioning in the shared library. */ +/* #undef _GLIBCXX_SYMVER_GNU */ + +/* 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 should be imported into namespace std + in . */ +/* #undef _GLIBCXX_USE_C11_UCHAR_CXX11 */ + +/* Define if C99 functions or macros from , , , + , and can be used or exposed. */ +/* #undef _GLIBCXX_USE_C99 */ + +/* Define if C99 functions in should be used in . + Using compiler builtins for these functions requires corresponding C99 + library functions to be present. */ +/* #undef _GLIBCXX_USE_C99_COMPLEX_TR1 */ + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +#define _GLIBCXX_USE_C99_CTYPE_TR1 1 + +/* Define if C99 functions in should be imported in in + namespace std::tr1. */ +/* #undef _GLIBCXX_USE_C99_FENV_TR1 */ + +/* Define if C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 + +/* Define if wchar_t C99 functions in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 + +/* Define if C99 functions or macros in should be imported in + in namespace std::tr1. */ +#define _GLIBCXX_USE_C99_MATH_TR1 1 + +/* Define if C99 types in should be imported in 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. */ +/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */ + +/* Defined if clock_gettime has realtime clock support. */ +/* #undef _GLIBCXX_USE_CLOCK_REALTIME */ + +/* Define if ISO/IEC TR 24733 decimal floating point types are supported on + this host. */ +/* #undef _GLIBCXX_USE_DECIMAL_FLOAT */ + +/* Define if fchmod is available in . */ +#define _GLIBCXX_USE_FCHMOD 1 + +/* Define if fchmodat is available in . */ +#define _GLIBCXX_USE_FCHMODAT 1 + +/* Defined if gettimeofday is available. */ +#define _GLIBCXX_USE_GETTIMEOFDAY 1 + +/* Define if get_nprocs is available in . */ +/* #undef _GLIBCXX_USE_GET_NPROCS */ + +/* Define if __int128 is supported on this host. */ +/* #undef _GLIBCXX_USE_INT128 */ + +/* Define if LFS support is available. */ +/* #undef _GLIBCXX_USE_LFS */ + +/* Define if code specialized for long long should be used. */ +#define _GLIBCXX_USE_LONG_LONG 1 + +/* Defined if nanosleep is available. */ +/* #undef _GLIBCXX_USE_NANOSLEEP */ + +/* Define if NLS translations are to be used. */ +/* #undef _GLIBCXX_USE_NLS */ + +/* Define if pthreads_num_processors_np is available in . */ +/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ + +/* Define if POSIX read/write locks are available in . */ +/* #undef _GLIBCXX_USE_PTHREAD_RWLOCK_T */ + +/* Define if /dev/random and /dev/urandom are available for the random_device + of TR1 (Chapter 5.1). */ +/* #undef _GLIBCXX_USE_RANDOM_TR1 */ + +/* Define if usable realpath is available in . */ +/* #undef _GLIBCXX_USE_REALPATH */ + +/* Defined if sched_yield is available. */ +/* #undef _GLIBCXX_USE_SCHED_YIELD */ + +/* Define if _SC_NPROCESSORS_ONLN is available in . */ +#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 + +/* Define if _SC_NPROC_ONLN is available in . */ +/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ + +/* Define if sendfile is available in . */ +/* #undef _GLIBCXX_USE_SENDFILE */ + +/* Define if struct stat has timespec members. */ +/* #undef _GLIBCXX_USE_ST_MTIM */ + +/* Define if sysctl(), CTL_HW and HW_NCPU are available in . */ +/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ + +/* Define if obsolescent tmpnam is available in . */ +#define _GLIBCXX_USE_TMPNAM 1 + +/* Define if utimensat and UTIME_OMIT are available in and + AT_FDCWD in . */ +/* #undef _GLIBCXX_USE_UTIMENSAT */ + +/* 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. */ +/* #undef _GLIBCXX_X86_RDRAND */ + +/* 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 . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ +#endif + +/* Define if all C++11 integral type overloads are available in . */ +#if __cplusplus >= 201103L +/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ +#endif + +#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) +# define _GLIBCXX_HAVE_ACOSF 1 +# define acosf _acosf +#endif + +#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) +# define _GLIBCXX_HAVE_ACOSL 1 +# define acosl _acosl +#endif + +#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) +# define _GLIBCXX_HAVE_ASINF 1 +# define asinf _asinf +#endif + +#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) +# define _GLIBCXX_HAVE_ASINL 1 +# define asinl _asinl +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) +# define _GLIBCXX_HAVE_ATAN2F 1 +# define atan2f _atan2f +#endif + +#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) +# define _GLIBCXX_HAVE_ATAN2L 1 +# define atan2l _atan2l +#endif + +#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) +# define _GLIBCXX_HAVE_ATANF 1 +# define atanf _atanf +#endif + +#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) +# define _GLIBCXX_HAVE_ATANL 1 +# define atanl _atanl +#endif + +#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) +# define _GLIBCXX_HAVE_CEILF 1 +# define ceilf _ceilf +#endif + +#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) +# define _GLIBCXX_HAVE_CEILL 1 +# define ceill _ceill +#endif + +#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) +# define _GLIBCXX_HAVE_COSF 1 +# define cosf _cosf +#endif + +#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) +# define _GLIBCXX_HAVE_COSHF 1 +# define coshf _coshf +#endif + +#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) +# define _GLIBCXX_HAVE_COSHL 1 +# define coshl _coshl +#endif + +#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) +# define _GLIBCXX_HAVE_COSL 1 +# define cosl _cosl +#endif + +#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) +# define _GLIBCXX_HAVE_EXPF 1 +# define expf _expf +#endif + +#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) +# define _GLIBCXX_HAVE_EXPL 1 +# define expl _expl +#endif + +#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) +# define _GLIBCXX_HAVE_FABSF 1 +# define fabsf _fabsf +#endif + +#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) +# define _GLIBCXX_HAVE_FABSL 1 +# define fabsl _fabsl +#endif + +#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) +# define _GLIBCXX_HAVE_FINITE 1 +# define finite _finite +#endif + +#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) +# define _GLIBCXX_HAVE_FINITEF 1 +# define finitef _finitef +#endif + +#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) +# define _GLIBCXX_HAVE_FINITEL 1 +# define finitel _finitel +#endif + +#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) +# define _GLIBCXX_HAVE_FLOORF 1 +# define floorf _floorf +#endif + +#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) +# define _GLIBCXX_HAVE_FLOORL 1 +# define floorl _floorl +#endif + +#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) +# define _GLIBCXX_HAVE_FMODF 1 +# define fmodf _fmodf +#endif + +#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) +# define _GLIBCXX_HAVE_FMODL 1 +# define fmodl _fmodl +#endif + +#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) +# define _GLIBCXX_HAVE_FPCLASS 1 +# define fpclass _fpclass +#endif + +#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) +# define _GLIBCXX_HAVE_FREXPF 1 +# define frexpf _frexpf +#endif + +#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) +# define _GLIBCXX_HAVE_FREXPL 1 +# define frexpl _frexpl +#endif + +#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) +# define _GLIBCXX_HAVE_HYPOT 1 +# define hypot _hypot +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) +# define _GLIBCXX_HAVE_HYPOTF 1 +# define hypotf _hypotf +#endif + +#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) +# define _GLIBCXX_HAVE_HYPOTL 1 +# define hypotl _hypotl +#endif + +#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) +# define _GLIBCXX_HAVE_ISINF 1 +# define isinf _isinf +#endif + +#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) +# define _GLIBCXX_HAVE_ISINFF 1 +# define isinff _isinff +#endif + +#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) +# define _GLIBCXX_HAVE_ISINFL 1 +# define isinfl _isinfl +#endif + +#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) +# define _GLIBCXX_HAVE_ISNAN 1 +# define isnan _isnan +#endif + +#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) +# define _GLIBCXX_HAVE_ISNANF 1 +# define isnanf _isnanf +#endif + +#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) +# define _GLIBCXX_HAVE_ISNANL 1 +# define isnanl _isnanl +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) +# define _GLIBCXX_HAVE_LDEXPF 1 +# define ldexpf _ldexpf +#endif + +#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) +# define _GLIBCXX_HAVE_LDEXPL 1 +# define ldexpl _ldexpl +#endif + +#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) +# define _GLIBCXX_HAVE_LOG10F 1 +# define log10f _log10f +#endif + +#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) +# define _GLIBCXX_HAVE_LOG10L 1 +# define log10l _log10l +#endif + +#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) +# define _GLIBCXX_HAVE_LOGF 1 +# define logf _logf +#endif + +#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) +# define _GLIBCXX_HAVE_LOGL 1 +# define logl _logl +#endif + +#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) +# define _GLIBCXX_HAVE_MODF 1 +# define modf _modf +#endif + +#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) +# define _GLIBCXX_HAVE_MODFF 1 +# define modff _modff +#endif + +#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) +# define _GLIBCXX_HAVE_MODFL 1 +# define modfl _modfl +#endif + +#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) +# define _GLIBCXX_HAVE_POWF 1 +# define powf _powf +#endif + +#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) +# define _GLIBCXX_HAVE_POWL 1 +# define powl _powl +#endif + +#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) +# define _GLIBCXX_HAVE_QFPCLASS 1 +# define qfpclass _qfpclass +#endif + +#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) +# define _GLIBCXX_HAVE_SINCOS 1 +# define sincos _sincos +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) +# define _GLIBCXX_HAVE_SINCOSF 1 +# define sincosf _sincosf +#endif + +#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) +# define _GLIBCXX_HAVE_SINCOSL 1 +# define sincosl _sincosl +#endif + +#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) +# define _GLIBCXX_HAVE_SINF 1 +# define sinf _sinf +#endif + +#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) +# define _GLIBCXX_HAVE_SINHF 1 +# define sinhf _sinhf +#endif + +#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) +# define _GLIBCXX_HAVE_SINHL 1 +# define sinhl _sinhl +#endif + +#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) +# define _GLIBCXX_HAVE_SINL 1 +# define sinl _sinl +#endif + +#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) +# define _GLIBCXX_HAVE_SQRTF 1 +# define sqrtf _sqrtf +#endif + +#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) +# define _GLIBCXX_HAVE_SQRTL 1 +# define sqrtl _sqrtl +#endif + +#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) +# define _GLIBCXX_HAVE_STRTOF 1 +# define strtof _strtof +#endif + +#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) +# define _GLIBCXX_HAVE_STRTOLD 1 +# define strtold _strtold +#endif + +#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) +# define _GLIBCXX_HAVE_TANF 1 +# define tanf _tanf +#endif + +#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) +# define _GLIBCXX_HAVE_TANHF 1 +# define tanhf _tanhf +#endif + +#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) +# define _GLIBCXX_HAVE_TANHL 1 +# define tanhl _tanhl +#endif + +#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) +# define _GLIBCXX_HAVE_TANL 1 +# define tanl _tanl +#endif + +#endif // _GLIBCXX_CXX_CONFIG_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++io.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++io.h new file mode 100644 index 000000000..c982504f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++io.h @@ -0,0 +1,50 @@ +// Underlying io library details -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/c++io.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ios} + */ + +// c_io_stdio.h - Defines for using "C" stdio.h + +#ifndef _GLIBCXX_CXX_IO_H +#define _GLIBCXX_CXX_IO_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef __gthread_mutex_t __c_lock; + + // for basic_file.h + typedef FILE __c_file; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++locale.h new file mode 100644 index 000000000..0d2081660 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/c++locale.h @@ -0,0 +1,92 @@ +// Wrapper for underlying C-language localization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/c++locale.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.8 Standard locale categories. +// + +// Written by Benjamin Kosnik + +#ifndef _GLIBCXX_CXX_LOCALE_H +#define _GLIBCXX_CXX_LOCALE_H 1 + +#pragma GCC system_header + +#include + +#define _GLIBCXX_NUM_CATEGORIES 0 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + typedef int* __c_locale; + + // Convert numeric value of type double and long double to string and + // return length of string. If vsnprintf is available use it, otherwise + // fall back to the unsafe vsprintf which, in general, can be dangerous + // and should be avoided. + inline int + __convert_from_v(const __c_locale&, char* __out, + const int __size __attribute__((__unused__)), + const char* __fmt, ...) + { + char* __old = std::setlocale(LC_NUMERIC, 0); + char* __sav = 0; + if (__builtin_strcmp(__old, "C")) + { + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); + std::setlocale(LC_NUMERIC, "C"); + } + + __builtin_va_list __args; + __builtin_va_start(__args, __fmt); + +#if _GLIBCXX_USE_C99_STDIO + const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); +#else + const int __ret = __builtin_vsprintf(__out, __fmt, __args); +#endif + + __builtin_va_end(__args); + + if (__sav) + { + std::setlocale(LC_NUMERIC, __sav); + delete [] __sav; + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/cpu_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/cpu_defines.h new file mode 100644 index 000000000..8c9f2c596 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/cpu_defines.h @@ -0,0 +1,40 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @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 + +// Integer divide instructions don't trap on ARM. +#ifdef __ARM_ARCH_EXT_IDIV__ +#define __glibcxx_integral_traps false +#else +#define __glibcxx_integral_traps true +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/ctype_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/ctype_base.h new file mode 100644 index 000000000..7f65ea1c7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/ctype_base.h @@ -0,0 +1,61 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +// +// ISO C++ 14882: 22.1 Locales +// + +// Information as gleaned from /usr/include/ctype.h + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// @brief Base class for ctype. + struct ctype_base + { + // Non-standard typedefs. + typedef const int* __to_type; + + // NB: Offsets into ctype::_M_table force a particular size + // on the mask type. Because of this, we don't use an enum. + typedef char mask; + static const mask upper = _U; + static const mask lower = _L; + static const mask alpha = _U | _L; + static const mask digit = _N; + static const mask xdigit = _X | _N; + static const mask space = _S; + static const mask print = _P | _U | _L | _N | _B; + static const mask graph = _P | _U | _L | _N; + static const mask cntrl = _C; + static const mask punct = _P; + static const mask alnum = _U | _L | _N; +#if __cplusplus >= 201103L + static const mask blank = space; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/ctype_inline.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/ctype_inline.h new file mode 100644 index 000000000..48ca7f09c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/ctype_inline.h @@ -0,0 +1,74 @@ +// Locale support -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @file bits/ctype_inline.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.1 Locales +// + +// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) +// functions go in ctype.cc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + bool + ctype:: + is(mask __m, char __c) const + { return _M_table[static_cast(__c)] & __m; } + + const char* + ctype:: + is(const char* __low, const char* __high, mask* __vec) const + { + while (__low < __high) + *__vec++ = _M_table[static_cast(*__low++)]; + return __high; + } + + const char* + ctype:: + scan_is(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && !this->is(__m, *__low)) + ++__low; + return __low; + } + + const char* + ctype:: + scan_not(mask __m, const char* __low, const char* __high) const + { + while (__low < __high && this->is(__m, *__low) != 0) + ++__low; + return __low; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/cxxabi_tweaks.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/cxxabi_tweaks.h new file mode 100644 index 000000000..fbe0c9e89 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/cxxabi_tweaks.h @@ -0,0 +1,82 @@ +// Control various target specific ABI tweaks. ARM version. + +// Copyright (C) 2004-2018 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 +// . + +/** @file bits/cxxabi_tweaks.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{cxxabi.h} + */ + +#ifndef _CXXABI_TWEAKS_H +#define _CXXABI_TWEAKS_H 1 + +#ifdef __cplusplus +namespace __cxxabiv1 +{ + extern "C" + { +#endif + +#ifdef __ARM_EABI__ + // The ARM EABI uses the least significant bit of a 32-bit + // guard variable. */ +#define _GLIBCXX_GUARD_TEST(x) ((*(x) & 1) != 0) +#define _GLIBCXX_GUARD_SET(x) *(x) = 1 +#define _GLIBCXX_GUARD_BIT 1 +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + typedef int __guard; + + // We also want the element size in array cookies. +#define _GLIBCXX_ELTSIZE_IN_COOKIE 1 + + // __cxa_vec_ctor should return a pointer to the array. + typedef void * __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return x + // Constructors and destructors return the "this" pointer. + typedef void * __cxa_cdtor_return_type; + +#else // __ARM_EABI__ + + // The generic ABI uses the first byte of a 64-bit guard variable. +#define _GLIBCXX_GUARD_TEST(x) (*(char *) (x) != 0) +#define _GLIBCXX_GUARD_SET(x) *(char *) (x) = 1 +#define _GLIBCXX_GUARD_BIT __guard_test_bit (0, 1) +#define _GLIBCXX_GUARD_PENDING_BIT __guard_test_bit (1, 1) +#define _GLIBCXX_GUARD_WAITING_BIT __guard_test_bit (2, 1) + __extension__ typedef int __guard __attribute__((mode (__DI__))); + + // __cxa_vec_ctor has void return type. + typedef void __cxa_vec_ctor_return_type; +#define _GLIBCXX_CXA_VEC_CTOR_RETURN(x) return + // Constructors and destructors do not return a value. + typedef void __cxa_cdtor_return_type; + +#endif //!__ARM_EABI__ + +#ifdef __cplusplus + } +} // namespace __cxxabiv1 +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/error_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/error_constants.h new file mode 100644 index 000000000..af77f46be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/error_constants.h @@ -0,0 +1,178 @@ +// Specific definitions for generic platforms -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/error_constants.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{system_error} + */ + +#ifndef _GLIBCXX_ERROR_CONSTANTS +#define _GLIBCXX_ERROR_CONSTANTS 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + enum class errc + { + address_family_not_supported = EAFNOSUPPORT, + address_in_use = EADDRINUSE, + address_not_available = EADDRNOTAVAIL, + already_connected = EISCONN, + argument_list_too_long = E2BIG, + argument_out_of_domain = EDOM, + bad_address = EFAULT, + bad_file_descriptor = EBADF, + +#ifdef _GLIBCXX_HAVE_EBADMSG + bad_message = EBADMSG, +#endif + + broken_pipe = EPIPE, + connection_aborted = ECONNABORTED, + connection_already_in_progress = EALREADY, + connection_refused = ECONNREFUSED, + connection_reset = ECONNRESET, + cross_device_link = EXDEV, + destination_address_required = EDESTADDRREQ, + device_or_resource_busy = EBUSY, + directory_not_empty = ENOTEMPTY, + executable_format_error = ENOEXEC, + file_exists = EEXIST, + file_too_large = EFBIG, + filename_too_long = ENAMETOOLONG, + function_not_supported = ENOSYS, + host_unreachable = EHOSTUNREACH, + +#ifdef _GLIBCXX_HAVE_EIDRM + identifier_removed = EIDRM, +#endif + + illegal_byte_sequence = EILSEQ, + inappropriate_io_control_operation = ENOTTY, + interrupted = EINTR, + invalid_argument = EINVAL, + invalid_seek = ESPIPE, + io_error = EIO, + is_a_directory = EISDIR, + message_size = EMSGSIZE, + network_down = ENETDOWN, + network_reset = ENETRESET, + network_unreachable = ENETUNREACH, + no_buffer_space = ENOBUFS, + no_child_process = ECHILD, + +#ifdef _GLIBCXX_HAVE_ENOLINK + no_link = ENOLINK, +#endif + + no_lock_available = ENOLCK, + +#ifdef _GLIBCXX_HAVE_ENODATA + no_message_available = ENODATA, +#endif + + no_message = ENOMSG, + no_protocol_option = ENOPROTOOPT, + no_space_on_device = ENOSPC, + +#ifdef _GLIBCXX_HAVE_ENOSR + no_stream_resources = ENOSR, +#endif + + no_such_device_or_address = ENXIO, + no_such_device = ENODEV, + no_such_file_or_directory = ENOENT, + no_such_process = ESRCH, + not_a_directory = ENOTDIR, + not_a_socket = ENOTSOCK, + +#ifdef _GLIBCXX_HAVE_ENOSTR + not_a_stream = ENOSTR, +#endif + + not_connected = ENOTCONN, + not_enough_memory = ENOMEM, + +#ifdef _GLIBCXX_HAVE_ENOTSUP + not_supported = ENOTSUP, +#endif + +#ifdef _GLIBCXX_HAVE_ECANCELED + operation_canceled = ECANCELED, +#endif + + operation_in_progress = EINPROGRESS, + operation_not_permitted = EPERM, + operation_not_supported = EOPNOTSUPP, + operation_would_block = EWOULDBLOCK, + +#ifdef _GLIBCXX_HAVE_EOWNERDEAD + owner_dead = EOWNERDEAD, +#endif + + permission_denied = EACCES, + +#ifdef _GLIBCXX_HAVE_EPROTO + protocol_error = EPROTO, +#endif + + protocol_not_supported = EPROTONOSUPPORT, + read_only_file_system = EROFS, + resource_deadlock_would_occur = EDEADLK, + resource_unavailable_try_again = EAGAIN, + result_out_of_range = ERANGE, + +#ifdef _GLIBCXX_HAVE_ENOTRECOVERABLE + state_not_recoverable = ENOTRECOVERABLE, +#endif + +#ifdef _GLIBCXX_HAVE_ETIME + stream_timeout = ETIME, +#endif + +#ifdef _GLIBCXX_HAVE_ETXTBSY + text_file_busy = ETXTBSY, +#endif + + timed_out = ETIMEDOUT, + too_many_files_open_in_system = ENFILE, + too_many_files_open = EMFILE, + too_many_links = EMLINK, + too_many_symbolic_link_levels = ELOOP, + +#ifdef _GLIBCXX_HAVE_EOVERFLOW + value_too_large = EOVERFLOW, +#endif + + wrong_protocol_type = EPROTOTYPE + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/extc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/extc++.h new file mode 100644 index 000000000..8d1c6c29a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/extc++.h @@ -0,0 +1,84 @@ +// C++ includes used for precompiling extensions -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file extc++.h + * This is an implementation file for a precompiled header. + */ + +#if __cplusplus < 201103L +#include +#else +#include +#endif + +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if __cplusplus >= 201103L +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_HAVE_ICONV + #include + #include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-default.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-default.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-default.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-posix.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-posix.h new file mode 100644 index 000000000..458bc3d0d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-posix.h @@ -0,0 +1,889 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_POSIX_H +#define _GLIBCXX_GCC_GTHR_POSIX_H + +/* POSIX threads specific definitions. + Easy, since the interface is just one-to-one mapping. */ + +#define __GTHREADS 1 +#define __GTHREADS_CXX0X 1 + +#include + +#if ((defined(_LIBOBJC) || defined(_LIBOBJC_WEAK)) \ + || !defined(_GTHREAD_USE_MUTEX_TIMEDLOCK)) +# include +# if defined(_POSIX_TIMEOUTS) && _POSIX_TIMEOUTS >= 0 +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 +# else +# define _GTHREAD_USE_MUTEX_TIMEDLOCK 0 +# endif +#endif + +typedef pthread_t __gthread_t; +typedef pthread_key_t __gthread_key_t; +typedef pthread_once_t __gthread_once_t; +typedef pthread_mutex_t __gthread_mutex_t; +typedef pthread_mutex_t __gthread_recursive_mutex_t; +typedef pthread_cond_t __gthread_cond_t; +typedef struct timespec __gthread_time_t; + +/* POSIX like conditional variables are supported. Please look at comments + in gthr.h for details. */ +#define __GTHREAD_HAS_COND 1 + +#define __GTHREAD_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER +#define __GTHREAD_MUTEX_INIT_FUNCTION __gthread_mutex_init_function +#define __GTHREAD_ONCE_INIT PTHREAD_ONCE_INIT +#if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER +#elif defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) +#define __GTHREAD_RECURSIVE_MUTEX_INIT PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP +#else +#define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#define __GTHREAD_COND_INIT PTHREAD_COND_INITIALIZER +#define __GTHREAD_TIME_INIT {0,0} + +#ifdef _GTHREAD_USE_MUTEX_INIT_FUNC +# undef __GTHREAD_MUTEX_INIT +#endif +#ifdef _GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC +# undef __GTHREAD_RECURSIVE_MUTEX_INIT +# undef __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION +# define __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION __gthread_recursive_mutex_init_function +#endif +#ifdef _GTHREAD_USE_COND_INIT_FUNC +# undef __GTHREAD_COND_INIT +# define __GTHREAD_COND_INIT_FUNCTION __gthread_cond_init_function +#endif + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK +# ifndef __gthrw_pragma +# define __gthrw_pragma(pragma) +# endif +# define __gthrw2(name,name2,type) \ + static __typeof(type) name __attribute__ ((__weakref__(#name2))); \ + __gthrw_pragma(weak type) +# define __gthrw_(name) __gthrw_ ## name +#else +# define __gthrw2(name,name2,type) +# define __gthrw_(name) name +#endif + +/* Typically, __gthrw_foo is a weak reference to symbol foo. */ +#define __gthrw(name) __gthrw2(__gthrw_ ## name,name,name) + +__gthrw(pthread_once) +__gthrw(pthread_getspecific) +__gthrw(pthread_setspecific) + +__gthrw(pthread_create) +__gthrw(pthread_join) +__gthrw(pthread_equal) +__gthrw(pthread_self) +__gthrw(pthread_detach) +#ifndef __BIONIC__ +__gthrw(pthread_cancel) +#endif +__gthrw(sched_yield) + +__gthrw(pthread_mutex_lock) +__gthrw(pthread_mutex_trylock) +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +__gthrw(pthread_mutex_timedlock) +#endif +__gthrw(pthread_mutex_unlock) +__gthrw(pthread_mutex_init) +__gthrw(pthread_mutex_destroy) + +__gthrw(pthread_cond_init) +__gthrw(pthread_cond_broadcast) +__gthrw(pthread_cond_signal) +__gthrw(pthread_cond_wait) +__gthrw(pthread_cond_timedwait) +__gthrw(pthread_cond_destroy) + +__gthrw(pthread_key_create) +__gthrw(pthread_key_delete) +__gthrw(pthread_mutexattr_init) +__gthrw(pthread_mutexattr_settype) +__gthrw(pthread_mutexattr_destroy) + + +#if defined(_LIBOBJC) || defined(_LIBOBJC_WEAK) +/* Objective-C. */ +__gthrw(pthread_exit) +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(sched_get_priority_max) +__gthrw(sched_get_priority_min) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ +__gthrw(pthread_attr_destroy) +__gthrw(pthread_attr_init) +__gthrw(pthread_attr_setdetachstate) +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING +__gthrw(pthread_getschedparam) +__gthrw(pthread_setschedparam) +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _LIBOBJC || _LIBOBJC_WEAK */ + +#if __GXX_WEAK__ && _GLIBCXX_GTHREAD_USE_WEAK + +/* On Solaris 2.6 up to 9, the libc exposes a POSIX threads interface even if + -pthreads is not specified. The functions are dummies and most return an + error value. However pthread_once returns 0 without invoking the routine + it is passed so we cannot pretend that the interface is active if -pthreads + is not specified. On Solaris 2.5.1, the interface is not exposed at all so + we need to play the usual game with weak symbols. On Solaris 10 and up, a + working interface is always exposed. On FreeBSD 6 and later, libc also + exposes a dummy POSIX threads interface, similar to what Solaris 2.6 up + to 9 does. FreeBSD >= 700014 even provides a pthread_cancel stub in libc, + which means the alternate __gthread_active_p below cannot be used there. */ + +#if defined(__FreeBSD__) || (defined(__sun) && defined(__svr4__)) + +static volatile int __gthread_active = -1; + +static void +__gthread_trigger (void) +{ + __gthread_active = 1; +} + +static inline int +__gthread_active_p (void) +{ + static pthread_mutex_t __gthread_active_mutex = PTHREAD_MUTEX_INITIALIZER; + static pthread_once_t __gthread_active_once = PTHREAD_ONCE_INIT; + + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + + /* This test is not protected to avoid taking a lock on the main code + path so every update of __gthread_active in a threaded program must + be atomic with regard to the result of the test. */ + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + if (__gthrw_(pthread_once)) + { + /* If this really is a threaded program, then we must ensure that + __gthread_active has been set to 1 before exiting this block. */ + __gthrw_(pthread_mutex_lock) (&__gthread_active_mutex); + __gthrw_(pthread_once) (&__gthread_active_once, __gthread_trigger); + __gthrw_(pthread_mutex_unlock) (&__gthread_active_mutex); + } + + /* Make sure we'll never enter this block again. */ + if (__gthread_active < 0) + __gthread_active = 0; + + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* neither FreeBSD nor Solaris */ + +/* For a program to be multi-threaded the only thing that it certainly must + be using is pthread_create. However, there may be other libraries that + intercept pthread_create with their own definitions to wrap pthreads + functionality for some purpose. In those cases, pthread_create being + defined might not necessarily mean that libpthread is actually linked + in. + + For the GNU C library, we can use a known internal name. This is always + available in the ABI, but no other library would define it. That is + ideal, since any public pthread function might be intercepted just as + pthread_create might be. __pthread_key_create is an "internal" + implementation symbol, but it is part of the public exported ABI. Also, + it's among the symbols that the static libpthread.a always links in + whenever pthread_create is used, so there is no danger of a false + negative result in any statically-linked, multi-threaded program. + + For others, we choose pthread_cancel as a function that seems unlikely + to be redefined by an interceptor library. The bionic (Android) C + library does not provide pthread_cancel, so we do use pthread_create + there (and interceptor libraries lose). */ + +#ifdef __GLIBC__ +__gthrw2(__gthrw_(__pthread_key_create), + __pthread_key_create, + pthread_key_create) +# define GTHR_ACTIVE_PROXY __gthrw_(__pthread_key_create) +#elif defined (__BIONIC__) +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_create) +#else +# define GTHR_ACTIVE_PROXY __gthrw_(pthread_cancel) +#endif + +static inline int +__gthread_active_p (void) +{ + static void *const __gthread_active_ptr + = __extension__ (void *) >HR_ACTIVE_PROXY; + return __gthread_active_ptr != 0; +} + +#endif /* FreeBSD or Solaris */ + +#else /* not __GXX_WEAK__ */ + +/* Similar to Solaris, HP-UX 11 for PA-RISC provides stubs for pthread + calls in shared flavors of the HP-UX C library. Most of the stubs + have no functionality. The details are described in the "libc cumulative + patch" for each subversion of HP-UX 11. There are two special interfaces + provided for checking whether an application is linked to a shared pthread + library or not. However, these interfaces aren't available in early + libpthread libraries. We also need a test that works for archive + libraries. We can't use pthread_once as some libc versions call the + init function. We also can't use pthread_create or pthread_attr_init + as these create a thread and thereby prevent changing the default stack + size. The function pthread_default_stacksize_np is available in both + the archive and shared versions of libpthread. It can be used to + determine the default pthread stack size. There is a stub in some + shared libc versions which returns a zero size if pthreads are not + active. We provide an equivalent stub to handle cases where libc + doesn't provide one. */ + +#if defined(__hppa__) && defined(__hpux__) + +static volatile int __gthread_active = -1; + +static inline int +__gthread_active_p (void) +{ + /* Avoid reading __gthread_active twice on the main code path. */ + int __gthread_active_latest_value = __gthread_active; + size_t __s; + + if (__builtin_expect (__gthread_active_latest_value < 0, 0)) + { + pthread_default_stacksize_np (0, &__s); + __gthread_active = __s ? 1 : 0; + __gthread_active_latest_value = __gthread_active; + } + + return __gthread_active_latest_value != 0; +} + +#else /* not hppa-hpux */ + +static inline int +__gthread_active_p (void) +{ + return 1; +} + +#endif /* hppa-hpux */ + +#endif /* __GXX_WEAK__ */ + +#ifdef _LIBOBJC + +/* This is the config.h file in libobjc/ */ +#include + +#ifdef HAVE_SCHED_H +# include +#endif + +/* Key structure for maintaining thread specific storage */ +static pthread_key_t _objc_thread_storage; +static pthread_attr_t _objc_thread_attribs; + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + if (__gthread_active_p ()) + { + /* Initialize the thread storage key. */ + if (__gthrw_(pthread_key_create) (&_objc_thread_storage, NULL) == 0) + { + /* The normal default detach state for threads is + * PTHREAD_CREATE_JOINABLE which causes threads to not die + * when you think they should. */ + if (__gthrw_(pthread_attr_init) (&_objc_thread_attribs) == 0 + && __gthrw_(pthread_attr_setdetachstate) (&_objc_thread_attribs, + PTHREAD_CREATE_DETACHED) == 0) + return 0; + } + } + + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + if (__gthread_active_p () + && __gthrw_(pthread_key_delete) (_objc_thread_storage) == 0 + && __gthrw_(pthread_attr_destroy) (&_objc_thread_attribs) == 0) + return 0; + + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (*func)(void *), void *arg) +{ + objc_thread_t thread_id; + pthread_t new_thread_handle; + + if (!__gthread_active_p ()) + return NULL; + + if (!(__gthrw_(pthread_create) (&new_thread_handle, &_objc_thread_attribs, + (void *) func, arg))) + thread_id = (objc_thread_t) new_thread_handle; + else + thread_id = NULL; + + return thread_id; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority) +{ + if (!__gthread_active_p ()) + return -1; + else + { +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + pthread_t thread_id = __gthrw_(pthread_self) (); + int policy; + struct sched_param params; + int priority_min, priority_max; + + if (__gthrw_(pthread_getschedparam) (thread_id, &policy, ¶ms) == 0) + { + if ((priority_max = __gthrw_(sched_get_priority_max) (policy)) == -1) + return -1; + + if ((priority_min = __gthrw_(sched_get_priority_min) (policy)) == -1) + return -1; + + if (priority > priority_max) + priority = priority_max; + else if (priority < priority_min) + priority = priority_min; + params.sched_priority = priority; + + /* + * The solaris 7 and several other man pages incorrectly state that + * this should be a pointer to policy but pthread.h is universally + * at odds with this. + */ + if (__gthrw_(pthread_setschedparam) (thread_id, policy, ¶ms) == 0) + return 0; + } +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return -1; + } +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ +#ifdef _POSIX_PRIORITY_SCHEDULING +#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING + if (__gthread_active_p ()) + { + int policy; + struct sched_param params; + + if (__gthrw_(pthread_getschedparam) (__gthrw_(pthread_self) (), &policy, ¶ms) == 0) + return params.sched_priority; + else + return -1; + } + else +#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */ +#endif /* _POSIX_PRIORITY_SCHEDULING */ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + if (__gthread_active_p ()) + __gthrw_(sched_yield) (); +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + if (__gthread_active_p ()) + /* exit the thread */ + __gthrw_(pthread_exit) (&__objc_thread_exit_status); + + /* Failed if we reached here */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + if (__gthread_active_p ()) + return (objc_thread_t) __gthrw_(pthread_self) (); + else + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_setspecific) (_objc_thread_storage, value); + else + { + thread_local_storage = value; + return 0; + } +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_getspecific) (_objc_thread_storage); + else + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + mutex->backend = objc_malloc (sizeof (pthread_mutex_t)); + + if (__gthrw_(pthread_mutex_init) ((pthread_mutex_t *) mutex->backend, NULL)) + { + objc_free (mutex->backend); + mutex->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + { + int count; + + /* + * Posix Threads specifically require that the thread be unlocked + * for __gthrw_(pthread_mutex_destroy) to work. + */ + + do + { + count = __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend); + if (count < 0) + return -1; + } + while (count); + + if (__gthrw_(pthread_mutex_destroy) ((pthread_mutex_t *) mutex->backend)) + return -1; + + objc_free (mutex->backend); + mutex->backend = NULL; + } + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_lock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_trylock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex) +{ + if (__gthread_active_p () + && __gthrw_(pthread_mutex_unlock) ((pthread_mutex_t *) mutex->backend) != 0) + { + return -1; + } + + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + condition->backend = objc_malloc (sizeof (pthread_cond_t)); + + if (__gthrw_(pthread_cond_init) ((pthread_cond_t *) condition->backend, NULL)) + { + objc_free (condition->backend); + condition->backend = NULL; + return -1; + } + } + + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition) +{ + if (__gthread_active_p ()) + { + if (__gthrw_(pthread_cond_destroy) ((pthread_cond_t *) condition->backend)) + return -1; + + objc_free (condition->backend); + condition->backend = NULL; + } + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition, objc_mutex_t mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_wait) ((pthread_cond_t *) condition->backend, + (pthread_mutex_t *) mutex->backend); + else + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_broadcast) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_cond_signal) ((pthread_cond_t *) condition->backend); + else + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_create (__gthread_t *__threadid, void *(*__func) (void*), + void *__args) +{ + return __gthrw_(pthread_create) (__threadid, NULL, __func, __args); +} + +static inline int +__gthread_join (__gthread_t __threadid, void **__value_ptr) +{ + return __gthrw_(pthread_join) (__threadid, __value_ptr); +} + +static inline int +__gthread_detach (__gthread_t __threadid) +{ + return __gthrw_(pthread_detach) (__threadid); +} + +static inline int +__gthread_equal (__gthread_t __t1, __gthread_t __t2) +{ + return __gthrw_(pthread_equal) (__t1, __t2); +} + +static inline __gthread_t +__gthread_self (void) +{ + return __gthrw_(pthread_self) (); +} + +static inline int +__gthread_yield (void) +{ + return __gthrw_(sched_yield) (); +} + +static inline int +__gthread_once (__gthread_once_t *__once, void (*__func) (void)) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_once) (__once, __func); + else + return -1; +} + +static inline int +__gthread_key_create (__gthread_key_t *__key, void (*__dtor) (void *)) +{ + return __gthrw_(pthread_key_create) (__key, __dtor); +} + +static inline int +__gthread_key_delete (__gthread_key_t __key) +{ + return __gthrw_(pthread_key_delete) (__key); +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key) +{ + return __gthrw_(pthread_getspecific) (__key); +} + +static inline int +__gthread_setspecific (__gthread_key_t __key, const void *__ptr) +{ + return __gthrw_(pthread_setspecific) (__key, __ptr); +} + +static inline void +__gthread_mutex_init_function (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_mutex_init) (__mutex, NULL); +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_destroy) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_lock) (__mutex); + else + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_trylock) (__mutex); + else + return 0; +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_mutex_timedlock (__gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_timedlock) (__mutex, __abs_timeout); + else + return 0; +} +#endif + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + return __gthrw_(pthread_mutex_unlock) (__mutex); + else + return 0; +} + +#if !defined( PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP) \ + || defined(_GTHREAD_USE_RECURSIVE_MUTEX_INIT_FUNC) +static inline int +__gthread_recursive_mutex_init_function (__gthread_recursive_mutex_t *__mutex) +{ + if (__gthread_active_p ()) + { + pthread_mutexattr_t __attr; + int __r; + + __r = __gthrw_(pthread_mutexattr_init) (&__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_settype) (&__attr, + PTHREAD_MUTEX_RECURSIVE); + if (!__r) + __r = __gthrw_(pthread_mutex_init) (__mutex, &__attr); + if (!__r) + __r = __gthrw_(pthread_mutexattr_destroy) (&__attr); + return __r; + } + return 0; +} +#endif + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +#if _GTHREAD_USE_MUTEX_TIMEDLOCK +static inline int +__gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthread_mutex_timedlock (__mutex, __abs_timeout); +} +#endif + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#ifdef _GTHREAD_USE_COND_INIT_FUNC +static inline void +__gthread_cond_init_function (__gthread_cond_t *__cond) +{ + if (__gthread_active_p ()) + __gthrw_(pthread_cond_init) (__cond, NULL); +} +#endif + +static inline int +__gthread_cond_broadcast (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_broadcast) (__cond); +} + +static inline int +__gthread_cond_signal (__gthread_cond_t *__cond) +{ + return __gthrw_(pthread_cond_signal) (__cond); +} + +static inline int +__gthread_cond_wait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex) +{ + return __gthrw_(pthread_cond_wait) (__cond, __mutex); +} + +static inline int +__gthread_cond_timedwait (__gthread_cond_t *__cond, __gthread_mutex_t *__mutex, + const __gthread_time_t *__abs_timeout) +{ + return __gthrw_(pthread_cond_timedwait) (__cond, __mutex, __abs_timeout); +} + +static inline int +__gthread_cond_wait_recursive (__gthread_cond_t *__cond, + __gthread_recursive_mutex_t *__mutex) +{ + return __gthread_cond_wait (__cond, __mutex); +} + +static inline int +__gthread_cond_destroy (__gthread_cond_t* __cond) +{ + return __gthrw_(pthread_cond_destroy) (__cond); +} + +#endif /* _LIBOBJC */ + +#endif /* ! _GLIBCXX_GCC_GTHR_POSIX_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-single.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-single.h new file mode 100644 index 000000000..a56e06356 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr-single.h @@ -0,0 +1,298 @@ +/* Threads compatibility routines for libgcc2 and libobjc. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_SINGLE_H +#define _GLIBCXX_GCC_GTHR_SINGLE_H + +/* Just provide compatibility for mutex handling. */ + +typedef int __gthread_key_t; +typedef int __gthread_once_t; +typedef int __gthread_mutex_t; +typedef int __gthread_recursive_mutex_t; + +#define __GTHREAD_ONCE_INIT 0 +#define __GTHREAD_MUTEX_INIT 0 +#define __GTHREAD_MUTEX_INIT_FUNCTION(mx) do {} while (0) +#define __GTHREAD_RECURSIVE_MUTEX_INIT 0 + +#define _GLIBCXX_UNUSED __attribute__((__unused__)) + +#ifdef _LIBOBJC + +/* Thread local storage for a single thread */ +static void *thread_local_storage = NULL; + +/* Backend initialization functions */ + +/* Initialize the threads subsystem. */ +static inline int +__gthread_objc_init_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Close the threads subsystem. */ +static inline int +__gthread_objc_close_thread_system (void) +{ + /* No thread support available */ + return -1; +} + +/* Backend thread functions */ + +/* Create a new thread of execution. */ +static inline objc_thread_t +__gthread_objc_thread_detach (void (* func)(void *), void * arg _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return NULL; +} + +/* Set the current thread's priority. */ +static inline int +__gthread_objc_thread_set_priority (int priority _GLIBCXX_UNUSED) +{ + /* No thread support available */ + return -1; +} + +/* Return the current thread's priority. */ +static inline int +__gthread_objc_thread_get_priority (void) +{ + return OBJC_THREAD_INTERACTIVE_PRIORITY; +} + +/* Yield our process time to another thread. */ +static inline void +__gthread_objc_thread_yield (void) +{ + return; +} + +/* Terminate the current thread. */ +static inline int +__gthread_objc_thread_exit (void) +{ + /* No thread support available */ + /* Should we really exit the program */ + /* exit (&__objc_thread_exit_status); */ + return -1; +} + +/* Returns an integer value which uniquely describes a thread. */ +static inline objc_thread_t +__gthread_objc_thread_id (void) +{ + /* No thread support, use 1. */ + return (objc_thread_t) 1; +} + +/* Sets the thread's local storage pointer. */ +static inline int +__gthread_objc_thread_set_data (void *value) +{ + thread_local_storage = value; + return 0; +} + +/* Returns the thread's local storage pointer. */ +static inline void * +__gthread_objc_thread_get_data (void) +{ + return thread_local_storage; +} + +/* Backend mutex functions */ + +/* Allocate a mutex. */ +static inline int +__gthread_objc_mutex_allocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a mutex. */ +static inline int +__gthread_objc_mutex_deallocate (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_lock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Try to grab a lock on a mutex. */ +static inline int +__gthread_objc_mutex_trylock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + /* There can only be one thread, so we always get the lock */ + return 0; +} + +/* Unlock the mutex */ +static inline int +__gthread_objc_mutex_unlock (objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Backend condition mutex functions */ + +/* Allocate a condition. */ +static inline int +__gthread_objc_condition_allocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Deallocate a condition. */ +static inline int +__gthread_objc_condition_deallocate (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wait on the condition */ +static inline int +__gthread_objc_condition_wait (objc_condition_t condition _GLIBCXX_UNUSED, + objc_mutex_t mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up all threads waiting on this condition. */ +static inline int +__gthread_objc_condition_broadcast (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +/* Wake up one thread waiting on this condition. */ +static inline int +__gthread_objc_condition_signal (objc_condition_t condition _GLIBCXX_UNUSED) +{ + return 0; +} + +#else /* _LIBOBJC */ + +static inline int +__gthread_active_p (void) +{ + return 0; +} + +static inline int +__gthread_once (__gthread_once_t *__once _GLIBCXX_UNUSED, void (*__func) (void) _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int _GLIBCXX_UNUSED +__gthread_key_create (__gthread_key_t *__key _GLIBCXX_UNUSED, void (*__func) (void *) _GLIBCXX_UNUSED) +{ + return 0; +} + +static int _GLIBCXX_UNUSED +__gthread_key_delete (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline void * +__gthread_getspecific (__gthread_key_t __key _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_setspecific (__gthread_key_t __key _GLIBCXX_UNUSED, const void *__v _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_destroy (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_lock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_trylock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_mutex_unlock (__gthread_mutex_t *__mutex _GLIBCXX_UNUSED) +{ + return 0; +} + +static inline int +__gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_lock (__mutex); +} + +static inline int +__gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_trylock (__mutex); +} + +static inline int +__gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_unlock (__mutex); +} + +static inline int +__gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *__mutex) +{ + return __gthread_mutex_destroy (__mutex); +} + +#endif /* _LIBOBJC */ + +#undef _GLIBCXX_UNUSED + +#endif /* ! _GLIBCXX_GCC_GTHR_SINGLE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr.h new file mode 100644 index 000000000..51f179a28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/gthr.h @@ -0,0 +1,154 @@ +/* Threads compatibility routines for libgcc2. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1997-2018 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 +. */ + +#ifndef _GLIBCXX_GCC_GTHR_H +#define _GLIBCXX_GCC_GTHR_H + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility push(default) +#endif + +/* If this file is compiled with threads support, it must + #define __GTHREADS 1 + to indicate that threads support is present. Also it has define + function + int __gthread_active_p () + that returns 1 if thread system is active, 0 if not. + + The threads interface must define the following types: + __gthread_key_t + __gthread_once_t + __gthread_mutex_t + __gthread_recursive_mutex_t + + The threads interface must define the following macros: + + __GTHREAD_ONCE_INIT + to initialize __gthread_once_t + __GTHREAD_MUTEX_INIT + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + __GTHREAD_MUTEX_INIT_FUNCTION + to initialize __gthread_mutex_t to get a fast + non-recursive mutex. + Define this to a function which looks like this: + void __GTHREAD_MUTEX_INIT_FUNCTION (__gthread_mutex_t *) + Some systems can't initialize a mutex without a + function call. Don't define __GTHREAD_MUTEX_INIT in this case. + __GTHREAD_RECURSIVE_MUTEX_INIT + __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION + as above, but for a recursive mutex. + + The threads interface must define the following static functions: + + int __gthread_once (__gthread_once_t *once, void (*func) ()) + + int __gthread_key_create (__gthread_key_t *keyp, void (*dtor) (void *)) + int __gthread_key_delete (__gthread_key_t key) + + void *__gthread_getspecific (__gthread_key_t key) + int __gthread_setspecific (__gthread_key_t key, const void *ptr) + + int __gthread_mutex_destroy (__gthread_mutex_t *mutex); + int __gthread_recursive_mutex_destroy (__gthread_recursive_mutex_t *mutex); + + int __gthread_mutex_lock (__gthread_mutex_t *mutex); + int __gthread_mutex_trylock (__gthread_mutex_t *mutex); + int __gthread_mutex_unlock (__gthread_mutex_t *mutex); + + int __gthread_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex); + int __gthread_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex); + + The following are supported in POSIX threads only. They are required to + fix a deadlock in static initialization inside libsupc++. The header file + gthr-posix.h defines a symbol __GTHREAD_HAS_COND to signify that these extra + features are supported. + + Types: + __gthread_cond_t + + Macros: + __GTHREAD_COND_INIT + __GTHREAD_COND_INIT_FUNCTION + + Interface: + int __gthread_cond_broadcast (__gthread_cond_t *cond); + int __gthread_cond_wait (__gthread_cond_t *cond, __gthread_mutex_t *mutex); + int __gthread_cond_wait_recursive (__gthread_cond_t *cond, + __gthread_recursive_mutex_t *mutex); + + All functions returning int should return zero on success or the error + number. If the operation is not supported, -1 is returned. + + If the following are also defined, you should + #define __GTHREADS_CXX0X 1 + to enable the c++0x thread library. + + Types: + __gthread_t + __gthread_time_t + + Interface: + int __gthread_create (__gthread_t *thread, void *(*func) (void*), + void *args); + int __gthread_join (__gthread_t thread, void **value_ptr); + int __gthread_detach (__gthread_t thread); + int __gthread_equal (__gthread_t t1, __gthread_t t2); + __gthread_t __gthread_self (void); + int __gthread_yield (void); + + int __gthread_mutex_timedlock (__gthread_mutex_t *m, + const __gthread_time_t *abs_timeout); + int __gthread_recursive_mutex_timedlock (__gthread_recursive_mutex_t *m, + const __gthread_time_t *abs_time); + + int __gthread_cond_signal (__gthread_cond_t *cond); + int __gthread_cond_timedwait (__gthread_cond_t *cond, + __gthread_mutex_t *mutex, + const __gthread_time_t *abs_timeout); + +*/ + +#if __GXX_WEAK__ +/* The pe-coff weak support isn't fully compatible to ELF's weak. + For static libraries it might would work, but as we need to deal + with shared versions too, we disable it for mingw-targets. */ +#ifdef __MINGW32__ +#undef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 0 +#endif + +#ifndef _GLIBCXX_GTHREAD_USE_WEAK +#define _GLIBCXX_GTHREAD_USE_WEAK 1 +#endif +#endif +#include + +#ifndef _GLIBCXX_HIDE_EXPORTS +#pragma GCC visibility pop +#endif + +#endif /* ! _GLIBCXX_GCC_GTHR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/messages_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/messages_members.h new file mode 100644 index 000000000..1a196204e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/messages_members.h @@ -0,0 +1,92 @@ +// std::messages implementation details, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/messages_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.7.1.2 messages virtual functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Non-virtual member functions. + template + messages<_CharT>::messages(size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + messages<_CharT>::messages(__c_locale, const char*, size_t __refs) + : facet(__refs) + { _M_c_locale_messages = _S_get_c_locale(); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::open(const basic_string& __s, const locale& __loc, + const char*) const + { return this->do_open(__s, __loc); } + + // Virtual member functions. + template + messages<_CharT>::~messages() + { _S_destroy_c_locale(_M_c_locale_messages); } + + template + typename messages<_CharT>::catalog + messages<_CharT>::do_open(const basic_string&, const locale&) const + { return 0; } + + template + typename messages<_CharT>::string_type + messages<_CharT>::do_get(catalog, int, int, + const string_type& __dfault) const + { return __dfault; } + + template + void + messages<_CharT>::do_close(catalog) const + { } + + // messages_byname + template + messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) + : messages<_CharT>(__refs) + { + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) + { + this->_S_destroy_c_locale(this->_M_c_locale_messages); + this->_S_create_c_locale(this->_M_c_locale_messages, __s); + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/opt_random.h new file mode 100644 index 000000000..245a3e237 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number handling, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file bits/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _BITS_OPT_RANDOM_H +#define _BITS_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _BITS_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/os_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/os_defines.h new file mode 100644 index 000000000..be010fe4e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/os_defines.h @@ -0,0 +1,61 @@ +// Specific definitions for newlib -*- C++ -*- + +// Copyright (C) 2000-2018 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 +// . + +/** @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. + +#ifdef __CYGWIN__ +#define _GLIBCXX_GTHREAD_USE_WEAK 0 + +#if defined (_GLIBCXX_DLL) +#define _GLIBCXX_PSEUDO_VISIBILITY_default __attribute__ ((__dllimport__)) +#else +#define _GLIBCXX_PSEUDO_VISIBILITY_default +#endif +#define _GLIBCXX_PSEUDO_VISIBILITY_hidden + +#define _GLIBCXX_PSEUDO_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY_ ## V + +// See libstdc++/20806. +#define _GLIBCXX_HAVE_DOS_BASED_FILESYSTEM 1 + +// Enable use of GetModuleHandleEx (requires Windows XP/2003) in +// __cxa_thread_atexit to prevent modules from being unloaded before +// their dtors are called +#define _GLIBCXX_THREAD_ATEXIT_WIN32 1 + +// See libstdc++/69506 +#define _GLIBCXX_USE_WEAK_REF 0 + +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/stdc++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/stdc++.h new file mode 100644 index 000000000..adcd7bf31 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/stdc++.h @@ -0,0 +1,128 @@ +// C++ includes used for precompiling -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file stdc++.h + * This is an implementation file for a precompiled header. + */ + +// 17.4.1.2 Headers + +// C +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +#if __cplusplus >= 201402L +#include +#endif + +#if __cplusplus >= 201703L +#include +#include +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/stdtr1c++.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/stdtr1c++.h new file mode 100644 index 000000000..8f31c61c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/stdtr1c++.h @@ -0,0 +1,53 @@ +// C++ includes used for precompiling TR1 -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file stdtr1c++.h + * This is an implementation file for a precompiled header. + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/time_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/time_members.h new file mode 100644 index 000000000..55fa029db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/bits/time_members.h @@ -0,0 +1,92 @@ +// std::time_get, std::time_put implementation, generic version -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/** @file bits/time_members.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{locale} + */ + +// +// ISO C++ 14882: 22.2.5.1.2 - time_get functions +// ISO C++ 14882: 22.2.5.3.2 - time_put functions +// + +// Written by Benjamin Kosnik + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + __timepunct<_CharT>::__timepunct(size_t __refs) + : facet(__refs), _M_data(0) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) + : facet(__refs), _M_data(__cache) + { + _M_name_timepunct = _S_get_c_name(); + _M_initialize_timepunct(); + } + + template + __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, + size_t __refs) + : facet(__refs), _M_data(0) + { + if (__builtin_strcmp(__s, _S_get_c_name()) != 0) + { + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); + _M_name_timepunct = __tmp; + } + else + _M_name_timepunct = _S_get_c_name(); + + __try + { _M_initialize_timepunct(__cloc); } + __catch(...) + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + __throw_exception_again; + } + } + + template + __timepunct<_CharT>::~__timepunct() + { + if (_M_name_timepunct != _S_get_c_name()) + delete [] _M_name_timepunct; + delete _M_data; + _S_destroy_c_locale(_M_c_locale_timepunct); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/ext/opt_random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/ext/opt_random.h new file mode 100644 index 000000000..2d55601ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/arm-none-eabi/thumb/v8-m.main/nofp/ext/opt_random.h @@ -0,0 +1,38 @@ +// Optimizations for random number extensions, generic version -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/opt_random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_OPT_RANDOM_H +#define _EXT_OPT_RANDOM_H 1 + +#pragma GCC system_header + + + + +#endif // _EXT_OPT_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/array new file mode 100644 index 000000000..632896250 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/array @@ -0,0 +1,386 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/array + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_ARRAY +#define _GLIBCXX_ARRAY 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + template + struct __array_traits + { + typedef _Tp _Type[_Nm]; + typedef __is_swappable<_Tp> _Is_swappable; + typedef __is_nothrow_swappable<_Tp> _Is_nothrow_swappable; + + static constexpr _Tp& + _S_ref(const _Type& __t, std::size_t __n) noexcept + { return const_cast<_Tp&>(__t[__n]); } + + static constexpr _Tp* + _S_ptr(const _Type& __t) noexcept + { return const_cast<_Tp*>(__t); } + }; + + template + struct __array_traits<_Tp, 0> + { + struct _Type { }; + typedef true_type _Is_swappable; + typedef true_type _Is_nothrow_swappable; + + static constexpr _Tp& + _S_ref(const _Type&, std::size_t) noexcept + { return *static_cast<_Tp*>(nullptr); } + + static constexpr _Tp* + _S_ptr(const _Type&) noexcept + { return nullptr; } + }; + + /** + * @brief A standard container for storing a fixed size sequence of elements. + * + * @ingroup sequences + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence. + * + * Sets support random access iterators. + * + * @tparam Tp Type of element. Required to be a complete type. + * @tparam N Number of elements. + */ + template + struct array + { + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // Support for zero-sized arrays mandatory. + typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; + typename _AT_Type::_Type _M_elems; + + // No explicit construct/copy/destroy for aggregate type. + + // DR 776. + void + fill(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + noexcept(_AT_Type::_Is_nothrow_swappable::value) + { std::swap_ranges(begin(), end(), __other.begin()); } + + // Iterators. + _GLIBCXX17_CONSTEXPR iterator + begin() noexcept + { return iterator(data()); } + + _GLIBCXX17_CONSTEXPR const_iterator + begin() const noexcept + { return const_iterator(data()); } + + _GLIBCXX17_CONSTEXPR iterator + end() noexcept + { return iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR const_iterator + end() const noexcept + { return const_iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + _GLIBCXX17_CONSTEXPR const_iterator + cbegin() const noexcept + { return const_iterator(data()); } + + _GLIBCXX17_CONSTEXPR const_iterator + cend() const noexcept + { return const_iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } + + // Capacity. + constexpr size_type + size() const noexcept { return _Nm; } + + constexpr size_type + max_size() const noexcept { return _Nm; } + + constexpr bool + empty() const noexcept { return size() == 0; } + + // Element access. + _GLIBCXX17_CONSTEXPR reference + operator[](size_type __n) noexcept + { return _AT_Type::_S_ref(_M_elems, __n); } + + constexpr const_reference + operator[](size_type __n) const noexcept + { return _AT_Type::_S_ref(_M_elems, __n); } + + _GLIBCXX17_CONSTEXPR reference + at(size_type __n) + { + if (__n >= _Nm) + std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " + ">= _Nm (which is %zu)"), + __n, _Nm); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + at(size_type __n) const + { + // Result of conditional expression must be an lvalue so use + // boolean ? lvalue : (throw-expr, lvalue) + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " + ">= _Nm (which is %zu)"), + __n, _Nm), + _AT_Type::_S_ref(_M_elems, 0)); + } + + _GLIBCXX17_CONSTEXPR reference + front() noexcept + { return *begin(); } + + constexpr const_reference + front() const noexcept + { return _AT_Type::_S_ref(_M_elems, 0); } + + _GLIBCXX17_CONSTEXPR reference + back() noexcept + { return _Nm ? *(end() - 1) : *end(); } + + constexpr const_reference + back() const noexcept + { + return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) + : _AT_Type::_S_ref(_M_elems, 0); + } + + _GLIBCXX17_CONSTEXPR pointer + data() noexcept + { return _AT_Type::_S_ptr(_M_elems); } + + _GLIBCXX17_CONSTEXPR const_pointer + data() const noexcept + { return _AT_Type::_S_ptr(_M_elems); } + }; + +#if __cpp_deduction_guides >= 201606 + template + array(_Tp, _Up...) + -> array && ...), _Tp>, + 1 + sizeof...(_Up)>; +#endif + + // Array comparisons. + template + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template + inline bool + operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) + { + return std::lexicographical_compare(__a.begin(), __a.end(), + __b.begin(), __b.end()); + } + + template + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + // Specialized algorithms. + template + inline +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 + // Constrained free swap overload, see p0185r1 + typename enable_if< + _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value + >::type +#else + void +#endif + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + noexcept(noexcept(__one.swap(__two))) + { __one.swap(__two); } + +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 + template + typename enable_if< + !_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type + swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; +#endif + + template + constexpr _Tp& + get(array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "array index is within bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr _Tp&& + get(array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "array index is within bounds"); + return std::move(_GLIBCXX_STD_C::get<_Int>(__arr)); + } + + template + constexpr const _Tp& + get(const array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "array index is within bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr const _Tp&& + get(const array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "array index is within bounds"); + return std::move(_GLIBCXX_STD_C::get<_Int>(__arr)); + } + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Tuple interface to class template array. + + /// tuple_size + template + struct tuple_size; + + /// Partial specialization for std::array + template + struct tuple_size<_GLIBCXX_STD_C::array<_Tp, _Nm>> + : public integral_constant { }; + + /// tuple_element + template + struct tuple_element; + + /// Partial specialization for std::array + template + struct tuple_element<_Int, _GLIBCXX_STD_C::array<_Tp, _Nm>> + { + static_assert(_Int < _Nm, "index is out of bounds"); + typedef _Tp type; + }; + + template + struct __is_tuple_like_impl<_GLIBCXX_STD_C::array<_Tp, _Nm>> : true_type + { }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif // C++11 + +#endif // _GLIBCXX_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/atomic b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/atomic similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/atomic rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/atomic index 5b252a43e..c234af83c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/atomic +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/atomic @@ -1,6 +1,6 @@ // -*- C++ -*- header. -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 @@ -909,7 +909,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// atomic_char32_t typedef atomic atomic_char32_t; - +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2441. Exact-width atomic typedefs should be provided @@ -986,6 +986,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// atomic_uint_fast64_t typedef atomic atomic_uint_fast64_t; +#endif /// atomic_intptr_t @@ -997,15 +998,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// atomic_size_t typedef atomic atomic_size_t; + /// atomic_ptrdiff_t + typedef atomic atomic_ptrdiff_t; + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 /// atomic_intmax_t typedef atomic atomic_intmax_t; /// atomic_uintmax_t typedef atomic atomic_uintmax_t; - - /// atomic_ptrdiff_t - typedef atomic atomic_ptrdiff_t; - +#endif // Function definitions, atomic_flag operations. inline bool diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/auto_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/auto_ptr.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/auto_ptr.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/auto_ptr.h index 9ad187388..4900582c5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/auto_ptr.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/auto_ptr.h @@ -1,6 +1,6 @@ // auto_ptr implementation -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 @@ -53,6 +53,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { } } _GLIBCXX_DEPRECATED; +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" /** * @brief A simple smart pointer providing strict ownership semantics. @@ -327,6 +329,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _M_t(__u.release(), deleter_type()) { } #endif +#pragma GCC diagnostic pop + _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/backward_warning.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/backward_warning.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/backward_warning.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/backward_warning.h index 7eba3f851..4d2c818c7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/backward_warning.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/backward_warning.h @@ -1,4 +1,4 @@ -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/binders.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/binders.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/binders.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/binders.h index 7564a6c12..5d81a8bbb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/binders.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/binders.h @@ -1,6 +1,6 @@ // Functor implementations -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_fun.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_fun.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_fun.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_fun.h index dc38ad505..e893394ba 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/hash_fun.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_fun.h @@ -1,6 +1,6 @@ // 'struct hash' from SGI -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_map new file mode 100644 index 000000000..33baf3eab --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_map @@ -0,0 +1,599 @@ +// Hashing map implementation -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 1996 + * 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. + * + * + * 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. + * + */ + +/** @file backward/hash_map + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_MAP +#define _BACKWARD_HASH_MAP 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Select1st; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > + class hash_map + { + private: + typedef hashtable,_Key, _HashFn, + _Select1st >, + _EqualKey, _Alloc> _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_map() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_map(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_map(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_map& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&, + const hash_map<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { return _M_ht.insert_unique(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { return _M_ht.insert_unique_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + _Tp& + operator[](const key_type& __key) + { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, + class _Alloc = allocator<_Tp> > + class hash_multimap + { + // concept requirements + __glibcxx_class_requires(_Key, _SGIAssignableConcept) + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) + + private: + typedef hashtable, _Key, _HashFn, + _Select1st >, _EqualKey, _Alloc> + _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multimap() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multimap(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multimap(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multimap& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&, + const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_map + // and hash_multimap. + template + class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_set new file mode 100644 index 000000000..8c7acd80b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hash_set @@ -0,0 +1,567 @@ +// Hashing set implementation -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 1996 + * 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. + * + * + * 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. + * + */ + +/** @file backward/hash_set + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_SET +#define _BACKWARD_HASH_SET 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Identity; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_set + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_set() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_set(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_set(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_set& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_set<_Val, _HF, _EqK, _Al>&, + const hash_set<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { + pair __p = _M_ht.insert_unique(__obj); + return pair(__p.first, __p.second); + } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { + pair __p + = _M_ht.insert_unique_noresize(__obj); + return pair(__p.first, __p.second); + } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_multiset + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multiset() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multiset(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multiset(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multiset& hs) + { _M_ht.swap(hs._M_ht); } + + template + friend bool + operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&, + const hash_multiset<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_set + // and hash_multiset. + template + class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hashtable.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hashtable.h new file mode 100644 index 000000000..2e81dde1d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/hashtable.h @@ -0,0 +1,1167 @@ +// Hashtable implementation used by containers -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * 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. + * + * + * 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. + * + */ + +/** @file backward/hashtable.h + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASHTABLE_H +#define _BACKWARD_HASHTABLE_H 1 + +// Hashtable class, used to implement the hashed associative containers +// hash_set, hash_map, hash_multiset, and hash_multimap. + +#include +#include +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::ptrdiff_t; + using std::forward_iterator_tag; + using std::input_iterator_tag; + using std::_Construct; + using std::_Destroy; + using std::distance; + using std::vector; + using std::pair; + using std::__iterator_category; + + template + struct _Hashtable_node + { + _Hashtable_node* _M_next; + _Val _M_val; + }; + + template > + class hashtable; + + template + struct _Hashtable_iterator; + + template + struct _Hashtable_const_iterator; + + template + struct _Hashtable_iterator + { + typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc> + _Hashtable; + typedef _Hashtable_iterator<_Val, _Key, _HashFcn, + _ExtractKey, _EqualKey, _Alloc> + iterator; + typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, + _ExtractKey, _EqualKey, _Alloc> + const_iterator; + typedef _Hashtable_node<_Val> _Node; + typedef forward_iterator_tag iterator_category; + typedef _Val value_type; + typedef ptrdiff_t difference_type; + typedef size_t size_type; + typedef _Val& reference; + typedef _Val* pointer; + + _Node* _M_cur; + _Hashtable* _M_ht; + + _Hashtable_iterator(_Node* __n, _Hashtable* __tab) + : _M_cur(__n), _M_ht(__tab) { } + + _Hashtable_iterator() { } + + reference + operator*() const + { return _M_cur->_M_val; } + + pointer + operator->() const + { return &(operator*()); } + + iterator& + operator++(); + + iterator + operator++(int); + + bool + operator==(const iterator& __it) const + { return _M_cur == __it._M_cur; } + + bool + operator!=(const iterator& __it) const + { return _M_cur != __it._M_cur; } + }; + + template + struct _Hashtable_const_iterator + { + typedef hashtable<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc> + _Hashtable; + typedef _Hashtable_iterator<_Val,_Key,_HashFcn, + _ExtractKey,_EqualKey,_Alloc> + iterator; + typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, + _ExtractKey, _EqualKey, _Alloc> + const_iterator; + typedef _Hashtable_node<_Val> _Node; + + typedef forward_iterator_tag iterator_category; + typedef _Val value_type; + typedef ptrdiff_t difference_type; + typedef size_t size_type; + typedef const _Val& reference; + typedef const _Val* pointer; + + const _Node* _M_cur; + const _Hashtable* _M_ht; + + _Hashtable_const_iterator(const _Node* __n, const _Hashtable* __tab) + : _M_cur(__n), _M_ht(__tab) { } + + _Hashtable_const_iterator() { } + + _Hashtable_const_iterator(const iterator& __it) + : _M_cur(__it._M_cur), _M_ht(__it._M_ht) { } + + reference + operator*() const + { return _M_cur->_M_val; } + + pointer + operator->() const + { return &(operator*()); } + + const_iterator& + operator++(); + + const_iterator + operator++(int); + + bool + operator==(const const_iterator& __it) const + { return _M_cur == __it._M_cur; } + + bool + operator!=(const const_iterator& __it) const + { return _M_cur != __it._M_cur; } + }; + + // Note: assumes long is at least 32 bits. + enum { _S_num_primes = 29 }; + + template + struct _Hashtable_prime_list + { + static const _PrimeType __stl_prime_list[_S_num_primes]; + + static const _PrimeType* + _S_get_prime_list(); + }; + + template const _PrimeType + _Hashtable_prime_list<_PrimeType>::__stl_prime_list[_S_num_primes] = + { + 5ul, 53ul, 97ul, 193ul, 389ul, + 769ul, 1543ul, 3079ul, 6151ul, 12289ul, + 24593ul, 49157ul, 98317ul, 196613ul, 393241ul, + 786433ul, 1572869ul, 3145739ul, 6291469ul, 12582917ul, + 25165843ul, 50331653ul, 100663319ul, 201326611ul, 402653189ul, + 805306457ul, 1610612741ul, 3221225473ul, 4294967291ul + }; + + template inline const _PrimeType* + _Hashtable_prime_list<_PrimeType>::_S_get_prime_list() + { + return __stl_prime_list; + } + + inline unsigned long + __stl_next_prime(unsigned long __n) + { + const unsigned long* __first = _Hashtable_prime_list::_S_get_prime_list(); + const unsigned long* __last = __first + (int)_S_num_primes; + const unsigned long* pos = std::lower_bound(__first, __last, __n); + return pos == __last ? *(__last - 1) : *pos; + } + + // Forward declaration of operator==. + template + class hashtable; + + template + bool + operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, + const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2); + + // Hashtables handle allocators a bit differently than other + // containers do. If we're using standard-conforming allocators, then + // a hashtable unconditionally has a member variable to hold its + // allocator, even if it so happens that all instances of the + // allocator type are identical. This is because, for hashtables, + // this extra storage is negligible. Additionally, a base class + // wouldn't serve any other purposes; it wouldn't, for example, + // simplify the exception-handling code. + template + class hashtable + { + public: + typedef _Key key_type; + typedef _Val value_type; + typedef _HashFcn hasher; + typedef _EqualKey key_equal; + + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + hasher + hash_funct() const + { return _M_hash; } + + key_equal + key_eq() const + { return _M_equals; } + + private: + typedef _Hashtable_node<_Val> _Node; + + public: + typedef typename _Alloc::template rebind::other allocator_type; + allocator_type + get_allocator() const + { return _M_node_allocator; } + + private: + typedef typename _Alloc::template rebind<_Node>::other _Node_Alloc; + typedef typename _Alloc::template rebind<_Node*>::other _Nodeptr_Alloc; + typedef vector<_Node*, _Nodeptr_Alloc> _Vector_type; + + _Node_Alloc _M_node_allocator; + + _Node* + _M_get_node() + { return _M_node_allocator.allocate(1); } + + void + _M_put_node(_Node* __p) + { _M_node_allocator.deallocate(__p, 1); } + + private: + hasher _M_hash; + key_equal _M_equals; + _ExtractKey _M_get_key; + _Vector_type _M_buckets; + size_type _M_num_elements; + + public: + typedef _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, + _EqualKey, _Alloc> + iterator; + typedef _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey, + _EqualKey, _Alloc> + const_iterator; + + friend struct + _Hashtable_iterator<_Val, _Key, _HashFcn, _ExtractKey, _EqualKey, _Alloc>; + + friend struct + _Hashtable_const_iterator<_Val, _Key, _HashFcn, _ExtractKey, + _EqualKey, _Alloc>; + + public: + hashtable(size_type __n, const _HashFcn& __hf, + const _EqualKey& __eql, const _ExtractKey& __ext, + const allocator_type& __a = allocator_type()) + : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql), + _M_get_key(__ext), _M_buckets(__a), _M_num_elements(0) + { _M_initialize_buckets(__n); } + + hashtable(size_type __n, const _HashFcn& __hf, + const _EqualKey& __eql, + const allocator_type& __a = allocator_type()) + : _M_node_allocator(__a), _M_hash(__hf), _M_equals(__eql), + _M_get_key(_ExtractKey()), _M_buckets(__a), _M_num_elements(0) + { _M_initialize_buckets(__n); } + + hashtable(const hashtable& __ht) + : _M_node_allocator(__ht.get_allocator()), _M_hash(__ht._M_hash), + _M_equals(__ht._M_equals), _M_get_key(__ht._M_get_key), + _M_buckets(__ht.get_allocator()), _M_num_elements(0) + { _M_copy_from(__ht); } + + hashtable& + operator= (const hashtable& __ht) + { + if (&__ht != this) + { + clear(); + _M_hash = __ht._M_hash; + _M_equals = __ht._M_equals; + _M_get_key = __ht._M_get_key; + _M_copy_from(__ht); + } + return *this; + } + + ~hashtable() + { clear(); } + + size_type + size() const + { return _M_num_elements; } + + size_type + max_size() const + { return size_type(-1); } + + bool + empty() const + { return size() == 0; } + + void + swap(hashtable& __ht) + { + std::swap(_M_hash, __ht._M_hash); + std::swap(_M_equals, __ht._M_equals); + std::swap(_M_get_key, __ht._M_get_key); + _M_buckets.swap(__ht._M_buckets); + std::swap(_M_num_elements, __ht._M_num_elements); + } + + iterator + begin() + { + for (size_type __n = 0; __n < _M_buckets.size(); ++__n) + if (_M_buckets[__n]) + return iterator(_M_buckets[__n], this); + return end(); + } + + iterator + end() + { return iterator(0, this); } + + const_iterator + begin() const + { + for (size_type __n = 0; __n < _M_buckets.size(); ++__n) + if (_M_buckets[__n]) + return const_iterator(_M_buckets[__n], this); + return end(); + } + + const_iterator + end() const + { return const_iterator(0, this); } + + template + friend bool + operator==(const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&, + const hashtable<_Vl, _Ky, _HF, _Ex, _Eq, _Al>&); + + public: + size_type + bucket_count() const + { return _M_buckets.size(); } + + size_type + max_bucket_count() const + { return _Hashtable_prime_list:: + _S_get_prime_list()[(int)_S_num_primes - 1]; + } + + size_type + elems_in_bucket(size_type __bucket) const + { + size_type __result = 0; + for (_Node* __n = _M_buckets[__bucket]; __n; __n = __n->_M_next) + __result += 1; + return __result; + } + + pair + insert_unique(const value_type& __obj) + { + resize(_M_num_elements + 1); + return insert_unique_noresize(__obj); + } + + iterator + insert_equal(const value_type& __obj) + { + resize(_M_num_elements + 1); + return insert_equal_noresize(__obj); + } + + pair + insert_unique_noresize(const value_type& __obj); + + iterator + insert_equal_noresize(const value_type& __obj); + + template + void + insert_unique(_InputIterator __f, _InputIterator __l) + { insert_unique(__f, __l, __iterator_category(__f)); } + + template + void + insert_equal(_InputIterator __f, _InputIterator __l) + { insert_equal(__f, __l, __iterator_category(__f)); } + + template + void + insert_unique(_InputIterator __f, _InputIterator __l, + input_iterator_tag) + { + for ( ; __f != __l; ++__f) + insert_unique(*__f); + } + + template + void + insert_equal(_InputIterator __f, _InputIterator __l, + input_iterator_tag) + { + for ( ; __f != __l; ++__f) + insert_equal(*__f); + } + + template + void + insert_unique(_ForwardIterator __f, _ForwardIterator __l, + forward_iterator_tag) + { + size_type __n = distance(__f, __l); + resize(_M_num_elements + __n); + for ( ; __n > 0; --__n, ++__f) + insert_unique_noresize(*__f); + } + + template + void + insert_equal(_ForwardIterator __f, _ForwardIterator __l, + forward_iterator_tag) + { + size_type __n = distance(__f, __l); + resize(_M_num_elements + __n); + for ( ; __n > 0; --__n, ++__f) + insert_equal_noresize(*__f); + } + + reference + find_or_insert(const value_type& __obj); + + iterator + find(const key_type& __key) + { + size_type __n = _M_bkt_num_key(__key); + _Node* __first; + for (__first = _M_buckets[__n]; + __first && !_M_equals(_M_get_key(__first->_M_val), __key); + __first = __first->_M_next) + { } + return iterator(__first, this); + } + + const_iterator + find(const key_type& __key) const + { + size_type __n = _M_bkt_num_key(__key); + const _Node* __first; + for (__first = _M_buckets[__n]; + __first && !_M_equals(_M_get_key(__first->_M_val), __key); + __first = __first->_M_next) + { } + return const_iterator(__first, this); + } + + size_type + count(const key_type& __key) const + { + const size_type __n = _M_bkt_num_key(__key); + size_type __result = 0; + + for (const _Node* __cur = _M_buckets[__n]; __cur; + __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), __key)) + ++__result; + return __result; + } + + pair + equal_range(const key_type& __key); + + pair + equal_range(const key_type& __key) const; + + size_type + erase(const key_type& __key); + + void + erase(const iterator& __it); + + void + erase(iterator __first, iterator __last); + + void + erase(const const_iterator& __it); + + void + erase(const_iterator __first, const_iterator __last); + + void + resize(size_type __num_elements_hint); + + void + clear(); + + private: + size_type + _M_next_size(size_type __n) const + { return __stl_next_prime(__n); } + + void + _M_initialize_buckets(size_type __n) + { + const size_type __n_buckets = _M_next_size(__n); + _M_buckets.reserve(__n_buckets); + _M_buckets.insert(_M_buckets.end(), __n_buckets, (_Node*) 0); + _M_num_elements = 0; + } + + size_type + _M_bkt_num_key(const key_type& __key) const + { return _M_bkt_num_key(__key, _M_buckets.size()); } + + size_type + _M_bkt_num(const value_type& __obj) const + { return _M_bkt_num_key(_M_get_key(__obj)); } + + size_type + _M_bkt_num_key(const key_type& __key, size_t __n) const + { return _M_hash(__key) % __n; } + + size_type + _M_bkt_num(const value_type& __obj, size_t __n) const + { return _M_bkt_num_key(_M_get_key(__obj), __n); } + + _Node* + _M_new_node(const value_type& __obj) + { + _Node* __n = _M_get_node(); + __n->_M_next = 0; + __try + { + this->get_allocator().construct(&__n->_M_val, __obj); + return __n; + } + __catch(...) + { + _M_put_node(__n); + __throw_exception_again; + } + } + + void + _M_delete_node(_Node* __n) + { + this->get_allocator().destroy(&__n->_M_val); + _M_put_node(__n); + } + + void + _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last); + + void + _M_erase_bucket(const size_type __n, _Node* __last); + + void + _M_copy_from(const hashtable& __ht); + }; + + template + _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>& + _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++() + { + const _Node* __old = _M_cur; + _M_cur = _M_cur->_M_next; + if (!_M_cur) + { + size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val); + while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size()) + _M_cur = _M_ht->_M_buckets[__bucket]; + } + return *this; + } + + template + inline _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All> + _Hashtable_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++(int) + { + iterator __tmp = *this; + ++*this; + return __tmp; + } + + template + _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>& + _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++() + { + const _Node* __old = _M_cur; + _M_cur = _M_cur->_M_next; + if (!_M_cur) + { + size_type __bucket = _M_ht->_M_bkt_num(__old->_M_val); + while (!_M_cur && ++__bucket < _M_ht->_M_buckets.size()) + _M_cur = _M_ht->_M_buckets[__bucket]; + } + return *this; + } + + template + inline _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All> + _Hashtable_const_iterator<_Val, _Key, _HF, _ExK, _EqK, _All>:: + operator++(int) + { + const_iterator __tmp = *this; + ++*this; + return __tmp; + } + + template + bool + operator==(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, + const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2) + { + typedef typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::_Node _Node; + + if (__ht1._M_buckets.size() != __ht2._M_buckets.size()) + return false; + + for (size_t __n = 0; __n < __ht1._M_buckets.size(); ++__n) + { + _Node* __cur1 = __ht1._M_buckets[__n]; + _Node* __cur2 = __ht2._M_buckets[__n]; + // Check same length of lists + for (; __cur1 && __cur2; + __cur1 = __cur1->_M_next, __cur2 = __cur2->_M_next) + { } + if (__cur1 || __cur2) + return false; + // Now check one's elements are in the other + for (__cur1 = __ht1._M_buckets[__n] ; __cur1; + __cur1 = __cur1->_M_next) + { + bool _found__cur1 = false; + for (__cur2 = __ht2._M_buckets[__n]; + __cur2; __cur2 = __cur2->_M_next) + { + if (__cur1->_M_val == __cur2->_M_val) + { + _found__cur1 = true; + break; + } + } + if (!_found__cur1) + return false; + } + } + return true; + } + + template + inline bool + operator!=(const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht1, + const hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>& __ht2) + { return !(__ht1 == __ht2); } + + template + inline void + swap(hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht1, + hashtable<_Val, _Key, _HF, _Extract, _EqKey, _All>& __ht2) + { __ht1.swap(__ht2); } + + template + pair::iterator, bool> + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + insert_unique_noresize(const value_type& __obj) + { + const size_type __n = _M_bkt_num(__obj); + _Node* __first = _M_buckets[__n]; + + for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) + return pair(iterator(__cur, this), false); + + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __first; + _M_buckets[__n] = __tmp; + ++_M_num_elements; + return pair(iterator(__tmp, this), true); + } + + template + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + insert_equal_noresize(const value_type& __obj) + { + const size_type __n = _M_bkt_num(__obj); + _Node* __first = _M_buckets[__n]; + + for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) + { + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __cur->_M_next; + __cur->_M_next = __tmp; + ++_M_num_elements; + return iterator(__tmp, this); + } + + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __first; + _M_buckets[__n] = __tmp; + ++_M_num_elements; + return iterator(__tmp, this); + } + + template + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::reference + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + find_or_insert(const value_type& __obj) + { + resize(_M_num_elements + 1); + + size_type __n = _M_bkt_num(__obj); + _Node* __first = _M_buckets[__n]; + + for (_Node* __cur = __first; __cur; __cur = __cur->_M_next) + if (_M_equals(_M_get_key(__cur->_M_val), _M_get_key(__obj))) + return __cur->_M_val; + + _Node* __tmp = _M_new_node(__obj); + __tmp->_M_next = __first; + _M_buckets[__n] = __tmp; + ++_M_num_elements; + return __tmp->_M_val; + } + + template + pair::iterator, + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::iterator> + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + equal_range(const key_type& __key) + { + typedef pair _Pii; + const size_type __n = _M_bkt_num_key(__key); + + for (_Node* __first = _M_buckets[__n]; __first; + __first = __first->_M_next) + if (_M_equals(_M_get_key(__first->_M_val), __key)) + { + for (_Node* __cur = __first->_M_next; __cur; + __cur = __cur->_M_next) + if (!_M_equals(_M_get_key(__cur->_M_val), __key)) + return _Pii(iterator(__first, this), iterator(__cur, this)); + for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m) + if (_M_buckets[__m]) + return _Pii(iterator(__first, this), + iterator(_M_buckets[__m], this)); + return _Pii(iterator(__first, this), end()); + } + return _Pii(end(), end()); + } + + template + pair::const_iterator, + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::const_iterator> + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + equal_range(const key_type& __key) const + { + typedef pair _Pii; + const size_type __n = _M_bkt_num_key(__key); + + for (const _Node* __first = _M_buckets[__n]; __first; + __first = __first->_M_next) + { + if (_M_equals(_M_get_key(__first->_M_val), __key)) + { + for (const _Node* __cur = __first->_M_next; __cur; + __cur = __cur->_M_next) + if (!_M_equals(_M_get_key(__cur->_M_val), __key)) + return _Pii(const_iterator(__first, this), + const_iterator(__cur, this)); + for (size_type __m = __n + 1; __m < _M_buckets.size(); ++__m) + if (_M_buckets[__m]) + return _Pii(const_iterator(__first, this), + const_iterator(_M_buckets[__m], this)); + return _Pii(const_iterator(__first, this), end()); + } + } + return _Pii(end(), end()); + } + + template + typename hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>::size_type + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const key_type& __key) + { + const size_type __n = _M_bkt_num_key(__key); + _Node* __first = _M_buckets[__n]; + _Node* __saved_slot = 0; + size_type __erased = 0; + + if (__first) + { + _Node* __cur = __first; + _Node* __next = __cur->_M_next; + while (__next) + { + if (_M_equals(_M_get_key(__next->_M_val), __key)) + { + if (&_M_get_key(__next->_M_val) != &__key) + { + __cur->_M_next = __next->_M_next; + _M_delete_node(__next); + __next = __cur->_M_next; + ++__erased; + --_M_num_elements; + } + else + { + __saved_slot = __cur; + __cur = __next; + __next = __cur->_M_next; + } + } + else + { + __cur = __next; + __next = __cur->_M_next; + } + } + bool __delete_first = _M_equals(_M_get_key(__first->_M_val), __key); + if (__saved_slot) + { + __next = __saved_slot->_M_next; + __saved_slot->_M_next = __next->_M_next; + _M_delete_node(__next); + ++__erased; + --_M_num_elements; + } + if (__delete_first) + { + _M_buckets[__n] = __first->_M_next; + _M_delete_node(__first); + ++__erased; + --_M_num_elements; + } + } + return __erased; + } + + template + void hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const iterator& __it) + { + _Node* __p = __it._M_cur; + if (__p) + { + const size_type __n = _M_bkt_num(__p->_M_val); + _Node* __cur = _M_buckets[__n]; + + if (__cur == __p) + { + _M_buckets[__n] = __cur->_M_next; + _M_delete_node(__cur); + --_M_num_elements; + } + else + { + _Node* __next = __cur->_M_next; + while (__next) + { + if (__next == __p) + { + __cur->_M_next = __next->_M_next; + _M_delete_node(__next); + --_M_num_elements; + break; + } + else + { + __cur = __next; + __next = __cur->_M_next; + } + } + } + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(iterator __first, iterator __last) + { + size_type __f_bucket = __first._M_cur ? _M_bkt_num(__first._M_cur->_M_val) + : _M_buckets.size(); + + size_type __l_bucket = __last._M_cur ? _M_bkt_num(__last._M_cur->_M_val) + : _M_buckets.size(); + + if (__first._M_cur == __last._M_cur) + return; + else if (__f_bucket == __l_bucket) + _M_erase_bucket(__f_bucket, __first._M_cur, __last._M_cur); + else + { + _M_erase_bucket(__f_bucket, __first._M_cur, 0); + for (size_type __n = __f_bucket + 1; __n < __l_bucket; ++__n) + _M_erase_bucket(__n, 0); + if (__l_bucket != _M_buckets.size()) + _M_erase_bucket(__l_bucket, __last._M_cur); + } + } + + template + inline void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const_iterator __first, const_iterator __last) + { + erase(iterator(const_cast<_Node*>(__first._M_cur), + const_cast(__first._M_ht)), + iterator(const_cast<_Node*>(__last._M_cur), + const_cast(__last._M_ht))); + } + + template + inline void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + erase(const const_iterator& __it) + { erase(iterator(const_cast<_Node*>(__it._M_cur), + const_cast(__it._M_ht))); } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + resize(size_type __num_elements_hint) + { + const size_type __old_n = _M_buckets.size(); + if (__num_elements_hint > __old_n) + { + const size_type __n = _M_next_size(__num_elements_hint); + if (__n > __old_n) + { + _Vector_type __tmp(__n, (_Node*)(0), _M_buckets.get_allocator()); + __try + { + for (size_type __bucket = 0; __bucket < __old_n; ++__bucket) + { + _Node* __first = _M_buckets[__bucket]; + while (__first) + { + size_type __new_bucket = _M_bkt_num(__first->_M_val, + __n); + _M_buckets[__bucket] = __first->_M_next; + __first->_M_next = __tmp[__new_bucket]; + __tmp[__new_bucket] = __first; + __first = _M_buckets[__bucket]; + } + } + _M_buckets.swap(__tmp); + } + __catch(...) + { + for (size_type __bucket = 0; __bucket < __tmp.size(); + ++__bucket) + { + while (__tmp[__bucket]) + { + _Node* __next = __tmp[__bucket]->_M_next; + _M_delete_node(__tmp[__bucket]); + __tmp[__bucket] = __next; + } + } + __throw_exception_again; + } + } + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + _M_erase_bucket(const size_type __n, _Node* __first, _Node* __last) + { + _Node* __cur = _M_buckets[__n]; + if (__cur == __first) + _M_erase_bucket(__n, __last); + else + { + _Node* __next; + for (__next = __cur->_M_next; + __next != __first; + __cur = __next, __next = __cur->_M_next) + ; + while (__next != __last) + { + __cur->_M_next = __next->_M_next; + _M_delete_node(__next); + __next = __cur->_M_next; + --_M_num_elements; + } + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + _M_erase_bucket(const size_type __n, _Node* __last) + { + _Node* __cur = _M_buckets[__n]; + while (__cur != __last) + { + _Node* __next = __cur->_M_next; + _M_delete_node(__cur); + __cur = __next; + _M_buckets[__n] = __cur; + --_M_num_elements; + } + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + clear() + { + if (_M_num_elements == 0) + return; + + for (size_type __i = 0; __i < _M_buckets.size(); ++__i) + { + _Node* __cur = _M_buckets[__i]; + while (__cur != 0) + { + _Node* __next = __cur->_M_next; + _M_delete_node(__cur); + __cur = __next; + } + _M_buckets[__i] = 0; + } + _M_num_elements = 0; + } + + template + void + hashtable<_Val, _Key, _HF, _Ex, _Eq, _All>:: + _M_copy_from(const hashtable& __ht) + { + _M_buckets.clear(); + _M_buckets.reserve(__ht._M_buckets.size()); + _M_buckets.insert(_M_buckets.end(), __ht._M_buckets.size(), (_Node*) 0); + __try + { + for (size_type __i = 0; __i < __ht._M_buckets.size(); ++__i) { + const _Node* __cur = __ht._M_buckets[__i]; + if (__cur) + { + _Node* __local_copy = _M_new_node(__cur->_M_val); + _M_buckets[__i] = __local_copy; + + for (_Node* __next = __cur->_M_next; + __next; + __cur = __next, __next = __cur->_M_next) + { + __local_copy->_M_next = _M_new_node(__next->_M_val); + __local_copy = __local_copy->_M_next; + } + } + } + _M_num_elements = __ht._M_num_elements; + } + __catch(...) + { + clear(); + __throw_exception_again; + } + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/strstream b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/strstream similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/strstream rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/strstream index 9946ba8cd..0f0ede46f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/backward/strstream +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/backward/strstream @@ -1,6 +1,6 @@ // Backward-compat support -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/algorithmfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/algorithmfwd.h new file mode 100644 index 000000000..2974f0067 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/algorithmfwd.h @@ -0,0 +1,854 @@ +// Forward declarations -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/algorithmfwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{algorithm} + */ + +#ifndef _GLIBCXX_ALGORITHMFWD_H +#define _GLIBCXX_ALGORITHMFWD_H 1 + +#pragma GCC system_header + +#include +#include +#include +#if __cplusplus >= 201103L +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /* + adjacent_find + all_of (C++11) + any_of (C++11) + binary_search + clamp (C++17) + copy + copy_backward + copy_if (C++11) + copy_n (C++11) + count + count_if + equal + equal_range + fill + fill_n + find + find_end + find_first_of + find_if + find_if_not (C++11) + for_each + generate + generate_n + includes + inplace_merge + is_heap (C++11) + is_heap_until (C++11) + is_partitioned (C++11) + is_sorted (C++11) + is_sorted_until (C++11) + iter_swap + lexicographical_compare + lower_bound + make_heap + max + max_element + merge + min + min_element + minmax (C++11) + minmax_element (C++11) + mismatch + next_permutation + none_of (C++11) + nth_element + partial_sort + partial_sort_copy + partition + partition_copy (C++11) + partition_point (C++11) + pop_heap + prev_permutation + push_heap + random_shuffle + remove + remove_copy + remove_copy_if + remove_if + replace + replace_copy + replace_copy_if + replace_if + reverse + reverse_copy + rotate + rotate_copy + search + search_n + set_difference + set_intersection + set_symmetric_difference + set_union + shuffle (C++11) + sort + sort_heap + stable_partition + stable_sort + swap + swap_ranges + transform + unique + unique_copy + upper_bound + */ + + /** + * @defgroup algorithms Algorithms + * + * Components for performing algorithmic operations. Includes + * non-modifying sequence, modifying (mutating) sequence, sorting, + * searching, merge, partition, heap, set, minima, maxima, and + * permutation operations. + */ + + /** + * @defgroup mutating_algorithms Mutating + * @ingroup algorithms + */ + + /** + * @defgroup non_mutating_algorithms Non-Mutating + * @ingroup algorithms + */ + + /** + * @defgroup sorting_algorithms Sorting + * @ingroup algorithms + */ + + /** + * @defgroup set_algorithms Set Operation + * @ingroup sorting_algorithms + * + * These algorithms are common set operations performed on sequences + * that are already sorted. The number of comparisons will be + * linear. + */ + + /** + * @defgroup binary_search_algorithms Binary Search + * @ingroup sorting_algorithms + * + * These algorithms are variations of a classic binary search, and + * all assume that the sequence being searched is already sorted. + * + * The number of comparisons will be logarithmic (and as few as + * possible). The number of steps through the sequence will be + * logarithmic for random-access iterators (e.g., pointers), and + * linear otherwise. + * + * The LWG has passed Defect Report 270, which notes: The + * proposed resolution reinterprets binary search. Instead of + * thinking about searching for a value in a sorted range, we view + * that as an important special case of a more general algorithm: + * searching for the partition point in a partitioned range. We + * also add a guarantee that the old wording did not: we ensure that + * the upper bound is no earlier than the lower bound, that the pair + * returned by equal_range is a valid range, and that the first part + * of that pair is the lower bound. + * + * The actual effect of the first sentence is that a comparison + * functor passed by the user doesn't necessarily need to induce a + * strict weak ordering relation. Rather, it partitions the range. + */ + + // adjacent_find + +#if __cplusplus >= 201103L + template + bool + all_of(_IIter, _IIter, _Predicate); + + template + bool + any_of(_IIter, _IIter, _Predicate); +#endif + + template + bool + binary_search(_FIter, _FIter, const _Tp&); + + template + bool + binary_search(_FIter, _FIter, const _Tp&, _Compare); + +#if __cplusplus > 201402L + template + _GLIBCXX14_CONSTEXPR + const _Tp& + clamp(const _Tp&, const _Tp&, const _Tp&); + + template + _GLIBCXX14_CONSTEXPR + const _Tp& + clamp(const _Tp&, const _Tp&, const _Tp&, _Compare); +#endif + + template + _OIter + copy(_IIter, _IIter, _OIter); + + template + _BIter2 + copy_backward(_BIter1, _BIter1, _BIter2); + +#if __cplusplus >= 201103L + template + _OIter + copy_if(_IIter, _IIter, _OIter, _Predicate); + + template + _OIter + copy_n(_IIter, _Size, _OIter); +#endif + + // count + // count_if + + template + pair<_FIter, _FIter> + equal_range(_FIter, _FIter, const _Tp&); + + template + pair<_FIter, _FIter> + equal_range(_FIter, _FIter, const _Tp&, _Compare); + + template + void + fill(_FIter, _FIter, const _Tp&); + + template + _OIter + fill_n(_OIter, _Size, const _Tp&); + + // find + + template + _FIter1 + find_end(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + find_end(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + // find_first_of + // find_if + +#if __cplusplus >= 201103L + template + _IIter + find_if_not(_IIter, _IIter, _Predicate); +#endif + + // for_each + // generate + // generate_n + + template + bool + includes(_IIter1, _IIter1, _IIter2, _IIter2); + + template + bool + includes(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); + + template + void + inplace_merge(_BIter, _BIter, _BIter); + + template + void + inplace_merge(_BIter, _BIter, _BIter, _Compare); + +#if __cplusplus >= 201103L + template + bool + is_heap(_RAIter, _RAIter); + + template + bool + is_heap(_RAIter, _RAIter, _Compare); + + template + _RAIter + is_heap_until(_RAIter, _RAIter); + + template + _RAIter + is_heap_until(_RAIter, _RAIter, _Compare); + + template + bool + is_partitioned(_IIter, _IIter, _Predicate); + + template + bool + is_permutation(_FIter1, _FIter1, _FIter2); + + template + bool + is_permutation(_FIter1, _FIter1, _FIter2, _BinaryPredicate); + + template + bool + is_sorted(_FIter, _FIter); + + template + bool + is_sorted(_FIter, _FIter, _Compare); + + template + _FIter + is_sorted_until(_FIter, _FIter); + + template + _FIter + is_sorted_until(_FIter, _FIter, _Compare); +#endif + + template + void + iter_swap(_FIter1, _FIter2); + + template + _FIter + lower_bound(_FIter, _FIter, const _Tp&); + + template + _FIter + lower_bound(_FIter, _FIter, const _Tp&, _Compare); + + template + void + make_heap(_RAIter, _RAIter); + + template + void + make_heap(_RAIter, _RAIter, _Compare); + + template + _GLIBCXX14_CONSTEXPR + const _Tp& + max(const _Tp&, const _Tp&); + + template + _GLIBCXX14_CONSTEXPR + const _Tp& + max(const _Tp&, const _Tp&, _Compare); + + // max_element + // merge + + template + _GLIBCXX14_CONSTEXPR + const _Tp& + min(const _Tp&, const _Tp&); + + template + _GLIBCXX14_CONSTEXPR + const _Tp& + min(const _Tp&, const _Tp&, _Compare); + + // min_element + +#if __cplusplus >= 201103L + template + _GLIBCXX14_CONSTEXPR + pair + minmax(const _Tp&, const _Tp&); + + template + _GLIBCXX14_CONSTEXPR + pair + minmax(const _Tp&, const _Tp&, _Compare); + + template + _GLIBCXX14_CONSTEXPR + pair<_FIter, _FIter> + minmax_element(_FIter, _FIter); + + template + _GLIBCXX14_CONSTEXPR + pair<_FIter, _FIter> + minmax_element(_FIter, _FIter, _Compare); + + template + _GLIBCXX14_CONSTEXPR + _Tp + min(initializer_list<_Tp>); + + template + _GLIBCXX14_CONSTEXPR + _Tp + min(initializer_list<_Tp>, _Compare); + + template + _GLIBCXX14_CONSTEXPR + _Tp + max(initializer_list<_Tp>); + + template + _GLIBCXX14_CONSTEXPR + _Tp + max(initializer_list<_Tp>, _Compare); + + template + _GLIBCXX14_CONSTEXPR + pair<_Tp, _Tp> + minmax(initializer_list<_Tp>); + + template + _GLIBCXX14_CONSTEXPR + pair<_Tp, _Tp> + minmax(initializer_list<_Tp>, _Compare); +#endif + + // mismatch + + template + bool + next_permutation(_BIter, _BIter); + + template + bool + next_permutation(_BIter, _BIter, _Compare); + +#if __cplusplus >= 201103L + template + bool + none_of(_IIter, _IIter, _Predicate); +#endif + + // nth_element + // partial_sort + + template + _RAIter + partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter); + + template + _RAIter + partial_sort_copy(_IIter, _IIter, _RAIter, _RAIter, _Compare); + + // partition + +#if __cplusplus >= 201103L + template + pair<_OIter1, _OIter2> + partition_copy(_IIter, _IIter, _OIter1, _OIter2, _Predicate); + + template + _FIter + partition_point(_FIter, _FIter, _Predicate); +#endif + + template + void + pop_heap(_RAIter, _RAIter); + + template + void + pop_heap(_RAIter, _RAIter, _Compare); + + template + bool + prev_permutation(_BIter, _BIter); + + template + bool + prev_permutation(_BIter, _BIter, _Compare); + + template + void + push_heap(_RAIter, _RAIter); + + template + void + push_heap(_RAIter, _RAIter, _Compare); + + // random_shuffle + + template + _FIter + remove(_FIter, _FIter, const _Tp&); + + template + _FIter + remove_if(_FIter, _FIter, _Predicate); + + template + _OIter + remove_copy(_IIter, _IIter, _OIter, const _Tp&); + + template + _OIter + remove_copy_if(_IIter, _IIter, _OIter, _Predicate); + + // replace + + template + _OIter + replace_copy(_IIter, _IIter, _OIter, const _Tp&, const _Tp&); + + template + _OIter + replace_copy_if(_Iter, _Iter, _OIter, _Predicate, const _Tp&); + + // replace_if + + template + void + reverse(_BIter, _BIter); + + template + _OIter + reverse_copy(_BIter, _BIter, _OIter); + + inline namespace _V2 + { + template + _FIter + rotate(_FIter, _FIter, _FIter); + } + + template + _OIter + rotate_copy(_FIter, _FIter, _FIter, _OIter); + + // search + // search_n + // set_difference + // set_intersection + // set_symmetric_difference + // set_union + +#if (__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99_STDINT_TR1) + template + void + shuffle(_RAIter, _RAIter, _UGenerator&&); +#endif + + template + void + sort_heap(_RAIter, _RAIter); + + template + void + sort_heap(_RAIter, _RAIter, _Compare); + + template + _BIter + stable_partition(_BIter, _BIter, _Predicate); + +#if __cplusplus < 201103L + // For C++11 swap() is declared in . + + template + inline void + swap(_Tp& __a, _Tp& __b); + + template + inline void + swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]); +#endif + + template + _FIter2 + swap_ranges(_FIter1, _FIter1, _FIter2); + + // transform + + template + _FIter + unique(_FIter, _FIter); + + template + _FIter + unique(_FIter, _FIter, _BinaryPredicate); + + // unique_copy + + template + _FIter + upper_bound(_FIter, _FIter, const _Tp&); + + template + _FIter + upper_bound(_FIter, _FIter, const _Tp&, _Compare); + +_GLIBCXX_BEGIN_NAMESPACE_ALGO + + template + _FIter + adjacent_find(_FIter, _FIter); + + template + _FIter + adjacent_find(_FIter, _FIter, _BinaryPredicate); + + template + typename iterator_traits<_IIter>::difference_type + count(_IIter, _IIter, const _Tp&); + + template + typename iterator_traits<_IIter>::difference_type + count_if(_IIter, _IIter, _Predicate); + + template + bool + equal(_IIter1, _IIter1, _IIter2); + + template + bool + equal(_IIter1, _IIter1, _IIter2, _BinaryPredicate); + + template + _IIter + find(_IIter, _IIter, const _Tp&); + + template + _FIter1 + find_first_of(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + find_first_of(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + template + _IIter + find_if(_IIter, _IIter, _Predicate); + + template + _Funct + for_each(_IIter, _IIter, _Funct); + + template + void + generate(_FIter, _FIter, _Generator); + + template + _OIter + generate_n(_OIter, _Size, _Generator); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Compare); + + template + _GLIBCXX14_CONSTEXPR + _FIter + max_element(_FIter, _FIter); + + template + _GLIBCXX14_CONSTEXPR + _FIter + max_element(_FIter, _FIter, _Compare); + + template + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + _GLIBCXX14_CONSTEXPR + _FIter + min_element(_FIter, _FIter); + + template + _GLIBCXX14_CONSTEXPR + _FIter + min_element(_FIter, _FIter, _Compare); + + template + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2); + + template + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2, _BinaryPredicate); + + template + void + nth_element(_RAIter, _RAIter, _RAIter); + + template + void + nth_element(_RAIter, _RAIter, _RAIter, _Compare); + + template + void + partial_sort(_RAIter, _RAIter, _RAIter); + + template + void + partial_sort(_RAIter, _RAIter, _RAIter, _Compare); + + template + _BIter + partition(_BIter, _BIter, _Predicate); + + template + void + random_shuffle(_RAIter, _RAIter); + + template + void + random_shuffle(_RAIter, _RAIter, +#if __cplusplus >= 201103L + _Generator&&); +#else + _Generator&); +#endif + + template + void + replace(_FIter, _FIter, const _Tp&, const _Tp&); + + template + void + replace_if(_FIter, _FIter, _Predicate, const _Tp&); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2, _BinaryPredicate); + + template + _FIter + search_n(_FIter, _FIter, _Size, const _Tp&); + + template + _FIter + search_n(_FIter, _FIter, _Size, const _Tp&, _BinaryPredicate); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, + _OIter, _Compare); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + void + sort(_RAIter, _RAIter); + + template + void + sort(_RAIter, _RAIter, _Compare); + + template + void + stable_sort(_RAIter, _RAIter); + + template + void + stable_sort(_RAIter, _RAIter, _Compare); + + template + _OIter + transform(_IIter, _IIter, _OIter, _UnaryOperation); + + template + _OIter + transform(_IIter1, _IIter1, _IIter2, _OIter, _BinaryOperation); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter, _BinaryPredicate); + +_GLIBCXX_END_NAMESPACE_ALGO +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#ifdef _GLIBCXX_PARALLEL +# include +#endif + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/alloc_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/alloc_traits.h new file mode 100644 index 000000000..742fdd044 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/alloc_traits.h @@ -0,0 +1,618 @@ +// Allocator traits -*- C++ -*- + +// Copyright (C) 2011-2018 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 +// . + +/** @file bits/alloc_traits.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _ALLOC_TRAITS_H +#define _ALLOC_TRAITS_H 1 + +#if __cplusplus >= 201103L + +#include +#include +#include + +#define __cpp_lib_allocator_traits_is_always_equal 201411 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + struct __allocator_traits_base + { + template + struct __rebind : __replace_first_arg<_Tp, _Up> { }; + + template + struct __rebind<_Tp, _Up, + __void_t::other>> + { using type = typename _Tp::template rebind<_Up>::other; }; + + protected: + template + using __pointer = typename _Tp::pointer; + template + using __c_pointer = typename _Tp::const_pointer; + template + using __v_pointer = typename _Tp::void_pointer; + template + using __cv_pointer = typename _Tp::const_void_pointer; + template + using __pocca = typename _Tp::propagate_on_container_copy_assignment; + template + using __pocma = typename _Tp::propagate_on_container_move_assignment; + template + using __pocs = typename _Tp::propagate_on_container_swap; + template + using __equal = typename _Tp::is_always_equal; + }; + + template + using __alloc_rebind + = typename __allocator_traits_base::template __rebind<_Alloc, _Up>::type; + + /** + * @brief Uniform interface to all allocator types. + * @ingroup allocators + */ + template + struct allocator_traits : __allocator_traits_base + { + /// The allocator type + typedef _Alloc allocator_type; + /// The allocated type + typedef typename _Alloc::value_type value_type; + + /** + * @brief The allocator's pointer type. + * + * @c Alloc::pointer if that type exists, otherwise @c value_type* + */ + using pointer = __detected_or_t; + + private: + // Select _Func<_Alloc> or pointer_traits::rebind<_Tp> + template class _Func, typename _Tp, typename = void> + struct _Ptr + { + using type = typename pointer_traits::template rebind<_Tp>; + }; + + template class _Func, typename _Tp> + struct _Ptr<_Func, _Tp, __void_t<_Func<_Alloc>>> + { + using type = _Func<_Alloc>; + }; + + // Select _A2::difference_type or pointer_traits<_Ptr>::difference_type + template + struct _Diff + { using type = typename pointer_traits<_PtrT>::difference_type; }; + + template + struct _Diff<_A2, _PtrT, __void_t> + { using type = typename _A2::difference_type; }; + + // Select _A2::size_type or make_unsigned<_DiffT>::type + template + struct _Size : make_unsigned<_DiffT> { }; + + template + struct _Size<_A2, _DiffT, __void_t> + { using type = typename _A2::size_type; }; + + public: + /** + * @brief The allocator's const pointer type. + * + * @c Alloc::const_pointer if that type exists, otherwise + * pointer_traits::rebind + */ + using const_pointer = typename _Ptr<__c_pointer, const value_type>::type; + + /** + * @brief The allocator's void pointer type. + * + * @c Alloc::void_pointer if that type exists, otherwise + * pointer_traits::rebind + */ + using void_pointer = typename _Ptr<__v_pointer, void>::type; + + /** + * @brief The allocator's const void pointer type. + * + * @c Alloc::const_void_pointer if that type exists, otherwise + * pointer_traits::rebind + */ + using const_void_pointer = typename _Ptr<__cv_pointer, const void>::type; + + /** + * @brief The allocator's difference type + * + * @c Alloc::difference_type if that type exists, otherwise + * pointer_traits::difference_type + */ + using difference_type = typename _Diff<_Alloc, pointer>::type; + + /** + * @brief The allocator's size type + * + * @c Alloc::size_type if that type exists, otherwise + * make_unsigned::type + */ + using size_type = typename _Size<_Alloc, difference_type>::type; + + /** + * @brief How the allocator is propagated on copy assignment + * + * @c Alloc::propagate_on_container_copy_assignment if that type exists, + * otherwise @c false_type + */ + using propagate_on_container_copy_assignment + = __detected_or_t; + + /** + * @brief How the allocator is propagated on move assignment + * + * @c Alloc::propagate_on_container_move_assignment if that type exists, + * otherwise @c false_type + */ + using propagate_on_container_move_assignment + = __detected_or_t; + + /** + * @brief How the allocator is propagated on swap + * + * @c Alloc::propagate_on_container_swap if that type exists, + * otherwise @c false_type + */ + using propagate_on_container_swap + = __detected_or_t; + + /** + * @brief Whether all instances of the allocator type compare equal. + * + * @c Alloc::is_always_equal if that type exists, + * otherwise @c is_empty::type + */ + using is_always_equal + = __detected_or_t::type, __equal, _Alloc>; + + template + using rebind_alloc = __alloc_rebind<_Alloc, _Tp>; + template + using rebind_traits = allocator_traits>; + + private: + template + static auto + _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer __hint, int) + -> decltype(__a.allocate(__n, __hint)) + { return __a.allocate(__n, __hint); } + + template + static pointer + _S_allocate(_Alloc2& __a, size_type __n, const_void_pointer, ...) + { return __a.allocate(__n); } + + template + struct __construct_helper + { + template()->construct( + std::declval<_Tp*>(), std::declval<_Args>()...))> + static true_type __test(int); + + template + static false_type __test(...); + + using type = decltype(__test<_Alloc>(0)); + }; + + template + using __has_construct + = typename __construct_helper<_Tp, _Args...>::type; + + template + static _Require<__has_construct<_Tp, _Args...>> + _S_construct(_Alloc& __a, _Tp* __p, _Args&&... __args) + { __a.construct(__p, std::forward<_Args>(__args)...); } + + template + static + _Require<__and_<__not_<__has_construct<_Tp, _Args...>>, + is_constructible<_Tp, _Args...>>> + _S_construct(_Alloc&, _Tp* __p, _Args&&... __args) + { ::new((void*)__p) _Tp(std::forward<_Args>(__args)...); } + + template + static auto + _S_destroy(_Alloc2& __a, _Tp* __p, int) + -> decltype(__a.destroy(__p)) + { __a.destroy(__p); } + + template + static void + _S_destroy(_Alloc2&, _Tp* __p, ...) + { __p->~_Tp(); } + + template + static auto + _S_max_size(_Alloc2& __a, int) + -> decltype(__a.max_size()) + { return __a.max_size(); } + + template + static size_type + _S_max_size(_Alloc2&, ...) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2466. allocator_traits::max_size() default behavior is incorrect + return __gnu_cxx::__numeric_traits::__max + / sizeof(value_type); + } + + template + static auto + _S_select(_Alloc2& __a, int) + -> decltype(__a.select_on_container_copy_construction()) + { return __a.select_on_container_copy_construction(); } + + template + static _Alloc2 + _S_select(_Alloc2& __a, ...) + { return __a; } + + public: + + /** + * @brief Allocate memory. + * @param __a An allocator. + * @param __n The number of objects to allocate space for. + * + * Calls @c a.allocate(n) + */ + static pointer + allocate(_Alloc& __a, size_type __n) + { return __a.allocate(__n); } + + /** + * @brief Allocate memory. + * @param __a An allocator. + * @param __n The number of objects to allocate space for. + * @param __hint Aid to locality. + * @return Memory of suitable size and alignment for @a n objects + * of type @c value_type + * + * Returns a.allocate(n, hint) if that expression is + * well-formed, otherwise returns @c a.allocate(n) + */ + static pointer + allocate(_Alloc& __a, size_type __n, const_void_pointer __hint) + { return _S_allocate(__a, __n, __hint, 0); } + + /** + * @brief Deallocate memory. + * @param __a An allocator. + * @param __p Pointer to the memory to deallocate. + * @param __n The number of objects space was allocated for. + * + * Calls a.deallocate(p, n) + */ + static void + deallocate(_Alloc& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } + + /** + * @brief Construct an object of type @a _Tp + * @param __a An allocator. + * @param __p Pointer to memory of suitable size and alignment for Tp + * @param __args Constructor arguments. + * + * Calls __a.construct(__p, std::forward(__args)...) + * if that expression is well-formed, otherwise uses placement-new + * to construct an object of type @a _Tp at location @a __p from the + * arguments @a __args... + */ + template + static auto construct(_Alloc& __a, _Tp* __p, _Args&&... __args) + -> decltype(_S_construct(__a, __p, std::forward<_Args>(__args)...)) + { _S_construct(__a, __p, std::forward<_Args>(__args)...); } + + /** + * @brief Destroy an object of type @a _Tp + * @param __a An allocator. + * @param __p Pointer to the object to destroy + * + * Calls @c __a.destroy(__p) if that expression is well-formed, + * otherwise calls @c __p->~_Tp() + */ + template + static void destroy(_Alloc& __a, _Tp* __p) + { _S_destroy(__a, __p, 0); } + + /** + * @brief The maximum supported allocation size + * @param __a An allocator. + * @return @c __a.max_size() or @c numeric_limits::max() + * + * Returns @c __a.max_size() if that expression is well-formed, + * otherwise returns @c numeric_limits::max() + */ + static size_type max_size(const _Alloc& __a) noexcept + { return _S_max_size(__a, 0); } + + /** + * @brief Obtain an allocator to use when copying a container. + * @param __rhs An allocator. + * @return @c __rhs.select_on_container_copy_construction() or @a __rhs + * + * Returns @c __rhs.select_on_container_copy_construction() if that + * expression is well-formed, otherwise returns @a __rhs + */ + static _Alloc + select_on_container_copy_construction(const _Alloc& __rhs) + { return _S_select(__rhs, 0); } + }; + + /// Partial specialization for std::allocator. + template + struct allocator_traits> + { + /// The allocator type + using allocator_type = allocator<_Tp>; + /// The allocated type + using value_type = _Tp; + + /// The allocator's pointer type. + using pointer = _Tp*; + + /// The allocator's const pointer type. + using const_pointer = const _Tp*; + + /// The allocator's void pointer type. + using void_pointer = void*; + + /// The allocator's const void pointer type. + using const_void_pointer = const void*; + + /// The allocator's difference type + using difference_type = std::ptrdiff_t; + + /// The allocator's size type + using size_type = std::size_t; + + /// How the allocator is propagated on copy assignment + using propagate_on_container_copy_assignment = false_type; + + /// How the allocator is propagated on move assignment + using propagate_on_container_move_assignment = true_type; + + /// How the allocator is propagated on swap + using propagate_on_container_swap = false_type; + + /// Whether all instances of the allocator type compare equal. + using is_always_equal = true_type; + + template + using rebind_alloc = allocator<_Up>; + + template + using rebind_traits = allocator_traits>; + + /** + * @brief Allocate memory. + * @param __a An allocator. + * @param __n The number of objects to allocate space for. + * + * Calls @c a.allocate(n) + */ + static pointer + allocate(allocator_type& __a, size_type __n) + { return __a.allocate(__n); } + + /** + * @brief Allocate memory. + * @param __a An allocator. + * @param __n The number of objects to allocate space for. + * @param __hint Aid to locality. + * @return Memory of suitable size and alignment for @a n objects + * of type @c value_type + * + * Returns a.allocate(n, hint) + */ + static pointer + allocate(allocator_type& __a, size_type __n, const_void_pointer __hint) + { return __a.allocate(__n, __hint); } + + /** + * @brief Deallocate memory. + * @param __a An allocator. + * @param __p Pointer to the memory to deallocate. + * @param __n The number of objects space was allocated for. + * + * Calls a.deallocate(p, n) + */ + static void + deallocate(allocator_type& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } + + /** + * @brief Construct an object of type @a _Up + * @param __a An allocator. + * @param __p Pointer to memory of suitable size and alignment for Tp + * @param __args Constructor arguments. + * + * Calls __a.construct(__p, std::forward(__args)...) + */ + template + static void + construct(allocator_type& __a, _Up* __p, _Args&&... __args) + { __a.construct(__p, std::forward<_Args>(__args)...); } + + /** + * @brief Destroy an object of type @a _Up + * @param __a An allocator. + * @param __p Pointer to the object to destroy + * + * Calls @c __a.destroy(__p). + */ + template + static void + destroy(allocator_type& __a, _Up* __p) + { __a.destroy(__p); } + + /** + * @brief The maximum supported allocation size + * @param __a An allocator. + * @return @c __a.max_size() + */ + static size_type + max_size(const allocator_type& __a) noexcept + { return __a.max_size(); } + + /** + * @brief Obtain an allocator to use when copying a container. + * @param __rhs An allocator. + * @return @c __rhs + */ + static allocator_type + select_on_container_copy_construction(const allocator_type& __rhs) + { return __rhs; } + }; + + + template + inline void + __do_alloc_on_copy(_Alloc& __one, const _Alloc& __two, true_type) + { __one = __two; } + + template + inline void + __do_alloc_on_copy(_Alloc&, const _Alloc&, false_type) + { } + + template + inline void __alloc_on_copy(_Alloc& __one, const _Alloc& __two) + { + typedef allocator_traits<_Alloc> __traits; + typedef typename __traits::propagate_on_container_copy_assignment __pocca; + __do_alloc_on_copy(__one, __two, __pocca()); + } + + template + inline _Alloc __alloc_on_copy(const _Alloc& __a) + { + typedef allocator_traits<_Alloc> __traits; + return __traits::select_on_container_copy_construction(__a); + } + + template + inline void __do_alloc_on_move(_Alloc& __one, _Alloc& __two, true_type) + { __one = std::move(__two); } + + template + inline void __do_alloc_on_move(_Alloc&, _Alloc&, false_type) + { } + + template + inline void __alloc_on_move(_Alloc& __one, _Alloc& __two) + { + typedef allocator_traits<_Alloc> __traits; + typedef typename __traits::propagate_on_container_move_assignment __pocma; + __do_alloc_on_move(__one, __two, __pocma()); + } + + template + inline void __do_alloc_on_swap(_Alloc& __one, _Alloc& __two, true_type) + { + using std::swap; + swap(__one, __two); + } + + template + inline void __do_alloc_on_swap(_Alloc&, _Alloc&, false_type) + { } + + template + inline void __alloc_on_swap(_Alloc& __one, _Alloc& __two) + { + typedef allocator_traits<_Alloc> __traits; + typedef typename __traits::propagate_on_container_swap __pocs; + __do_alloc_on_swap(__one, __two, __pocs()); + } + + template + class __is_copy_insertable_impl + { + typedef allocator_traits<_Alloc> _Traits; + + template(), + std::declval<_Up*>(), + std::declval()))> + static true_type + _M_select(int); + + template + static false_type + _M_select(...); + + public: + typedef decltype(_M_select(0)) type; + }; + + // true if _Alloc::value_type is CopyInsertable into containers using _Alloc + template + struct __is_copy_insertable + : __is_copy_insertable_impl<_Alloc>::type + { }; + + // std::allocator<_Tp> just requires CopyConstructible + template + struct __is_copy_insertable> + : is_copy_constructible<_Tp> + { }; + + // Trait to detect Allocator-like types. + template + struct __is_allocator : false_type { }; + + template + struct __is_allocator<_Alloc, + __void_t().allocate(size_t{}))>> + : true_type { }; + + template + using _RequireAllocator + = typename enable_if<__is_allocator<_Alloc>::value, _Alloc>::type; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std +#endif // C++11 +#endif // _ALLOC_TRAITS_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/allocated_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/allocated_ptr.h similarity index 90% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/allocated_ptr.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/allocated_ptr.h index 773b3f500..8b9e9ec24 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/allocated_ptr.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/allocated_ptr.h @@ -1,6 +1,6 @@ // Guarded Allocation -*- C++ -*- -// Copyright (C) 2014-2017 Free Software Foundation, Inc. +// Copyright (C) 2014-2018 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 @@ -82,16 +82,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// Get the address that the owned pointer refers to. - value_type* get() { return _S_raw_ptr(_M_ptr); } + value_type* get() { return std::__to_address(_M_ptr); } private: - static value_type* _S_raw_ptr(value_type* __ptr) { return __ptr; } - - template - static auto - _S_raw_ptr(_Ptr __ptr) -> decltype(_S_raw_ptr(__ptr.operator->())) - { return _S_raw_ptr(__ptr.operator->()); } - _Alloc* _M_alloc; pointer _M_ptr; }; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/allocator.h similarity index 89% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/allocator.h index 20813864c..0a4eb55f6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/allocator.h @@ -1,6 +1,6 @@ // Allocators -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -105,7 +105,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @tparam _Tp Type of allocated object. */ template - class allocator: public __allocator_base<_Tp> + class allocator : public __allocator_base<_Tp> { public: typedef size_t size_type; @@ -165,6 +165,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_USE_NOEXCEPT { return false; } + // Invalid allocator partial specializations. + // allocator_traits::rebind_alloc can be used to form a valid allocator type. + template + class allocator + { + public: + typedef _Tp value_type; + template allocator(const allocator<_Up>&) { } + }; + + template + class allocator + { + public: + typedef _Tp value_type; + template allocator(const allocator<_Up>&) { } + }; + + template + class allocator + { + public: + typedef _Tp value_type; + template allocator(const allocator<_Up>&) { } + }; + /// @} group allocator // Inhibit implicit instantiations for required instantiations, diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_base.h index e79ff67ea..a1fadcd80 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_base.h @@ -1,6 +1,6 @@ // -*- C++ -*- header. -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_futex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_futex.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_futex.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_futex.h index afcfeb772..ad9437da4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_futex.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_futex.h @@ -1,6 +1,6 @@ // -*- C++ -*- header. -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_lockfree_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_lockfree_defines.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_lockfree_defines.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_lockfree_defines.h index 9aa4142f6..2afa6dffb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/atomic_lockfree_defines.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/atomic_lockfree_defines.h @@ -1,6 +1,6 @@ // -*- C++ -*- header. -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_ios.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_ios.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_ios.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_ios.h index f0b8682b4..0e83aea25 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_ios.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_ios.h @@ -1,6 +1,6 @@ // Iostreams base classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_ios.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_ios.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_ios.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_ios.tcc index 8b3c829e4..17adc9c72 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_ios.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_ios.tcc @@ -1,6 +1,6 @@ // basic_ios member functions -*- C++ -*- -// Copyright (C) 1999-2017 Free Software Foundation, Inc. +// Copyright (C) 1999-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_string.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_string.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_string.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_string.h index 674fe0963..0f5d398fc 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_string.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_string.h @@ -1,6 +1,6 @@ // Components for manipulating sequences of characters -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -506,6 +506,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 * @param __s Source C string. * @param __a Allocator to use (default is default allocator). */ +#if __cpp_deduction_guides && ! defined _GLIBCXX_DEFINING_STRING_INSTANTIATIONS + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3076. basic_string CTAD ambiguity + template> +#endif basic_string(const _CharT* __s, const _Alloc& __a = _Alloc()) : _M_dataplus(_M_local_data(), __a) { _M_construct(__s, __s ? __s + traits_type::length(__s) : __s+npos); } @@ -516,6 +521,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 * @param __c Character to use. * @param __a Allocator to use (default is default allocator). */ +#if __cpp_deduction_guides && ! defined _GLIBCXX_DEFINING_STRING_INSTANTIATIONS + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3076. basic_string CTAD ambiguity + template> +#endif basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc()) : _M_dataplus(_M_local_data(), __a) { _M_construct(__n, __c); } @@ -734,20 +744,29 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 // Replace allocator if POCMA is true. std::__alloc_on_move(_M_get_allocator(), __str._M_get_allocator()); - if (!__str._M_is_local() - && (_Alloc_traits::_S_propagate_on_move_assign() - || _Alloc_traits::_S_always_equal())) + if (__str._M_is_local()) { + // We've always got room for a short string, just copy it. + if (__str.size()) + this->_S_copy(_M_data(), __str._M_data(), __str.size()); + _M_set_length(__str.size()); + } + else if (_Alloc_traits::_S_propagate_on_move_assign() + || _Alloc_traits::_S_always_equal() + || _M_get_allocator() == __str._M_get_allocator()) + { + // Just move the allocated pointer, our allocator can free it. pointer __data = nullptr; size_type __capacity; if (!_M_is_local()) { if (_Alloc_traits::_S_always_equal()) { + // __str can reuse our existing storage. __data = _M_data(); __capacity = _M_allocated_capacity; } - else + else // __str can't use it, so free it. _M_destroy(_M_allocated_capacity); } @@ -762,8 +781,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 else __str._M_data(__str._M_local_buf); } - else - assign(__str); + else // Need to do a deep copy + assign(__str); __str.clear(); return *this; } @@ -1216,7 +1235,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 * remainder of @a __str is appended. */ basic_string& - append(const basic_string& __str, size_type __pos, size_type __n) + append(const basic_string& __str, size_type __pos, size_type __n = npos) { return _M_append(__str._M_data() + __str._M_check(__pos, "basic_string::append"), __str._M_limit(__pos, __n)); } @@ -1381,7 +1400,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 * __str, the remainder of @a __str is used. */ basic_string& - assign(const basic_string& __str, size_type __pos, size_type __n) + assign(const basic_string& __str, size_type __pos, size_type __n = npos) { return _M_replace(size_type(0), this->size(), __str._M_data() + __str._M_check(__pos, "basic_string::assign"), __str._M_limit(__pos, __n)); } @@ -1633,7 +1652,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 */ basic_string& insert(size_type __pos1, const basic_string& __str, - size_type __pos2, size_type __n) + size_type __pos2, size_type __n = npos) { return this->replace(__pos1, size_type(0), __str._M_data() + __str._M_check(__pos2, "basic_string::insert"), __str._M_limit(__pos2, __n)); } @@ -1881,7 +1900,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 */ basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str, - size_type __pos2, size_type __n2) + size_type __pos2, size_type __n2 = npos) { return this->replace(__pos1, __n1, __str._M_data() + __str._M_check(__pos2, "basic_string::replace"), __str._M_limit(__pos2, __n2)); } @@ -2941,7 +2960,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 */ int compare(size_type __pos1, size_type __n1, const basic_string& __str, - size_type __pos2, size_type __n2) const; + size_type __pos2, size_type __n2 = npos) const; /** * @brief Compare to a C string. @@ -4135,7 +4154,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 * remainder of @a __str is appended. */ basic_string& - append(const basic_string& __str, size_type __pos, size_type __n); + append(const basic_string& __str, size_type __pos, size_type __n = npos); /** * @brief Append a C substring. @@ -4280,7 +4299,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 * __str, the remainder of @a __str is used. */ basic_string& - assign(const basic_string& __str, size_type __pos, size_type __n) + assign(const basic_string& __str, size_type __pos, size_type __n = npos) { return this->assign(__str._M_data() + __str._M_check(__pos, "basic_string::assign"), __str._M_limit(__pos, __n)); } @@ -4468,7 +4487,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 */ basic_string& insert(size_type __pos1, const basic_string& __str, - size_type __pos2, size_type __n) + size_type __pos2, size_type __n = npos) { return this->insert(__pos1, __str._M_data() + __str._M_check(__pos2, "basic_string::insert"), __str._M_limit(__pos2, __n)); } @@ -4703,7 +4722,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 */ basic_string& replace(size_type __pos1, size_type __n1, const basic_string& __str, - size_type __pos2, size_type __n2) + size_type __pos2, size_type __n2 = npos) { return this->replace(__pos1, __n1, __str._M_data() + __str._M_check(__pos2, "basic_string::replace"), __str._M_limit(__pos2, __n2)); } @@ -5782,7 +5801,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 */ int compare(size_type __pos1, size_type __n1, const basic_string& __str, - size_type __pos2, size_type __n2) const; + size_type __pos2, size_type __n2 = npos) const; /** * @brief Compare to a C string. @@ -5867,6 +5886,35 @@ _GLIBCXX_END_NAMESPACE_CXX11 }; #endif // !_GLIBCXX_USE_CXX11_ABI +#if __cpp_deduction_guides >= 201606 +_GLIBCXX_BEGIN_NAMESPACE_CXX11 + template::value_type, + typename _Allocator = allocator<_CharT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + basic_string(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> basic_string<_CharT, char_traits<_CharT>, _Allocator>; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3075. basic_string needs deduction guides from basic_string_view + template, + typename = _RequireAllocator<_Allocator>> + basic_string(basic_string_view<_CharT, _Traits>, const _Allocator& = _Allocator()) + -> basic_string<_CharT, _Traits, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + basic_string(basic_string_view<_CharT, _Traits>, + typename basic_string<_CharT, _Traits, _Allocator>::size_type, + typename basic_string<_CharT, _Traits, _Allocator>::size_type, + const _Allocator& = _Allocator()) + -> basic_string<_CharT, _Traits, _Allocator>; +_GLIBCXX_END_NAMESPACE_CXX11 +#endif + // operator+ /** * @brief Concatenate two strings. @@ -6648,8 +6696,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { }; #endif -_GLIBCXX_END_NAMESPACE_VERSION - #if __cplusplus > 201103L #define __cpp_lib_string_udls 201304 @@ -6658,8 +6704,8 @@ _GLIBCXX_END_NAMESPACE_VERSION { inline namespace string_literals { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wliteral-suffix" _GLIBCXX_DEFAULT_ABI_TAG inline basic_string operator""s(const char* __str, size_t __len) @@ -6684,12 +6730,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return basic_string{__str, __len}; } #endif -_GLIBCXX_END_NAMESPACE_VERSION +#pragma GCC diagnostic pop } // inline namespace string_literals } // inline namespace literals #endif // __cplusplus > 201103L +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // C++11 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_string.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_string.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_string.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_string.tcc index 41b7fa196..04b68ca02 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/basic_string.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/basic_string.tcc @@ -1,6 +1,6 @@ // Components for manipulating sequences of characters -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -1597,8 +1597,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Inhibit implicit instantiations for required instantiations, // which are defined via explicit instantiations elsewhere. -#if _GLIBCXX_EXTERN_TEMPLATE > 0 && __cplusplus <= 201402L +#if _GLIBCXX_EXTERN_TEMPLATE + // The explicit instantiations definitions in src/c++11/string-inst.cc + // are compiled as C++14, so the new C++17 members aren't instantiated. + // Until those definitions are compiled as C++17 suppress the declaration, + // so C++17 code will implicitly instantiate std::string and std::wstring + // as needed. +# if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0 extern template class basic_string; +# elif ! _GLIBCXX_USE_CXX11_ABI + // Still need to prevent implicit instantiation of the COW empty rep, + // to ensure the definition in libstdc++.so is unique (PR 86138). + extern template basic_string::size_type + basic_string::_Rep::_S_empty_rep_storage[]; +# endif + extern template basic_istream& operator>>(basic_istream&, string&); @@ -1613,7 +1626,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION getline(basic_istream&, string&); #ifdef _GLIBCXX_USE_WCHAR_T +# if __cplusplus <= 201402L && _GLIBCXX_EXTERN_TEMPLATE > 0 extern template class basic_string; +# elif ! _GLIBCXX_USE_CXX11_ABI + extern template basic_string::size_type + basic_string::_Rep::_S_empty_rep_storage[]; +# endif + extern template basic_istream& operator>>(basic_istream&, wstring&); @@ -1626,8 +1645,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION extern template basic_istream& getline(basic_istream&, wstring&); -#endif -#endif +#endif // _GLIBCXX_USE_WCHAR_T +#endif // _GLIBCXX_EXTERN_TEMPLATE _GLIBCXX_END_NAMESPACE_VERSION } // namespace std diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/boost_concept_check.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/boost_concept_check.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/boost_concept_check.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/boost_concept_check.h index fb9a643c8..7d2bd2a31 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/boost_concept_check.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/boost_concept_check.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2004-2017 Free Software Foundation, Inc. +// Copyright (C) 2004-2018 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 @@ -48,6 +48,9 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-local-typedefs" + #define _IsUnused __attribute__ ((__unused__)) // When the C-C code is in use, we would like this function to do as little @@ -783,6 +786,7 @@ struct _Aux_require_same<_Tp,_Tp> { typedef _Tp _Type; }; _GLIBCXX_END_NAMESPACE_VERSION } // namespace +#pragma GCC diagnostic pop #undef _IsUnused #endif // _GLIBCXX_BOOST_CONCEPT_CHECK diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/c++0x_warning.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/c++0x_warning.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/c++0x_warning.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/c++0x_warning.h index d2bc7148c..95d3fbd38 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/c++0x_warning.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/c++0x_warning.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/char_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/char_traits.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/char_traits.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/char_traits.h index 791608ad3..a2a883f35 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/char_traits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/char_traits.h @@ -1,6 +1,6 @@ // Character Traits for use by standard string and iostream -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -183,6 +183,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION char_traits<_CharT>:: move(char_type* __s1, const char_type* __s2, std::size_t __n) { + if (__n == 0) + return __s1; return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, __n * sizeof(char_type))); } @@ -246,7 +248,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __constant_char_array_p(const _CharT* __a, size_t __n) { size_t __i = 0; - while (__builtin_constant_p(__a[__i]) && __i < __n) + while (__i < __n && __builtin_constant_p(__a[__i])) __i++; return __i == __n; } @@ -586,7 +588,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION static constexpr int_type to_int_type(const char_type& __c) noexcept - { return int_type(__c); } + { return __c == eof() ? int_type(0xfffd) : int_type(__c); } static constexpr bool eq_int_type(const int_type& __c1, const int_type& __c2) noexcept diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/codecvt.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/codecvt.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/codecvt.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/codecvt.h index fc2da321a..b61df0a7e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/codecvt.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/codecvt.h @@ -1,6 +1,6 @@ // Locale support (codecvt) -*- C++ -*- -// Copyright (C) 2000-2017 Free Software Foundation, Inc. +// Copyright (C) 2000-2018 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 @@ -612,7 +612,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { public: explicit - codecvt_byname(const char* __s, size_t __refs = 0) + codecvt_byname(const char*, size_t __refs = 0) : codecvt(__refs) { } explicit @@ -630,7 +630,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { public: explicit - codecvt_byname(const char* __s, size_t __refs = 0) + codecvt_byname(const char*, size_t __refs = 0) : codecvt(__refs) { } explicit diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/concept_check.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/concept_check.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/concept_check.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/concept_check.h index 83a96f4dc..17dcd4947 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/concept_check.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/concept_check.h @@ -1,6 +1,6 @@ // Concept-checking control -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cpp_type_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cpp_type_traits.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cpp_type_traits.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cpp_type_traits.h index 932360cd2..960d469f4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cpp_type_traits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cpp_type_traits.h @@ -1,6 +1,6 @@ // The -*- C++ -*- type traits classes for internal use in libstdc++ -// Copyright (C) 2000-2017 Free Software Foundation, Inc. +// Copyright (C) 2000-2018 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 @@ -391,6 +391,17 @@ __INT_N(__GLIBCXX_TYPE_INT_N_3) typedef __true_type __type; }; +#if __cplusplus >= 201703L + enum class byte : unsigned char; + + template<> + struct __is_byte + { + enum { __value = 1 }; + typedef __true_type __type; + }; +#endif // C++17 + // // Move iterator type // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cxxabi_forced.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cxxabi_forced.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cxxabi_forced.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cxxabi_forced.h index 40c9a1645..86d9acf91 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cxxabi_forced.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cxxabi_forced.h @@ -1,6 +1,6 @@ // cxxabi.h subset for cancellation -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 Free Software Foundation, Inc. // // This file is part of GCC. // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cxxabi_init_exception.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cxxabi_init_exception.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cxxabi_init_exception.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cxxabi_init_exception.h index 2cf2c257e..e438c1008 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/cxxabi_init_exception.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/cxxabi_init_exception.h @@ -1,6 +1,6 @@ // ABI Support -*- C++ -*- -// Copyright (C) 2016-2017 Free Software Foundation, Inc. +// Copyright (C) 2016-2018 Free Software Foundation, Inc. // // This file is part of GCC. // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/deque.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/deque.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/deque.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/deque.tcc index 38a6e82aa..a00f57885 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/deque.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/deque.tcc @@ -1,6 +1,6 @@ // Deque implementation (out of line) -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -58,6 +58,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #if __cplusplus >= 201103L @@ -1107,6 +1108,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #endif _GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/enable_special_members.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/enable_special_members.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/enable_special_members.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/enable_special_members.h index 2c35eb50a..88b727178 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/enable_special_members.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/enable_special_members.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception.h index bfb6a0649..3f1111d3e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception.h @@ -1,6 +1,6 @@ // Exception Handling support header for -*- C++ -*- -// Copyright (C) 2016-2017 Free Software Foundation, Inc. +// Copyright (C) 2016-2018 Free Software Foundation, Inc. // // This file is part of GCC. // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception_defines.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception_defines.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception_defines.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception_defines.h index 3668a3743..0417ca57c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception_defines.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception_defines.h @@ -1,6 +1,6 @@ // -fno-exceptions Support -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception_ptr.h similarity index 91% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception_ptr.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception_ptr.h index faae9b77c..bd355ed88 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/exception_ptr.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/exception_ptr.h @@ -1,6 +1,6 @@ // Exception Handling support header (exception_ptr class) for -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -207,19 +207,6 @@ namespace std #endif } - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 1130. copy_exception name misleading - /// Obtain an exception_ptr pointing to a copy of the supplied object. - /// This function is deprecated, use std::make_exception_ptr instead. - template - exception_ptr - copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT _GLIBCXX_DEPRECATED; - - template - exception_ptr - copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT - { return std::make_exception_ptr<_Ex>(__ex); } - // @} group exceptions } // namespace std diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/forward_list.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/forward_list.h similarity index 82% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/forward_list.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/forward_list.h index c37bf0134..065635a70 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/forward_list.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/forward_list.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 @@ -43,6 +43,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER /** @@ -53,6 +54,20 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER struct _Fwd_list_node_base { _Fwd_list_node_base() = default; + _Fwd_list_node_base(_Fwd_list_node_base&& __x) noexcept + : _M_next(__x._M_next) + { __x._M_next = nullptr; } + + _Fwd_list_node_base(const _Fwd_list_node_base&) = delete; + _Fwd_list_node_base& operator=(const _Fwd_list_node_base&) = delete; + + _Fwd_list_node_base& + operator=(_Fwd_list_node_base&& __x) noexcept + { + _M_next = __x._M_next; + __x._M_next = nullptr; + return *this; + } _Fwd_list_node_base* _M_next = nullptr; @@ -67,7 +82,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __end->_M_next = _M_next; } else - __begin->_M_next = 0; + __begin->_M_next = nullptr; _M_next = __keep; return __end; } @@ -113,20 +128,20 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER /** * @brief A forward_list::iterator. - * + * * All the functions are op overloads. */ template struct _Fwd_list_iterator { - typedef _Fwd_list_iterator<_Tp> _Self; - typedef _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_iterator<_Tp> _Self; + typedef _Fwd_list_node<_Tp> _Node; - typedef _Tp value_type; - typedef _Tp* pointer; - typedef _Tp& reference; - typedef ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; + typedef _Tp value_type; + typedef _Tp* pointer; + typedef _Tp& reference; + typedef ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; _Fwd_list_iterator() noexcept : _M_node() { } @@ -146,16 +161,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Self& operator++() noexcept { - _M_node = _M_node->_M_next; - return *this; + _M_node = _M_node->_M_next; + return *this; } _Self operator++(int) noexcept { - _Self __tmp(*this); - _M_node = _M_node->_M_next; - return __tmp; + _Self __tmp(*this); + _M_node = _M_node->_M_next; + return __tmp; } bool @@ -169,10 +184,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Self _M_next() const noexcept { - if (_M_node) - return _Fwd_list_iterator(_M_node->_M_next); - else - return _Fwd_list_iterator(0); + if (_M_node) + return _Fwd_list_iterator(_M_node->_M_next); + else + return _Fwd_list_iterator(nullptr); } _Fwd_list_node_base* _M_node; @@ -180,21 +195,21 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER /** * @brief A forward_list::const_iterator. - * + * * All the functions are op overloads. */ template struct _Fwd_list_const_iterator { - typedef _Fwd_list_const_iterator<_Tp> _Self; - typedef const _Fwd_list_node<_Tp> _Node; - typedef _Fwd_list_iterator<_Tp> iterator; + typedef _Fwd_list_const_iterator<_Tp> _Self; + typedef const _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_iterator<_Tp> iterator; - typedef _Tp value_type; - typedef const _Tp* pointer; - typedef const _Tp& reference; - typedef ptrdiff_t difference_type; - typedef std::forward_iterator_tag iterator_category; + typedef _Tp value_type; + typedef const _Tp* pointer; + typedef const _Tp& reference; + typedef ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; _Fwd_list_const_iterator() noexcept : _M_node() { } @@ -217,16 +232,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Self& operator++() noexcept { - _M_node = _M_node->_M_next; - return *this; + _M_node = _M_node->_M_next; + return *this; } _Self operator++(int) noexcept { - _Self __tmp(*this); - _M_node = _M_node->_M_next; - return __tmp; + _Self __tmp(*this); + _M_node = _M_node->_M_next; + return __tmp; } bool @@ -240,10 +255,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _Self _M_next() const noexcept { - if (this->_M_node) - return _Fwd_list_const_iterator(_M_node->_M_next); - else - return _Fwd_list_const_iterator(0); + if (this->_M_node) + return _Fwd_list_const_iterator(_M_node->_M_next); + else + return _Fwd_list_const_iterator(nullptr); } const _Fwd_list_node_base* _M_node; @@ -255,7 +270,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template inline bool operator==(const _Fwd_list_iterator<_Tp>& __x, - const _Fwd_list_const_iterator<_Tp>& __y) noexcept + const _Fwd_list_const_iterator<_Tp>& __y) noexcept { return __x._M_node == __y._M_node; } /** @@ -264,7 +279,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template inline bool operator!=(const _Fwd_list_iterator<_Tp>& __x, - const _Fwd_list_const_iterator<_Tp>& __y) noexcept + const _Fwd_list_const_iterator<_Tp>& __y) noexcept { return __x._M_node != __y._M_node; } /** @@ -274,34 +289,36 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER struct _Fwd_list_base { protected: - typedef __alloc_rebind<_Alloc, _Tp> _Tp_alloc_type; typedef __alloc_rebind<_Alloc, _Fwd_list_node<_Tp>> _Node_alloc_type; typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; - struct _Fwd_list_impl + struct _Fwd_list_impl : public _Node_alloc_type { - _Fwd_list_node_base _M_head; + _Fwd_list_node_base _M_head; - _Fwd_list_impl() - : _Node_alloc_type(), _M_head() - { } + _Fwd_list_impl() + noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) + : _Node_alloc_type(), _M_head() + { } - _Fwd_list_impl(const _Node_alloc_type& __a) - : _Node_alloc_type(__a), _M_head() - { } + _Fwd_list_impl(_Fwd_list_impl&&) = default; - _Fwd_list_impl(_Node_alloc_type&& __a) + _Fwd_list_impl(_Fwd_list_impl&& __fl, _Node_alloc_type&& __a) + : _Node_alloc_type(std::move(__a)), _M_head(std::move(__fl._M_head)) + { } + + _Fwd_list_impl(_Node_alloc_type&& __a) : _Node_alloc_type(std::move(__a)), _M_head() - { } + { } }; _Fwd_list_impl _M_impl; public: - typedef _Fwd_list_iterator<_Tp> iterator; - typedef _Fwd_list_const_iterator<_Tp> const_iterator; - typedef _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_iterator<_Tp> iterator; + typedef _Fwd_list_const_iterator<_Tp> const_iterator; + typedef _Fwd_list_node<_Tp> _Node; _Node_alloc_type& _M_get_Node_allocator() noexcept @@ -311,57 +328,56 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_get_Node_allocator() const noexcept { return this->_M_impl; } - _Fwd_list_base() - : _M_impl() { } + _Fwd_list_base() = default; _Fwd_list_base(_Node_alloc_type&& __a) : _M_impl(std::move(__a)) { } + // When allocators are always equal. + _Fwd_list_base(_Fwd_list_base&& __lst, _Node_alloc_type&& __a, + std::true_type) + : _M_impl(std::move(__lst._M_impl), std::move(__a)) + { } + + // When allocators are not always equal. _Fwd_list_base(_Fwd_list_base&& __lst, _Node_alloc_type&& __a); - _Fwd_list_base(_Fwd_list_base&& __lst) - : _M_impl(std::move(__lst._M_get_Node_allocator())) - { - this->_M_impl._M_head._M_next = __lst._M_impl._M_head._M_next; - __lst._M_impl._M_head._M_next = 0; - } + _Fwd_list_base(_Fwd_list_base&&) = default; ~_Fwd_list_base() - { _M_erase_after(&_M_impl._M_head, 0); } + { _M_erase_after(&_M_impl._M_head, nullptr); } protected: - _Node* _M_get_node() { auto __ptr = _Node_alloc_traits::allocate(_M_get_Node_allocator(), 1); - return std::__addressof(*__ptr); + return std::__to_address(__ptr); } template - _Node* - _M_create_node(_Args&&... __args) - { - _Node* __node = this->_M_get_node(); - __try - { - _Tp_alloc_type __a(_M_get_Node_allocator()); - typedef allocator_traits<_Tp_alloc_type> _Alloc_traits; + _Node* + _M_create_node(_Args&&... __args) + { + _Node* __node = this->_M_get_node(); + __try + { ::new ((void*)__node) _Node; - _Alloc_traits::construct(__a, __node->_M_valptr(), - std::forward<_Args>(__args)...); - } - __catch(...) - { - this->_M_put_node(__node); - __throw_exception_again; - } - return __node; - } + _Node_alloc_traits::construct(_M_get_Node_allocator(), + __node->_M_valptr(), + std::forward<_Args>(__args)...); + } + __catch(...) + { + this->_M_put_node(__node); + __throw_exception_again; + } + return __node; + } template - _Fwd_list_node_base* - _M_insert_after(const_iterator __pos, _Args&&... __args); + _Fwd_list_node_base* + _M_insert_after(const_iterator __pos, _Args&&... __args); void _M_put_node(_Node* __p) @@ -375,8 +391,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_erase_after(_Fwd_list_node_base* __pos); _Fwd_list_node_base* - _M_erase_after(_Fwd_list_node_base* __pos, - _Fwd_list_node_base* __last); + _M_erase_after(_Fwd_list_node_base* __pos, + _Fwd_list_node_base* __last); }; /** @@ -405,41 +421,44 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * specialized algorithms %unique to linked lists, such as * splicing, sorting, and in-place reversal. */ - template > + template> class forward_list : private _Fwd_list_base<_Tp, _Alloc> { + static_assert(is_same::type, _Tp>::value, + "std::forward_list must have a non-const, non-volatile value_type"); +#ifdef __STRICT_ANSI__ + static_assert(is_same::value, + "std::forward_list must have the same value_type as its allocator"); +#endif + private: - typedef _Fwd_list_base<_Tp, _Alloc> _Base; - typedef _Fwd_list_node<_Tp> _Node; - typedef _Fwd_list_node_base _Node_base; - typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; - typedef typename _Base::_Node_alloc_type _Node_alloc_type; - typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; - typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; + typedef _Fwd_list_base<_Tp, _Alloc> _Base; + typedef _Fwd_list_node<_Tp> _Node; + typedef _Fwd_list_node_base _Node_base; + typedef typename _Base::_Node_alloc_type _Node_alloc_type; + typedef typename _Base::_Node_alloc_traits _Node_alloc_traits; + typedef allocator_traits<__alloc_rebind<_Alloc, _Tp>> _Alloc_traits; public: // types: - typedef _Tp value_type; - typedef typename _Alloc_traits::pointer pointer; - typedef typename _Alloc_traits::const_pointer const_pointer; - typedef value_type& reference; - typedef const value_type& const_reference; - - typedef _Fwd_list_iterator<_Tp> iterator; - typedef _Fwd_list_const_iterator<_Tp> const_iterator; - typedef std::size_t size_type; - typedef std::ptrdiff_t difference_type; - typedef _Alloc allocator_type; + typedef _Tp value_type; + typedef typename _Alloc_traits::pointer pointer; + typedef typename _Alloc_traits::const_pointer const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + typedef _Fwd_list_iterator<_Tp> iterator; + typedef _Fwd_list_const_iterator<_Tp> const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef _Alloc allocator_type; // 23.3.4.2 construct/copy/destroy: /** * @brief Creates a %forward_list with no elements. */ - forward_list() - noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) - : _Base() - { } + forward_list() = default; /** * @brief Creates a %forward_list with no elements. @@ -450,7 +469,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER : _Base(_Node_alloc_type(__al)) { } - /** * @brief Copy constructor with allocator argument. * @param __list Input list to copy. @@ -460,14 +478,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER : _Base(_Node_alloc_type(__al)) { _M_range_initialize(__list.begin(), __list.end()); } - /** - * @brief Move constructor with allocator argument. - * @param __list Input list to move. - * @param __al An allocator object. - */ - forward_list(forward_list&& __list, const _Alloc& __al) - noexcept(_Node_alloc_traits::_S_always_equal()) - : _Base(std::move(__list), _Node_alloc_type(__al)) + private: + forward_list(forward_list&& __list, _Node_alloc_type&& __al, + false_type) + : _Base(std::move(__list), std::move(__al)) { // If __list is not empty it means its allocator is not equal to __a, // so we need to move from each element individually. @@ -476,6 +490,24 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER std::__make_move_if_noexcept_iterator(__list.end())); } + forward_list(forward_list&& __list, _Node_alloc_type&& __al, + true_type) + noexcept + : _Base(std::move(__list), _Node_alloc_type(__al), true_type{}) + { } + + public: + /** + * @brief Move constructor with allocator argument. + * @param __list Input list to move. + * @param __al An allocator object. + */ + forward_list(forward_list&& __list, const _Alloc& __al) + noexcept(_Node_alloc_traits::_S_always_equal()) + : forward_list(std::move(__list), _Node_alloc_type(__al), + typename _Node_alloc_traits::is_always_equal{}) + { } + /** * @brief Creates a %forward_list with default constructed elements. * @param __n The number of elements to initially create. @@ -499,7 +531,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * @a __value. */ forward_list(size_type __n, const _Tp& __value, - const _Alloc& __al = _Alloc()) + const _Alloc& __al = _Alloc()) : _Base(_Node_alloc_type(__al)) { _M_fill_initialize(__n, __value); } @@ -515,10 +547,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ template> - forward_list(_InputIterator __first, _InputIterator __last, - const _Alloc& __al = _Alloc()) + forward_list(_InputIterator __first, _InputIterator __last, + const _Alloc& __al = _Alloc()) : _Base(_Node_alloc_type(__al)) - { _M_range_initialize(__first, __last); } + { _M_range_initialize(__first, __last); } /** * @brief The %forward_list copy constructor. @@ -527,7 +559,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ forward_list(const forward_list& __list) : _Base(_Node_alloc_traits::_S_select_on_copy( - __list._M_get_Node_allocator())) + __list._M_get_Node_allocator())) { _M_range_initialize(__list.begin(), __list.end()); } /** @@ -535,12 +567,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * @param __list A %forward_list of identical element and allocator * types. * - * The newly-created %forward_list contains the exact contents of @a - * __list. The contents of @a __list are a valid, but unspecified - * %forward_list. + * The newly-created %forward_list contains the exact contents of the + * moved instance. The contents of the moved instance are a valid, but + * unspecified %forward_list. */ - forward_list(forward_list&& __list) noexcept - : _Base(std::move(__list)) { } + forward_list(forward_list&&) = default; /** * @brief Builds a %forward_list from an initializer_list @@ -551,7 +582,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * in the initializer_list @a __il. This is linear in __il.size(). */ forward_list(std::initializer_list<_Tp> __il, - const _Alloc& __al = _Alloc()) + const _Alloc& __al = _Alloc()) : _Base(_Node_alloc_type(__al)) { _M_range_initialize(__il.begin(), __il.end()); } @@ -589,10 +620,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER operator=(forward_list&& __list) noexcept(_Node_alloc_traits::_S_nothrow_move()) { - constexpr bool __move_storage = - _Node_alloc_traits::_S_propagate_on_move_assign() - || _Node_alloc_traits::_S_always_equal(); - _M_move_assign(std::move(__list), __bool_constant<__move_storage>()); + constexpr bool __move_storage = + _Node_alloc_traits::_S_propagate_on_move_assign() + || _Node_alloc_traits::_S_always_equal(); + _M_move_assign(std::move(__list), __bool_constant<__move_storage>()); return *this; } @@ -607,8 +638,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER forward_list& operator=(std::initializer_list<_Tp> __il) { - assign(__il); - return *this; + assign(__il); + return *this; } /** @@ -626,8 +657,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template> void - assign(_InputIterator __first, _InputIterator __last) - { + assign(_InputIterator __first, _InputIterator __last) + { typedef is_assignable<_Tp, decltype(*__first)> __assignable; _M_assign(__first, __last, __assignable()); } @@ -706,7 +737,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ iterator end() noexcept - { return iterator(0); } + { return iterator(nullptr); } /** * Returns a read-only iterator that points one past the last @@ -715,7 +746,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ const_iterator end() const noexcept - { return const_iterator(0); } + { return const_iterator(nullptr); } /** * Returns a read-only (constant) iterator that points to the @@ -742,7 +773,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ const_iterator cend() const noexcept - { return const_iterator(0); } + { return const_iterator(nullptr); } /** * Returns true if the %forward_list is empty. (Thus begin() would @@ -750,7 +781,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ bool empty() const noexcept - { return this->_M_impl._M_head._M_next == 0; } + { return this->_M_impl._M_head._M_next == nullptr; } /** * Returns the largest possible number of elements of %forward_list. @@ -768,8 +799,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER reference front() { - _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next); - return *__front->_M_valptr(); + _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next); + return *__front->_M_valptr(); } /** @@ -779,8 +810,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER const_reference front() const { - _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next); - return *__front->_M_valptr(); + _Node* __front = static_cast<_Node*>(this->_M_impl._M_head._M_next); + return *__front->_M_valptr(); } // 23.3.4.5 modifiers: @@ -798,14 +829,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ template #if __cplusplus > 201402L - reference + reference #else void #endif - emplace_front(_Args&&... __args) - { + emplace_front(_Args&&... __args) + { this->_M_insert_after(cbefore_begin(), - std::forward<_Args>(__args)...); + std::forward<_Args>(__args)...); #if __cplusplus > 201402L return front(); #endif @@ -862,10 +893,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * and references. */ template - iterator - emplace_after(const_iterator __pos, _Args&&... __args) - { return iterator(this->_M_insert_after(__pos, - std::forward<_Args>(__args)...)); } + iterator + emplace_after(const_iterator __pos, _Args&&... __args) + { return iterator(this->_M_insert_after(__pos, + std::forward<_Args>(__args)...)); } /** * @brief Inserts given value into %forward_list after specified @@ -925,9 +956,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ template> - iterator - insert_after(const_iterator __pos, - _InputIterator __first, _InputIterator __last); + iterator + insert_after(const_iterator __pos, + _InputIterator __first, _InputIterator __last); /** * @brief Inserts the contents of an initializer_list into @@ -1010,10 +1041,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER void swap(forward_list& __list) noexcept { - std::swap(this->_M_impl._M_head._M_next, + std::swap(this->_M_impl._M_head._M_next, __list._M_impl._M_head._M_next); _Node_alloc_traits::_S_on_swap(this->_M_get_Node_allocator(), - __list._M_get_Node_allocator()); + __list._M_get_Node_allocator()); } /** @@ -1055,7 +1086,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ void clear() noexcept - { this->_M_erase_after(&this->_M_impl._M_head, 0); } + { this->_M_erase_after(&this->_M_impl._M_head, nullptr); } // 23.3.4.6 forward_list operations: @@ -1093,11 +1124,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ void splice_after(const_iterator __pos, forward_list&& __list, - const_iterator __i) noexcept; + const_iterator __i) noexcept; void splice_after(const_iterator __pos, forward_list& __list, - const_iterator __i) noexcept + const_iterator __i) noexcept { splice_after(__pos, std::move(__list), __i); } /** @@ -1116,12 +1147,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER */ void splice_after(const_iterator __pos, forward_list&&, - const_iterator __before, const_iterator __last) noexcept + const_iterator __before, const_iterator __last) noexcept { _M_splice_after(__pos, __before, __last); } void splice_after(const_iterator __pos, forward_list&, - const_iterator __before, const_iterator __last) noexcept + const_iterator __before, const_iterator __last) noexcept { _M_splice_after(__pos, __before, __last); } // @} @@ -1151,8 +1182,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * responsibility. */ template - void - remove_if(_Pred __pred); + void + remove_if(_Pred __pred); /** * @brief Remove consecutive duplicate elements. @@ -1181,8 +1212,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * Managing the pointer is the user's responsibility. */ template - void - unique(_BinPred __binary_pred); + void + unique(_BinPred __binary_pred); /** * @brief Merge sorted lists. @@ -1213,13 +1244,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * according to comp(). */ template - void - merge(forward_list&& __list, _Comp __comp); + void + merge(forward_list&& __list, _Comp __comp); template - void - merge(forward_list& __list, _Comp __comp) - { merge(std::move(__list), __comp); } + void + merge(forward_list& __list, _Comp __comp) + { merge(std::move(__list), __comp); } /** * @brief Sort the elements of the list. @@ -1238,8 +1269,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * elements remain in list order. */ template - void - sort(_Comp __comp); + void + sort(_Comp __comp); /** * @brief Reverse the elements in list. @@ -1253,8 +1284,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER private: // Called by the range constructor to implement [23.3.4.2]/9 template - void - _M_range_initialize(_InputIterator __first, _InputIterator __last); + void + _M_range_initialize(_InputIterator __first, _InputIterator __last); // Called by forward_list(n,v,a), and the range constructor when it // turns out to be the same thing. @@ -1276,22 +1307,22 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER // Called by operator=(forward_list&&) void - _M_move_assign(forward_list&& __list, std::true_type) noexcept + _M_move_assign(forward_list&& __list, true_type) noexcept { - clear(); - this->_M_impl._M_head._M_next = __list._M_impl._M_head._M_next; - __list._M_impl._M_head._M_next = nullptr; - std::__alloc_on_move(this->_M_get_Node_allocator(), - __list._M_get_Node_allocator()); + clear(); + this->_M_impl._M_head._M_next = __list._M_impl._M_head._M_next; + __list._M_impl._M_head._M_next = nullptr; + std::__alloc_on_move(this->_M_get_Node_allocator(), + __list._M_get_Node_allocator()); } // Called by operator=(forward_list&&) void - _M_move_assign(forward_list&& __list, std::false_type) + _M_move_assign(forward_list&& __list, false_type) { - if (__list._M_get_Node_allocator() == this->_M_get_Node_allocator()) - _M_move_assign(std::move(__list), std::true_type()); - else + if (__list._M_get_Node_allocator() == this->_M_get_Node_allocator()) + _M_move_assign(std::move(__list), true_type()); + else // The rvalue's allocator cannot be moved, or is not equal, // so we need to individually move each element. this->assign(std::__make_move_if_noexcept_iterator(__list.begin()), @@ -1302,7 +1333,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER // CopyAssignable. template void - _M_assign(_InputIterator __first, _InputIterator __last, true_type) + _M_assign(_InputIterator __first, _InputIterator __last, true_type) { auto __prev = before_begin(); auto __curr = begin(); @@ -1318,13 +1349,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER insert_after(__prev, __first, __last); else if (__curr != __end) erase_after(__prev, __end); - } + } // Called by assign(_InputIterator, _InputIterator) if _Tp is not // CopyAssignable. template void - _M_assign(_InputIterator __first, _InputIterator __last, false_type) + _M_assign(_InputIterator __first, _InputIterator __last, false_type) { clear(); insert_after(cbefore_begin(), __first, __last); @@ -1359,20 +1390,30 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER } }; +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + forward_list(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> forward_list<_ValT, _Allocator>; +#endif + /** * @brief Forward list equality comparison. * @param __lx A %forward_list * @param __ly A %forward_list of the same type as @a __lx. * @return True iff the elements of the forward lists are equal. * - * This is an equivalence relation. It is linear in the number of + * This is an equivalence relation. It is linear in the number of * elements of the forward lists. Deques are considered equivalent * if corresponding elements compare equal. */ template bool operator==(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly); + const forward_list<_Tp, _Alloc>& __ly); /** * @brief Forward list ordering relation. @@ -1380,7 +1421,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * @param __ly A %forward_list of the same type as @a __lx. * @return True iff @a __lx is lexicographically less than @a __ly. * - * This is a total ordering relation. It is linear in the number of + * This is a total ordering relation. It is linear in the number of * elements of the forward lists. The elements must be comparable * with @c <. * @@ -1389,7 +1430,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template inline bool operator<(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) + const forward_list<_Tp, _Alloc>& __ly) { return std::lexicographical_compare(__lx.cbegin(), __lx.cend(), __ly.cbegin(), __ly.cend()); } @@ -1397,28 +1438,28 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template inline bool operator!=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) + const forward_list<_Tp, _Alloc>& __ly) { return !(__lx == __ly); } /// Based on operator< template inline bool operator>(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) + const forward_list<_Tp, _Alloc>& __ly) { return (__ly < __lx); } /// Based on operator< template inline bool operator>=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) + const forward_list<_Tp, _Alloc>& __ly) { return !(__lx < __ly); } /// Based on operator< template inline bool operator<=(const forward_list<_Tp, _Alloc>& __lx, - const forward_list<_Tp, _Alloc>& __ly) + const forward_list<_Tp, _Alloc>& __ly) { return !(__ly < __lx); } /// See std::forward_list::swap(). @@ -1430,6 +1471,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { __lx.swap(__ly); } _GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // _FORWARD_LIST_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/forward_list.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/forward_list.tcc new file mode 100644 index 000000000..fb90e81c3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/forward_list.tcc @@ -0,0 +1,493 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2018 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 +// . + +/** @file bits/forward_list.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{forward_list} + */ + +#ifndef _FORWARD_LIST_TCC +#define _FORWARD_LIST_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + template + _Fwd_list_base<_Tp, _Alloc>:: + _Fwd_list_base(_Fwd_list_base&& __lst, _Node_alloc_type&& __a) + : _M_impl(std::move(__a)) + { + if (__lst._M_get_Node_allocator() == _M_get_Node_allocator()) + this->_M_impl._M_head = std::move(__lst._M_impl._M_head); + } + + template + template + _Fwd_list_node_base* + _Fwd_list_base<_Tp, _Alloc>:: + _M_insert_after(const_iterator __pos, _Args&&... __args) + { + _Fwd_list_node_base* __to + = const_cast<_Fwd_list_node_base*>(__pos._M_node); + _Node* __thing = _M_create_node(std::forward<_Args>(__args)...); + __thing->_M_next = __to->_M_next; + __to->_M_next = __thing; + return __to->_M_next; + } + + template + _Fwd_list_node_base* + _Fwd_list_base<_Tp, _Alloc>:: + _M_erase_after(_Fwd_list_node_base* __pos) + { + _Node* __curr = static_cast<_Node*>(__pos->_M_next); + __pos->_M_next = __curr->_M_next; + _Node_alloc_traits::destroy(_M_get_Node_allocator(), + __curr->_M_valptr()); + __curr->~_Node(); + _M_put_node(__curr); + return __pos->_M_next; + } + + template + _Fwd_list_node_base* + _Fwd_list_base<_Tp, _Alloc>:: + _M_erase_after(_Fwd_list_node_base* __pos, + _Fwd_list_node_base* __last) + { + _Node* __curr = static_cast<_Node*>(__pos->_M_next); + while (__curr != __last) + { + _Node* __temp = __curr; + __curr = static_cast<_Node*>(__curr->_M_next); + _Node_alloc_traits::destroy(_M_get_Node_allocator(), + __temp->_M_valptr()); + __temp->~_Node(); + _M_put_node(__temp); + } + __pos->_M_next = __last; + return __last; + } + + // Called by the range constructor to implement [23.3.4.2]/9 + template + template + void + forward_list<_Tp, _Alloc>:: + _M_range_initialize(_InputIterator __first, _InputIterator __last) + { + _Node_base* __to = &this->_M_impl._M_head; + for (; __first != __last; ++__first) + { + __to->_M_next = this->_M_create_node(*__first); + __to = __to->_M_next; + } + } + + // Called by forward_list(n,v,a). + template + void + forward_list<_Tp, _Alloc>:: + _M_fill_initialize(size_type __n, const value_type& __value) + { + _Node_base* __to = &this->_M_impl._M_head; + for (; __n; --__n) + { + __to->_M_next = this->_M_create_node(__value); + __to = __to->_M_next; + } + } + + template + void + forward_list<_Tp, _Alloc>:: + _M_default_initialize(size_type __n) + { + _Node_base* __to = &this->_M_impl._M_head; + for (; __n; --__n) + { + __to->_M_next = this->_M_create_node(); + __to = __to->_M_next; + } + } + + template + forward_list<_Tp, _Alloc>& + forward_list<_Tp, _Alloc>:: + operator=(const forward_list& __list) + { + if (std::__addressof(__list) != this) + { + if (_Node_alloc_traits::_S_propagate_on_copy_assign()) + { + auto& __this_alloc = this->_M_get_Node_allocator(); + auto& __that_alloc = __list._M_get_Node_allocator(); + if (!_Node_alloc_traits::_S_always_equal() + && __this_alloc != __that_alloc) + { + // replacement allocator cannot free existing storage + clear(); + } + std::__alloc_on_copy(__this_alloc, __that_alloc); + } + assign(__list.cbegin(), __list.cend()); + } + return *this; + } + + template + void + forward_list<_Tp, _Alloc>:: + _M_default_insert_after(const_iterator __pos, size_type __n) + { + const_iterator __saved_pos = __pos; + __try + { + for (; __n; --__n) + __pos = emplace_after(__pos); + } + __catch(...) + { + erase_after(__saved_pos, ++__pos); + __throw_exception_again; + } + } + + template + void + forward_list<_Tp, _Alloc>:: + resize(size_type __sz) + { + iterator __k = before_begin(); + + size_type __len = 0; + while (__k._M_next() != end() && __len < __sz) + { + ++__k; + ++__len; + } + if (__len == __sz) + erase_after(__k, end()); + else + _M_default_insert_after(__k, __sz - __len); + } + + template + void + forward_list<_Tp, _Alloc>:: + resize(size_type __sz, const value_type& __val) + { + iterator __k = before_begin(); + + size_type __len = 0; + while (__k._M_next() != end() && __len < __sz) + { + ++__k; + ++__len; + } + if (__len == __sz) + erase_after(__k, end()); + else + insert_after(__k, __sz - __len, __val); + } + + template + typename forward_list<_Tp, _Alloc>::iterator + forward_list<_Tp, _Alloc>:: + _M_splice_after(const_iterator __pos, + const_iterator __before, const_iterator __last) + { + _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); + _Node_base* __b = const_cast<_Node_base*>(__before._M_node); + _Node_base* __end = __b; + + while (__end && __end->_M_next != __last._M_node) + __end = __end->_M_next; + + if (__b != __end) + return iterator(__tmp->_M_transfer_after(__b, __end)); + else + return iterator(__tmp); + } + + template + void + forward_list<_Tp, _Alloc>:: + splice_after(const_iterator __pos, forward_list&&, + const_iterator __i) noexcept + { + const_iterator __j = __i; + ++__j; + + if (__pos == __i || __pos == __j) + return; + + _Node_base* __tmp = const_cast<_Node_base*>(__pos._M_node); + __tmp->_M_transfer_after(const_cast<_Node_base*>(__i._M_node), + const_cast<_Node_base*>(__j._M_node)); + } + + template + typename forward_list<_Tp, _Alloc>::iterator + forward_list<_Tp, _Alloc>:: + insert_after(const_iterator __pos, size_type __n, const _Tp& __val) + { + if (__n) + { + forward_list __tmp(__n, __val, get_allocator()); + return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); + } + else + return iterator(const_cast<_Node_base*>(__pos._M_node)); + } + + template + template + typename forward_list<_Tp, _Alloc>::iterator + forward_list<_Tp, _Alloc>:: + insert_after(const_iterator __pos, + _InputIterator __first, _InputIterator __last) + { + forward_list __tmp(__first, __last, get_allocator()); + if (!__tmp.empty()) + return _M_splice_after(__pos, __tmp.before_begin(), __tmp.end()); + else + return iterator(const_cast<_Node_base*>(__pos._M_node)); + } + + template + void + forward_list<_Tp, _Alloc>:: + remove(const _Tp& __val) + { + _Node_base* __curr = &this->_M_impl._M_head; + _Node_base* __extra = nullptr; + + while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next)) + { + if (*__tmp->_M_valptr() == __val) + { + if (__tmp->_M_valptr() != std::__addressof(__val)) + { + this->_M_erase_after(__curr); + continue; + } + else + __extra = __curr; + } + __curr = __curr->_M_next; + } + + if (__extra) + this->_M_erase_after(__extra); + } + + template + template + void + forward_list<_Tp, _Alloc>:: + remove_if(_Pred __pred) + { + _Node_base* __curr = &this->_M_impl._M_head; + while (_Node* __tmp = static_cast<_Node*>(__curr->_M_next)) + { + if (__pred(*__tmp->_M_valptr())) + this->_M_erase_after(__curr); + else + __curr = __curr->_M_next; + } + } + + template + template + void + forward_list<_Tp, _Alloc>:: + unique(_BinPred __binary_pred) + { + iterator __first = begin(); + iterator __last = end(); + if (__first == __last) + return; + iterator __next = __first; + while (++__next != __last) + { + if (__binary_pred(*__first, *__next)) + erase_after(__first); + else + __first = __next; + __next = __first; + } + } + + template + template + void + forward_list<_Tp, _Alloc>:: + merge(forward_list&& __list, _Comp __comp) + { + _Node_base* __node = &this->_M_impl._M_head; + while (__node->_M_next && __list._M_impl._M_head._M_next) + { + if (__comp(*static_cast<_Node*> + (__list._M_impl._M_head._M_next)->_M_valptr(), + *static_cast<_Node*> + (__node->_M_next)->_M_valptr())) + __node->_M_transfer_after(&__list._M_impl._M_head, + __list._M_impl._M_head._M_next); + __node = __node->_M_next; + } + + if (__list._M_impl._M_head._M_next) + *__node = std::move(__list._M_impl._M_head); + } + + template + bool + operator==(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { + // We don't have size() so we need to walk through both lists + // making sure both iterators are valid. + auto __ix = __lx.cbegin(); + auto __iy = __ly.cbegin(); + while (__ix != __lx.cend() && __iy != __ly.cend()) + { + if (!(*__ix == *__iy)) + return false; + ++__ix; + ++__iy; + } + if (__ix == __lx.cend() && __iy == __ly.cend()) + return true; + else + return false; + } + + template + template + void + forward_list<_Tp, _Alloc>:: + sort(_Comp __comp) + { + // If `next' is nullptr, return immediately. + _Node* __list = static_cast<_Node*>(this->_M_impl._M_head._M_next); + if (!__list) + return; + + unsigned long __insize = 1; + + while (1) + { + _Node* __p = __list; + __list = nullptr; + _Node* __tail = nullptr; + + // Count number of merges we do in this pass. + unsigned long __nmerges = 0; + + while (__p) + { + ++__nmerges; + // There exists a merge to be done. + // Step `insize' places along from p. + _Node* __q = __p; + unsigned long __psize = 0; + for (unsigned long __i = 0; __i < __insize; ++__i) + { + ++__psize; + __q = static_cast<_Node*>(__q->_M_next); + if (!__q) + break; + } + + // If q hasn't fallen off end, we have two lists to merge. + unsigned long __qsize = __insize; + + // Now we have two lists; merge them. + while (__psize > 0 || (__qsize > 0 && __q)) + { + // Decide whether next node of merge comes from p or q. + _Node* __e; + if (__psize == 0) + { + // p is empty; e must come from q. + __e = __q; + __q = static_cast<_Node*>(__q->_M_next); + --__qsize; + } + else if (__qsize == 0 || !__q) + { + // q is empty; e must come from p. + __e = __p; + __p = static_cast<_Node*>(__p->_M_next); + --__psize; + } + else if (!__comp(*__q->_M_valptr(), *__p->_M_valptr())) + { + // First node of q is not lower; e must come from p. + __e = __p; + __p = static_cast<_Node*>(__p->_M_next); + --__psize; + } + else + { + // First node of q is lower; e must come from q. + __e = __q; + __q = static_cast<_Node*>(__q->_M_next); + --__qsize; + } + + // Add the next node to the merged list. + if (__tail) + __tail->_M_next = __e; + else + __list = __e; + __tail = __e; + } + + // Now p has stepped `insize' places along, and q has too. + __p = __q; + } + __tail->_M_next = nullptr; + + // If we have done only one merge, we're finished. + // Allow for nmerges == 0, the empty list case. + if (__nmerges <= 1) + { + this->_M_impl._M_head._M_next = __list; + return; + } + + // Otherwise repeat, merging lists twice the size. + __insize *= 2; + } + } + +_GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif /* _FORWARD_LIST_TCC */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_dir.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_dir.h new file mode 100644 index 000000000..9ee1cb66b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_dir.h @@ -0,0 +1,533 @@ +// Filesystem directory utilities -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file include/bits/fs_dir.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{filesystem} + */ + +#ifndef _GLIBCXX_FS_DIR_H +#define _GLIBCXX_FS_DIR_H 1 + +#if __cplusplus >= 201703L +# include +# include +# include +# include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace filesystem +{ + /** + * @ingroup filesystem + * @{ + */ + + class file_status + { + public: + // constructors and destructor + file_status() noexcept : file_status(file_type::none) {} + + explicit + file_status(file_type __ft, perms __prms = perms::unknown) noexcept + : _M_type(__ft), _M_perms(__prms) { } + + file_status(const file_status&) noexcept = default; + file_status(file_status&&) noexcept = default; + ~file_status() = default; + + file_status& operator=(const file_status&) noexcept = default; + file_status& operator=(file_status&&) noexcept = default; + + // observers + file_type type() const noexcept { return _M_type; } + perms permissions() const noexcept { return _M_perms; } + + // modifiers + void type(file_type __ft) noexcept { _M_type = __ft; } + void permissions(perms __prms) noexcept { _M_perms = __prms; } + + private: + file_type _M_type; + perms _M_perms; + }; + +_GLIBCXX_BEGIN_NAMESPACE_CXX11 + + struct _Dir; + class directory_iterator; + class recursive_directory_iterator; + + class directory_entry + { + public: + // constructors and destructor + directory_entry() noexcept = default; + directory_entry(const directory_entry&) = default; + directory_entry(directory_entry&&) noexcept = default; + + explicit + directory_entry(const filesystem::path& __p) + : _M_path(__p) + { refresh(); } + + directory_entry(const filesystem::path& __p, error_code& __ec) + : _M_path(__p) + { + refresh(__ec); + if (__ec) + _M_path.clear(); + } + + ~directory_entry() = default; + + // modifiers + directory_entry& operator=(const directory_entry&) = default; + directory_entry& operator=(directory_entry&&) noexcept = default; + + void + assign(const filesystem::path& __p) + { + _M_path = __p; + refresh(); + } + + void + assign(const filesystem::path& __p, error_code& __ec) + { + _M_path = __p; + refresh(__ec); + } + + void + replace_filename(const filesystem::path& __p) + { + _M_path.replace_filename(__p); + refresh(); + } + + void + replace_filename(const filesystem::path& __p, error_code& __ec) + { + _M_path.replace_filename(__p); + refresh(__ec); + } + + void + refresh() + { _M_type = symlink_status().type(); } + + void + refresh(error_code& __ec) noexcept + { _M_type = symlink_status(__ec).type(); } + + // observers + const filesystem::path& path() const noexcept { return _M_path; } + operator const filesystem::path& () const noexcept { return _M_path; } + + bool + exists() const + { return filesystem::exists(file_status{_M_file_type()}); } + + bool + exists(error_code& __ec) const noexcept + { return filesystem::exists(file_status{_M_file_type(__ec)}); } + + bool + is_block_file() const + { return _M_file_type() == file_type::block; } + + bool + is_block_file(error_code& __ec) const noexcept + { return _M_file_type(__ec) == file_type::block; } + + bool + is_character_file() const + { return _M_file_type() == file_type::character; } + + bool + is_character_file(error_code& __ec) const noexcept + { return _M_file_type(__ec) == file_type::character; } + + bool + is_directory() const + { return _M_file_type() == file_type::directory; } + + bool + is_directory(error_code& __ec) const noexcept + { return _M_file_type(__ec) == file_type::directory; } + + bool + is_fifo() const + { return _M_file_type() == file_type::fifo; } + + bool + is_fifo(error_code& __ec) const noexcept + { return _M_file_type(__ec) == file_type::fifo; } + + bool + is_other() const + { return filesystem::is_other(file_status{_M_file_type()}); } + + bool + is_other(error_code& __ec) const noexcept + { return filesystem::is_other(file_status{_M_file_type(__ec)}); } + + bool + is_regular_file() const + { return _M_file_type() == file_type::regular; } + + bool + is_regular_file(error_code& __ec) const noexcept + { return _M_file_type(__ec) == file_type::regular; } + + bool + is_socket() const + { return _M_file_type() == file_type::socket; } + + bool + is_socket(error_code& __ec) const noexcept + { return _M_file_type(__ec) == file_type::socket; } + + bool + is_symlink() const + { + if (_M_type != file_type::none) + return _M_type == file_type::symlink; + return symlink_status().type() == file_type::symlink; + } + + bool + is_symlink(error_code& __ec) const noexcept + { + if (_M_type != file_type::none) + return _M_type == file_type::symlink; + return symlink_status(__ec).type() == file_type::symlink; + } + + uintmax_t + file_size() const + { return filesystem::file_size(_M_path); } + + uintmax_t + file_size(error_code& __ec) const noexcept + { return filesystem::file_size(_M_path, __ec); } + + uintmax_t + hard_link_count() const + { return filesystem::hard_link_count(_M_path); } + + uintmax_t + hard_link_count(error_code& __ec) const noexcept + { return filesystem::hard_link_count(_M_path, __ec); } + + file_time_type + last_write_time() const + { return filesystem::last_write_time(_M_path); } + + + file_time_type + last_write_time(error_code& __ec) const noexcept + { return filesystem::last_write_time(_M_path, __ec); } + + file_status + status() const + { return filesystem::status(_M_path); } + + file_status + status(error_code& __ec) const noexcept + { return filesystem::status(_M_path, __ec); } + + file_status + symlink_status() const + { return filesystem::symlink_status(_M_path); } + + file_status + symlink_status(error_code& __ec) const noexcept + { return filesystem::symlink_status(_M_path, __ec); } + + bool + operator< (const directory_entry& __rhs) const noexcept + { return _M_path < __rhs._M_path; } + + bool + operator==(const directory_entry& __rhs) const noexcept + { return _M_path == __rhs._M_path; } + + bool + operator!=(const directory_entry& __rhs) const noexcept + { return _M_path != __rhs._M_path; } + + bool + operator<=(const directory_entry& __rhs) const noexcept + { return _M_path <= __rhs._M_path; } + + bool + operator> (const directory_entry& __rhs) const noexcept + { return _M_path > __rhs._M_path; } + + bool + operator>=(const directory_entry& __rhs) const noexcept + { return _M_path >= __rhs._M_path; } + + private: + friend class _Dir; + friend class directory_iterator; + friend class recursive_directory_iterator; + + directory_entry(const filesystem::path& __p, file_type __t) + : _M_path(__p), _M_type(__t) + { } + + // Equivalent to status().type() but uses cached value, if any. + file_type + _M_file_type() const + { + if (_M_type != file_type::none && _M_type != file_type::symlink) + return _M_type; + return status().type(); + } + + // Equivalent to status(__ec).type() but uses cached value, if any. + file_type + _M_file_type(error_code& __ec) const noexcept + { + if (_M_type != file_type::none && _M_type != file_type::symlink) + { + __ec.clear(); + return _M_type; + } + return status(__ec).type(); + } + + filesystem::path _M_path; + file_type _M_type = file_type::none; + }; + + struct __directory_iterator_proxy + { + const directory_entry& operator*() const& noexcept { return _M_entry; } + + directory_entry operator*() && noexcept { return std::move(_M_entry); } + + private: + friend class directory_iterator; + friend class recursive_directory_iterator; + + explicit + __directory_iterator_proxy(const directory_entry& __e) : _M_entry(__e) { } + + directory_entry _M_entry; + }; + + class directory_iterator + { + public: + typedef directory_entry value_type; + typedef ptrdiff_t difference_type; + typedef const directory_entry* pointer; + typedef const directory_entry& reference; + typedef input_iterator_tag iterator_category; + + directory_iterator() = default; + + explicit + directory_iterator(const path& __p) + : directory_iterator(__p, directory_options::none, nullptr) { } + + directory_iterator(const path& __p, directory_options __options) + : directory_iterator(__p, __options, nullptr) { } + + directory_iterator(const path& __p, error_code& __ec) + : directory_iterator(__p, directory_options::none, __ec) { } + + directory_iterator(const path& __p, directory_options __options, + error_code& __ec) + : directory_iterator(__p, __options, &__ec) { } + + directory_iterator(const directory_iterator& __rhs) = default; + + directory_iterator(directory_iterator&& __rhs) noexcept = default; + + ~directory_iterator() = default; + + directory_iterator& + operator=(const directory_iterator& __rhs) = default; + + directory_iterator& + operator=(directory_iterator&& __rhs) noexcept = default; + + const directory_entry& operator*() const; + const directory_entry* operator->() const { return &**this; } + directory_iterator& operator++(); + directory_iterator& increment(error_code& __ec); + + __directory_iterator_proxy operator++(int) + { + __directory_iterator_proxy __pr{**this}; + ++*this; + return __pr; + } + + private: + directory_iterator(const path&, directory_options, error_code*); + + friend bool + operator==(const directory_iterator& __lhs, + const directory_iterator& __rhs); + + friend class recursive_directory_iterator; + + std::shared_ptr<_Dir> _M_dir; + }; + + inline directory_iterator + begin(directory_iterator __iter) noexcept + { return __iter; } + + inline directory_iterator + end(directory_iterator) noexcept + { return directory_iterator(); } + + inline bool + operator==(const directory_iterator& __lhs, const directory_iterator& __rhs) + { + return !__rhs._M_dir.owner_before(__lhs._M_dir) + && !__lhs._M_dir.owner_before(__rhs._M_dir); + } + + inline bool + operator!=(const directory_iterator& __lhs, const directory_iterator& __rhs) + { return !(__lhs == __rhs); } + + class recursive_directory_iterator + { + public: + typedef directory_entry value_type; + typedef ptrdiff_t difference_type; + typedef const directory_entry* pointer; + typedef const directory_entry& reference; + typedef input_iterator_tag iterator_category; + + recursive_directory_iterator() = default; + + explicit + recursive_directory_iterator(const path& __p) + : recursive_directory_iterator(__p, directory_options::none, nullptr) { } + + recursive_directory_iterator(const path& __p, directory_options __options) + : recursive_directory_iterator(__p, __options, nullptr) { } + + recursive_directory_iterator(const path& __p, directory_options __options, + error_code& __ec) + : recursive_directory_iterator(__p, __options, &__ec) { } + + recursive_directory_iterator(const path& __p, error_code& __ec) + : recursive_directory_iterator(__p, directory_options::none, &__ec) { } + + recursive_directory_iterator( + const recursive_directory_iterator&) = default; + + recursive_directory_iterator(recursive_directory_iterator&&) = default; + + ~recursive_directory_iterator(); + + // observers + directory_options options() const { return _M_options; } + int depth() const; + bool recursion_pending() const { return _M_pending; } + + const directory_entry& operator*() const; + const directory_entry* operator->() const { return &**this; } + + // modifiers + recursive_directory_iterator& + operator=(const recursive_directory_iterator& __rhs) noexcept; + recursive_directory_iterator& + operator=(recursive_directory_iterator&& __rhs) noexcept; + + recursive_directory_iterator& operator++(); + recursive_directory_iterator& increment(error_code& __ec); + + __directory_iterator_proxy operator++(int) + { + __directory_iterator_proxy __pr{**this}; + ++*this; + return __pr; + } + + void pop(); + void pop(error_code&); + + void disable_recursion_pending() { _M_pending = false; } + + private: + recursive_directory_iterator(const path&, directory_options, error_code*); + + friend bool + operator==(const recursive_directory_iterator& __lhs, + const recursive_directory_iterator& __rhs); + + struct _Dir_stack; + std::shared_ptr<_Dir_stack> _M_dirs; + directory_options _M_options = {}; + bool _M_pending = false; + }; + + inline recursive_directory_iterator + begin(recursive_directory_iterator __iter) noexcept + { return __iter; } + + inline recursive_directory_iterator + end(recursive_directory_iterator) noexcept + { return recursive_directory_iterator(); } + + inline bool + operator==(const recursive_directory_iterator& __lhs, + const recursive_directory_iterator& __rhs) + { + return !__rhs._M_dirs.owner_before(__lhs._M_dirs) + && !__lhs._M_dirs.owner_before(__rhs._M_dirs); + } + + inline bool + operator!=(const recursive_directory_iterator& __lhs, + const recursive_directory_iterator& __rhs) + { return !(__lhs == __rhs); } + +_GLIBCXX_END_NAMESPACE_CXX11 + + // @} group filesystem +} // namespace filesystem + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++17 + +#endif // _GLIBCXX_FS_DIR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_fwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_fwd.h new file mode 100644 index 000000000..27314ce1f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_fwd.h @@ -0,0 +1,348 @@ +// Filesystem declarations -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file include/bits/fs_fwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{filesystem} + */ + +#ifndef _GLIBCXX_FS_FWD_H +#define _GLIBCXX_FS_FWD_H 1 + +#if __cplusplus >= 201703L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace filesystem +{ +#if _GLIBCXX_USE_CXX11_ABI +inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } +#endif + + /** + * @defgroup filesystem Filesystem + * + * Utilities for performing operations on file systems and their components, + * such as paths, regular files, and directories. + * + * @{ + */ + + class file_status; +_GLIBCXX_BEGIN_NAMESPACE_CXX11 + class path; + class filesystem_error; + class directory_entry; + class directory_iterator; + class recursive_directory_iterator; +_GLIBCXX_END_NAMESPACE_CXX11 + + struct space_info + { + uintmax_t capacity; + uintmax_t free; + uintmax_t available; + }; + + enum class file_type : signed char { + none = 0, not_found = -1, regular = 1, directory = 2, symlink = 3, + block = 4, character = 5, fifo = 6, socket = 7, unknown = 8 + }; + + /// Bitmask type + enum class copy_options : unsigned short { + none = 0, + skip_existing = 1, overwrite_existing = 2, update_existing = 4, + recursive = 8, + copy_symlinks = 16, skip_symlinks = 32, + directories_only = 64, create_symlinks = 128, create_hard_links = 256 + }; + + constexpr copy_options + operator&(copy_options __x, copy_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) & static_cast<__utype>(__y)); + } + + constexpr copy_options + operator|(copy_options __x, copy_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) | static_cast<__utype>(__y)); + } + + constexpr copy_options + operator^(copy_options __x, copy_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) ^ static_cast<__utype>(__y)); + } + + constexpr copy_options + operator~(copy_options __x) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast(~static_cast<__utype>(__x)); + } + + inline copy_options& + operator&=(copy_options& __x, copy_options __y) noexcept + { return __x = __x & __y; } + + inline copy_options& + operator|=(copy_options& __x, copy_options __y) noexcept + { return __x = __x | __y; } + + inline copy_options& + operator^=(copy_options& __x, copy_options __y) noexcept + { return __x = __x ^ __y; } + + + /// Bitmask type + enum class perms : unsigned { + none = 0, + owner_read = 0400, + owner_write = 0200, + owner_exec = 0100, + owner_all = 0700, + group_read = 040, + group_write = 020, + group_exec = 010, + group_all = 070, + others_read = 04, + others_write = 02, + others_exec = 01, + others_all = 07, + all = 0777, + set_uid = 04000, + set_gid = 02000, + sticky_bit = 01000, + mask = 07777, + unknown = 0xFFFF, + }; + + constexpr perms + operator&(perms __x, perms __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) & static_cast<__utype>(__y)); + } + + constexpr perms + operator|(perms __x, perms __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) | static_cast<__utype>(__y)); + } + + constexpr perms + operator^(perms __x, perms __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) ^ static_cast<__utype>(__y)); + } + + constexpr perms + operator~(perms __x) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast(~static_cast<__utype>(__x)); + } + + inline perms& + operator&=(perms& __x, perms __y) noexcept + { return __x = __x & __y; } + + inline perms& + operator|=(perms& __x, perms __y) noexcept + { return __x = __x | __y; } + + inline perms& + operator^=(perms& __x, perms __y) noexcept + { return __x = __x ^ __y; } + + /// Bitmask type + enum class perm_options : unsigned { + replace = 0x1, + add = 0x2, + remove = 0x4, + nofollow = 0x8 + }; + + constexpr perm_options + operator&(perm_options __x, perm_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) & static_cast<__utype>(__y)); + } + + constexpr perm_options + operator|(perm_options __x, perm_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) | static_cast<__utype>(__y)); + } + + constexpr perm_options + operator^(perm_options __x, perm_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) ^ static_cast<__utype>(__y)); + } + + constexpr perm_options + operator~(perm_options __x) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast(~static_cast<__utype>(__x)); + } + + inline perm_options& + operator&=(perm_options& __x, perm_options __y) noexcept + { return __x = __x & __y; } + + inline perm_options& + operator|=(perm_options& __x, perm_options __y) noexcept + { return __x = __x | __y; } + + inline perm_options& + operator^=(perm_options& __x, perm_options __y) noexcept + { return __x = __x ^ __y; } + + // Bitmask type + enum class directory_options : unsigned char { + none = 0, follow_directory_symlink = 1, skip_permission_denied = 2 + }; + + constexpr directory_options + operator&(directory_options __x, directory_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) & static_cast<__utype>(__y)); + } + + constexpr directory_options + operator|(directory_options __x, directory_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) | static_cast<__utype>(__y)); + } + + constexpr directory_options + operator^(directory_options __x, directory_options __y) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast( + static_cast<__utype>(__x) ^ static_cast<__utype>(__y)); + } + + constexpr directory_options + operator~(directory_options __x) noexcept + { + using __utype = typename std::underlying_type::type; + return static_cast(~static_cast<__utype>(__x)); + } + + inline directory_options& + operator&=(directory_options& __x, directory_options __y) noexcept + { return __x = __x & __y; } + + inline directory_options& + operator|=(directory_options& __x, directory_options __y) noexcept + { return __x = __x | __y; } + + inline directory_options& + operator^=(directory_options& __x, directory_options __y) noexcept + { return __x = __x ^ __y; } + + using file_time_type = std::chrono::system_clock::time_point; + + // operational functions + + void copy(const path& __from, const path& __to, copy_options __options); + void copy(const path& __from, const path& __to, copy_options __options, + error_code&); + + bool copy_file(const path& __from, const path& __to, copy_options __option); + bool copy_file(const path& __from, const path& __to, copy_options __option, + error_code&); + + path current_path(); + + bool exists(file_status) noexcept; + + bool is_other(file_status) noexcept; + + uintmax_t file_size(const path&); + uintmax_t file_size(const path&, error_code&) noexcept; + uintmax_t hard_link_count(const path&); + uintmax_t hard_link_count(const path&, error_code&) noexcept; + file_time_type last_write_time(const path&); + file_time_type last_write_time(const path&, error_code&) noexcept; + + void permissions(const path&, perms, perm_options, error_code&) noexcept; + + path proximate(const path& __p, const path& __base, error_code& __ec); + path proximate(const path& __p, const path& __base, error_code& __ec); + + path relative(const path& __p, const path& __base, error_code& __ec); + + file_status status(const path&); + file_status status(const path&, error_code&) noexcept; + + bool status_known(file_status) noexcept; + + file_status symlink_status(const path&); + file_status symlink_status(const path&, error_code&) noexcept; + + bool is_regular_file(file_status) noexcept; + bool is_symlink(file_status) noexcept; + + // @} group filesystem +} // namespace filesystem + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++17 + +#endif // _GLIBCXX_FS_FWD_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_ops.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_ops.h new file mode 100644 index 000000000..e61a1236b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_ops.h @@ -0,0 +1,314 @@ +// Filesystem operational functions -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file include/bits/fs_fwd.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{filesystem} + */ + +#ifndef _GLIBCXX_FS_OPS_H +#define _GLIBCXX_FS_OPS_H 1 + +#if __cplusplus >= 201703L + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace filesystem +{ + /** + * @ingroup filesystem + * @{ + */ + + path absolute(const path& __p); + path absolute(const path& __p, error_code& __ec); + + path canonical(const path& __p); + path canonical(const path& __p, error_code& __ec); + + inline void + copy(const path& __from, const path& __to) + { copy(__from, __to, copy_options::none); } + + inline void + copy(const path& __from, const path& __to, error_code& __ec) + { copy(__from, __to, copy_options::none, __ec); } + + void copy(const path& __from, const path& __to, copy_options __options); + void copy(const path& __from, const path& __to, copy_options __options, + error_code& __ec); + + inline bool + copy_file(const path& __from, const path& __to) + { return copy_file(__from, __to, copy_options::none); } + + inline bool + copy_file(const path& __from, const path& __to, error_code& __ec) + { return copy_file(__from, __to, copy_options::none, __ec); } + + bool copy_file(const path& __from, const path& __to, copy_options __option); + bool copy_file(const path& __from, const path& __to, copy_options __option, + error_code& __ec); + + void copy_symlink(const path& __existing_symlink, const path& __new_symlink); + void copy_symlink(const path& __existing_symlink, const path& __new_symlink, + error_code& __ec) noexcept; + + bool create_directories(const path& __p); + bool create_directories(const path& __p, error_code& __ec); + + bool create_directory(const path& __p); + bool create_directory(const path& __p, error_code& __ec) noexcept; + + bool create_directory(const path& __p, const path& attributes); + bool create_directory(const path& __p, const path& attributes, + error_code& __ec) noexcept; + + void create_directory_symlink(const path& __to, const path& __new_symlink); + void create_directory_symlink(const path& __to, const path& __new_symlink, + error_code& __ec) noexcept; + + void create_hard_link(const path& __to, const path& __new_hard_link); + void create_hard_link(const path& __to, const path& __new_hard_link, + error_code& __ec) noexcept; + + void create_symlink(const path& __to, const path& __new_symlink); + void create_symlink(const path& __to, const path& __new_symlink, + error_code& __ec) noexcept; + + path current_path(); + path current_path(error_code& __ec); + void current_path(const path& __p); + void current_path(const path& __p, error_code& __ec) noexcept; + + bool + equivalent(const path& __p1, const path& __p2); + + bool + equivalent(const path& __p1, const path& __p2, error_code& __ec) noexcept; + + inline bool + exists(file_status __s) noexcept + { return status_known(__s) && __s.type() != file_type::not_found; } + + inline bool + exists(const path& __p) + { return exists(status(__p)); } + + inline bool + exists(const path& __p, error_code& __ec) noexcept + { + auto __s = status(__p, __ec); + if (status_known(__s)) + { + __ec.clear(); + return __s.type() != file_type::not_found; + } + return false; + } + + uintmax_t file_size(const path& __p); + uintmax_t file_size(const path& __p, error_code& __ec) noexcept; + + uintmax_t hard_link_count(const path& __p); + uintmax_t hard_link_count(const path& __p, error_code& __ec) noexcept; + + inline bool + is_block_file(file_status __s) noexcept + { return __s.type() == file_type::block; } + + inline bool + is_block_file(const path& __p) + { return is_block_file(status(__p)); } + + inline bool + is_block_file(const path& __p, error_code& __ec) noexcept + { return is_block_file(status(__p, __ec)); } + + inline bool + is_character_file(file_status __s) noexcept + { return __s.type() == file_type::character; } + + inline bool + is_character_file(const path& __p) + { return is_character_file(status(__p)); } + + inline bool + is_character_file(const path& __p, error_code& __ec) noexcept + { return is_character_file(status(__p, __ec)); } + + inline bool + is_directory(file_status __s) noexcept + { return __s.type() == file_type::directory; } + + inline bool + is_directory(const path& __p) + { return is_directory(status(__p)); } + + inline bool + is_directory(const path& __p, error_code& __ec) noexcept + { return is_directory(status(__p, __ec)); } + + bool is_empty(const path& __p); + bool is_empty(const path& __p, error_code& __ec); + + inline bool + is_fifo(file_status __s) noexcept + { return __s.type() == file_type::fifo; } + + inline bool + is_fifo(const path& __p) + { return is_fifo(status(__p)); } + + inline bool + is_fifo(const path& __p, error_code& __ec) noexcept + { return is_fifo(status(__p, __ec)); } + + inline bool + is_other(file_status __s) noexcept + { + return exists(__s) && !is_regular_file(__s) && !is_directory(__s) + && !is_symlink(__s); + } + + inline bool + is_other(const path& __p) + { return is_other(status(__p)); } + + inline bool + is_other(const path& __p, error_code& __ec) noexcept + { return is_other(status(__p, __ec)); } + + inline bool + is_regular_file(file_status __s) noexcept + { return __s.type() == file_type::regular; } + + inline bool + is_regular_file(const path& __p) + { return is_regular_file(status(__p)); } + + inline bool + is_regular_file(const path& __p, error_code& __ec) noexcept + { return is_regular_file(status(__p, __ec)); } + + inline bool + is_socket(file_status __s) noexcept + { return __s.type() == file_type::socket; } + + inline bool + is_socket(const path& __p) + { return is_socket(status(__p)); } + + inline bool + is_socket(const path& __p, error_code& __ec) noexcept + { return is_socket(status(__p, __ec)); } + + inline bool + is_symlink(file_status __s) noexcept + { return __s.type() == file_type::symlink; } + + inline bool + is_symlink(const path& __p) + { return is_symlink(symlink_status(__p)); } + + inline bool + is_symlink(const path& __p, error_code& __ec) noexcept + { return is_symlink(symlink_status(__p, __ec)); } + + file_time_type last_write_time(const path& __p); + file_time_type last_write_time(const path& __p, error_code& __ec) noexcept; + void last_write_time(const path& __p, file_time_type __new_time); + void last_write_time(const path& __p, file_time_type __new_time, + error_code& __ec) noexcept; + + void + permissions(const path& __p, perms __prms, + perm_options __opts = perm_options::replace); + + inline void + permissions(const path& __p, perms __prms, error_code& __ec) noexcept + { permissions(__p, __prms, perm_options::replace, __ec); } + + void + permissions(const path& __p, perms __prms, perm_options __opts, + error_code& __ec) noexcept; + + inline path proximate(const path& __p, error_code& __ec) + { return proximate(__p, current_path(), __ec); } + + path proximate(const path& __p, const path& __base = current_path()); + path proximate(const path& __p, const path& __base, error_code& __ec); + + path read_symlink(const path& __p); + path read_symlink(const path& __p, error_code& __ec); + + inline path relative(const path& __p, error_code& __ec) + { return relative(__p, current_path(), __ec); } + + path relative(const path& __p, const path& __base = current_path()); + path relative(const path& __p, const path& __base, error_code& __ec); + + bool remove(const path& __p); + bool remove(const path& __p, error_code& __ec) noexcept; + + uintmax_t remove_all(const path& __p); + uintmax_t remove_all(const path& __p, error_code& __ec); + + void rename(const path& __from, const path& __to); + void rename(const path& __from, const path& __to, error_code& __ec) noexcept; + + void resize_file(const path& __p, uintmax_t __size); + void resize_file(const path& __p, uintmax_t __size, error_code& __ec) noexcept; + + space_info space(const path& __p); + space_info space(const path& __p, error_code& __ec) noexcept; + + file_status status(const path& __p); + file_status status(const path& __p, error_code& __ec) noexcept; + + inline bool status_known(file_status __s) noexcept + { return __s.type() != file_type::none; } + + file_status symlink_status(const path& __p); + file_status symlink_status(const path& __p, error_code& __ec) noexcept; + + path temp_directory_path(); + path temp_directory_path(error_code& __ec); + + path weakly_canonical(const path& __p); + path weakly_canonical(const path& __p, error_code& __ec); + + // @} group filesystem +} // namespace filesystem + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++17 + +#endif // _GLIBCXX_FS_OPS_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_path.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_path.h new file mode 100644 index 000000000..7ae68f623 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fs_path.h @@ -0,0 +1,1162 @@ +// Class filesystem::path -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file include/bits/fs_path.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{filesystem} + */ + +#ifndef _GLIBCXX_FS_PATH_H +#define _GLIBCXX_FS_PATH_H 1 + +#if __cplusplus >= 201703L + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__CYGWIN__) +# define _GLIBCXX_FILESYSTEM_IS_WINDOWS 1 +# include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace filesystem +{ +_GLIBCXX_BEGIN_NAMESPACE_CXX11 + + /** + * @ingroup filesystem + * @{ + */ + + /// A filesystem path. + class path + { + template + struct __is_encoded_char : std::false_type { }; + + template> + using __is_path_iter_src + = __and_<__is_encoded_char, + std::is_base_of>; + + template + static __is_path_iter_src<_Iter> + __is_path_src(_Iter, int); + + template + static __is_encoded_char<_CharT> + __is_path_src(const basic_string<_CharT, _Traits, _Alloc>&, int); + + template + static __is_encoded_char<_CharT> + __is_path_src(const basic_string_view<_CharT, _Traits>&, int); + + template + static std::false_type + __is_path_src(const _Unknown&, ...); + + template + struct __constructible_from; + + template + struct __constructible_from<_Iter, _Iter> + : __is_path_iter_src<_Iter> + { }; + + template + struct __constructible_from<_Source, void> + : decltype(__is_path_src(std::declval<_Source>(), 0)) + { }; + + template + using _Path = typename + std::enable_if<__and_<__not_, path>>, + __not_>>, + __constructible_from<_Tp1, _Tp2>>::value, + path>::type; + + template + static _Source + _S_range_begin(_Source __begin) { return __begin; } + + struct __null_terminated { }; + + template + static __null_terminated + _S_range_end(_Source) { return {}; } + + template + static const _CharT* + _S_range_begin(const basic_string<_CharT, _Traits, _Alloc>& __str) + { return __str.data(); } + + template + static const _CharT* + _S_range_end(const basic_string<_CharT, _Traits, _Alloc>& __str) + { return __str.data() + __str.size(); } + + template + static const _CharT* + _S_range_begin(const basic_string_view<_CharT, _Traits>& __str) + { return __str.data(); } + + template + static const _CharT* + _S_range_end(const basic_string_view<_CharT, _Traits>& __str) + { return __str.data() + __str.size(); } + + template())), + typename _Val = typename std::iterator_traits<_Iter>::value_type> + using __value_type_is_char + = typename std::enable_if::value>::type; + + public: +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + typedef wchar_t value_type; + static constexpr value_type preferred_separator = L'\\'; +#else + typedef char value_type; + static constexpr value_type preferred_separator = '/'; +#endif + typedef std::basic_string string_type; + + enum format { native_format, generic_format, auto_format }; + + // constructors and destructor + + path() noexcept { } + + path(const path& __p) = default; + + path(path&& __p) noexcept + : _M_pathname(std::move(__p._M_pathname)), _M_type(__p._M_type) + { + if (_M_type == _Type::_Multi) + _M_split_cmpts(); + __p.clear(); + } + + path(string_type&& __source, format = auto_format) + : _M_pathname(std::move(__source)) + { _M_split_cmpts(); } + + template> + path(_Source const& __source, format = auto_format) + : _M_pathname(_S_convert(_S_range_begin(__source), + _S_range_end(__source))) + { _M_split_cmpts(); } + + template> + path(_InputIterator __first, _InputIterator __last, format = auto_format) + : _M_pathname(_S_convert(__first, __last)) + { _M_split_cmpts(); } + + template, + typename _Require2 = __value_type_is_char<_Source>> + path(_Source const& __source, const locale& __loc, format = auto_format) + : _M_pathname(_S_convert_loc(_S_range_begin(__source), + _S_range_end(__source), __loc)) + { _M_split_cmpts(); } + + template, + typename _Require2 = __value_type_is_char<_InputIterator>> + path(_InputIterator __first, _InputIterator __last, const locale& __loc, + format = auto_format) + : _M_pathname(_S_convert_loc(__first, __last, __loc)) + { _M_split_cmpts(); } + + ~path() = default; + + // assignments + + path& operator=(const path& __p) = default; + path& operator=(path&& __p) noexcept; + path& operator=(string_type&& __source); + path& assign(string_type&& __source); + + template + _Path<_Source>& + operator=(_Source const& __source) + { return *this = path(__source); } + + template + _Path<_Source>& + assign(_Source const& __source) + { return *this = path(__source); } + + template + _Path<_InputIterator, _InputIterator>& + assign(_InputIterator __first, _InputIterator __last) + { return *this = path(__first, __last); } + + // appends + + path& operator/=(const path& __p) + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + if (__p.is_absolute() + || (__p.has_root_name() && __p.root_name() != root_name())) + operator=(__p); + else + { + string_type __pathname; + if (__p.has_root_directory()) + __pathname = root_name().native(); + else if (has_filename() || (!has_root_directory() && is_absolute())) + __pathname = _M_pathname + preferred_separator; + __pathname += __p.relative_path().native(); // XXX is this right? + _M_pathname.swap(__pathname); + _M_split_cmpts(); + } +#else + // Much simpler, as any path with root-name or root-dir is absolute. + if (__p.is_absolute()) + operator=(__p); + else + { + if (has_filename() || (_M_type == _Type::_Root_name)) + _M_pathname += preferred_separator; + _M_pathname += __p.native(); + _M_split_cmpts(); + } +#endif + return *this; + } + + template + _Path<_Source>& + operator/=(_Source const& __source) + { return _M_append(path(__source)); } + + template + _Path<_Source>& + append(_Source const& __source) + { return _M_append(path(__source)); } + + template + _Path<_InputIterator, _InputIterator>& + append(_InputIterator __first, _InputIterator __last) + { return _M_append(path(__first, __last)); } + + // concatenation + + path& operator+=(const path& __x); + path& operator+=(const string_type& __x); + path& operator+=(const value_type* __x); + path& operator+=(value_type __x); + path& operator+=(basic_string_view __x); + + template + _Path<_Source>& + operator+=(_Source const& __x) { return concat(__x); } + + template + _Path<_CharT*, _CharT*>& + operator+=(_CharT __x); + + template + _Path<_Source>& + concat(_Source const& __x) + { return *this += _S_convert(_S_range_begin(__x), _S_range_end(__x)); } + + template + _Path<_InputIterator, _InputIterator>& + concat(_InputIterator __first, _InputIterator __last) + { return *this += _S_convert(__first, __last); } + + // modifiers + + void clear() noexcept { _M_pathname.clear(); _M_split_cmpts(); } + + path& make_preferred(); + path& remove_filename(); + path& replace_filename(const path& __replacement); + path& replace_extension(const path& __replacement = path()); + + void swap(path& __rhs) noexcept; + + // native format observers + + const string_type& native() const noexcept { return _M_pathname; } + const value_type* c_str() const noexcept { return _M_pathname.c_str(); } + operator string_type() const { return _M_pathname; } + + template, + typename _Allocator = std::allocator<_CharT>> + std::basic_string<_CharT, _Traits, _Allocator> + string(const _Allocator& __a = _Allocator()) const; + + std::string string() const; +#if _GLIBCXX_USE_WCHAR_T + std::wstring wstring() const; +#endif + std::string u8string() const; + std::u16string u16string() const; + std::u32string u32string() const; + + // generic format observers + template, + typename _Allocator = std::allocator<_CharT>> + std::basic_string<_CharT, _Traits, _Allocator> + generic_string(const _Allocator& __a = _Allocator()) const; + + std::string generic_string() const; +#if _GLIBCXX_USE_WCHAR_T + std::wstring generic_wstring() const; +#endif + std::string generic_u8string() const; + std::u16string generic_u16string() const; + std::u32string generic_u32string() const; + + // compare + + int compare(const path& __p) const noexcept; + int compare(const string_type& __s) const; + int compare(const value_type* __s) const; + int compare(const basic_string_view __s) const; + + // decomposition + + path root_name() const; + path root_directory() const; + path root_path() const; + path relative_path() const; + path parent_path() const; + path filename() const; + path stem() const; + path extension() const; + + // query + + [[nodiscard]] bool empty() const noexcept { return _M_pathname.empty(); } + bool has_root_name() const; + bool has_root_directory() const; + bool has_root_path() const; + bool has_relative_path() const; + bool has_parent_path() const; + bool has_filename() const; + bool has_stem() const; + bool has_extension() const; + bool is_absolute() const { return has_root_directory(); } + bool is_relative() const { return !is_absolute(); } + + // generation + path lexically_normal() const; + path lexically_relative(const path& base) const; + path lexically_proximate(const path& base) const; + + // iterators + class iterator; + typedef iterator const_iterator; + + iterator begin() const; + iterator end() const; + + private: + enum class _Type : unsigned char { + _Multi, _Root_name, _Root_dir, _Filename + }; + + path(string_type __str, _Type __type) : _M_pathname(__str), _M_type(__type) + { + __glibcxx_assert(_M_type != _Type::_Multi); + } + + enum class _Split { _Stem, _Extension }; + + path& + _M_append(path __p) + { + if (__p.is_absolute()) + operator=(std::move(__p)); +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + else if (__p.has_root_name() && __p.root_name() != root_name()) + operator=(std::move(__p)); +#endif + else + operator/=(const_cast(__p)); + return *this; + } + + pair _M_find_extension() const; + + template + struct _Cvt; + + static string_type + _S_convert(value_type* __src, __null_terminated) + { return string_type(__src); } + + static string_type + _S_convert(const value_type* __src, __null_terminated) + { return string_type(__src); } + + template + static string_type + _S_convert(_Iter __first, _Iter __last) + { + using __value_type = typename std::iterator_traits<_Iter>::value_type; + return _Cvt::type>:: + _S_convert(__first, __last); + } + + template + static string_type + _S_convert(_InputIterator __src, __null_terminated) + { + using _Tp = typename std::iterator_traits<_InputIterator>::value_type; + std::basic_string::type> __tmp; + for (; *__src != _Tp{}; ++__src) + __tmp.push_back(*__src); + return _S_convert(__tmp.c_str(), __tmp.c_str() + __tmp.size()); + } + + static string_type + _S_convert_loc(const char* __first, const char* __last, + const std::locale& __loc); + + template + static string_type + _S_convert_loc(_Iter __first, _Iter __last, const std::locale& __loc) + { + const std::string __str(__first, __last); + return _S_convert_loc(__str.data(), __str.data()+__str.size(), __loc); + } + + template + static string_type + _S_convert_loc(_InputIterator __src, __null_terminated, + const std::locale& __loc) + { + std::string __tmp; + while (*__src != '\0') + __tmp.push_back(*__src++); + return _S_convert_loc(__tmp.data(), __tmp.data()+__tmp.size(), __loc); + } + + template + static basic_string<_CharT, _Traits, _Allocator> + _S_str_convert(const string_type&, const _Allocator& __a); + + static bool _S_is_dir_sep(value_type __ch) + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + return __ch == L'/' || __ch == preferred_separator; +#else + return __ch == '/'; +#endif + } + + void _M_split_cmpts(); + void _M_trim(); + void _M_add_root_name(size_t __n); + void _M_add_root_dir(size_t __pos); + void _M_add_filename(size_t __pos, size_t __n); + + string_type _M_pathname; + + struct _Cmpt; + using _List = _GLIBCXX_STD_C::vector<_Cmpt>; + _List _M_cmpts; // empty unless _M_type == _Type::_Multi + _Type _M_type = _Type::_Filename; + }; + + template<> + struct path::__is_encoded_char : std::true_type + { using value_type = char; }; + + template<> + struct path::__is_encoded_char : std::true_type + { using value_type = wchar_t; }; + + template<> + struct path::__is_encoded_char : std::true_type + { using value_type = char16_t; }; + + template<> + struct path::__is_encoded_char : std::true_type + { using value_type = char32_t; }; + + template + struct path::__is_encoded_char : __is_encoded_char<_Tp> { }; + + inline void swap(path& __lhs, path& __rhs) noexcept { __lhs.swap(__rhs); } + + size_t hash_value(const path& __p) noexcept; + + /// Compare paths + inline bool operator<(const path& __lhs, const path& __rhs) noexcept + { return __lhs.compare(__rhs) < 0; } + + /// Compare paths + inline bool operator<=(const path& __lhs, const path& __rhs) noexcept + { return !(__rhs < __lhs); } + + /// Compare paths + inline bool operator>(const path& __lhs, const path& __rhs) noexcept + { return __rhs < __lhs; } + + /// Compare paths + inline bool operator>=(const path& __lhs, const path& __rhs) noexcept + { return !(__lhs < __rhs); } + + /// Compare paths + inline bool operator==(const path& __lhs, const path& __rhs) noexcept + { return __lhs.compare(__rhs) == 0; } + + /// Compare paths + inline bool operator!=(const path& __lhs, const path& __rhs) noexcept + { return !(__lhs == __rhs); } + + /// Append one path to another + inline path operator/(const path& __lhs, const path& __rhs) + { + path __result(__lhs); + __result /= __rhs; + return __result; + } + + /// Write a path to a stream + template + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const path& __p) + { + auto __tmp = __p.string<_CharT, _Traits>(); + using __quoted_string + = std::__detail::_Quoted_string; + __os << __quoted_string{__tmp, '"', '\\'}; + return __os; + } + + /// Read a path from a stream + template + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, path& __p) + { + basic_string<_CharT, _Traits> __tmp; + using __quoted_string + = std::__detail::_Quoted_string; + if (__is >> __quoted_string{ __tmp, '"', '\\' }) + __p = std::move(__tmp); + return __is; + } + + template + inline auto + u8path(const _Source& __source) + -> decltype(filesystem::path(__source, std::locale::classic())) + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + const std::string __u8str{__source}; + return std::filesystem::u8path(__u8str.begin(), __u8str.end()); +#else + return path{ __source }; +#endif + } + + template + inline auto + u8path(_InputIterator __first, _InputIterator __last) + -> decltype(filesystem::path(__first, __last, std::locale::classic())) + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + codecvt_utf8 __cvt; + string_type __tmp; + if (__str_codecvt_in(__first, __last, __tmp, __cvt)) + return path{ __tmp }; + else + return {}; +#else + return path{ __first, __last }; +#endif + } + + class filesystem_error : public std::system_error + { + public: + filesystem_error(const string& __what_arg, error_code __ec) + : system_error(__ec, __what_arg) { } + + filesystem_error(const string& __what_arg, const path& __p1, + error_code __ec) + : system_error(__ec, __what_arg), _M_path1(__p1) { } + + filesystem_error(const string& __what_arg, const path& __p1, + const path& __p2, error_code __ec) + : system_error(__ec, __what_arg), _M_path1(__p1), _M_path2(__p2) + { } + + ~filesystem_error(); + + const path& path1() const noexcept { return _M_path1; } + const path& path2() const noexcept { return _M_path2; } + const char* what() const noexcept { return _M_what.c_str(); } + + private: + std::string _M_gen_what(); + + path _M_path1; + path _M_path2; + std::string _M_what = _M_gen_what(); + }; + + struct path::_Cmpt : path + { + _Cmpt(string_type __s, _Type __t, size_t __pos) + : path(std::move(__s), __t), _M_pos(__pos) { } + + _Cmpt() : _M_pos(-1) { } + + size_t _M_pos; + }; + + // specialize _Cvt for degenerate 'noconv' case + template<> + struct path::_Cvt + { + template + static string_type + _S_convert(_Iter __first, _Iter __last) + { return string_type{__first, __last}; } + }; + + template + struct path::_Cvt + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + static string_type + _S_wconvert(const char* __f, const char* __l, true_type) + { + using _Cvt = std::codecvt; + const auto& __cvt = std::use_facet<_Cvt>(std::locale{}); + std::wstring __wstr; + if (__str_codecvt_in(__f, __l, __wstr, __cvt)) + return __wstr; + _GLIBCXX_THROW_OR_ABORT(filesystem_error( + "Cannot convert character sequence", + std::make_error_code(errc::illegal_byte_sequence))); + } + + static string_type + _S_wconvert(const _CharT* __f, const _CharT* __l, false_type) + { + std::codecvt_utf8<_CharT> __cvt; + std::string __str; + if (__str_codecvt_out(__f, __l, __str, __cvt)) + { + const char* __f2 = __str.data(); + const char* __l2 = __f2 + __str.size(); + std::codecvt_utf8 __wcvt; + std::wstring __wstr; + if (__str_codecvt_in(__f2, __l2, __wstr, __wcvt)) + return __wstr; + } + _GLIBCXX_THROW_OR_ABORT(filesystem_error( + "Cannot convert character sequence", + std::make_error_code(errc::illegal_byte_sequence))); + } + + static string_type + _S_convert(const _CharT* __f, const _CharT* __l) + { + return _S_wconvert(__f, __l, is_same<_CharT, char>{}); + } +#else + static string_type + _S_convert(const _CharT* __f, const _CharT* __l) + { + std::codecvt_utf8<_CharT> __cvt; + std::string __str; + if (__str_codecvt_out(__f, __l, __str, __cvt)) + return __str; + _GLIBCXX_THROW_OR_ABORT(filesystem_error( + "Cannot convert character sequence", + std::make_error_code(errc::illegal_byte_sequence))); + } +#endif + + static string_type + _S_convert(_CharT* __f, _CharT* __l) + { + return _S_convert(const_cast(__f), + const_cast(__l)); + } + + template + static string_type + _S_convert(_Iter __first, _Iter __last) + { + const std::basic_string<_CharT> __str(__first, __last); + return _S_convert(__str.data(), __str.data() + __str.size()); + } + + template + static string_type + _S_convert(__gnu_cxx::__normal_iterator<_Iter, _Cont> __first, + __gnu_cxx::__normal_iterator<_Iter, _Cont> __last) + { return _S_convert(__first.base(), __last.base()); } + }; + + /// An iterator for the components of a path + class path::iterator + { + public: + using difference_type = std::ptrdiff_t; + using value_type = path; + using reference = const path&; + using pointer = const path*; + using iterator_category = std::bidirectional_iterator_tag; + + iterator() : _M_path(nullptr), _M_cur(), _M_at_end() { } + + iterator(const iterator&) = default; + iterator& operator=(const iterator&) = default; + + reference operator*() const; + pointer operator->() const { return std::__addressof(**this); } + + iterator& operator++(); + iterator operator++(int) { auto __tmp = *this; ++*this; return __tmp; } + + iterator& operator--(); + iterator operator--(int) { auto __tmp = *this; --*this; return __tmp; } + + friend bool operator==(const iterator& __lhs, const iterator& __rhs) + { return __lhs._M_equals(__rhs); } + + friend bool operator!=(const iterator& __lhs, const iterator& __rhs) + { return !__lhs._M_equals(__rhs); } + + private: + friend class path; + + iterator(const path* __path, path::_List::const_iterator __iter) + : _M_path(__path), _M_cur(__iter), _M_at_end() + { } + + iterator(const path* __path, bool __at_end) + : _M_path(__path), _M_cur(), _M_at_end(__at_end) + { } + + bool _M_equals(iterator) const; + + const path* _M_path; + path::_List::const_iterator _M_cur; + bool _M_at_end; // only used when type != _Multi + }; + + + inline path& + path::operator=(path&& __p) noexcept + { + if (&__p == this) + return *this; + + _M_pathname = std::move(__p._M_pathname); + _M_cmpts = std::move(__p._M_cmpts); + _M_type = __p._M_type; + __p.clear(); + return *this; + } + + inline path& + path::operator=(string_type&& __source) + { return *this = path(std::move(__source)); } + + inline path& + path::assign(string_type&& __source) + { return *this = path(std::move(__source)); } + + inline path& + path::operator+=(const path& __p) + { + return operator+=(__p.native()); + } + + inline path& + path::operator+=(const string_type& __x) + { + _M_pathname += __x; + _M_split_cmpts(); + return *this; + } + + inline path& + path::operator+=(const value_type* __x) + { + _M_pathname += __x; + _M_split_cmpts(); + return *this; + } + + inline path& + path::operator+=(value_type __x) + { + _M_pathname += __x; + _M_split_cmpts(); + return *this; + } + + inline path& + path::operator+=(basic_string_view __x) + { + _M_pathname.append(__x.data(), __x.size()); + _M_split_cmpts(); + return *this; + } + + template + inline path::_Path<_CharT*, _CharT*>& + path::operator+=(_CharT __x) + { + auto* __addr = std::__addressof(__x); + return concat(__addr, __addr + 1); + } + + inline path& + path::make_preferred() + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + std::replace(_M_pathname.begin(), _M_pathname.end(), L'/', + preferred_separator); +#endif + return *this; + } + + inline void path::swap(path& __rhs) noexcept + { + _M_pathname.swap(__rhs._M_pathname); + _M_cmpts.swap(__rhs._M_cmpts); + std::swap(_M_type, __rhs._M_type); + } + + template + std::basic_string<_CharT, _Traits, _Allocator> + path::_S_str_convert(const string_type& __str, const _Allocator& __a) + { + if (__str.size() == 0) + return std::basic_string<_CharT, _Traits, _Allocator>(__a); + + const value_type* __first = __str.data(); + const value_type* __last = __first + __str.size(); + +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + using _CharAlloc = __alloc_rebind<_Allocator, char>; + using _String = basic_string, _CharAlloc>; + using _WString = basic_string<_CharT, _Traits, _Allocator>; + + // use codecvt_utf8 to convert native string to UTF-8 + codecvt_utf8 __cvt; + _String __u8str{_CharAlloc{__a}}; + if (__str_codecvt_out(__first, __last, __u8str, __cvt)) + { + if constexpr (is_same_v<_CharT, char>) + return __u8str; + else + { + _WString __wstr; + // use codecvt_utf8<_CharT> to convert UTF-8 to wide string + codecvt_utf8<_CharT> __cvt; + const char* __f = __u8str.data(); + const char* __l = __f + __u8str.size(); + if (__str_codecvt_in(__f, __l, __wstr, __cvt)) + return __wstr; + } + } +#else + codecvt_utf8<_CharT> __cvt; + basic_string<_CharT, _Traits, _Allocator> __wstr{__a}; + if (__str_codecvt_in(__first, __last, __wstr, __cvt)) + return __wstr; +#endif + _GLIBCXX_THROW_OR_ABORT(filesystem_error( + "Cannot convert character sequence", + std::make_error_code(errc::illegal_byte_sequence))); + } + + template + inline basic_string<_CharT, _Traits, _Allocator> + path::string(const _Allocator& __a) const + { + if constexpr (is_same_v<_CharT, value_type>) +#if _GLIBCXX_USE_CXX11_ABI + return { _M_pathname, __a }; +#else + return { _M_pathname, string_type::size_type(0), __a }; +#endif + else + return _S_str_convert<_CharT, _Traits>(_M_pathname, __a); + } + + inline std::string + path::string() const { return string(); } + +#if _GLIBCXX_USE_WCHAR_T + inline std::wstring + path::wstring() const { return string(); } +#endif + + inline std::string + path::u8string() const + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + std::string __str; + // convert from native encoding to UTF-8 + codecvt_utf8 __cvt; + const value_type* __first = _M_pathname.data(); + const value_type* __last = __first + _M_pathname.size(); + if (__str_codecvt_out(__first, __last, __str, __cvt)) + return __str; + _GLIBCXX_THROW_OR_ABORT(filesystem_error( + "Cannot convert character sequence", + std::make_error_code(errc::illegal_byte_sequence))); +#else + return _M_pathname; +#endif + } + + inline std::u16string + path::u16string() const { return string(); } + + inline std::u32string + path::u32string() const { return string(); } + + template + inline std::basic_string<_CharT, _Traits, _Allocator> + path::generic_string(const _Allocator& __a) const + { +#ifdef _GLIBCXX_FILESYSTEM_IS_WINDOWS + const value_type __slash = L'/'; +#else + const value_type __slash = '/'; +#endif + string_type __str(__a); + + if (_M_type == _Type::_Root_dir) + __str.assign(1, __slash); + else + { + __str.reserve(_M_pathname.size()); + bool __add_slash = false; + for (auto& __elem : *this) + { + if (__add_slash) + __str += __slash; + __str += __elem._M_pathname; + __add_slash = __elem._M_type == _Type::_Filename; + } + } + + if constexpr (is_same_v<_CharT, value_type>) + return __str; + else + return _S_str_convert<_CharT, _Traits>(__str, __a); + } + + inline std::string + path::generic_string() const + { return generic_string(); } + +#if _GLIBCXX_USE_WCHAR_T + inline std::wstring + path::generic_wstring() const + { return generic_string(); } +#endif + + inline std::string + path::generic_u8string() const + { return generic_string(); } + + inline std::u16string + path::generic_u16string() const + { return generic_string(); } + + inline std::u32string + path::generic_u32string() const + { return generic_string(); } + + inline int + path::compare(const string_type& __s) const { return compare(path(__s)); } + + inline int + path::compare(const value_type* __s) const { return compare(path(__s)); } + + inline int + path::compare(basic_string_view __s) const + { return compare(path(__s)); } + + inline path + path::filename() const + { + if (empty()) + return {}; + else if (_M_type == _Type::_Filename) + return *this; + else if (_M_type == _Type::_Multi) + { + if (_M_pathname.back() == preferred_separator) + return {}; + auto& __last = *--end(); + if (__last._M_type == _Type::_Filename) + return __last; + } + return {}; + } + + inline path + path::stem() const + { + auto ext = _M_find_extension(); + if (ext.first && ext.second != 0) + return path{ext.first->substr(0, ext.second)}; + return {}; + } + + inline path + path::extension() const + { + auto ext = _M_find_extension(); + if (ext.first && ext.second != string_type::npos) + return path{ext.first->substr(ext.second)}; + return {}; + } + + inline bool + path::has_stem() const + { + auto ext = _M_find_extension(); + return ext.first && ext.second != 0; + } + + inline bool + path::has_extension() const + { + auto ext = _M_find_extension(); + return ext.first && ext.second != string_type::npos; + } + + inline path::iterator + path::begin() const + { + if (_M_type == _Type::_Multi) + return iterator(this, _M_cmpts.begin()); + return iterator(this, empty()); + } + + inline path::iterator + path::end() const + { + if (_M_type == _Type::_Multi) + return iterator(this, _M_cmpts.end()); + return iterator(this, true); + } + + inline path::iterator& + path::iterator::operator++() + { + __glibcxx_assert(_M_path != nullptr); + if (_M_path->_M_type == _Type::_Multi) + { + __glibcxx_assert(_M_cur != _M_path->_M_cmpts.end()); + ++_M_cur; + } + else + { + __glibcxx_assert(!_M_at_end); + _M_at_end = true; + } + return *this; + } + + inline path::iterator& + path::iterator::operator--() + { + __glibcxx_assert(_M_path != nullptr); + if (_M_path->_M_type == _Type::_Multi) + { + __glibcxx_assert(_M_cur != _M_path->_M_cmpts.begin()); + --_M_cur; + } + else + { + __glibcxx_assert(_M_at_end); + _M_at_end = false; + } + return *this; + } + + inline path::iterator::reference + path::iterator::operator*() const + { + __glibcxx_assert(_M_path != nullptr); + if (_M_path->_M_type == _Type::_Multi) + { + __glibcxx_assert(_M_cur != _M_path->_M_cmpts.end()); + return *_M_cur; + } + return *_M_path; + } + + inline bool + path::iterator::_M_equals(iterator __rhs) const + { + if (_M_path != __rhs._M_path) + return false; + if (_M_path == nullptr) + return true; + if (_M_path->_M_type == path::_Type::_Multi) + return _M_cur == __rhs._M_cur; + return _M_at_end == __rhs._M_at_end; + } + + // @} group filesystem +_GLIBCXX_END_NAMESPACE_CXX11 +} // namespace filesystem + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++17 + +#endif // _GLIBCXX_FS_PATH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/fstream.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fstream.tcc similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/fstream.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fstream.tcc index ef51a8409..f23ff7af4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/fstream.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/fstream.tcc @@ -1,6 +1,6 @@ // File based streams -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -649,11 +649,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } else if (_M_writing) { - if (overflow() == traits_type::eof()) - return __ret; - _M_set_buffer(-1); - _M_writing = false; - } + if (overflow() == traits_type::eof()) + return __ret; + _M_set_buffer(-1); + _M_writing = false; + } // Optimization in the always_noconv() case, to be generalized in the // future: when __n > __buflen we read directly instead of using the @@ -662,57 +662,55 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1; if (__n > __buflen && __check_facet(_M_codecvt).always_noconv() - && __testin) - { - // First, copy the chars already present in the buffer. - const streamsize __avail = this->egptr() - this->gptr(); - if (__avail != 0) - { - traits_type::copy(__s, this->gptr(), __avail); - __s += __avail; - this->setg(this->eback(), this->gptr() + __avail, - this->egptr()); - __ret += __avail; - __n -= __avail; - } + && __testin) + { + // First, copy the chars already present in the buffer. + const streamsize __avail = this->egptr() - this->gptr(); + if (__avail != 0) + { + traits_type::copy(__s, this->gptr(), __avail); + __s += __avail; + this->setg(this->eback(), this->gptr() + __avail, this->egptr()); + __ret += __avail; + __n -= __avail; + } - // Need to loop in case of short reads (relatively common - // with pipes). - streamsize __len; - for (;;) - { - __len = _M_file.xsgetn(reinterpret_cast(__s), - __n); - if (__len == -1) - __throw_ios_failure(__N("basic_filebuf::xsgetn " - "error reading the file")); - if (__len == 0) - break; + // Need to loop in case of short reads (relatively common + // with pipes). + streamsize __len; + for (;;) + { + __len = _M_file.xsgetn(reinterpret_cast(__s), __n); + if (__len == -1) + __throw_ios_failure(__N("basic_filebuf::xsgetn " + "error reading the file")); + if (__len == 0) + break; - __n -= __len; - __ret += __len; - if (__n == 0) - break; - - __s += __len; - } - - if (__n == 0) - { - // Set _M_reading. Buffer is already in initial 'read' mode. - _M_reading = true; - } - else if (__len == 0) - { - // If end of file is reached, set 'uncommitted' - // mode, thus allowing an immediate write without - // an intervening seek. - _M_set_buffer(-1); - _M_reading = false; - } - } + __n -= __len; + __ret += __len; + if (__n == 0) + break; + + __s += __len; + } + + if (__n == 0) + { + // Set _M_reading. Buffer is already in initial 'read' mode. + _M_reading = true; + } + else if (__len == 0) + { + // If end of file is reached, set 'uncommitted' + // mode, thus allowing an immediate write without + // an intervening seek. + _M_set_buffer(-1); + _M_reading = false; + } + } else - __ret += __streambuf_type::xsgetn(__s, __n); + __ret += __streambuf_type::xsgetn(__s, __n); return __ret; } @@ -729,7 +727,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const bool __testout = (_M_mode & ios_base::out || _M_mode & ios_base::app); if (__check_facet(_M_codecvt).always_noconv() - && __testout && !_M_reading) + && __testout && !_M_reading) { // Measurement would reveal the best choice. const streamsize __chunk = 1ul << 10; @@ -839,8 +837,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION if (_M_writing) __computed_off = this->pptr() - this->pbase(); - off_type __file_off = _M_file.seekoff(0, ios_base::cur); - if (__file_off != off_type(-1)) + off_type __file_off = _M_file.seekoff(0, ios_base::cur); + if (__file_off != off_type(-1)) { __ret = __file_off + __computed_off; __ret.state(__state); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/functexcept.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/functexcept.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/functexcept.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/functexcept.h index 148351f9f..6f6ffc5ee 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/functexcept.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/functexcept.h @@ -1,6 +1,6 @@ // Function-Based Exception Support -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/functional_hash.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/functional_hash.h new file mode 100644 index 000000000..0f20b956b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/functional_hash.h @@ -0,0 +1,274 @@ +// functional_hash.h header -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/functional_hash.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{functional} + */ + +#ifndef _FUNCTIONAL_HASH_H +#define _FUNCTIONAL_HASH_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** @defgroup hashes Hashes + * @ingroup functors + * + * Hashing functors taking a variable type and returning a @c std::size_t. + * + * @{ + */ + + template + struct __hash_base + { + typedef _Result result_type _GLIBCXX17_DEPRECATED; + typedef _Arg argument_type _GLIBCXX17_DEPRECATED; + }; + + /// Primary class template hash. + template + struct hash; + + template + struct __poison_hash + { + static constexpr bool __enable_hash_call = false; + private: + // Private rather than deleted to be non-trivially-copyable. + __poison_hash(__poison_hash&&); + ~__poison_hash(); + }; + + template + struct __poison_hash<_Tp, __void_t()(declval<_Tp>()))>> + { + static constexpr bool __enable_hash_call = true; + }; + + // Helper struct for SFINAE-poisoning non-enum types. + template::value> + struct __hash_enum + { + private: + // Private rather than deleted to be non-trivially-copyable. + __hash_enum(__hash_enum&&); + ~__hash_enum(); + }; + + // Helper struct for hash with enum types. + template + struct __hash_enum<_Tp, true> : public __hash_base + { + size_t + operator()(_Tp __val) const noexcept + { + using __type = typename underlying_type<_Tp>::type; + return hash<__type>{}(static_cast<__type>(__val)); + } + }; + + /// Primary class template hash, usable for enum types only. + // Use with non-enum types still SFINAES. + template + struct hash : __hash_enum<_Tp> + { }; + + /// Partial specializations for pointer types. + template + struct hash<_Tp*> : public __hash_base + { + size_t + operator()(_Tp* __p) const noexcept + { return reinterpret_cast(__p); } + }; + + // Explicit specializations for integer types. +#define _Cxx_hashtable_define_trivial_hash(_Tp) \ + template<> \ + struct hash<_Tp> : public __hash_base \ + { \ + size_t \ + operator()(_Tp __val) const noexcept \ + { return static_cast(__val); } \ + }; + + /// Explicit specialization for bool. + _Cxx_hashtable_define_trivial_hash(bool) + + /// Explicit specialization for char. + _Cxx_hashtable_define_trivial_hash(char) + + /// Explicit specialization for signed char. + _Cxx_hashtable_define_trivial_hash(signed char) + + /// Explicit specialization for unsigned char. + _Cxx_hashtable_define_trivial_hash(unsigned char) + + /// Explicit specialization for wchar_t. + _Cxx_hashtable_define_trivial_hash(wchar_t) + + /// Explicit specialization for char16_t. + _Cxx_hashtable_define_trivial_hash(char16_t) + + /// Explicit specialization for char32_t. + _Cxx_hashtable_define_trivial_hash(char32_t) + + /// Explicit specialization for short. + _Cxx_hashtable_define_trivial_hash(short) + + /// Explicit specialization for int. + _Cxx_hashtable_define_trivial_hash(int) + + /// Explicit specialization for long. + _Cxx_hashtable_define_trivial_hash(long) + + /// Explicit specialization for long long. + _Cxx_hashtable_define_trivial_hash(long long) + + /// Explicit specialization for unsigned short. + _Cxx_hashtable_define_trivial_hash(unsigned short) + + /// Explicit specialization for unsigned int. + _Cxx_hashtable_define_trivial_hash(unsigned int) + + /// Explicit specialization for unsigned long. + _Cxx_hashtable_define_trivial_hash(unsigned long) + + /// Explicit specialization for unsigned long long. + _Cxx_hashtable_define_trivial_hash(unsigned long long) + +#ifdef __GLIBCXX_TYPE_INT_N_0 + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0) + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0 unsigned) +#endif +#ifdef __GLIBCXX_TYPE_INT_N_1 + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_1) + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_1 unsigned) +#endif +#ifdef __GLIBCXX_TYPE_INT_N_2 + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_2) + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_2 unsigned) +#endif +#ifdef __GLIBCXX_TYPE_INT_N_3 + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3) + _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_3 unsigned) +#endif + +#undef _Cxx_hashtable_define_trivial_hash + + struct _Hash_impl + { + static size_t + hash(const void* __ptr, size_t __clength, + size_t __seed = static_cast(0xc70f6907UL)) + { return _Hash_bytes(__ptr, __clength, __seed); } + + template + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + + template + static size_t + __hash_combine(const _Tp& __val, size_t __hash) + { return hash(&__val, sizeof(__val), __hash); } + }; + + // A hash function similar to FNV-1a (see PR59406 for how it differs). + struct _Fnv_hash_impl + { + static size_t + hash(const void* __ptr, size_t __clength, + size_t __seed = static_cast(2166136261UL)) + { return _Fnv_hash_bytes(__ptr, __clength, __seed); } + + template + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + + template + static size_t + __hash_combine(const _Tp& __val, size_t __hash) + { return hash(&__val, sizeof(__val), __hash); } + }; + + /// Specialization for float. + template<> + struct hash : public __hash_base + { + size_t + operator()(float __val) const noexcept + { + // 0 and -0 both hash to zero. + return __val != 0.0f ? std::_Hash_impl::hash(__val) : 0; + } + }; + + /// Specialization for double. + template<> + struct hash : public __hash_base + { + size_t + operator()(double __val) const noexcept + { + // 0 and -0 both hash to zero. + return __val != 0.0 ? std::_Hash_impl::hash(__val) : 0; + } + }; + + /// Specialization for long double. + template<> + struct hash + : public __hash_base + { + _GLIBCXX_PURE size_t + operator()(long double __val) const noexcept; + }; + + // @} group hashes + + // Hint about performance of hash functor. If not fast the hash-based + // containers will cache the hash code. + // Default behavior is to consider that hashers are fast unless specified + // otherwise. + template + struct __is_fast_hash : public std::true_type + { }; + + template<> + struct __is_fast_hash> : public std::false_type + { }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _FUNCTIONAL_HASH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/gslice.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/gslice.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/gslice.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/gslice.h index 8909dfde0..db7e5b6e7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/gslice.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/gslice.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- gslice class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/gslice_array.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/gslice_array.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/gslice_array.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/gslice_array.h index dd4545017..2da7e0442 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/gslice_array.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/gslice_array.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- gslice_array class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hash_bytes.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hash_bytes.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hash_bytes.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hash_bytes.h index f9b98a032..f5b979390 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/hash_bytes.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hash_bytes.h @@ -1,6 +1,6 @@ // Declarations for hash functions. -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hashtable.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hashtable.h new file mode 100644 index 000000000..475cda6ca --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hashtable.h @@ -0,0 +1,2238 @@ +// hashtable.h header -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file bits/hashtable.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{unordered_map, unordered_set} + */ + +#ifndef _HASHTABLE_H +#define _HASHTABLE_H 1 + +#pragma GCC system_header + +#include +#if __cplusplus > 201402L +# include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + using __cache_default + = __not_<__and_, + // Mandatory to have erase not throwing. + __is_nothrow_invocable>>; + + /** + * Primary class template _Hashtable. + * + * @ingroup hashtable-detail + * + * @tparam _Value CopyConstructible type. + * + * @tparam _Key CopyConstructible type. + * + * @tparam _Alloc An allocator type + * ([lib.allocator.requirements]) whose _Alloc::value_type is + * _Value. As a conforming extension, we allow for + * _Alloc::value_type != _Value. + * + * @tparam _ExtractKey Function object that takes an object of type + * _Value and returns a value of type _Key. + * + * @tparam _Equal Function object that takes two objects of type k + * and returns a bool-like value that is true if the two objects + * are considered equal. + * + * @tparam _H1 The hash function. A unary function object with + * argument type _Key and result type size_t. Return values should + * be distributed over the entire range [0, numeric_limits:::max()]. + * + * @tparam _H2 The range-hashing function (in the terminology of + * Tavori and Dreizin). A binary function object whose argument + * types and result type are all size_t. Given arguments r and N, + * the return value is in the range [0, N). + * + * @tparam _Hash The ranged hash function (Tavori and Dreizin). A + * binary function whose argument types are _Key and size_t and + * whose result type is size_t. Given arguments k and N, the + * return value is in the range [0, N). Default: hash(k, N) = + * h2(h1(k), N). If _Hash is anything other than the default, _H1 + * and _H2 are ignored. + * + * @tparam _RehashPolicy Policy class with three members, all of + * which govern the bucket count. _M_next_bkt(n) returns a bucket + * count no smaller than n. _M_bkt_for_elements(n) returns a + * bucket count appropriate for an element count of n. + * _M_need_rehash(n_bkt, n_elt, n_ins) determines whether, if the + * current bucket count is n_bkt and the current element count is + * n_elt, we need to increase the bucket count. If so, returns + * make_pair(true, n), where n is the new bucket count. If not, + * returns make_pair(false, ) + * + * @tparam _Traits Compile-time class with three boolean + * std::integral_constant members: __cache_hash_code, __constant_iterators, + * __unique_keys. + * + * Each _Hashtable data structure has: + * + * - _Bucket[] _M_buckets + * - _Hash_node_base _M_before_begin + * - size_type _M_bucket_count + * - size_type _M_element_count + * + * with _Bucket being _Hash_node* and _Hash_node containing: + * + * - _Hash_node* _M_next + * - Tp _M_value + * - size_t _M_hash_code if cache_hash_code is true + * + * In terms of Standard containers the hashtable is like the aggregation of: + * + * - std::forward_list<_Node> containing the elements + * - std::vector::iterator> representing the buckets + * + * The non-empty buckets contain the node before the first node in the + * bucket. This design makes it possible to implement something like a + * std::forward_list::insert_after on container insertion and + * std::forward_list::erase_after on container erase + * calls. _M_before_begin is equivalent to + * std::forward_list::before_begin. Empty buckets contain + * nullptr. Note that one of the non-empty buckets contains + * &_M_before_begin which is not a dereferenceable node so the + * node pointer in a bucket shall never be dereferenced, only its + * next node can be. + * + * Walking through a bucket's nodes requires a check on the hash code to + * see if each node is still in the bucket. Such a design assumes a + * quite efficient hash functor and is one of the reasons it is + * highly advisable to set __cache_hash_code to true. + * + * The container iterators are simply built from nodes. This way + * incrementing the iterator is perfectly efficient independent of + * how many empty buckets there are in the container. + * + * On insert we compute the element's hash code and use it to find the + * bucket index. If the element must be inserted in an empty bucket + * we add it at the beginning of the singly linked list and make the + * bucket point to _M_before_begin. The bucket that used to point to + * _M_before_begin, if any, is updated to point to its new before + * begin node. + * + * On erase, the simple iterator design requires using the hash + * functor to get the index of the bucket to update. For this + * reason, when __cache_hash_code is set to false the hash functor must + * not throw and this is enforced by a static assertion. + * + * Functionality is implemented by decomposition into base classes, + * where the derived _Hashtable class is used in _Map_base, + * _Insert, _Rehash_base, and _Equality base classes to access the + * "this" pointer. _Hashtable_base is used in the base classes as a + * non-recursive, fully-completed-type so that detailed nested type + * information, such as iterator type and node type, can be + * used. This is similar to the "Curiously Recurring Template + * Pattern" (CRTP) technique, but uses a reconstructed, not + * explicitly passed, template pattern. + * + * Base class templates are: + * - __detail::_Hashtable_base + * - __detail::_Map_base + * - __detail::_Insert + * - __detail::_Rehash_base + * - __detail::_Equality + */ + template + class _Hashtable + : public __detail::_Hashtable_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, _Traits>, + public __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + public __detail::_Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + public __detail::_Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + public __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>, + private __detail::_Hashtable_alloc< + __alloc_rebind<_Alloc, + __detail::_Hash_node<_Value, + _Traits::__hash_cached::value>>> + { + static_assert(is_same::type, _Value>::value, + "unordered container must have a non-const, non-volatile value_type"); +#ifdef __STRICT_ANSI__ + static_assert(is_same{}, + "unordered container must have the same value_type as its allocator"); +#endif + + using __traits_type = _Traits; + using __hash_cached = typename __traits_type::__hash_cached; + using __node_type = __detail::_Hash_node<_Value, __hash_cached::value>; + using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; + + using __hashtable_alloc = __detail::_Hashtable_alloc<__node_alloc_type>; + + using __value_alloc_traits = + typename __hashtable_alloc::__value_alloc_traits; + using __node_alloc_traits = + typename __hashtable_alloc::__node_alloc_traits; + using __node_base = typename __hashtable_alloc::__node_base; + using __bucket_type = typename __hashtable_alloc::__bucket_type; + + public: + typedef _Key key_type; + typedef _Value value_type; + typedef _Alloc allocator_type; + typedef _Equal key_equal; + + // mapped_type, if present, comes from _Map_base. + // hasher, if present, comes from _Hash_code_base/_Hashtable_base. + typedef typename __value_alloc_traits::pointer pointer; + typedef typename __value_alloc_traits::const_pointer const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + + private: + using __rehash_type = _RehashPolicy; + using __rehash_state = typename __rehash_type::_State; + + using __constant_iterators = typename __traits_type::__constant_iterators; + using __unique_keys = typename __traits_type::__unique_keys; + + using __key_extract = typename std::conditional< + __constant_iterators::value, + __detail::_Identity, + __detail::_Select1st>::type; + + using __hashtable_base = __detail:: + _Hashtable_base<_Key, _Value, _ExtractKey, + _Equal, _H1, _H2, _Hash, _Traits>; + + using __hash_code_base = typename __hashtable_base::__hash_code_base; + using __hash_code = typename __hashtable_base::__hash_code; + using __ireturn_type = typename __hashtable_base::__ireturn_type; + + using __map_base = __detail::_Map_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __rehash_base = __detail::_Rehash_base<_Key, _Value, _Alloc, + _ExtractKey, _Equal, + _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __eq_base = __detail::_Equality<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __reuse_or_alloc_node_type = + __detail::_ReuseOrAllocNode<__node_alloc_type>; + + // Metaprogramming for picking apart hash caching. + template + using __if_hash_cached = __or_<__not_<__hash_cached>, _Cond>; + + template + using __if_hash_not_cached = __or_<__hash_cached, _Cond>; + + // Compile-time diagnostics. + + // _Hash_code_base has everything protected, so use this derived type to + // access it. + struct __hash_code_base_access : __hash_code_base + { using __hash_code_base::_M_bucket_index; }; + + // Getting a bucket index from a node shall not throw because it is used + // in methods (erase, swap...) that shall not throw. + static_assert(noexcept(declval() + ._M_bucket_index((const __node_type*)nullptr, + (std::size_t)0)), + "Cache the hash code or qualify your functors involved" + " in hash code and bucket index computation with noexcept"); + + // Following two static assertions are necessary to guarantee + // that local_iterator will be default constructible. + + // When hash codes are cached local iterator inherits from H2 functor + // which must then be default constructible. + static_assert(__if_hash_cached>::value, + "Functor used to map hash code to bucket index" + " must be default constructible"); + + template + friend struct __detail::_Map_base; + + template + friend struct __detail::_Insert_base; + + template + friend struct __detail::_Insert; + + public: + using size_type = typename __hashtable_base::size_type; + using difference_type = typename __hashtable_base::difference_type; + + using iterator = typename __hashtable_base::iterator; + using const_iterator = typename __hashtable_base::const_iterator; + + using local_iterator = typename __hashtable_base::local_iterator; + using const_local_iterator = typename __hashtable_base:: + const_local_iterator; + +#if __cplusplus > 201402L + using node_type = _Node_handle<_Key, _Value, __node_alloc_type>; + using insert_return_type = _Node_insert_return; +#endif + + private: + __bucket_type* _M_buckets = &_M_single_bucket; + size_type _M_bucket_count = 1; + __node_base _M_before_begin; + size_type _M_element_count = 0; + _RehashPolicy _M_rehash_policy; + + // A single bucket used when only need for 1 bucket. Especially + // interesting in move semantic to leave hashtable with only 1 buckets + // which is not allocated so that we can have those operations noexcept + // qualified. + // Note that we can't leave hashtable with 0 bucket without adding + // numerous checks in the code to avoid 0 modulus. + __bucket_type _M_single_bucket = nullptr; + + bool + _M_uses_single_bucket(__bucket_type* __bkts) const + { return __builtin_expect(__bkts == &_M_single_bucket, false); } + + bool + _M_uses_single_bucket() const + { return _M_uses_single_bucket(_M_buckets); } + + __hashtable_alloc& + _M_base_alloc() { return *this; } + + __bucket_type* + _M_allocate_buckets(size_type __n) + { + if (__builtin_expect(__n == 1, false)) + { + _M_single_bucket = nullptr; + return &_M_single_bucket; + } + + return __hashtable_alloc::_M_allocate_buckets(__n); + } + + void + _M_deallocate_buckets(__bucket_type* __bkts, size_type __n) + { + if (_M_uses_single_bucket(__bkts)) + return; + + __hashtable_alloc::_M_deallocate_buckets(__bkts, __n); + } + + void + _M_deallocate_buckets() + { _M_deallocate_buckets(_M_buckets, _M_bucket_count); } + + // Gets bucket begin, deals with the fact that non-empty buckets contain + // their before begin node. + __node_type* + _M_bucket_begin(size_type __bkt) const; + + __node_type* + _M_begin() const + { return static_cast<__node_type*>(_M_before_begin._M_nxt); } + + template + void + _M_assign(const _Hashtable&, const _NodeGenerator&); + + void + _M_move_assign(_Hashtable&&, std::true_type); + + void + _M_move_assign(_Hashtable&&, std::false_type); + + void + _M_reset() noexcept; + + _Hashtable(const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : __hashtable_base(__exk, __h1, __h2, __h, __eq), + __hashtable_alloc(__node_alloc_type(__a)) + { } + + public: + // Constructor, destructor, assignment, swap + _Hashtable() = default; + _Hashtable(size_type __bucket_hint, + const _H1&, const _H2&, const _Hash&, + const _Equal&, const _ExtractKey&, + const allocator_type&); + + template + _Hashtable(_InputIterator __first, _InputIterator __last, + size_type __bucket_hint, + const _H1&, const _H2&, const _Hash&, + const _Equal&, const _ExtractKey&, + const allocator_type&); + + _Hashtable(const _Hashtable&); + + _Hashtable(_Hashtable&&) noexcept; + + _Hashtable(const _Hashtable&, const allocator_type&); + + _Hashtable(_Hashtable&&, const allocator_type&); + + // Use delegating constructors. + explicit + _Hashtable(const allocator_type& __a) + : __hashtable_alloc(__node_alloc_type(__a)) + { } + + explicit + _Hashtable(size_type __n, + const _H1& __hf = _H1(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Hashtable(__n, __hf, _H2(), _Hash(), __eql, + __key_extract(), __a) + { } + + template + _Hashtable(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const _H1& __hf = _H1(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Hashtable(__f, __l, __n, __hf, _H2(), _Hash(), __eql, + __key_extract(), __a) + { } + + _Hashtable(initializer_list __l, + size_type __n = 0, + const _H1& __hf = _H1(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Hashtable(__l.begin(), __l.end(), __n, __hf, _H2(), _Hash(), __eql, + __key_extract(), __a) + { } + + _Hashtable& + operator=(const _Hashtable& __ht); + + _Hashtable& + operator=(_Hashtable&& __ht) + noexcept(__node_alloc_traits::_S_nothrow_move() + && is_nothrow_move_assignable<_H1>::value + && is_nothrow_move_assignable<_Equal>::value) + { + constexpr bool __move_storage = + __node_alloc_traits::_S_propagate_on_move_assign() + || __node_alloc_traits::_S_always_equal(); + _M_move_assign(std::move(__ht), __bool_constant<__move_storage>()); + return *this; + } + + _Hashtable& + operator=(initializer_list __l) + { + __reuse_or_alloc_node_type __roan(_M_begin(), *this); + _M_before_begin._M_nxt = nullptr; + clear(); + this->_M_insert_range(__l.begin(), __l.end(), __roan, __unique_keys()); + return *this; + } + + ~_Hashtable() noexcept; + + void + swap(_Hashtable&) + noexcept(__and_<__is_nothrow_swappable<_H1>, + __is_nothrow_swappable<_Equal>>::value); + + // Basic container operations + iterator + begin() noexcept + { return iterator(_M_begin()); } + + const_iterator + begin() const noexcept + { return const_iterator(_M_begin()); } + + iterator + end() noexcept + { return iterator(nullptr); } + + const_iterator + end() const noexcept + { return const_iterator(nullptr); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_M_begin()); } + + const_iterator + cend() const noexcept + { return const_iterator(nullptr); } + + size_type + size() const noexcept + { return _M_element_count; } + + bool + empty() const noexcept + { return size() == 0; } + + allocator_type + get_allocator() const noexcept + { return allocator_type(this->_M_node_allocator()); } + + size_type + max_size() const noexcept + { return __node_alloc_traits::max_size(this->_M_node_allocator()); } + + // Observers + key_equal + key_eq() const + { return this->_M_eq(); } + + // hash_function, if present, comes from _Hash_code_base. + + // Bucket operations + size_type + bucket_count() const noexcept + { return _M_bucket_count; } + + size_type + max_bucket_count() const noexcept + { return max_size(); } + + size_type + bucket_size(size_type __n) const + { return std::distance(begin(__n), end(__n)); } + + size_type + bucket(const key_type& __k) const + { return _M_bucket_index(__k, this->_M_hash_code(__k)); } + + local_iterator + begin(size_type __n) + { + return local_iterator(*this, _M_bucket_begin(__n), + __n, _M_bucket_count); + } + + local_iterator + end(size_type __n) + { return local_iterator(*this, nullptr, __n, _M_bucket_count); } + + const_local_iterator + begin(size_type __n) const + { + return const_local_iterator(*this, _M_bucket_begin(__n), + __n, _M_bucket_count); + } + + const_local_iterator + end(size_type __n) const + { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } + + // DR 691. + const_local_iterator + cbegin(size_type __n) const + { + return const_local_iterator(*this, _M_bucket_begin(__n), + __n, _M_bucket_count); + } + + const_local_iterator + cend(size_type __n) const + { return const_local_iterator(*this, nullptr, __n, _M_bucket_count); } + + float + load_factor() const noexcept + { + return static_cast(size()) / static_cast(bucket_count()); + } + + // max_load_factor, if present, comes from _Rehash_base. + + // Generalization of max_load_factor. Extension, not found in + // TR1. Only useful if _RehashPolicy is something other than + // the default. + const _RehashPolicy& + __rehash_policy() const + { return _M_rehash_policy; } + + void + __rehash_policy(const _RehashPolicy& __pol) + { _M_rehash_policy = __pol; } + + // Lookup. + iterator + find(const key_type& __k); + + const_iterator + find(const key_type& __k) const; + + size_type + count(const key_type& __k) const; + + std::pair + equal_range(const key_type& __k); + + std::pair + equal_range(const key_type& __k) const; + + protected: + // Bucket index computation helpers. + size_type + _M_bucket_index(__node_type* __n) const noexcept + { return __hash_code_base::_M_bucket_index(__n, _M_bucket_count); } + + size_type + _M_bucket_index(const key_type& __k, __hash_code __c) const + { return __hash_code_base::_M_bucket_index(__k, __c, _M_bucket_count); } + + // Find and insert helper functions and types + // Find the node before the one matching the criteria. + __node_base* + _M_find_before_node(size_type, const key_type&, __hash_code) const; + + __node_type* + _M_find_node(size_type __bkt, const key_type& __key, + __hash_code __c) const + { + __node_base* __before_n = _M_find_before_node(__bkt, __key, __c); + if (__before_n) + return static_cast<__node_type*>(__before_n->_M_nxt); + return nullptr; + } + + // Insert a node at the beginning of a bucket. + void + _M_insert_bucket_begin(size_type, __node_type*); + + // Remove the bucket first node + void + _M_remove_bucket_begin(size_type __bkt, __node_type* __next_n, + size_type __next_bkt); + + // Get the node before __n in the bucket __bkt + __node_base* + _M_get_previous_node(size_type __bkt, __node_base* __n); + + // Insert node with hash code __code, in bucket bkt if no rehash (assumes + // no element with its key already present). Take ownership of the node, + // deallocate it on exception. + iterator + _M_insert_unique_node(size_type __bkt, __hash_code __code, + __node_type* __n, size_type __n_elt = 1); + + // Insert node with hash code __code. Take ownership of the node, + // deallocate it on exception. + iterator + _M_insert_multi_node(__node_type* __hint, + __hash_code __code, __node_type* __n); + + template + std::pair + _M_emplace(std::true_type, _Args&&... __args); + + template + iterator + _M_emplace(std::false_type __uk, _Args&&... __args) + { return _M_emplace(cend(), __uk, std::forward<_Args>(__args)...); } + + // Emplace with hint, useless when keys are unique. + template + iterator + _M_emplace(const_iterator, std::true_type __uk, _Args&&... __args) + { return _M_emplace(__uk, std::forward<_Args>(__args)...).first; } + + template + iterator + _M_emplace(const_iterator, std::false_type, _Args&&... __args); + + template + std::pair + _M_insert(_Arg&&, const _NodeGenerator&, true_type, size_type = 1); + + template + iterator + _M_insert(_Arg&& __arg, const _NodeGenerator& __node_gen, + false_type __uk) + { + return _M_insert(cend(), std::forward<_Arg>(__arg), __node_gen, + __uk); + } + + // Insert with hint, not used when keys are unique. + template + iterator + _M_insert(const_iterator, _Arg&& __arg, + const _NodeGenerator& __node_gen, true_type __uk) + { + return + _M_insert(std::forward<_Arg>(__arg), __node_gen, __uk).first; + } + + // Insert with hint when keys are not unique. + template + iterator + _M_insert(const_iterator, _Arg&&, + const _NodeGenerator&, false_type); + + size_type + _M_erase(std::true_type, const key_type&); + + size_type + _M_erase(std::false_type, const key_type&); + + iterator + _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n); + + public: + // Emplace + template + __ireturn_type + emplace(_Args&&... __args) + { return _M_emplace(__unique_keys(), std::forward<_Args>(__args)...); } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + return _M_emplace(__hint, __unique_keys(), + std::forward<_Args>(__args)...); + } + + // Insert member functions via inheritance. + + // Erase + iterator + erase(const_iterator); + + // LWG 2059. + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + size_type + erase(const key_type& __k) + { return _M_erase(__unique_keys(), __k); } + + iterator + erase(const_iterator, const_iterator); + + void + clear() noexcept; + + // Set number of buckets to be appropriate for container of n element. + void rehash(size_type __n); + + // DR 1189. + // reserve, if present, comes from _Rehash_base. + +#if __cplusplus > 201402L + /// Re-insert an extracted node into a container with unique keys. + insert_return_type + _M_reinsert_node(node_type&& __nh) + { + insert_return_type __ret; + if (__nh.empty()) + __ret.position = end(); + else + { + __glibcxx_assert(get_allocator() == __nh.get_allocator()); + + const key_type& __k = __nh._M_key(); + __hash_code __code = this->_M_hash_code(__k); + size_type __bkt = _M_bucket_index(__k, __code); + if (__node_type* __n = _M_find_node(__bkt, __k, __code)) + { + __ret.node = std::move(__nh); + __ret.position = iterator(__n); + __ret.inserted = false; + } + else + { + __ret.position + = _M_insert_unique_node(__bkt, __code, __nh._M_ptr); + __nh._M_ptr = nullptr; + __ret.inserted = true; + } + } + return __ret; + } + + /// Re-insert an extracted node into a container with equivalent keys. + iterator + _M_reinsert_node_multi(const_iterator __hint, node_type&& __nh) + { + iterator __ret; + if (__nh.empty()) + __ret = end(); + else + { + __glibcxx_assert(get_allocator() == __nh.get_allocator()); + + auto __code = this->_M_hash_code(__nh._M_key()); + auto __node = std::exchange(__nh._M_ptr, nullptr); + // FIXME: this deallocates the node on exception. + __ret = _M_insert_multi_node(__hint._M_cur, __code, __node); + } + return __ret; + } + + /// Extract a node. + node_type + extract(const_iterator __pos) + { + __node_type* __n = __pos._M_cur; + size_t __bkt = _M_bucket_index(__n); + + // Look for previous node to unlink it from the erased one, this + // is why we need buckets to contain the before begin to make + // this search fast. + __node_base* __prev_n = _M_get_previous_node(__bkt, __n); + + if (__prev_n == _M_buckets[__bkt]) + _M_remove_bucket_begin(__bkt, __n->_M_next(), + __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); + else if (__n->_M_nxt) + { + size_type __next_bkt = _M_bucket_index(__n->_M_next()); + if (__next_bkt != __bkt) + _M_buckets[__next_bkt] = __prev_n; + } + + __prev_n->_M_nxt = __n->_M_nxt; + __n->_M_nxt = nullptr; + --_M_element_count; + return { __n, this->_M_node_allocator() }; + } + + /// Extract a node. + node_type + extract(const _Key& __k) + { + node_type __nh; + auto __pos = find(__k); + if (__pos != end()) + __nh = extract(const_iterator(__pos)); + return __nh; + } + + /// Merge from a compatible container into one with unique keys. + template + void + _M_merge_unique(_Compatible_Hashtable& __src) noexcept + { + static_assert(is_same_v, "Node types are compatible"); + __glibcxx_assert(get_allocator() == __src.get_allocator()); + + auto __n_elt = __src.size(); + for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) + { + auto __pos = __i++; + const key_type& __k = this->_M_extract()(__pos._M_cur->_M_v()); + __hash_code __code = this->_M_hash_code(__k); + size_type __bkt = _M_bucket_index(__k, __code); + if (_M_find_node(__bkt, __k, __code) == nullptr) + { + auto __nh = __src.extract(__pos); + _M_insert_unique_node(__bkt, __code, __nh._M_ptr, __n_elt); + __nh._M_ptr = nullptr; + __n_elt = 1; + } + else if (__n_elt != 1) + --__n_elt; + } + } + + /// Merge from a compatible container into one with equivalent keys. + template + void + _M_merge_multi(_Compatible_Hashtable& __src) noexcept + { + static_assert(is_same_v, "Node types are compatible"); + __glibcxx_assert(get_allocator() == __src.get_allocator()); + + this->reserve(size() + __src.size()); + for (auto __i = __src.begin(), __end = __src.end(); __i != __end;) + _M_reinsert_node_multi(cend(), __src.extract(__i++)); + } +#endif // C++17 + + private: + // Helper rehash method used when keys are unique. + void _M_rehash_aux(size_type __n, std::true_type); + + // Helper rehash method used when keys can be non-unique. + void _M_rehash_aux(size_type __n, std::false_type); + + // Unconditionally change size of bucket array to n, restore + // hash policy state to __state on exception. + void _M_rehash(size_type __n, const __rehash_state& __state); + }; + + + // Definitions of class template _Hashtable's out-of-line member functions. + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_bucket_begin(size_type __bkt) const + -> __node_type* + { + __node_base* __n = _M_buckets[__bkt]; + return __n ? static_cast<__node_type*>(__n->_M_nxt) : nullptr; + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(size_type __bucket_hint, + const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : _Hashtable(__h1, __h2, __h, __eq, __exk, __a) + { + auto __bkt = _M_rehash_policy._M_next_bkt(__bucket_hint); + if (__bkt > _M_bucket_count) + { + _M_buckets = _M_allocate_buckets(__bkt); + _M_bucket_count = __bkt; + } + } + + template + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(_InputIterator __f, _InputIterator __l, + size_type __bucket_hint, + const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : _Hashtable(__h1, __h2, __h, __eq, __exk, __a) + { + auto __nb_elems = __detail::__distance_fw(__f, __l); + auto __bkt_count = + _M_rehash_policy._M_next_bkt( + std::max(_M_rehash_policy._M_bkt_for_elements(__nb_elems), + __bucket_hint)); + + if (__bkt_count > _M_bucket_count) + { + _M_buckets = _M_allocate_buckets(__bkt_count); + _M_bucket_count = __bkt_count; + } + + for (; __f != __l; ++__f) + this->insert(*__f); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + operator=(const _Hashtable& __ht) + -> _Hashtable& + { + if (&__ht == this) + return *this; + + if (__node_alloc_traits::_S_propagate_on_copy_assign()) + { + auto& __this_alloc = this->_M_node_allocator(); + auto& __that_alloc = __ht._M_node_allocator(); + if (!__node_alloc_traits::_S_always_equal() + && __this_alloc != __that_alloc) + { + // Replacement allocator cannot free existing storage. + this->_M_deallocate_nodes(_M_begin()); + _M_before_begin._M_nxt = nullptr; + _M_deallocate_buckets(); + _M_buckets = nullptr; + std::__alloc_on_copy(__this_alloc, __that_alloc); + __hashtable_base::operator=(__ht); + _M_bucket_count = __ht._M_bucket_count; + _M_element_count = __ht._M_element_count; + _M_rehash_policy = __ht._M_rehash_policy; + __try + { + _M_assign(__ht, + [this](const __node_type* __n) + { return this->_M_allocate_node(__n->_M_v()); }); + } + __catch(...) + { + // _M_assign took care of deallocating all memory. Now we + // must make sure this instance remains in a usable state. + _M_reset(); + __throw_exception_again; + } + return *this; + } + std::__alloc_on_copy(__this_alloc, __that_alloc); + } + + // Reuse allocated buckets and nodes. + __bucket_type* __former_buckets = nullptr; + std::size_t __former_bucket_count = _M_bucket_count; + const __rehash_state& __former_state = _M_rehash_policy._M_state(); + + if (_M_bucket_count != __ht._M_bucket_count) + { + __former_buckets = _M_buckets; + _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); + _M_bucket_count = __ht._M_bucket_count; + } + else + __builtin_memset(_M_buckets, 0, + _M_bucket_count * sizeof(__bucket_type)); + + __try + { + __hashtable_base::operator=(__ht); + _M_element_count = __ht._M_element_count; + _M_rehash_policy = __ht._M_rehash_policy; + __reuse_or_alloc_node_type __roan(_M_begin(), *this); + _M_before_begin._M_nxt = nullptr; + _M_assign(__ht, + [&__roan](const __node_type* __n) + { return __roan(__n->_M_v()); }); + if (__former_buckets) + _M_deallocate_buckets(__former_buckets, __former_bucket_count); + } + __catch(...) + { + if (__former_buckets) + { + // Restore previous buckets. + _M_deallocate_buckets(); + _M_rehash_policy._M_reset(__former_state); + _M_buckets = __former_buckets; + _M_bucket_count = __former_bucket_count; + } + __builtin_memset(_M_buckets, 0, + _M_bucket_count * sizeof(__bucket_type)); + __throw_exception_again; + } + return *this; + } + + template + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_assign(const _Hashtable& __ht, const _NodeGenerator& __node_gen) + { + __bucket_type* __buckets = nullptr; + if (!_M_buckets) + _M_buckets = __buckets = _M_allocate_buckets(_M_bucket_count); + + __try + { + if (!__ht._M_before_begin._M_nxt) + return; + + // First deal with the special first node pointed to by + // _M_before_begin. + __node_type* __ht_n = __ht._M_begin(); + __node_type* __this_n = __node_gen(__ht_n); + this->_M_copy_code(__this_n, __ht_n); + _M_before_begin._M_nxt = __this_n; + _M_buckets[_M_bucket_index(__this_n)] = &_M_before_begin; + + // Then deal with other nodes. + __node_base* __prev_n = __this_n; + for (__ht_n = __ht_n->_M_next(); __ht_n; __ht_n = __ht_n->_M_next()) + { + __this_n = __node_gen(__ht_n); + __prev_n->_M_nxt = __this_n; + this->_M_copy_code(__this_n, __ht_n); + size_type __bkt = _M_bucket_index(__this_n); + if (!_M_buckets[__bkt]) + _M_buckets[__bkt] = __prev_n; + __prev_n = __this_n; + } + } + __catch(...) + { + clear(); + if (__buckets) + _M_deallocate_buckets(); + __throw_exception_again; + } + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_reset() noexcept + { + _M_rehash_policy._M_reset(); + _M_bucket_count = 1; + _M_single_bucket = nullptr; + _M_buckets = &_M_single_bucket; + _M_before_begin._M_nxt = nullptr; + _M_element_count = 0; + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_move_assign(_Hashtable&& __ht, std::true_type) + { + this->_M_deallocate_nodes(_M_begin()); + _M_deallocate_buckets(); + __hashtable_base::operator=(std::move(__ht)); + _M_rehash_policy = __ht._M_rehash_policy; + if (!__ht._M_uses_single_bucket()) + _M_buckets = __ht._M_buckets; + else + { + _M_buckets = &_M_single_bucket; + _M_single_bucket = __ht._M_single_bucket; + } + _M_bucket_count = __ht._M_bucket_count; + _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; + _M_element_count = __ht._M_element_count; + std::__alloc_on_move(this->_M_node_allocator(), __ht._M_node_allocator()); + + // Fix buckets containing the _M_before_begin pointers that can't be + // moved. + if (_M_begin()) + _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; + __ht._M_reset(); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_move_assign(_Hashtable&& __ht, std::false_type) + { + if (__ht._M_node_allocator() == this->_M_node_allocator()) + _M_move_assign(std::move(__ht), std::true_type()); + else + { + // Can't move memory, move elements then. + __bucket_type* __former_buckets = nullptr; + size_type __former_bucket_count = _M_bucket_count; + const __rehash_state& __former_state = _M_rehash_policy._M_state(); + + if (_M_bucket_count != __ht._M_bucket_count) + { + __former_buckets = _M_buckets; + _M_buckets = _M_allocate_buckets(__ht._M_bucket_count); + _M_bucket_count = __ht._M_bucket_count; + } + else + __builtin_memset(_M_buckets, 0, + _M_bucket_count * sizeof(__bucket_type)); + + __try + { + __hashtable_base::operator=(std::move(__ht)); + _M_element_count = __ht._M_element_count; + _M_rehash_policy = __ht._M_rehash_policy; + __reuse_or_alloc_node_type __roan(_M_begin(), *this); + _M_before_begin._M_nxt = nullptr; + _M_assign(__ht, + [&__roan](__node_type* __n) + { return __roan(std::move_if_noexcept(__n->_M_v())); }); + + if (__former_buckets) + _M_deallocate_buckets(__former_buckets, __former_bucket_count); + __ht.clear(); + } + __catch(...) + { + if (__former_buckets) + { + _M_deallocate_buckets(); + _M_rehash_policy._M_reset(__former_state); + _M_buckets = __former_buckets; + _M_bucket_count = __former_bucket_count; + } + __builtin_memset(_M_buckets, 0, + _M_bucket_count * sizeof(__bucket_type)); + __throw_exception_again; + } + } + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(const _Hashtable& __ht) + : __hashtable_base(__ht), + __map_base(__ht), + __rehash_base(__ht), + __hashtable_alloc( + __node_alloc_traits::_S_select_on_copy(__ht._M_node_allocator())), + _M_buckets(nullptr), + _M_bucket_count(__ht._M_bucket_count), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + _M_assign(__ht, + [this](const __node_type* __n) + { return this->_M_allocate_node(__n->_M_v()); }); + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(_Hashtable&& __ht) noexcept + : __hashtable_base(__ht), + __map_base(__ht), + __rehash_base(__ht), + __hashtable_alloc(std::move(__ht._M_base_alloc())), + _M_buckets(__ht._M_buckets), + _M_bucket_count(__ht._M_bucket_count), + _M_before_begin(__ht._M_before_begin._M_nxt), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + // Update, if necessary, buckets if __ht is using its single bucket. + if (__ht._M_uses_single_bucket()) + { + _M_buckets = &_M_single_bucket; + _M_single_bucket = __ht._M_single_bucket; + } + + // Update, if necessary, bucket pointing to before begin that hasn't + // moved. + if (_M_begin()) + _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; + + __ht._M_reset(); + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(const _Hashtable& __ht, const allocator_type& __a) + : __hashtable_base(__ht), + __map_base(__ht), + __rehash_base(__ht), + __hashtable_alloc(__node_alloc_type(__a)), + _M_buckets(), + _M_bucket_count(__ht._M_bucket_count), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + _M_assign(__ht, + [this](const __node_type* __n) + { return this->_M_allocate_node(__n->_M_v()); }); + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _Hashtable(_Hashtable&& __ht, const allocator_type& __a) + : __hashtable_base(__ht), + __map_base(__ht), + __rehash_base(__ht), + __hashtable_alloc(__node_alloc_type(__a)), + _M_buckets(nullptr), + _M_bucket_count(__ht._M_bucket_count), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + if (__ht._M_node_allocator() == this->_M_node_allocator()) + { + if (__ht._M_uses_single_bucket()) + { + _M_buckets = &_M_single_bucket; + _M_single_bucket = __ht._M_single_bucket; + } + else + _M_buckets = __ht._M_buckets; + + _M_before_begin._M_nxt = __ht._M_before_begin._M_nxt; + // Update, if necessary, bucket pointing to before begin that hasn't + // moved. + if (_M_begin()) + _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; + __ht._M_reset(); + } + else + { + _M_assign(__ht, + [this](__node_type* __n) + { + return this->_M_allocate_node( + std::move_if_noexcept(__n->_M_v())); + }); + __ht.clear(); + } + } + + template + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + ~_Hashtable() noexcept + { + clear(); + _M_deallocate_buckets(); + + static_assert(__is_invocable{}, + "hash function must be invocable with an argument of key type"); + static_assert(__is_invocable{}, + "key equality predicate must be invocable with two arguments of " + "key type"); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + swap(_Hashtable& __x) + noexcept(__and_<__is_nothrow_swappable<_H1>, + __is_nothrow_swappable<_Equal>>::value) + { + // The only base class with member variables is hash_code_base. + // We define _Hash_code_base::_M_swap because different + // specializations have different members. + this->_M_swap(__x); + + std::__alloc_on_swap(this->_M_node_allocator(), __x._M_node_allocator()); + std::swap(_M_rehash_policy, __x._M_rehash_policy); + + // Deal properly with potentially moved instances. + if (this->_M_uses_single_bucket()) + { + if (!__x._M_uses_single_bucket()) + { + _M_buckets = __x._M_buckets; + __x._M_buckets = &__x._M_single_bucket; + } + } + else if (__x._M_uses_single_bucket()) + { + __x._M_buckets = _M_buckets; + _M_buckets = &_M_single_bucket; + } + else + std::swap(_M_buckets, __x._M_buckets); + + std::swap(_M_bucket_count, __x._M_bucket_count); + std::swap(_M_before_begin._M_nxt, __x._M_before_begin._M_nxt); + std::swap(_M_element_count, __x._M_element_count); + std::swap(_M_single_bucket, __x._M_single_bucket); + + // Fix buckets containing the _M_before_begin pointers that can't be + // swapped. + if (_M_begin()) + _M_buckets[_M_bucket_index(_M_begin())] = &_M_before_begin; + + if (__x._M_begin()) + __x._M_buckets[__x._M_bucket_index(__x._M_begin())] + = &__x._M_before_begin; + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + find(const key_type& __k) + -> iterator + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + return __p ? iterator(__p) : end(); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + find(const key_type& __k) const + -> const_iterator + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + return __p ? const_iterator(__p) : end(); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + count(const key_type& __k) const + -> size_type + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_bucket_begin(__n); + if (!__p) + return 0; + + std::size_t __result = 0; + for (;; __p = __p->_M_next()) + { + if (this->_M_equals(__k, __code, __p)) + ++__result; + else if (__result) + // All equivalent values are next to each other, if we + // found a non-equivalent value after an equivalent one it + // means that we won't find any new equivalent value. + break; + if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) + break; + } + return __result; + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + equal_range(const key_type& __k) + -> pair + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + + if (__p) + { + __node_type* __p1 = __p->_M_next(); + while (__p1 && _M_bucket_index(__p1) == __n + && this->_M_equals(__k, __code, __p1)) + __p1 = __p1->_M_next(); + + return std::make_pair(iterator(__p), iterator(__p1)); + } + else + return std::make_pair(end(), end()); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + equal_range(const key_type& __k) const + -> pair + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __n = _M_bucket_index(__k, __code); + __node_type* __p = _M_find_node(__n, __k, __code); + + if (__p) + { + __node_type* __p1 = __p->_M_next(); + while (__p1 && _M_bucket_index(__p1) == __n + && this->_M_equals(__k, __code, __p1)) + __p1 = __p1->_M_next(); + + return std::make_pair(const_iterator(__p), const_iterator(__p1)); + } + else + return std::make_pair(end(), end()); + } + + // Find the node whose key compares equal to k in the bucket n. + // Return nullptr if no node is found. + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_find_before_node(size_type __n, const key_type& __k, + __hash_code __code) const + -> __node_base* + { + __node_base* __prev_p = _M_buckets[__n]; + if (!__prev_p) + return nullptr; + + for (__node_type* __p = static_cast<__node_type*>(__prev_p->_M_nxt);; + __p = __p->_M_next()) + { + if (this->_M_equals(__k, __code, __p)) + return __prev_p; + + if (!__p->_M_nxt || _M_bucket_index(__p->_M_next()) != __n) + break; + __prev_p = __p; + } + return nullptr; + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert_bucket_begin(size_type __bkt, __node_type* __node) + { + if (_M_buckets[__bkt]) + { + // Bucket is not empty, we just need to insert the new node + // after the bucket before begin. + __node->_M_nxt = _M_buckets[__bkt]->_M_nxt; + _M_buckets[__bkt]->_M_nxt = __node; + } + else + { + // The bucket is empty, the new node is inserted at the + // beginning of the singly-linked list and the bucket will + // contain _M_before_begin pointer. + __node->_M_nxt = _M_before_begin._M_nxt; + _M_before_begin._M_nxt = __node; + if (__node->_M_nxt) + // We must update former begin bucket that is pointing to + // _M_before_begin. + _M_buckets[_M_bucket_index(__node->_M_next())] = __node; + _M_buckets[__bkt] = &_M_before_begin; + } + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_remove_bucket_begin(size_type __bkt, __node_type* __next, + size_type __next_bkt) + { + if (!__next || __next_bkt != __bkt) + { + // Bucket is now empty + // First update next bucket if any + if (__next) + _M_buckets[__next_bkt] = _M_buckets[__bkt]; + + // Second update before begin node if necessary + if (&_M_before_begin == _M_buckets[__bkt]) + _M_before_begin._M_nxt = __next; + _M_buckets[__bkt] = nullptr; + } + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_get_previous_node(size_type __bkt, __node_base* __n) + -> __node_base* + { + __node_base* __prev_n = _M_buckets[__bkt]; + while (__prev_n->_M_nxt != __n) + __prev_n = __prev_n->_M_nxt; + return __prev_n; + } + + template + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_emplace(std::true_type, _Args&&... __args) + -> pair + { + // First build the node to get access to the hash code + __node_type* __node = this->_M_allocate_node(std::forward<_Args>(__args)...); + const key_type& __k = this->_M_extract()(__node->_M_v()); + __hash_code __code; + __try + { + __code = this->_M_hash_code(__k); + } + __catch(...) + { + this->_M_deallocate_node(__node); + __throw_exception_again; + } + + size_type __bkt = _M_bucket_index(__k, __code); + if (__node_type* __p = _M_find_node(__bkt, __k, __code)) + { + // There is already an equivalent node, no insertion + this->_M_deallocate_node(__node); + return std::make_pair(iterator(__p), false); + } + + // Insert the node + return std::make_pair(_M_insert_unique_node(__bkt, __code, __node), + true); + } + + template + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_emplace(const_iterator __hint, std::false_type, _Args&&... __args) + -> iterator + { + // First build the node to get its hash code. + __node_type* __node = + this->_M_allocate_node(std::forward<_Args>(__args)...); + + __hash_code __code; + __try + { + __code = this->_M_hash_code(this->_M_extract()(__node->_M_v())); + } + __catch(...) + { + this->_M_deallocate_node(__node); + __throw_exception_again; + } + + return _M_insert_multi_node(__hint._M_cur, __code, __node); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert_unique_node(size_type __bkt, __hash_code __code, + __node_type* __node, size_type __n_elt) + -> iterator + { + const __rehash_state& __saved_state = _M_rehash_policy._M_state(); + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, + __n_elt); + + __try + { + if (__do_rehash.first) + { + _M_rehash(__do_rehash.second, __saved_state); + __bkt = _M_bucket_index(this->_M_extract()(__node->_M_v()), __code); + } + + this->_M_store_code(__node, __code); + + // Always insert at the beginning of the bucket. + _M_insert_bucket_begin(__bkt, __node); + ++_M_element_count; + return iterator(__node); + } + __catch(...) + { + this->_M_deallocate_node(__node); + __throw_exception_again; + } + } + + // Insert node, in bucket bkt if no rehash (assumes no element with its key + // already present). Take ownership of the node, deallocate it on exception. + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert_multi_node(__node_type* __hint, __hash_code __code, + __node_type* __node) + -> iterator + { + const __rehash_state& __saved_state = _M_rehash_policy._M_state(); + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, _M_element_count, 1); + + __try + { + if (__do_rehash.first) + _M_rehash(__do_rehash.second, __saved_state); + + this->_M_store_code(__node, __code); + const key_type& __k = this->_M_extract()(__node->_M_v()); + size_type __bkt = _M_bucket_index(__k, __code); + + // Find the node before an equivalent one or use hint if it exists and + // if it is equivalent. + __node_base* __prev + = __builtin_expect(__hint != nullptr, false) + && this->_M_equals(__k, __code, __hint) + ? __hint + : _M_find_before_node(__bkt, __k, __code); + if (__prev) + { + // Insert after the node before the equivalent one. + __node->_M_nxt = __prev->_M_nxt; + __prev->_M_nxt = __node; + if (__builtin_expect(__prev == __hint, false)) + // hint might be the last bucket node, in this case we need to + // update next bucket. + if (__node->_M_nxt + && !this->_M_equals(__k, __code, __node->_M_next())) + { + size_type __next_bkt = _M_bucket_index(__node->_M_next()); + if (__next_bkt != __bkt) + _M_buckets[__next_bkt] = __node; + } + } + else + // The inserted node has no equivalent in the + // hashtable. We must insert the new node at the + // beginning of the bucket to preserve equivalent + // elements' relative positions. + _M_insert_bucket_begin(__bkt, __node); + ++_M_element_count; + return iterator(__node); + } + __catch(...) + { + this->_M_deallocate_node(__node); + __throw_exception_again; + } + } + + // Insert v if no element with its key is already present. + template + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert(_Arg&& __v, const _NodeGenerator& __node_gen, true_type, + size_type __n_elt) + -> pair + { + const key_type& __k = this->_M_extract()(__v); + __hash_code __code = this->_M_hash_code(__k); + size_type __bkt = _M_bucket_index(__k, __code); + + __node_type* __n = _M_find_node(__bkt, __k, __code); + if (__n) + return std::make_pair(iterator(__n), false); + + __n = __node_gen(std::forward<_Arg>(__v)); + return { _M_insert_unique_node(__bkt, __code, __n, __n_elt), true }; + } + + // Insert v unconditionally. + template + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_insert(const_iterator __hint, _Arg&& __v, + const _NodeGenerator& __node_gen, false_type) + -> iterator + { + // First compute the hash code so that we don't do anything if it + // throws. + __hash_code __code = this->_M_hash_code(this->_M_extract()(__v)); + + // Second allocate new node so that we don't rehash if it throws. + __node_type* __node = __node_gen(std::forward<_Arg>(__v)); + + return _M_insert_multi_node(__hint._M_cur, __code, __node); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + erase(const_iterator __it) + -> iterator + { + __node_type* __n = __it._M_cur; + std::size_t __bkt = _M_bucket_index(__n); + + // Look for previous node to unlink it from the erased one, this + // is why we need buckets to contain the before begin to make + // this search fast. + __node_base* __prev_n = _M_get_previous_node(__bkt, __n); + return _M_erase(__bkt, __prev_n, __n); + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_erase(size_type __bkt, __node_base* __prev_n, __node_type* __n) + -> iterator + { + if (__prev_n == _M_buckets[__bkt]) + _M_remove_bucket_begin(__bkt, __n->_M_next(), + __n->_M_nxt ? _M_bucket_index(__n->_M_next()) : 0); + else if (__n->_M_nxt) + { + size_type __next_bkt = _M_bucket_index(__n->_M_next()); + if (__next_bkt != __bkt) + _M_buckets[__next_bkt] = __prev_n; + } + + __prev_n->_M_nxt = __n->_M_nxt; + iterator __result(__n->_M_next()); + this->_M_deallocate_node(__n); + --_M_element_count; + + return __result; + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_erase(std::true_type, const key_type& __k) + -> size_type + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __bkt = _M_bucket_index(__k, __code); + + // Look for the node before the first matching node. + __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); + if (!__prev_n) + return 0; + + // We found a matching node, erase it. + __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); + _M_erase(__bkt, __prev_n, __n); + return 1; + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_erase(std::false_type, const key_type& __k) + -> size_type + { + __hash_code __code = this->_M_hash_code(__k); + std::size_t __bkt = _M_bucket_index(__k, __code); + + // Look for the node before the first matching node. + __node_base* __prev_n = _M_find_before_node(__bkt, __k, __code); + if (!__prev_n) + return 0; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 526. Is it undefined if a function in the standard changes + // in parameters? + // We use one loop to find all matching nodes and another to deallocate + // them so that the key stays valid during the first loop. It might be + // invalidated indirectly when destroying nodes. + __node_type* __n = static_cast<__node_type*>(__prev_n->_M_nxt); + __node_type* __n_last = __n; + std::size_t __n_last_bkt = __bkt; + do + { + __n_last = __n_last->_M_next(); + if (!__n_last) + break; + __n_last_bkt = _M_bucket_index(__n_last); + } + while (__n_last_bkt == __bkt && this->_M_equals(__k, __code, __n_last)); + + // Deallocate nodes. + size_type __result = 0; + do + { + __node_type* __p = __n->_M_next(); + this->_M_deallocate_node(__n); + __n = __p; + ++__result; + --_M_element_count; + } + while (__n != __n_last); + + if (__prev_n == _M_buckets[__bkt]) + _M_remove_bucket_begin(__bkt, __n_last, __n_last_bkt); + else if (__n_last && __n_last_bkt != __bkt) + _M_buckets[__n_last_bkt] = __prev_n; + __prev_n->_M_nxt = __n_last; + return __result; + } + + template + auto + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + erase(const_iterator __first, const_iterator __last) + -> iterator + { + __node_type* __n = __first._M_cur; + __node_type* __last_n = __last._M_cur; + if (__n == __last_n) + return iterator(__n); + + std::size_t __bkt = _M_bucket_index(__n); + + __node_base* __prev_n = _M_get_previous_node(__bkt, __n); + bool __is_bucket_begin = __n == _M_bucket_begin(__bkt); + std::size_t __n_bkt = __bkt; + for (;;) + { + do + { + __node_type* __tmp = __n; + __n = __n->_M_next(); + this->_M_deallocate_node(__tmp); + --_M_element_count; + if (!__n) + break; + __n_bkt = _M_bucket_index(__n); + } + while (__n != __last_n && __n_bkt == __bkt); + if (__is_bucket_begin) + _M_remove_bucket_begin(__bkt, __n, __n_bkt); + if (__n == __last_n) + break; + __is_bucket_begin = true; + __bkt = __n_bkt; + } + + if (__n && (__n_bkt != __bkt || __is_bucket_begin)) + _M_buckets[__n_bkt] = __prev_n; + __prev_n->_M_nxt = __n; + return iterator(__n); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + clear() noexcept + { + this->_M_deallocate_nodes(_M_begin()); + __builtin_memset(_M_buckets, 0, _M_bucket_count * sizeof(__bucket_type)); + _M_element_count = 0; + _M_before_begin._M_nxt = nullptr; + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + rehash(size_type __n) + { + const __rehash_state& __saved_state = _M_rehash_policy._M_state(); + std::size_t __buckets + = std::max(_M_rehash_policy._M_bkt_for_elements(_M_element_count + 1), + __n); + __buckets = _M_rehash_policy._M_next_bkt(__buckets); + + if (__buckets != _M_bucket_count) + _M_rehash(__buckets, __saved_state); + else + // No rehash, restore previous state to keep a consistent state. + _M_rehash_policy._M_reset(__saved_state); + } + + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_rehash(size_type __n, const __rehash_state& __state) + { + __try + { + _M_rehash_aux(__n, __unique_keys()); + } + __catch(...) + { + // A failure here means that buckets allocation failed. We only + // have to restore hash policy previous state. + _M_rehash_policy._M_reset(__state); + __throw_exception_again; + } + } + + // Rehash when there is no equivalent elements. + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_rehash_aux(size_type __n, std::true_type) + { + __bucket_type* __new_buckets = _M_allocate_buckets(__n); + __node_type* __p = _M_begin(); + _M_before_begin._M_nxt = nullptr; + std::size_t __bbegin_bkt = 0; + while (__p) + { + __node_type* __next = __p->_M_next(); + std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); + if (!__new_buckets[__bkt]) + { + __p->_M_nxt = _M_before_begin._M_nxt; + _M_before_begin._M_nxt = __p; + __new_buckets[__bkt] = &_M_before_begin; + if (__p->_M_nxt) + __new_buckets[__bbegin_bkt] = __p; + __bbegin_bkt = __bkt; + } + else + { + __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; + __new_buckets[__bkt]->_M_nxt = __p; + } + __p = __next; + } + + _M_deallocate_buckets(); + _M_bucket_count = __n; + _M_buckets = __new_buckets; + } + + // Rehash when there can be equivalent elements, preserve their relative + // order. + template + void + _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>:: + _M_rehash_aux(size_type __n, std::false_type) + { + __bucket_type* __new_buckets = _M_allocate_buckets(__n); + + __node_type* __p = _M_begin(); + _M_before_begin._M_nxt = nullptr; + std::size_t __bbegin_bkt = 0; + std::size_t __prev_bkt = 0; + __node_type* __prev_p = nullptr; + bool __check_bucket = false; + + while (__p) + { + __node_type* __next = __p->_M_next(); + std::size_t __bkt = __hash_code_base::_M_bucket_index(__p, __n); + + if (__prev_p && __prev_bkt == __bkt) + { + // Previous insert was already in this bucket, we insert after + // the previously inserted one to preserve equivalent elements + // relative order. + __p->_M_nxt = __prev_p->_M_nxt; + __prev_p->_M_nxt = __p; + + // Inserting after a node in a bucket require to check that we + // haven't change the bucket last node, in this case next + // bucket containing its before begin node must be updated. We + // schedule a check as soon as we move out of the sequence of + // equivalent nodes to limit the number of checks. + __check_bucket = true; + } + else + { + if (__check_bucket) + { + // Check if we shall update the next bucket because of + // insertions into __prev_bkt bucket. + if (__prev_p->_M_nxt) + { + std::size_t __next_bkt + = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), + __n); + if (__next_bkt != __prev_bkt) + __new_buckets[__next_bkt] = __prev_p; + } + __check_bucket = false; + } + + if (!__new_buckets[__bkt]) + { + __p->_M_nxt = _M_before_begin._M_nxt; + _M_before_begin._M_nxt = __p; + __new_buckets[__bkt] = &_M_before_begin; + if (__p->_M_nxt) + __new_buckets[__bbegin_bkt] = __p; + __bbegin_bkt = __bkt; + } + else + { + __p->_M_nxt = __new_buckets[__bkt]->_M_nxt; + __new_buckets[__bkt]->_M_nxt = __p; + } + } + __prev_p = __p; + __prev_bkt = __bkt; + __p = __next; + } + + if (__check_bucket && __prev_p->_M_nxt) + { + std::size_t __next_bkt + = __hash_code_base::_M_bucket_index(__prev_p->_M_next(), __n); + if (__next_bkt != __prev_bkt) + __new_buckets[__next_bkt] = __prev_p; + } + + _M_deallocate_buckets(); + _M_bucket_count = __n; + _M_buckets = __new_buckets; + } + +#if __cplusplus > 201402L + template class _Hash_merge_helper { }; +#endif // C++17 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _HASHTABLE_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hashtable_policy.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hashtable_policy.h new file mode 100644 index 000000000..3ff6b14a9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/hashtable_policy.h @@ -0,0 +1,2145 @@ +// Internal policy header for unordered_set and unordered_map -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file bits/hashtable_policy.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. + * @headername{unordered_map,unordered_set} + */ + +#ifndef _HASHTABLE_POLICY_H +#define _HASHTABLE_POLICY_H 1 + +#include // for std::tuple, std::forward_as_tuple +#include // for std::uint_fast64_t +#include // for std::min. + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + class _Hashtable; + +namespace __detail +{ + /** + * @defgroup hashtable-detail Base and Implementation Classes + * @ingroup unordered_associative_containers + * @{ + */ + template + struct _Hashtable_base; + + // Helper function: return distance(first, last) for forward + // iterators, or 0/1 for input iterators. + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last, + std::input_iterator_tag) + { return __first != __last ? 1 : 0; } + + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last, + std::forward_iterator_tag) + { return std::distance(__first, __last); } + + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last) + { return __distance_fw(__first, __last, + std::__iterator_category(__first)); } + + struct _Identity + { + template + _Tp&& + operator()(_Tp&& __x) const + { return std::forward<_Tp>(__x); } + }; + + struct _Select1st + { + template + auto + operator()(_Tp&& __x) const + -> decltype(std::get<0>(std::forward<_Tp>(__x))) + { return std::get<0>(std::forward<_Tp>(__x)); } + }; + + template + struct _Hashtable_alloc; + + // Functor recycling a pool of nodes and using allocation once the pool is + // empty. + template + struct _ReuseOrAllocNode + { + private: + using __node_alloc_type = _NodeAlloc; + using __hashtable_alloc = _Hashtable_alloc<__node_alloc_type>; + using __node_alloc_traits = + typename __hashtable_alloc::__node_alloc_traits; + using __node_type = typename __hashtable_alloc::__node_type; + + public: + _ReuseOrAllocNode(__node_type* __nodes, __hashtable_alloc& __h) + : _M_nodes(__nodes), _M_h(__h) { } + _ReuseOrAllocNode(const _ReuseOrAllocNode&) = delete; + + ~_ReuseOrAllocNode() + { _M_h._M_deallocate_nodes(_M_nodes); } + + template + __node_type* + operator()(_Arg&& __arg) const + { + if (_M_nodes) + { + __node_type* __node = _M_nodes; + _M_nodes = _M_nodes->_M_next(); + __node->_M_nxt = nullptr; + auto& __a = _M_h._M_node_allocator(); + __node_alloc_traits::destroy(__a, __node->_M_valptr()); + __try + { + __node_alloc_traits::construct(__a, __node->_M_valptr(), + std::forward<_Arg>(__arg)); + } + __catch(...) + { + __node->~__node_type(); + __node_alloc_traits::deallocate(__a, __node, 1); + __throw_exception_again; + } + return __node; + } + return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); + } + + private: + mutable __node_type* _M_nodes; + __hashtable_alloc& _M_h; + }; + + // Functor similar to the previous one but without any pool of nodes to + // recycle. + template + struct _AllocNode + { + private: + using __hashtable_alloc = _Hashtable_alloc<_NodeAlloc>; + using __node_type = typename __hashtable_alloc::__node_type; + + public: + _AllocNode(__hashtable_alloc& __h) + : _M_h(__h) { } + + template + __node_type* + operator()(_Arg&& __arg) const + { return _M_h._M_allocate_node(std::forward<_Arg>(__arg)); } + + private: + __hashtable_alloc& _M_h; + }; + + // Auxiliary types used for all instantiations of _Hashtable nodes + // and iterators. + + /** + * struct _Hashtable_traits + * + * Important traits for hash tables. + * + * @tparam _Cache_hash_code Boolean value. True if the value of + * the hash function is stored along with the value. This is a + * time-space tradeoff. Storing it may improve lookup speed by + * reducing the number of times we need to call the _Equal + * function. + * + * @tparam _Constant_iterators Boolean value. True if iterator and + * const_iterator are both constant iterator types. This is true + * for unordered_set and unordered_multiset, false for + * unordered_map and unordered_multimap. + * + * @tparam _Unique_keys Boolean value. True if the return value + * of _Hashtable::count(k) is always at most one, false if it may + * be an arbitrary number. This is true for unordered_set and + * unordered_map, false for unordered_multiset and + * unordered_multimap. + */ + template + struct _Hashtable_traits + { + using __hash_cached = __bool_constant<_Cache_hash_code>; + using __constant_iterators = __bool_constant<_Constant_iterators>; + using __unique_keys = __bool_constant<_Unique_keys>; + }; + + /** + * struct _Hash_node_base + * + * Nodes, used to wrap elements stored in the hash table. A policy + * template parameter of class template _Hashtable controls whether + * nodes also store a hash code. In some cases (e.g. strings) this + * may be a performance win. + */ + struct _Hash_node_base + { + _Hash_node_base* _M_nxt; + + _Hash_node_base() noexcept : _M_nxt() { } + + _Hash_node_base(_Hash_node_base* __next) noexcept : _M_nxt(__next) { } + }; + + /** + * struct _Hash_node_value_base + * + * Node type with the value to store. + */ + template + struct _Hash_node_value_base : _Hash_node_base + { + typedef _Value value_type; + + __gnu_cxx::__aligned_buffer<_Value> _M_storage; + + _Value* + _M_valptr() noexcept + { return _M_storage._M_ptr(); } + + const _Value* + _M_valptr() const noexcept + { return _M_storage._M_ptr(); } + + _Value& + _M_v() noexcept + { return *_M_valptr(); } + + const _Value& + _M_v() const noexcept + { return *_M_valptr(); } + }; + + /** + * Primary template struct _Hash_node. + */ + template + struct _Hash_node; + + /** + * Specialization for nodes with caches, struct _Hash_node. + * + * Base class is __detail::_Hash_node_value_base. + */ + template + struct _Hash_node<_Value, true> : _Hash_node_value_base<_Value> + { + std::size_t _M_hash_code; + + _Hash_node* + _M_next() const noexcept + { return static_cast<_Hash_node*>(this->_M_nxt); } + }; + + /** + * Specialization for nodes without caches, struct _Hash_node. + * + * Base class is __detail::_Hash_node_value_base. + */ + template + struct _Hash_node<_Value, false> : _Hash_node_value_base<_Value> + { + _Hash_node* + _M_next() const noexcept + { return static_cast<_Hash_node*>(this->_M_nxt); } + }; + + /// Base class for node iterators. + template + struct _Node_iterator_base + { + using __node_type = _Hash_node<_Value, _Cache_hash_code>; + + __node_type* _M_cur; + + _Node_iterator_base(__node_type* __p) noexcept + : _M_cur(__p) { } + + void + _M_incr() noexcept + { _M_cur = _M_cur->_M_next(); } + }; + + template + inline bool + operator==(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, + const _Node_iterator_base<_Value, _Cache_hash_code >& __y) + noexcept + { return __x._M_cur == __y._M_cur; } + + template + inline bool + operator!=(const _Node_iterator_base<_Value, _Cache_hash_code>& __x, + const _Node_iterator_base<_Value, _Cache_hash_code>& __y) + noexcept + { return __x._M_cur != __y._M_cur; } + + /// Node iterators, used to iterate through all the hashtable. + template + struct _Node_iterator + : public _Node_iterator_base<_Value, __cache> + { + private: + using __base_type = _Node_iterator_base<_Value, __cache>; + using __node_type = typename __base_type::__node_type; + + public: + typedef _Value value_type; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + using pointer = typename std::conditional<__constant_iterators, + const _Value*, _Value*>::type; + + using reference = typename std::conditional<__constant_iterators, + const _Value&, _Value&>::type; + + _Node_iterator() noexcept + : __base_type(0) { } + + explicit + _Node_iterator(__node_type* __p) noexcept + : __base_type(__p) { } + + reference + operator*() const noexcept + { return this->_M_cur->_M_v(); } + + pointer + operator->() const noexcept + { return this->_M_cur->_M_valptr(); } + + _Node_iterator& + operator++() noexcept + { + this->_M_incr(); + return *this; + } + + _Node_iterator + operator++(int) noexcept + { + _Node_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + /// Node const_iterators, used to iterate through all the hashtable. + template + struct _Node_const_iterator + : public _Node_iterator_base<_Value, __cache> + { + private: + using __base_type = _Node_iterator_base<_Value, __cache>; + using __node_type = typename __base_type::__node_type; + + public: + typedef _Value value_type; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + typedef const _Value* pointer; + typedef const _Value& reference; + + _Node_const_iterator() noexcept + : __base_type(0) { } + + explicit + _Node_const_iterator(__node_type* __p) noexcept + : __base_type(__p) { } + + _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, + __cache>& __x) noexcept + : __base_type(__x._M_cur) { } + + reference + operator*() const noexcept + { return this->_M_cur->_M_v(); } + + pointer + operator->() const noexcept + { return this->_M_cur->_M_valptr(); } + + _Node_const_iterator& + operator++() noexcept + { + this->_M_incr(); + return *this; + } + + _Node_const_iterator + operator++(int) noexcept + { + _Node_const_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + // Many of class template _Hashtable's template parameters are policy + // classes. These are defaults for the policies. + + /// Default range hashing function: use division to fold a large number + /// into the range [0, N). + struct _Mod_range_hashing + { + typedef std::size_t first_argument_type; + typedef std::size_t second_argument_type; + typedef std::size_t result_type; + + result_type + operator()(first_argument_type __num, + second_argument_type __den) const noexcept + { return __num % __den; } + }; + + /// Default ranged hash function H. In principle it should be a + /// function object composed from objects of type H1 and H2 such that + /// h(k, N) = h2(h1(k), N), but that would mean making extra copies of + /// h1 and h2. So instead we'll just use a tag to tell class template + /// hashtable to do that composition. + struct _Default_ranged_hash { }; + + /// Default value for rehash policy. Bucket size is (usually) the + /// smallest prime that keeps the load factor small enough. + struct _Prime_rehash_policy + { + using __has_load_factor = std::true_type; + + _Prime_rehash_policy(float __z = 1.0) noexcept + : _M_max_load_factor(__z), _M_next_resize(0) { } + + float + max_load_factor() const noexcept + { return _M_max_load_factor; } + + // Return a bucket size no smaller than n. + std::size_t + _M_next_bkt(std::size_t __n) const; + + // Return a bucket count appropriate for n elements + std::size_t + _M_bkt_for_elements(std::size_t __n) const + { return __builtin_ceil(__n / (long double)_M_max_load_factor); } + + // __n_bkt is current bucket count, __n_elt is current element count, + // and __n_ins is number of elements to be inserted. Do we need to + // increase bucket count? If so, return make_pair(true, n), where n + // is the new bucket count. If not, return make_pair(false, 0). + std::pair + _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, + std::size_t __n_ins) const; + + typedef std::size_t _State; + + _State + _M_state() const + { return _M_next_resize; } + + void + _M_reset() noexcept + { _M_next_resize = 0; } + + void + _M_reset(_State __state) + { _M_next_resize = __state; } + + static const std::size_t _S_growth_factor = 2; + + float _M_max_load_factor; + mutable std::size_t _M_next_resize; + }; + + /// Range hashing function assuming that second arg is a power of 2. + struct _Mask_range_hashing + { + typedef std::size_t first_argument_type; + typedef std::size_t second_argument_type; + typedef std::size_t result_type; + + result_type + operator()(first_argument_type __num, + second_argument_type __den) const noexcept + { return __num & (__den - 1); } + }; + + /// Compute closest power of 2. + _GLIBCXX14_CONSTEXPR + inline std::size_t + __clp2(std::size_t __n) noexcept + { +#if __SIZEOF_SIZE_T__ >= 8 + std::uint_fast64_t __x = __n; +#else + std::uint_fast32_t __x = __n; +#endif + // Algorithm from Hacker's Delight, Figure 3-3. + __x = __x - 1; + __x = __x | (__x >> 1); + __x = __x | (__x >> 2); + __x = __x | (__x >> 4); + __x = __x | (__x >> 8); + __x = __x | (__x >>16); +#if __SIZEOF_SIZE_T__ >= 8 + __x = __x | (__x >>32); +#endif + return __x + 1; + } + + /// Rehash policy providing power of 2 bucket numbers. Avoids modulo + /// operations. + struct _Power2_rehash_policy + { + using __has_load_factor = std::true_type; + + _Power2_rehash_policy(float __z = 1.0) noexcept + : _M_max_load_factor(__z), _M_next_resize(0) { } + + float + max_load_factor() const noexcept + { return _M_max_load_factor; } + + // Return a bucket size no smaller than n (as long as n is not above the + // highest power of 2). + std::size_t + _M_next_bkt(std::size_t __n) noexcept + { + const auto __max_width = std::min(sizeof(size_t), 8); + const auto __max_bkt = size_t(1) << (__max_width * __CHAR_BIT__ - 1); + std::size_t __res = __clp2(__n); + + if (__res == __n) + __res <<= 1; + + if (__res == 0) + __res = __max_bkt; + + if (__res == __max_bkt) + // Set next resize to the max value so that we never try to rehash again + // as we already reach the biggest possible bucket number. + // Note that it might result in max_load_factor not being respected. + _M_next_resize = std::size_t(-1); + else + _M_next_resize + = __builtin_ceil(__res * (long double)_M_max_load_factor); + + return __res; + } + + // Return a bucket count appropriate for n elements + std::size_t + _M_bkt_for_elements(std::size_t __n) const noexcept + { return __builtin_ceil(__n / (long double)_M_max_load_factor); } + + // __n_bkt is current bucket count, __n_elt is current element count, + // and __n_ins is number of elements to be inserted. Do we need to + // increase bucket count? If so, return make_pair(true, n), where n + // is the new bucket count. If not, return make_pair(false, 0). + std::pair + _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, + std::size_t __n_ins) noexcept + { + if (__n_elt + __n_ins >= _M_next_resize) + { + long double __min_bkts = (__n_elt + __n_ins) + / (long double)_M_max_load_factor; + if (__min_bkts >= __n_bkt) + return std::make_pair(true, + _M_next_bkt(std::max(__builtin_floor(__min_bkts) + 1, + __n_bkt * _S_growth_factor))); + + _M_next_resize + = __builtin_floor(__n_bkt * (long double)_M_max_load_factor); + return std::make_pair(false, 0); + } + else + return std::make_pair(false, 0); + } + + typedef std::size_t _State; + + _State + _M_state() const noexcept + { return _M_next_resize; } + + void + _M_reset() noexcept + { _M_next_resize = 0; } + + void + _M_reset(_State __state) noexcept + { _M_next_resize = __state; } + + static const std::size_t _S_growth_factor = 2; + + float _M_max_load_factor; + std::size_t _M_next_resize; + }; + + // Base classes for std::_Hashtable. We define these base classes + // because in some cases we want to do different things depending on + // the value of a policy class. In some cases the policy class + // affects which member functions and nested typedefs are defined; + // we handle that by specializing base class templates. Several of + // the base class templates need to access other members of class + // template _Hashtable, so we use a variant of the "Curiously + // Recurring Template Pattern" (CRTP) technique. + + /** + * Primary class template _Map_base. + * + * If the hashtable has a value type of the form pair and a + * key extraction policy (_ExtractKey) that returns the first part + * of the pair, the hashtable gets a mapped_type typedef. If it + * satisfies those criteria and also has unique keys, then it also + * gets an operator[]. + */ + template + struct _Map_base { }; + + /// Partial specialization, __unique_keys set to false. + template + struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, false> + { + using mapped_type = typename std::tuple_element<1, _Pair>::type; + }; + + /// Partial specialization, __unique_keys set to true. + template + struct _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + { + private: + using __hashtable_base = __detail::_Hashtable_base<_Key, _Pair, + _Select1st, + _Equal, _H1, _H2, _Hash, + _Traits>; + + using __hashtable = _Hashtable<_Key, _Pair, _Alloc, + _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>; + + using __hash_code = typename __hashtable_base::__hash_code; + using __node_type = typename __hashtable_base::__node_type; + + public: + using key_type = typename __hashtable_base::key_type; + using iterator = typename __hashtable_base::iterator; + using mapped_type = typename std::tuple_element<1, _Pair>::type; + + mapped_type& + operator[](const key_type& __k); + + mapped_type& + operator[](key_type&& __k); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 761. unordered_map needs an at() member function. + mapped_type& + at(const key_type& __k); + + const mapped_type& + at(const key_type& __k) const; + }; + + template + auto + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + operator[](const key_type& __k) + -> mapped_type& + { + __hashtable* __h = static_cast<__hashtable*>(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + { + __p = __h->_M_allocate_node(std::piecewise_construct, + std::tuple(__k), + std::tuple<>()); + return __h->_M_insert_unique_node(__n, __code, __p)->second; + } + + return __p->_M_v().second; + } + + template + auto + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + operator[](key_type&& __k) + -> mapped_type& + { + __hashtable* __h = static_cast<__hashtable*>(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + { + __p = __h->_M_allocate_node(std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::tuple<>()); + return __h->_M_insert_unique_node(__n, __code, __p)->second; + } + + return __p->_M_v().second; + } + + template + auto + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + at(const key_type& __k) + -> mapped_type& + { + __hashtable* __h = static_cast<__hashtable*>(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + __throw_out_of_range(__N("_Map_base::at")); + return __p->_M_v().second; + } + + template + auto + _Map_base<_Key, _Pair, _Alloc, _Select1st, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + at(const key_type& __k) const + -> const mapped_type& + { + const __hashtable* __h = static_cast(this); + __hash_code __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code); + __node_type* __p = __h->_M_find_node(__n, __k, __code); + + if (!__p) + __throw_out_of_range(__N("_Map_base::at")); + return __p->_M_v().second; + } + + /** + * Primary class template _Insert_base. + * + * Defines @c insert member functions appropriate to all _Hashtables. + */ + template + struct _Insert_base + { + protected: + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _Traits>; + + using value_type = typename __hashtable_base::value_type; + using iterator = typename __hashtable_base::iterator; + using const_iterator = typename __hashtable_base::const_iterator; + using size_type = typename __hashtable_base::size_type; + + using __unique_keys = typename __hashtable_base::__unique_keys; + using __ireturn_type = typename __hashtable_base::__ireturn_type; + using __node_type = _Hash_node<_Value, _Traits::__hash_cached::value>; + using __node_alloc_type = __alloc_rebind<_Alloc, __node_type>; + using __node_gen_type = _AllocNode<__node_alloc_type>; + + __hashtable& + _M_conjure_hashtable() + { return *(static_cast<__hashtable*>(this)); } + + template + void + _M_insert_range(_InputIterator __first, _InputIterator __last, + const _NodeGetter&, true_type); + + template + void + _M_insert_range(_InputIterator __first, _InputIterator __last, + const _NodeGetter&, false_type); + + public: + __ireturn_type + insert(const value_type& __v) + { + __hashtable& __h = _M_conjure_hashtable(); + __node_gen_type __node_gen(__h); + return __h._M_insert(__v, __node_gen, __unique_keys()); + } + + iterator + insert(const_iterator __hint, const value_type& __v) + { + __hashtable& __h = _M_conjure_hashtable(); + __node_gen_type __node_gen(__h); + return __h._M_insert(__hint, __v, __node_gen, __unique_keys()); + } + + void + insert(initializer_list __l) + { this->insert(__l.begin(), __l.end()); } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + __hashtable& __h = _M_conjure_hashtable(); + __node_gen_type __node_gen(__h); + return _M_insert_range(__first, __last, __node_gen, __unique_keys()); + } + }; + + template + template + void + _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>:: + _M_insert_range(_InputIterator __first, _InputIterator __last, + const _NodeGetter& __node_gen, true_type) + { + size_type __n_elt = __detail::__distance_fw(__first, __last); + if (__n_elt == 0) + return; + + __hashtable& __h = _M_conjure_hashtable(); + for (; __first != __last; ++__first) + { + if (__h._M_insert(*__first, __node_gen, __unique_keys(), + __n_elt).second) + __n_elt = 1; + else if (__n_elt != 1) + --__n_elt; + } + } + + template + template + void + _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>:: + _M_insert_range(_InputIterator __first, _InputIterator __last, + const _NodeGetter& __node_gen, false_type) + { + using __rehash_type = typename __hashtable::__rehash_type; + using __rehash_state = typename __hashtable::__rehash_state; + using pair_type = std::pair; + + size_type __n_elt = __detail::__distance_fw(__first, __last); + if (__n_elt == 0) + return; + + __hashtable& __h = _M_conjure_hashtable(); + __rehash_type& __rehash = __h._M_rehash_policy; + const __rehash_state& __saved_state = __rehash._M_state(); + pair_type __do_rehash = __rehash._M_need_rehash(__h._M_bucket_count, + __h._M_element_count, + __n_elt); + + if (__do_rehash.first) + __h._M_rehash(__do_rehash.second, __saved_state); + + for (; __first != __last; ++__first) + __h._M_insert(*__first, __node_gen, __unique_keys()); + } + + /** + * Primary class template _Insert. + * + * Defines @c insert member functions that depend on _Hashtable policies, + * via partial specializations. + */ + template + struct _Insert; + + /// Specialization. + template + struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits, true> + : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits> + { + using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + using __hashtable_base = _Hashtable_base<_Key, _Value, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _Traits>; + + using value_type = typename __base_type::value_type; + using iterator = typename __base_type::iterator; + using const_iterator = typename __base_type::const_iterator; + + using __unique_keys = typename __base_type::__unique_keys; + using __ireturn_type = typename __hashtable_base::__ireturn_type; + using __hashtable = typename __base_type::__hashtable; + using __node_gen_type = typename __base_type::__node_gen_type; + + using __base_type::insert; + + __ireturn_type + insert(value_type&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + __node_gen_type __node_gen(__h); + return __h._M_insert(std::move(__v), __node_gen, __unique_keys()); + } + + iterator + insert(const_iterator __hint, value_type&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + __node_gen_type __node_gen(__h); + return __h._M_insert(__hint, std::move(__v), __node_gen, + __unique_keys()); + } + }; + + /// Specialization. + template + struct _Insert<_Key, _Value, _Alloc, _ExtractKey, _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits, false> + : public _Insert_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits> + { + using __base_type = _Insert_base<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + using value_type = typename __base_type::value_type; + using iterator = typename __base_type::iterator; + using const_iterator = typename __base_type::const_iterator; + + using __unique_keys = typename __base_type::__unique_keys; + using __hashtable = typename __base_type::__hashtable; + using __ireturn_type = typename __base_type::__ireturn_type; + + using __base_type::insert; + + template + using __is_cons = std::is_constructible; + + template + using _IFcons = std::enable_if<__is_cons<_Pair>::value>; + + template + using _IFconsp = typename _IFcons<_Pair>::type; + + template> + __ireturn_type + insert(_Pair&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + return __h._M_emplace(__unique_keys(), std::forward<_Pair>(__v)); + } + + template> + iterator + insert(const_iterator __hint, _Pair&& __v) + { + __hashtable& __h = this->_M_conjure_hashtable(); + return __h._M_emplace(__hint, __unique_keys(), + std::forward<_Pair>(__v)); + } + }; + + template + using __has_load_factor = typename _Policy::__has_load_factor; + + /** + * Primary class template _Rehash_base. + * + * Give hashtable the max_load_factor functions and reserve iff the + * rehash policy supports it. + */ + template> + struct _Rehash_base; + + /// Specialization when rehash policy doesn't provide load factor management. + template + struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, + std::false_type> + { + }; + + /// Specialization when rehash policy provide load factor management. + template + struct _Rehash_base<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, + std::true_type> + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, _Traits>; + + float + max_load_factor() const noexcept + { + const __hashtable* __this = static_cast(this); + return __this->__rehash_policy().max_load_factor(); + } + + void + max_load_factor(float __z) + { + __hashtable* __this = static_cast<__hashtable*>(this); + __this->__rehash_policy(_RehashPolicy(__z)); + } + + void + reserve(std::size_t __n) + { + __hashtable* __this = static_cast<__hashtable*>(this); + __this->rehash(__builtin_ceil(__n / max_load_factor())); + } + }; + + /** + * Primary class template _Hashtable_ebo_helper. + * + * Helper class using EBO when it is not forbidden (the type is not + * final) and when it is worth it (the type is empty.) + */ + template + struct _Hashtable_ebo_helper; + + /// Specialization using EBO. + template + struct _Hashtable_ebo_helper<_Nm, _Tp, true> + : private _Tp + { + _Hashtable_ebo_helper() = default; + + template + _Hashtable_ebo_helper(_OtherTp&& __tp) + : _Tp(std::forward<_OtherTp>(__tp)) + { } + + static const _Tp& + _S_cget(const _Hashtable_ebo_helper& __eboh) + { return static_cast(__eboh); } + + static _Tp& + _S_get(_Hashtable_ebo_helper& __eboh) + { return static_cast<_Tp&>(__eboh); } + }; + + /// Specialization not using EBO. + template + struct _Hashtable_ebo_helper<_Nm, _Tp, false> + { + _Hashtable_ebo_helper() = default; + + template + _Hashtable_ebo_helper(_OtherTp&& __tp) + : _M_tp(std::forward<_OtherTp>(__tp)) + { } + + static const _Tp& + _S_cget(const _Hashtable_ebo_helper& __eboh) + { return __eboh._M_tp; } + + static _Tp& + _S_get(_Hashtable_ebo_helper& __eboh) + { return __eboh._M_tp; } + + private: + _Tp _M_tp; + }; + + /** + * Primary class template _Local_iterator_base. + * + * Base class for local iterators, used to iterate within a bucket + * but not between buckets. + */ + template + struct _Local_iterator_base; + + /** + * Primary class template _Hash_code_base. + * + * Encapsulates two policy issues that aren't quite orthogonal. + * (1) the difference between using a ranged hash function and using + * the combination of a hash function and a range-hashing function. + * In the former case we don't have such things as hash codes, so + * we have a dummy type as placeholder. + * (2) Whether or not we cache hash codes. Caching hash codes is + * meaningless if we have a ranged hash function. + * + * We also put the key extraction objects here, for convenience. + * Each specialization derives from one or more of the template + * parameters to benefit from Ebo. This is important as this type + * is inherited in some cases by the _Local_iterator_base type used + * to implement local_iterator and const_local_iterator. As with + * any iterator type we prefer to make it as small as possible. + * + * Primary template is unused except as a hook for specializations. + */ + template + struct _Hash_code_base; + + /// Specialization: ranged hash function, no caching hash codes. H1 + /// and H2 are provided but ignored. We define a dummy hash code type. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, false> + : private _Hashtable_ebo_helper<0, _ExtractKey>, + private _Hashtable_ebo_helper<1, _Hash> + { + private: + using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; + using __ebo_hash = _Hashtable_ebo_helper<1, _Hash>; + + protected: + typedef void* __hash_code; + typedef _Hash_node<_Value, false> __node_type; + + // We need the default constructor for the local iterators and _Hashtable + // default constructor. + _Hash_code_base() = default; + + _Hash_code_base(const _ExtractKey& __ex, const _H1&, const _H2&, + const _Hash& __h) + : __ebo_extract_key(__ex), __ebo_hash(__h) { } + + __hash_code + _M_hash_code(const _Key& __key) const + { return 0; } + + std::size_t + _M_bucket_index(const _Key& __k, __hash_code, std::size_t __n) const + { return _M_ranged_hash()(__k, __n); } + + std::size_t + _M_bucket_index(const __node_type* __p, std::size_t __n) const + noexcept( noexcept(declval()(declval(), + (std::size_t)0)) ) + { return _M_ranged_hash()(_M_extract()(__p->_M_v()), __n); } + + void + _M_store_code(__node_type*, __hash_code) const + { } + + void + _M_copy_code(__node_type*, const __node_type*) const + { } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract(), __x._M_extract()); + std::swap(_M_ranged_hash(), __x._M_ranged_hash()); + } + + const _ExtractKey& + _M_extract() const { return __ebo_extract_key::_S_cget(*this); } + + _ExtractKey& + _M_extract() { return __ebo_extract_key::_S_get(*this); } + + const _Hash& + _M_ranged_hash() const { return __ebo_hash::_S_cget(*this); } + + _Hash& + _M_ranged_hash() { return __ebo_hash::_S_get(*this); } + }; + + // No specialization for ranged hash function while caching hash codes. + // That combination is meaningless, and trying to do it is an error. + + /// Specialization: ranged hash function, cache hash codes. This + /// combination is meaningless, so we provide only a declaration + /// and no definition. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, true>; + + /// Specialization: hash function and range-hashing function, no + /// caching of hash codes. + /// Provides typedef and accessor required by C++ 11. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, false> + : private _Hashtable_ebo_helper<0, _ExtractKey>, + private _Hashtable_ebo_helper<1, _H1>, + private _Hashtable_ebo_helper<2, _H2> + { + private: + using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; + using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; + using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; + + // Gives the local iterator implementation access to _M_bucket_index(). + friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, false>; + + public: + typedef _H1 hasher; + + hasher + hash_function() const + { return _M_h1(); } + + protected: + typedef std::size_t __hash_code; + typedef _Hash_node<_Value, false> __node_type; + + // We need the default constructor for the local iterators and _Hashtable + // default constructor. + _Hash_code_base() = default; + + _Hash_code_base(const _ExtractKey& __ex, + const _H1& __h1, const _H2& __h2, + const _Default_ranged_hash&) + : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } + + __hash_code + _M_hash_code(const _Key& __k) const + { return _M_h1()(__k); } + + std::size_t + _M_bucket_index(const _Key&, __hash_code __c, std::size_t __n) const + { return _M_h2()(__c, __n); } + + std::size_t + _M_bucket_index(const __node_type* __p, std::size_t __n) const + noexcept( noexcept(declval()(declval())) + && noexcept(declval()((__hash_code)0, + (std::size_t)0)) ) + { return _M_h2()(_M_h1()(_M_extract()(__p->_M_v())), __n); } + + void + _M_store_code(__node_type*, __hash_code) const + { } + + void + _M_copy_code(__node_type*, const __node_type*) const + { } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract(), __x._M_extract()); + std::swap(_M_h1(), __x._M_h1()); + std::swap(_M_h2(), __x._M_h2()); + } + + const _ExtractKey& + _M_extract() const { return __ebo_extract_key::_S_cget(*this); } + + _ExtractKey& + _M_extract() { return __ebo_extract_key::_S_get(*this); } + + const _H1& + _M_h1() const { return __ebo_h1::_S_cget(*this); } + + _H1& + _M_h1() { return __ebo_h1::_S_get(*this); } + + const _H2& + _M_h2() const { return __ebo_h2::_S_cget(*this); } + + _H2& + _M_h2() { return __ebo_h2::_S_get(*this); } + }; + + /// Specialization: hash function and range-hashing function, + /// caching hash codes. H is provided but ignored. Provides + /// typedef and accessor required by C++ 11. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, true> + : private _Hashtable_ebo_helper<0, _ExtractKey>, + private _Hashtable_ebo_helper<1, _H1>, + private _Hashtable_ebo_helper<2, _H2> + { + private: + // Gives the local iterator implementation access to _M_h2(). + friend struct _Local_iterator_base<_Key, _Value, _ExtractKey, _H1, _H2, + _Default_ranged_hash, true>; + + using __ebo_extract_key = _Hashtable_ebo_helper<0, _ExtractKey>; + using __ebo_h1 = _Hashtable_ebo_helper<1, _H1>; + using __ebo_h2 = _Hashtable_ebo_helper<2, _H2>; + + public: + typedef _H1 hasher; + + hasher + hash_function() const + { return _M_h1(); } + + protected: + typedef std::size_t __hash_code; + typedef _Hash_node<_Value, true> __node_type; + + // We need the default constructor for _Hashtable default constructor. + _Hash_code_base() = default; + _Hash_code_base(const _ExtractKey& __ex, + const _H1& __h1, const _H2& __h2, + const _Default_ranged_hash&) + : __ebo_extract_key(__ex), __ebo_h1(__h1), __ebo_h2(__h2) { } + + __hash_code + _M_hash_code(const _Key& __k) const + { return _M_h1()(__k); } + + std::size_t + _M_bucket_index(const _Key&, __hash_code __c, + std::size_t __n) const + { return _M_h2()(__c, __n); } + + std::size_t + _M_bucket_index(const __node_type* __p, std::size_t __n) const + noexcept( noexcept(declval()((__hash_code)0, + (std::size_t)0)) ) + { return _M_h2()(__p->_M_hash_code, __n); } + + void + _M_store_code(__node_type* __n, __hash_code __c) const + { __n->_M_hash_code = __c; } + + void + _M_copy_code(__node_type* __to, const __node_type* __from) const + { __to->_M_hash_code = __from->_M_hash_code; } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract(), __x._M_extract()); + std::swap(_M_h1(), __x._M_h1()); + std::swap(_M_h2(), __x._M_h2()); + } + + const _ExtractKey& + _M_extract() const { return __ebo_extract_key::_S_cget(*this); } + + _ExtractKey& + _M_extract() { return __ebo_extract_key::_S_get(*this); } + + const _H1& + _M_h1() const { return __ebo_h1::_S_cget(*this); } + + _H1& + _M_h1() { return __ebo_h1::_S_get(*this); } + + const _H2& + _M_h2() const { return __ebo_h2::_S_cget(*this); } + + _H2& + _M_h2() { return __ebo_h2::_S_get(*this); } + }; + + /** + * Primary class template _Equal_helper. + * + */ + template + struct _Equal_helper; + + /// Specialization. + template + struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, true> + { + static bool + _S_equals(const _Equal& __eq, const _ExtractKey& __extract, + const _Key& __k, _HashCodeType __c, _Hash_node<_Value, true>* __n) + { return __c == __n->_M_hash_code && __eq(__k, __extract(__n->_M_v())); } + }; + + /// Specialization. + template + struct _Equal_helper<_Key, _Value, _ExtractKey, _Equal, _HashCodeType, false> + { + static bool + _S_equals(const _Equal& __eq, const _ExtractKey& __extract, + const _Key& __k, _HashCodeType, _Hash_node<_Value, false>* __n) + { return __eq(__k, __extract(__n->_M_v())); } + }; + + + /// Partial specialization used when nodes contain a cached hash code. + template + struct _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, true> + : private _Hashtable_ebo_helper<0, _H2> + { + protected: + using __base_type = _Hashtable_ebo_helper<0, _H2>; + using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, true>; + + _Local_iterator_base() = default; + _Local_iterator_base(const __hash_code_base& __base, + _Hash_node<_Value, true>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __base_type(__base._M_h2()), + _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) { } + + void + _M_incr() + { + _M_cur = _M_cur->_M_next(); + if (_M_cur) + { + std::size_t __bkt + = __base_type::_S_get(*this)(_M_cur->_M_hash_code, + _M_bucket_count); + if (__bkt != _M_bucket) + _M_cur = nullptr; + } + } + + _Hash_node<_Value, true>* _M_cur; + std::size_t _M_bucket; + std::size_t _M_bucket_count; + + public: + const void* + _M_curr() const { return _M_cur; } // for equality ops + + std::size_t + _M_get_bucket() const { return _M_bucket; } // for debug mode + }; + + // Uninitialized storage for a _Hash_code_base. + // This type is DefaultConstructible and Assignable even if the + // _Hash_code_base type isn't, so that _Local_iterator_base<..., false> + // can be DefaultConstructible and Assignable. + template::value> + struct _Hash_code_storage + { + __gnu_cxx::__aligned_buffer<_Tp> _M_storage; + + _Tp* + _M_h() { return _M_storage._M_ptr(); } + + const _Tp* + _M_h() const { return _M_storage._M_ptr(); } + }; + + // Empty partial specialization for empty _Hash_code_base types. + template + struct _Hash_code_storage<_Tp, true> + { + static_assert( std::is_empty<_Tp>::value, "Type must be empty" ); + + // As _Tp is an empty type there will be no bytes written/read through + // the cast pointer, so no strict-aliasing violation. + _Tp* + _M_h() { return reinterpret_cast<_Tp*>(this); } + + const _Tp* + _M_h() const { return reinterpret_cast(this); } + }; + + template + using __hash_code_for_local_iter + = _Hash_code_storage<_Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, false>>; + + // Partial specialization used when hash codes are not cached + template + struct _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, false> + : __hash_code_for_local_iter<_Key, _Value, _ExtractKey, _H1, _H2, _Hash> + { + protected: + using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, false>; + + _Local_iterator_base() : _M_bucket_count(-1) { } + + _Local_iterator_base(const __hash_code_base& __base, + _Hash_node<_Value, false>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : _M_cur(__p), _M_bucket(__bkt), _M_bucket_count(__bkt_count) + { _M_init(__base); } + + ~_Local_iterator_base() + { + if (_M_bucket_count != -1) + _M_destroy(); + } + + _Local_iterator_base(const _Local_iterator_base& __iter) + : _M_cur(__iter._M_cur), _M_bucket(__iter._M_bucket), + _M_bucket_count(__iter._M_bucket_count) + { + if (_M_bucket_count != -1) + _M_init(*__iter._M_h()); + } + + _Local_iterator_base& + operator=(const _Local_iterator_base& __iter) + { + if (_M_bucket_count != -1) + _M_destroy(); + _M_cur = __iter._M_cur; + _M_bucket = __iter._M_bucket; + _M_bucket_count = __iter._M_bucket_count; + if (_M_bucket_count != -1) + _M_init(*__iter._M_h()); + return *this; + } + + void + _M_incr() + { + _M_cur = _M_cur->_M_next(); + if (_M_cur) + { + std::size_t __bkt = this->_M_h()->_M_bucket_index(_M_cur, + _M_bucket_count); + if (__bkt != _M_bucket) + _M_cur = nullptr; + } + } + + _Hash_node<_Value, false>* _M_cur; + std::size_t _M_bucket; + std::size_t _M_bucket_count; + + void + _M_init(const __hash_code_base& __base) + { ::new(this->_M_h()) __hash_code_base(__base); } + + void + _M_destroy() { this->_M_h()->~__hash_code_base(); } + + public: + const void* + _M_curr() const { return _M_cur; } // for equality ops and debug mode + + std::size_t + _M_get_bucket() const { return _M_bucket; } // for debug mode + }; + + template + inline bool + operator==(const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __x, + const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __y) + { return __x._M_curr() == __y._M_curr(); } + + template + inline bool + operator!=(const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __x, + const _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>& __y) + { return __x._M_curr() != __y._M_curr(); } + + /// local iterators + template + struct _Local_iterator + : public _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache> + { + private: + using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>; + using __hash_code_base = typename __base_type::__hash_code_base; + public: + typedef _Value value_type; + typedef typename std::conditional<__constant_iterators, + const _Value*, _Value*>::type + pointer; + typedef typename std::conditional<__constant_iterators, + const _Value&, _Value&>::type + reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Local_iterator() = default; + + _Local_iterator(const __hash_code_base& __base, + _Hash_node<_Value, __cache>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __base_type(__base, __p, __bkt, __bkt_count) + { } + + reference + operator*() const + { return this->_M_cur->_M_v(); } + + pointer + operator->() const + { return this->_M_cur->_M_valptr(); } + + _Local_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Local_iterator + operator++(int) + { + _Local_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + /// local const_iterators + template + struct _Local_const_iterator + : public _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache> + { + private: + using __base_type = _Local_iterator_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, __cache>; + using __hash_code_base = typename __base_type::__hash_code_base; + + public: + typedef _Value value_type; + typedef const _Value* pointer; + typedef const _Value& reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Local_const_iterator() = default; + + _Local_const_iterator(const __hash_code_base& __base, + _Hash_node<_Value, __cache>* __p, + std::size_t __bkt, std::size_t __bkt_count) + : __base_type(__base, __p, __bkt, __bkt_count) + { } + + _Local_const_iterator(const _Local_iterator<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, + __constant_iterators, + __cache>& __x) + : __base_type(__x) + { } + + reference + operator*() const + { return this->_M_cur->_M_v(); } + + pointer + operator->() const + { return this->_M_cur->_M_valptr(); } + + _Local_const_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Local_const_iterator + operator++(int) + { + _Local_const_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + /** + * Primary class template _Hashtable_base. + * + * Helper class adding management of _Equal functor to + * _Hash_code_base type. + * + * Base class templates are: + * - __detail::_Hash_code_base + * - __detail::_Hashtable_ebo_helper + */ + template + struct _Hashtable_base + : public _Hash_code_base<_Key, _Value, _ExtractKey, _H1, _H2, _Hash, + _Traits::__hash_cached::value>, + private _Hashtable_ebo_helper<0, _Equal> + { + public: + typedef _Key key_type; + typedef _Value value_type; + typedef _Equal key_equal; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + + using __traits_type = _Traits; + using __hash_cached = typename __traits_type::__hash_cached; + using __constant_iterators = typename __traits_type::__constant_iterators; + using __unique_keys = typename __traits_type::__unique_keys; + + using __hash_code_base = _Hash_code_base<_Key, _Value, _ExtractKey, + _H1, _H2, _Hash, + __hash_cached::value>; + + using __hash_code = typename __hash_code_base::__hash_code; + using __node_type = typename __hash_code_base::__node_type; + + using iterator = __detail::_Node_iterator; + + using const_iterator = __detail::_Node_const_iterator; + + using local_iterator = __detail::_Local_iterator; + + using const_local_iterator = __detail::_Local_const_iterator; + + using __ireturn_type = typename std::conditional<__unique_keys::value, + std::pair, + iterator>::type; + private: + using _EqualEBO = _Hashtable_ebo_helper<0, _Equal>; + using _EqualHelper = _Equal_helper<_Key, _Value, _ExtractKey, _Equal, + __hash_code, __hash_cached::value>; + + protected: + _Hashtable_base() = default; + _Hashtable_base(const _ExtractKey& __ex, const _H1& __h1, const _H2& __h2, + const _Hash& __hash, const _Equal& __eq) + : __hash_code_base(__ex, __h1, __h2, __hash), _EqualEBO(__eq) + { } + + bool + _M_equals(const _Key& __k, __hash_code __c, __node_type* __n) const + { + return _EqualHelper::_S_equals(_M_eq(), this->_M_extract(), + __k, __c, __n); + } + + void + _M_swap(_Hashtable_base& __x) + { + __hash_code_base::_M_swap(__x); + std::swap(_M_eq(), __x._M_eq()); + } + + const _Equal& + _M_eq() const { return _EqualEBO::_S_cget(*this); } + + _Equal& + _M_eq() { return _EqualEBO::_S_get(*this); } + }; + + /** + * struct _Equality_base. + * + * Common types and functions for class _Equality. + */ + struct _Equality_base + { + protected: + template + static bool + _S_is_permutation(_Uiterator, _Uiterator, _Uiterator); + }; + + // See std::is_permutation in N3068. + template + bool + _Equality_base:: + _S_is_permutation(_Uiterator __first1, _Uiterator __last1, + _Uiterator __first2) + { + for (; __first1 != __last1; ++__first1, ++__first2) + if (!(*__first1 == *__first2)) + break; + + if (__first1 == __last1) + return true; + + _Uiterator __last2 = __first2; + std::advance(__last2, std::distance(__first1, __last1)); + + for (_Uiterator __it1 = __first1; __it1 != __last1; ++__it1) + { + _Uiterator __tmp = __first1; + while (__tmp != __it1 && !bool(*__tmp == *__it1)) + ++__tmp; + + // We've seen this one before. + if (__tmp != __it1) + continue; + + std::ptrdiff_t __n2 = 0; + for (__tmp = __first2; __tmp != __last2; ++__tmp) + if (*__tmp == *__it1) + ++__n2; + + if (!__n2) + return false; + + std::ptrdiff_t __n1 = 0; + for (__tmp = __it1; __tmp != __last1; ++__tmp) + if (*__tmp == *__it1) + ++__n1; + + if (__n1 != __n2) + return false; + } + return true; + } + + /** + * Primary class template _Equality. + * + * This is for implementing equality comparison for unordered + * containers, per N3068, by John Lakos and Pablo Halpern. + * Algorithmically, we follow closely the reference implementations + * therein. + */ + template + struct _Equality; + + /// Specialization. + template + struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true> + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>; + + bool + _M_equal(const __hashtable&) const; + }; + + template + bool + _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, true>:: + _M_equal(const __hashtable& __other) const + { + const __hashtable* __this = static_cast(this); + + if (__this->size() != __other.size()) + return false; + + for (auto __itx = __this->begin(); __itx != __this->end(); ++__itx) + { + const auto __ity = __other.find(_ExtractKey()(*__itx)); + if (__ity == __other.end() || !bool(*__ity == *__itx)) + return false; + } + return true; + } + + /// Specialization. + template + struct _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, false> + : public _Equality_base + { + using __hashtable = _Hashtable<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits>; + + bool + _M_equal(const __hashtable&) const; + }; + + template + bool + _Equality<_Key, _Value, _Alloc, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, _Traits, false>:: + _M_equal(const __hashtable& __other) const + { + const __hashtable* __this = static_cast(this); + + if (__this->size() != __other.size()) + return false; + + for (auto __itx = __this->begin(); __itx != __this->end();) + { + const auto __xrange = __this->equal_range(_ExtractKey()(*__itx)); + const auto __yrange = __other.equal_range(_ExtractKey()(*__itx)); + + if (std::distance(__xrange.first, __xrange.second) + != std::distance(__yrange.first, __yrange.second)) + return false; + + if (!_S_is_permutation(__xrange.first, __xrange.second, + __yrange.first)) + return false; + + __itx = __xrange.second; + } + return true; + } + + /** + * This type deals with all allocation and keeps an allocator instance through + * inheritance to benefit from EBO when possible. + */ + template + struct _Hashtable_alloc : private _Hashtable_ebo_helper<0, _NodeAlloc> + { + private: + using __ebo_node_alloc = _Hashtable_ebo_helper<0, _NodeAlloc>; + public: + using __node_type = typename _NodeAlloc::value_type; + using __node_alloc_type = _NodeAlloc; + // Use __gnu_cxx to benefit from _S_always_equal and al. + using __node_alloc_traits = __gnu_cxx::__alloc_traits<__node_alloc_type>; + + using __value_alloc_traits = typename __node_alloc_traits::template + rebind_traits; + + using __node_base = __detail::_Hash_node_base; + using __bucket_type = __node_base*; + using __bucket_alloc_type = + __alloc_rebind<__node_alloc_type, __bucket_type>; + using __bucket_alloc_traits = std::allocator_traits<__bucket_alloc_type>; + + _Hashtable_alloc() = default; + _Hashtable_alloc(const _Hashtable_alloc&) = default; + _Hashtable_alloc(_Hashtable_alloc&&) = default; + + template + _Hashtable_alloc(_Alloc&& __a) + : __ebo_node_alloc(std::forward<_Alloc>(__a)) + { } + + __node_alloc_type& + _M_node_allocator() + { return __ebo_node_alloc::_S_get(*this); } + + const __node_alloc_type& + _M_node_allocator() const + { return __ebo_node_alloc::_S_cget(*this); } + + template + __node_type* + _M_allocate_node(_Args&&... __args); + + void + _M_deallocate_node(__node_type* __n); + + // Deallocate the linked list of nodes pointed to by __n + void + _M_deallocate_nodes(__node_type* __n); + + __bucket_type* + _M_allocate_buckets(std::size_t __n); + + void + _M_deallocate_buckets(__bucket_type*, std::size_t __n); + }; + + // Definitions of class template _Hashtable_alloc's out-of-line member + // functions. + template + template + typename _Hashtable_alloc<_NodeAlloc>::__node_type* + _Hashtable_alloc<_NodeAlloc>::_M_allocate_node(_Args&&... __args) + { + auto __nptr = __node_alloc_traits::allocate(_M_node_allocator(), 1); + __node_type* __n = std::__to_address(__nptr); + __try + { + ::new ((void*)__n) __node_type; + __node_alloc_traits::construct(_M_node_allocator(), + __n->_M_valptr(), + std::forward<_Args>(__args)...); + return __n; + } + __catch(...) + { + __node_alloc_traits::deallocate(_M_node_allocator(), __nptr, 1); + __throw_exception_again; + } + } + + template + void + _Hashtable_alloc<_NodeAlloc>::_M_deallocate_node(__node_type* __n) + { + typedef typename __node_alloc_traits::pointer _Ptr; + auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__n); + __node_alloc_traits::destroy(_M_node_allocator(), __n->_M_valptr()); + __n->~__node_type(); + __node_alloc_traits::deallocate(_M_node_allocator(), __ptr, 1); + } + + template + void + _Hashtable_alloc<_NodeAlloc>::_M_deallocate_nodes(__node_type* __n) + { + while (__n) + { + __node_type* __tmp = __n; + __n = __n->_M_next(); + _M_deallocate_node(__tmp); + } + } + + template + typename _Hashtable_alloc<_NodeAlloc>::__bucket_type* + _Hashtable_alloc<_NodeAlloc>::_M_allocate_buckets(std::size_t __n) + { + __bucket_alloc_type __alloc(_M_node_allocator()); + + auto __ptr = __bucket_alloc_traits::allocate(__alloc, __n); + __bucket_type* __p = std::__to_address(__ptr); + __builtin_memset(__p, 0, __n * sizeof(__bucket_type)); + return __p; + } + + template + void + _Hashtable_alloc<_NodeAlloc>::_M_deallocate_buckets(__bucket_type* __bkts, + std::size_t __n) + { + typedef typename __bucket_alloc_traits::pointer _Ptr; + auto __ptr = std::pointer_traits<_Ptr>::pointer_to(*__bkts); + __bucket_alloc_type __alloc(_M_node_allocator()); + __bucket_alloc_traits::deallocate(__alloc, __ptr, __n); + } + + //@} hashtable-detail +} // namespace __detail +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _HASHTABLE_POLICY_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/indirect_array.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/indirect_array.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/indirect_array.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/indirect_array.h index ed799707e..50fc113a3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/indirect_array.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/indirect_array.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- indirect_array class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/invoke.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/invoke.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/invoke.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/invoke.h index eba870743..1239d6ebd 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/invoke.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/invoke.h @@ -1,6 +1,6 @@ // Implementation of INVOKE -*- C++ -*- -// Copyright (C) 2016-2017 Free Software Foundation, Inc. +// Copyright (C) 2016-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ios_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ios_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ios_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ios_base.h index e5a107db4..d296be4eb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ios_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ios_base.h @@ -1,6 +1,6 @@ // Iostreams base classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -469,13 +469,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Request a seek relative to the current end of the sequence. static const seekdir end = _S_end; - // Annex D.6 +#if __cplusplus <= 201402L + // Annex D.6 (removed in C++17) typedef int io_state; typedef int open_mode; typedef int seek_dir; typedef std::streampos streampos; typedef std::streamoff streamoff; +#endif // Callbacks; /** diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/istream.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/istream.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/istream.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/istream.tcc index 92df9d126..34b335896 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/istream.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/istream.tcc @@ -1,6 +1,6 @@ // istream classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/list.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/list.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/list.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/list.tcc index fcb8353e0..22538c9fc 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/list.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/list.tcc @@ -1,6 +1,6 @@ // List implementation (out of line) -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -58,6 +58,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template @@ -594,6 +595,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER } _GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _LIST_TCC */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_classes.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_classes.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_classes.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_classes.h index b63e9c8a3..8a1d99aed 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_classes.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_classes.h @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_classes.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_classes.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_classes.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_classes.tcc index 71378f68b..a3c4821ea 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_classes.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_classes.tcc @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_conv.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_conv.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_conv.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_conv.h index b8f77dcac..72680b940 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_conv.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_conv.h @@ -1,6 +1,6 @@ // wstring_convert implementation -*- C++ -*- -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 @@ -35,10 +35,10 @@ #else #include -#include "stringfwd.h" -#include "allocator.h" -#include "codecvt.h" -#include "unique_ptr.h" +#include +#include +#include +#include namespace std _GLIBCXX_VISIBILITY(default) { diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets.h index 1ad0eb5ab..d5384e146 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets.h @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -900,7 +900,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { if (_M_widen_ok == 1) { - __builtin_memcpy(__to, __lo, __hi - __lo); + if (__builtin_expect(__hi != __lo, true)) + __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } if (!_M_widen_ok) @@ -965,7 +966,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { if (__builtin_expect(_M_narrow_ok == 1, true)) { - __builtin_memcpy(__to, __lo, __hi - __lo); + if (__builtin_expect(__hi != __lo, true)) + __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } if (!_M_narrow_ok) @@ -1104,7 +1106,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __to) const { - __builtin_memcpy(__to, __lo, __hi - __lo); + if (__builtin_expect(__hi != __lo, true)) + __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } @@ -1157,7 +1160,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION do_narrow(const char_type* __lo, const char_type* __hi, char __dfault __attribute__((__unused__)), char* __to) const { - __builtin_memcpy(__to, __lo, __hi - __lo); + if (__builtin_expect(__hi != __lo, true)) + __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } @@ -1487,7 +1491,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION protected: virtual - ~ctype_byname() { }; + ~ctype_byname() { } }; /// 22.2.1.4 Class ctype_byname specializations. @@ -2486,7 +2490,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL /// Destructor. virtual - ~num_put() { }; + ~num_put() { } //@{ /** diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets.tcc index 351190ccb..39da57660 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets.tcc @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -375,10 +375,10 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL _M_extract_int(_InIter __beg, _InIter __end, ios_base& __io, ios_base::iostate& __err, _ValueT& __v) const { - typedef char_traits<_CharT> __traits_type; + typedef char_traits<_CharT> __traits_type; using __gnu_cxx::__add_unsigned; - typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; - typedef __numpunct_cache<_CharT> __cache_type; + typedef typename __add_unsigned<_ValueT>::__type __unsigned_type; + typedef __numpunct_cache<_CharT> __cache_type; __use_cache<__cache_type> __uc; const locale& __loc = __io._M_getloc(); const __cache_type* __lc = __uc(__loc); @@ -463,15 +463,16 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL - __num_base::_S_izero : __base); // Extract. + typedef __gnu_cxx::__numeric_traits<_ValueT> __num_traits; string __found_grouping; if (__lc->_M_use_grouping) __found_grouping.reserve(32); bool __testfail = false; bool __testoverflow = false; const __unsigned_type __max = - (__negative && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) - ? -__gnu_cxx::__numeric_traits<_ValueT>::__min - : __gnu_cxx::__numeric_traits<_ValueT>::__max; + (__negative && __num_traits::__is_signed) + ? -static_cast<__unsigned_type>(__num_traits::__min) + : __num_traits::__max; const __unsigned_type __smax = __max / __base; __unsigned_type __result = 0; int __digit = 0; @@ -572,11 +573,10 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL } else if (__testoverflow) { - if (__negative - && __gnu_cxx::__numeric_traits<_ValueT>::__is_signed) - __v = __gnu_cxx::__numeric_traits<_ValueT>::__min; + if (__negative && __num_traits::__is_signed) + __v = __num_traits::__min; else - __v = __gnu_cxx::__numeric_traits<_ValueT>::__max; + __v = __num_traits::__max; __err = ios_base::failbit; } else diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets_nonio.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets_nonio.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets_nonio.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets_nonio.h index 0cd307fb5..75a70bebe 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets_nonio.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets_nonio.h @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 @@ -236,9 +236,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __dt[1] = _M_data->_M_date_time_era_format; } +#if !_GLIBCXX_INLINE_VERSION void - _M_am_pm_format(const _CharT* __ampm) const - { __ampm = _M_data->_M_am_pm_format; } + _M_am_pm_format(const _CharT*) const + { /* Kept for ABI compatibility, see PR65927 */ } +#endif void _M_am_pm(const _CharT** __ampm) const @@ -898,7 +900,7 @@ _GLIBCXX_END_NAMESPACE_CXX11 explicit time_put_byname(const char*, size_t __refs = 0) : time_put<_CharT, _OutIter>(__refs) - { }; + { } #if __cplusplus >= 201103L explicit diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets_nonio.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets_nonio.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets_nonio.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets_nonio.tcc index a449c41e6..aa846f753 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/locale_facets_nonio.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/locale_facets_nonio.tcc @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 @@ -282,6 +282,7 @@ _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 ++__beg; else __testvalid = false; + // fallthrough case money_base::none: // Only if not at the end of the pattern. if (__i != 3) @@ -1095,7 +1096,6 @@ _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 { const locale& __loc = __io._M_getloc(); const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); - const ctype<_CharT>& __ctype = use_facet >(__loc); const char_type* __days[14]; __tp._M_days_abbreviated(__days); __tp._M_days(__days + 7); @@ -1122,7 +1122,6 @@ _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 { const locale& __loc = __io._M_getloc(); const __timepunct<_CharT>& __tp = use_facet<__timepunct<_CharT> >(__loc); - const ctype<_CharT>& __ctype = use_facet >(__loc); const char_type* __months[24]; __tp._M_months_abbreviated(__months); __tp._M_months(__months + 12); @@ -1147,8 +1146,6 @@ _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 do_get_year(iter_type __beg, iter_type __end, ios_base& __io, ios_base::iostate& __err, tm* __tm) const { - const locale& __loc = __io._M_getloc(); - const ctype<_CharT>& __ctype = use_facet >(__loc); int __tmpyear; ios_base::iostate __tmperr = ios_base::goodbit; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/localefwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/localefwd.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/localefwd.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/localefwd.h index ae302e26e..e8690638c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/localefwd.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/localefwd.h @@ -1,6 +1,6 @@ // Forward declarations -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/mask_array.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/mask_array.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/mask_array.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/mask_array.h index 5c4fcc676..84671cb43 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/mask_array.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/mask_array.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- mask_array class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/memoryfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/memoryfwd.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/memoryfwd.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/memoryfwd.h index 1429026c4..9ecadba30 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/memoryfwd.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/memoryfwd.h @@ -1,6 +1,6 @@ // Forward declarations -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/move.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/move.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/move.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/move.h index 5f47b0e7b..74028b1b0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/move.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/move.h @@ -1,6 +1,6 @@ // Move, forward and identity for C++11 + swap -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 @@ -47,10 +47,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __addressof(_Tp& __r) _GLIBCXX_NOEXCEPT { return __builtin_addressof(__r); } +#if __cplusplus >= 201103L + _GLIBCXX_END_NAMESPACE_VERSION } // namespace -#if __cplusplus >= 201103L #include // Brings in std::declval too. namespace std _GLIBCXX_VISIBILITY(default) @@ -153,8 +154,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /// @} group utilities -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace #define _GLIBCXX_MOVE(__val) std::move(__val) #define _GLIBCXX_FORWARD(_Tp, __val) std::forward<_Tp>(__val) @@ -163,10 +162,6 @@ _GLIBCXX_END_NAMESPACE_VERSION #define _GLIBCXX_FORWARD(_Tp, __val) (__val) #endif -namespace std _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @addtogroup utilities * @{ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/nested_exception.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/nested_exception.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/nested_exception.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/nested_exception.h index 43970b4ef..9a125ef79 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/nested_exception.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/nested_exception.h @@ -1,6 +1,6 @@ // Nested Exception support header (nested_exception class) for -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -92,6 +92,7 @@ namespace std // Throw an exception of unspecified type that is publicly derived from // both remove_reference_t<_Tp> and nested_exception. template + [[noreturn]] inline void __throw_with_nested_impl(_Tp&& __t, true_type) { @@ -100,6 +101,7 @@ namespace std } template + [[noreturn]] inline void __throw_with_nested_impl(_Tp&& __t, false_type) { throw std::forward<_Tp>(__t); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/node_handle.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/node_handle.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/node_handle.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/node_handle.h index b4f732a36..8bb4f3c0a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/node_handle.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/node_handle.h @@ -1,6 +1,6 @@ // Node handles for containers -*- C++ -*- -// Copyright (C) 2016-2017 Free Software Foundation, Inc. +// Copyright (C) 2016-2018 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 @@ -62,7 +62,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION explicit operator bool() const noexcept { return _M_ptr != nullptr; } - bool empty() const noexcept { return _M_ptr == nullptr; } + [[nodiscard]] bool empty() const noexcept { return _M_ptr == nullptr; } protected: constexpr _Node_handle_common() noexcept : _M_ptr(), _M_alloc() {} @@ -87,10 +87,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION || !this->_M_alloc) this->_M_alloc = std::move(__nh._M_alloc); else - __glibcxx_assert(this->_M_alloc == __nh._M_alloc); + { + __glibcxx_assert(this->_M_alloc == __nh._M_alloc); + } } else - __glibcxx_assert(_M_alloc); + { + __glibcxx_assert(_M_alloc); + } __nh._M_ptr = nullptr; __nh._M_alloc = nullopt; return *this; @@ -109,7 +113,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION || !_M_alloc || !__nh._M_alloc) _M_alloc.swap(__nh._M_alloc); else - __glibcxx_assert(_M_alloc == __nh._M_alloc); + { + __glibcxx_assert(_M_alloc == __nh._M_alloc); + } } private: diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ostream.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ostream.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ostream.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ostream.tcc index e96bad812..e02ba55a6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ostream.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ostream.tcc @@ -1,6 +1,6 @@ // ostream classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ostream_insert.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ostream_insert.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ostream_insert.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ostream_insert.h index 8c9b941a1..be842e928 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ostream_insert.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ostream_insert.h @@ -1,6 +1,6 @@ // Helpers for ostream inserters -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/parse_numbers.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/parse_numbers.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/parse_numbers.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/parse_numbers.h index e1d514aa5..183f0e752 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/parse_numbers.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/parse_numbers.h @@ -1,6 +1,6 @@ // Components for compile-time parsing of numbers -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -204,10 +204,9 @@ namespace __parse_int { }; // Terminating case for recursion: - template - struct _Number_help<_Base, _Pow, _Dig> + template + struct _Number_help<_Base, 1ULL, _Dig> { - //static_assert(_Pow == 1U, "power should be one"); using type = __ull_constant<_Digit<_Base, _Dig>::value>; }; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/postypes.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/postypes.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/postypes.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/postypes.h index 818086313..ba7c54781 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/postypes.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/postypes.h @@ -1,6 +1,6 @@ // Position types -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/predefined_ops.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/predefined_ops.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/predefined_ops.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/predefined_ops.h index 0624a38a1..8ef61c505 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/predefined_ops.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/predefined_ops.h @@ -1,6 +1,6 @@ // Default predicates for internal use -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ptr_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ptr_traits.h similarity index 75% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ptr_traits.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ptr_traits.h index 797e7fcec..11b605637 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/ptr_traits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/ptr_traits.h @@ -1,6 +1,6 @@ // Pointer Traits -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 @@ -146,6 +146,55 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; + template + constexpr _Tp* + __to_address(_Tp* __ptr) noexcept + { + static_assert(!std::is_function<_Tp>::value, "not a function pointer"); + return __ptr; + } + +#if __cplusplus <= 201703L + template + constexpr typename std::pointer_traits<_Ptr>::element_type* + __to_address(const _Ptr& __ptr) + { return std::__to_address(__ptr.operator->()); } +#else + template + constexpr auto + __to_address(const _Ptr& __ptr) noexcept + -> decltype(std::pointer_traits<_Ptr>::to_address(__ptr)) + { return std::pointer_traits<_Ptr>::to_address(__ptr); } + + template + constexpr auto + __to_address(const _Ptr& __ptr, _None...) noexcept + { return std::__to_address(__ptr.operator->()); } + + /** + * @brief Obtain address referenced by a pointer to an object + * @param __ptr A pointer to an object + * @return @c __ptr + * @ingroup pointer_abstractions + */ + template + constexpr _Tp* + to_address(_Tp* __ptr) noexcept + { return std::__to_address(__ptr); } + + /** + * @brief Obtain address referenced by a pointer to an object + * @param __ptr A pointer to an object + * @return @c pointer_traits<_Ptr>::to_address(__ptr) if that expression is + well-formed, otherwise @c to_address(__ptr.operator->()) + * @ingroup pointer_abstractions + */ + template + constexpr auto + to_address(const _Ptr& __ptr) noexcept + { return std::__to_address(__ptr); } +#endif // C++2a + _GLIBCXX_END_NAMESPACE_VERSION } // namespace std diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/quoted_string.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/quoted_string.h similarity index 87% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/quoted_string.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/quoted_string.h index 10cfec211..f6134da5a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/quoted_string.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/quoted_string.h @@ -1,6 +1,6 @@ // Helpers for quoted stream manipulators -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -39,9 +39,9 @@ namespace std _GLIBCXX_VISIBILITY(default) { - namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace __detail { /** * @brief Struct for delimited strings. */ @@ -64,6 +64,24 @@ namespace std _GLIBCXX_VISIBILITY(default) _CharT _M_escape; }; +#if __cplusplus >= 201703L + template + struct _Quoted_string, _CharT> + { + _Quoted_string(basic_string_view<_CharT, _Traits> __str, + _CharT __del, _CharT __esc) + : _M_string(__str), _M_delim{__del}, _M_escape{__esc} + { } + + _Quoted_string& + operator=(_Quoted_string&) = delete; + + basic_string_view<_CharT, _Traits> _M_string; + _CharT _M_delim; + _CharT _M_escape; + }; +#endif // C++17 + /** * @brief Inserter for quoted strings. * @@ -101,7 +119,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { std::basic_ostringstream<_CharT, _Traits> __ostr; __ostr << __str._M_delim; - for (auto& __c : __str._M_string) + for (auto __c : __str._M_string) { if (__c == __str._M_delim || __c == __str._M_escape) __ostr << __str._M_escape; @@ -155,9 +173,9 @@ namespace std _GLIBCXX_VISIBILITY(default) return __is; } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // C++11 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/random.h new file mode 100644 index 000000000..f812bbf18 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/random.h @@ -0,0 +1,6005 @@ +// random number generation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** + * @file bits/random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _RANDOM_H +#define _RANDOM_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // [26.4] Random number generation + + /** + * @defgroup random Random Number Generation + * @ingroup numerics + * + * A facility for generating random numbers on selected distributions. + * @{ + */ + + /** + * @brief A function template for converting the output of a (integral) + * uniform random number generator to a floatng point result in the range + * [0-1). + */ + template + _RealType + generate_canonical(_UniformRandomNumberGenerator& __g); + + /* + * Implementation-space details. + */ + namespace __detail + { + template + (std::numeric_limits<_UIntType>::digits)> + struct _Shift + { static const _UIntType __value = 0; }; + + template + struct _Shift<_UIntType, __w, true> + { static const _UIntType __value = _UIntType(1) << __w; }; + + template + struct _Select_uint_least_t + { + static_assert(__which < 0, /* needs to be dependent */ + "sorry, would be too much trouble for a slow result"); + }; + + template + struct _Select_uint_least_t<__s, 4> + { typedef unsigned int type; }; + + template + struct _Select_uint_least_t<__s, 3> + { typedef unsigned long type; }; + + template + struct _Select_uint_least_t<__s, 2> + { typedef unsigned long long type; }; + +#ifdef _GLIBCXX_USE_INT128 + template + struct _Select_uint_least_t<__s, 1> + { typedef unsigned __int128 type; }; +#endif + + // Assume a != 0, a < m, c < m, x < m. + template= __m - 1), + bool __schrage_ok = __m % __a < __m / __a> + struct _Mod + { + typedef typename _Select_uint_least_t::type _Tp2; + static _Tp + __calc(_Tp __x) + { return static_cast<_Tp>((_Tp2(__a) * __x + __c) % __m); } + }; + + // Schrage. + template + struct _Mod<_Tp, __m, __a, __c, false, true> + { + static _Tp + __calc(_Tp __x); + }; + + // Special cases: + // - for m == 2^n or m == 0, unsigned integer overflow is safe. + // - a * (m - 1) + c fits in _Tp, there is no overflow. + template + struct _Mod<_Tp, __m, __a, __c, true, __s> + { + static _Tp + __calc(_Tp __x) + { + _Tp __res = __a * __x + __c; + if (__m) + __res %= __m; + return __res; + } + }; + + template + inline _Tp + __mod(_Tp __x) + { return _Mod<_Tp, __m, __a, __c>::__calc(__x); } + + /* + * An adaptor class for converting the output of any Generator into + * the input for a specific Distribution. + */ + template + struct _Adaptor + { + static_assert(std::is_floating_point<_DInputType>::value, + "template argument must be a floating point type"); + + public: + _Adaptor(_Engine& __g) + : _M_g(__g) { } + + _DInputType + min() const + { return _DInputType(0); } + + _DInputType + max() const + { return _DInputType(1); } + + /* + * Converts a value generated by the adapted random number generator + * into a value in the input domain for the dependent random number + * distribution. + */ + _DInputType + operator()() + { + return std::generate_canonical<_DInputType, + std::numeric_limits<_DInputType>::digits, + _Engine>(_M_g); + } + + private: + _Engine& _M_g; + }; + + } // namespace __detail + + /** + * @addtogroup random_generators Random Number Generators + * @ingroup random + * + * These classes define objects which provide random or pseudorandom + * numbers, either from a discrete or a continuous interval. The + * random number generator supplied as a part of this library are + * all uniform random number generators which provide a sequence of + * random number uniformly distributed over their range. + * + * A number generator is a function object with an operator() that + * takes zero arguments and returns a number. + * + * A compliant random number generator must satisfy the following + * requirements. + * + *
Random Number Generator Requirements
To be documented.
+ * + * @{ + */ + + /** + * @brief A model of a linear congruential random number generator. + * + * A random number generator that produces pseudorandom numbers via + * linear function: + * @f[ + * x_{i+1}\leftarrow(ax_{i} + c) \bmod m + * @f] + * + * The template parameter @p _UIntType must be an unsigned integral type + * large enough to store values up to (__m-1). If the template parameter + * @p __m is 0, the modulus @p __m used is + * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template + * parameters @p __a and @p __c must be less than @p __m. + * + * The size of the state is @f$1@f$. + */ + template + class linear_congruential_engine + { + static_assert(std::is_unsigned<_UIntType>::value, + "result_type must be an unsigned integral type"); + static_assert(__m == 0u || (__a < __m && __c < __m), + "template argument substituting __m out of bounds"); + + public: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + /** The multiplier. */ + static constexpr result_type multiplier = __a; + /** An increment. */ + static constexpr result_type increment = __c; + /** The modulus. */ + static constexpr result_type modulus = __m; + static constexpr result_type default_seed = 1u; + + /** + * @brief Constructs a %linear_congruential_engine random number + * generator engine with seed @p __s. The default seed value + * is 1. + * + * @param __s The initial seed value. + */ + explicit + linear_congruential_engine(result_type __s = default_seed) + { seed(__s); } + + /** + * @brief Constructs a %linear_congruential_engine random number + * generator engine seeded from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template::value> + ::type> + explicit + linear_congruential_engine(_Sseq& __q) + { seed(__q); } + + /** + * @brief Reseeds the %linear_congruential_engine random number generator + * engine sequence to the seed @p __s. + * + * @param __s The new seed. + */ + void + seed(result_type __s = default_seed); + + /** + * @brief Reseeds the %linear_congruential_engine random number generator + * engine + * sequence using values from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + /** + * @brief Gets the smallest possible value in the output range. + * + * The minimum depends on the @p __c parameter: if it is zero, the + * minimum generated must be > 0, otherwise 0 is allowed. + */ + static constexpr result_type + min() + { return __c == 0u ? 1u : 0u; } + + /** + * @brief Gets the largest possible value in the output range. + */ + static constexpr result_type + max() + { return __m - 1u; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next random number in the sequence. + */ + result_type + operator()() + { + _M_x = __detail::__mod<_UIntType, __m, __a, __c>(_M_x); + return _M_x; + } + + /** + * @brief Compares two linear congruential random number generator + * objects of the same type for equality. + * + * @param __lhs A linear congruential random number generator object. + * @param __rhs Another linear congruential random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const linear_congruential_engine& __lhs, + const linear_congruential_engine& __rhs) + { return __lhs._M_x == __rhs._M_x; } + + /** + * @brief Writes the textual representation of the state x(i) of x to + * @p __os. + * + * @param __os The output stream. + * @param __lcr A % linear_congruential_engine random number generator. + * @returns __os. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::linear_congruential_engine<_UIntType1, + __a1, __c1, __m1>& __lcr); + + /** + * @brief Sets the state of the engine by reading its textual + * representation from @p __is. + * + * The textual representation must have been previously written using + * an output stream whose imbued locale and whose type's template + * specialization arguments _CharT and _Traits were the same as those + * of @p __is. + * + * @param __is The input stream. + * @param __lcr A % linear_congruential_engine random number generator. + * @returns __is. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::linear_congruential_engine<_UIntType1, __a1, + __c1, __m1>& __lcr); + + private: + _UIntType _M_x; + }; + + /** + * @brief Compares two linear congruential random number generator + * objects of the same type for inequality. + * + * @param __lhs A linear congruential random number generator object. + * @param __rhs Another linear congruential random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::linear_congruential_engine<_UIntType, __a, + __c, __m>& __lhs, + const std::linear_congruential_engine<_UIntType, __a, + __c, __m>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * A generalized feedback shift register discrete random number generator. + * + * This algorithm avoids multiplication and division and is designed to be + * friendly to a pipelined architecture. If the parameters are chosen + * correctly, this generator will produce numbers with a very long period and + * fairly good apparent entropy, although still not cryptographically strong. + * + * The best way to use this generator is with the predefined mt19937 class. + * + * This algorithm was originally invented by Makoto Matsumoto and + * Takuji Nishimura. + * + * @tparam __w Word size, the number of bits in each element of + * the state vector. + * @tparam __n The degree of recursion. + * @tparam __m The period parameter. + * @tparam __r The separation point bit index. + * @tparam __a The last row of the twist matrix. + * @tparam __u The first right-shift tempering matrix parameter. + * @tparam __d The first right-shift tempering matrix mask. + * @tparam __s The first left-shift tempering matrix parameter. + * @tparam __b The first left-shift tempering matrix mask. + * @tparam __t The second left-shift tempering matrix parameter. + * @tparam __c The second left-shift tempering matrix mask. + * @tparam __l The second right-shift tempering matrix parameter. + * @tparam __f Initialization multiplier. + */ + template + class mersenne_twister_engine + { + static_assert(std::is_unsigned<_UIntType>::value, + "result_type must be an unsigned integral type"); + static_assert(1u <= __m && __m <= __n, + "template argument substituting __m out of bounds"); + static_assert(__r <= __w, "template argument substituting " + "__r out of bound"); + static_assert(__u <= __w, "template argument substituting " + "__u out of bound"); + static_assert(__s <= __w, "template argument substituting " + "__s out of bound"); + static_assert(__t <= __w, "template argument substituting " + "__t out of bound"); + static_assert(__l <= __w, "template argument substituting " + "__l out of bound"); + static_assert(__w <= std::numeric_limits<_UIntType>::digits, + "template argument substituting __w out of bound"); + static_assert(__a <= (__detail::_Shift<_UIntType, __w>::__value - 1), + "template argument substituting __a out of bound"); + static_assert(__b <= (__detail::_Shift<_UIntType, __w>::__value - 1), + "template argument substituting __b out of bound"); + static_assert(__c <= (__detail::_Shift<_UIntType, __w>::__value - 1), + "template argument substituting __c out of bound"); + static_assert(__d <= (__detail::_Shift<_UIntType, __w>::__value - 1), + "template argument substituting __d out of bound"); + static_assert(__f <= (__detail::_Shift<_UIntType, __w>::__value - 1), + "template argument substituting __f out of bound"); + + public: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + // parameter values + static constexpr size_t word_size = __w; + static constexpr size_t state_size = __n; + static constexpr size_t shift_size = __m; + static constexpr size_t mask_bits = __r; + static constexpr result_type xor_mask = __a; + static constexpr size_t tempering_u = __u; + static constexpr result_type tempering_d = __d; + static constexpr size_t tempering_s = __s; + static constexpr result_type tempering_b = __b; + static constexpr size_t tempering_t = __t; + static constexpr result_type tempering_c = __c; + static constexpr size_t tempering_l = __l; + static constexpr result_type initialization_multiplier = __f; + static constexpr result_type default_seed = 5489u; + + // constructors and member function + explicit + mersenne_twister_engine(result_type __sd = default_seed) + { seed(__sd); } + + /** + * @brief Constructs a %mersenne_twister_engine random number generator + * engine seeded from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template::value> + ::type> + explicit + mersenne_twister_engine(_Sseq& __q) + { seed(__q); } + + void + seed(result_type __sd = default_seed); + + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + /** + * @brief Gets the smallest possible value in the output range. + */ + static constexpr result_type + min() + { return 0; } + + /** + * @brief Gets the largest possible value in the output range. + */ + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z); + + result_type + operator()(); + + /** + * @brief Compares two % mersenne_twister_engine random number generator + * objects of the same type for equality. + * + * @param __lhs A % mersenne_twister_engine random number generator + * object. + * @param __rhs Another % mersenne_twister_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const mersenne_twister_engine& __lhs, + const mersenne_twister_engine& __rhs) + { return (std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x) + && __lhs._M_p == __rhs._M_p); } + + /** + * @brief Inserts the current state of a % mersenne_twister_engine + * random number generator engine @p __x into the output stream + * @p __os. + * + * @param __os An output stream. + * @param __x A % mersenne_twister_engine random number generator + * engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::mersenne_twister_engine<_UIntType1, __w1, __n1, + __m1, __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, + __l1, __f1>& __x); + + /** + * @brief Extracts the current state of a % mersenne_twister_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A % mersenne_twister_engine random number generator + * engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::mersenne_twister_engine<_UIntType1, __w1, __n1, __m1, + __r1, __a1, __u1, __d1, __s1, __b1, __t1, __c1, + __l1, __f1>& __x); + + private: + void _M_gen_rand(); + + _UIntType _M_x[state_size]; + size_t _M_p; + }; + + /** + * @brief Compares two % mersenne_twister_engine random number generator + * objects of the same type for inequality. + * + * @param __lhs A % mersenne_twister_engine random number generator + * object. + * @param __rhs Another % mersenne_twister_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __lhs, + const std::mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * @brief The Marsaglia-Zaman generator. + * + * This is a model of a Generalized Fibonacci discrete random number + * generator, sometimes referred to as the SWC generator. + * + * A discrete random number generator that produces pseudorandom + * numbers using: + * @f[ + * x_{i}\leftarrow(x_{i - s} - x_{i - r} - carry_{i-1}) \bmod m + * @f] + * + * The size of the state is @f$r@f$ + * and the maximum period of the generator is @f$(m^r - m^s - 1)@f$. + */ + template + class subtract_with_carry_engine + { + static_assert(std::is_unsigned<_UIntType>::value, + "result_type must be an unsigned integral type"); + static_assert(0u < __s && __s < __r, + "0 < s < r"); + static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, + "template argument substituting __w out of bounds"); + + public: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + // parameter values + static constexpr size_t word_size = __w; + static constexpr size_t short_lag = __s; + static constexpr size_t long_lag = __r; + static constexpr result_type default_seed = 19780503u; + + /** + * @brief Constructs an explicitly seeded % subtract_with_carry_engine + * random number generator. + */ + explicit + subtract_with_carry_engine(result_type __sd = default_seed) + { seed(__sd); } + + /** + * @brief Constructs a %subtract_with_carry_engine random number engine + * seeded from the seed sequence @p __q. + * + * @param __q the seed sequence. + */ + template::value> + ::type> + explicit + subtract_with_carry_engine(_Sseq& __q) + { seed(__q); } + + /** + * @brief Seeds the initial state @f$x_0@f$ of the random number + * generator. + * + * N1688[4.19] modifies this as follows. If @p __value == 0, + * sets value to 19780503. In any case, with a linear + * congruential generator lcg(i) having parameters @f$ m_{lcg} = + * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value + * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m + * \dots lcg(r) \bmod m @f$ respectively. If @f$ x_{-1} = 0 @f$ + * set carry to 1, otherwise sets carry to 0. + */ + void + seed(result_type __sd = default_seed); + + /** + * @brief Seeds the initial state @f$x_0@f$ of the + * % subtract_with_carry_engine random number generator. + */ + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + /** + * @brief Gets the inclusive minimum value of the range of random + * integers returned by this generator. + */ + static constexpr result_type + min() + { return 0; } + + /** + * @brief Gets the inclusive maximum value of the range of random + * integers returned by this generator. + */ + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next random number in the sequence. + */ + result_type + operator()(); + + /** + * @brief Compares two % subtract_with_carry_engine random number + * generator objects of the same type for equality. + * + * @param __lhs A % subtract_with_carry_engine random number generator + * object. + * @param __rhs Another % subtract_with_carry_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const subtract_with_carry_engine& __lhs, + const subtract_with_carry_engine& __rhs) + { return (std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x) + && __lhs._M_carry == __rhs._M_carry + && __lhs._M_p == __rhs._M_p); } + + /** + * @brief Inserts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x into the output stream + * @p __os. + * + * @param __os An output stream. + * @param __x A % subtract_with_carry_engine random number generator + * engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::subtract_with_carry_engine<_UIntType1, __w1, + __s1, __r1>& __x); + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A % subtract_with_carry_engine random number generator + * engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::subtract_with_carry_engine<_UIntType1, __w1, + __s1, __r1>& __x); + + private: + /// The state of the generator. This is a ring buffer. + _UIntType _M_x[long_lag]; + _UIntType _M_carry; ///< The carry + size_t _M_p; ///< Current index of x(i - r). + }; + + /** + * @brief Compares two % subtract_with_carry_engine random number + * generator objects of the same type for inequality. + * + * @param __lhs A % subtract_with_carry_engine random number generator + * object. + * @param __rhs Another % subtract_with_carry_engine random number + * generator object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::subtract_with_carry_engine<_UIntType, __w, + __s, __r>& __lhs, + const std::subtract_with_carry_engine<_UIntType, __w, + __s, __r>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * Produces random numbers from some base engine by discarding blocks of + * data. + * + * 0 <= @p __r <= @p __p + */ + template + class discard_block_engine + { + static_assert(1 <= __r && __r <= __p, + "template argument substituting __r out of bounds"); + + public: + /** The type of the generated random value. */ + typedef typename _RandomNumberEngine::result_type result_type; + + // parameter values + static constexpr size_t block_size = __p; + static constexpr size_t used_block = __r; + + /** + * @brief Constructs a default %discard_block_engine engine. + * + * The underlying engine is default constructed as well. + */ + discard_block_engine() + : _M_b(), _M_n(0) { } + + /** + * @brief Copy constructs a %discard_block_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + discard_block_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng), _M_n(0) { } + + /** + * @brief Move constructs a %discard_block_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + discard_block_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)), _M_n(0) { } + + /** + * @brief Seed constructs a %discard_block_engine engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + discard_block_engine(result_type __s) + : _M_b(__s), _M_n(0) { } + + /** + * @brief Generator construct a %discard_block_engine engine. + * + * @param __q A seed sequence. + */ + template::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + discard_block_engine(_Sseq& __q) + : _M_b(__q), _M_n(0) + { } + + /** + * @brief Reseeds the %discard_block_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed() + { + _M_b.seed(); + _M_n = 0; + } + + /** + * @brief Reseeds the %discard_block_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed(result_type __s) + { + _M_b.seed(__s); + _M_n = 0; + } + + /** + * @brief Reseeds the %discard_block_engine object with the given seed + * sequence. + * @param __q A seed generator function. + */ + template + void + seed(_Sseq& __q) + { + _M_b.seed(__q); + _M_n = 0; + } + + /** + * @brief Gets a const reference to the underlying generator engine + * object. + */ + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + /** + * @brief Gets the minimum value in the generated random number range. + */ + static constexpr result_type + min() + { return _RandomNumberEngine::min(); } + + /** + * @brief Gets the maximum value in the generated random number range. + */ + static constexpr result_type + max() + { return _RandomNumberEngine::max(); } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * @brief Compares two %discard_block_engine random number generator + * objects of the same type for equality. + * + * @param __lhs A %discard_block_engine random number generator object. + * @param __rhs Another %discard_block_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const discard_block_engine& __lhs, + const discard_block_engine& __rhs) + { return __lhs._M_b == __rhs._M_b && __lhs._M_n == __rhs._M_n; } + + /** + * @brief Inserts the current state of a %discard_block_engine random + * number generator engine @p __x into the output stream + * @p __os. + * + * @param __os An output stream. + * @param __x A %discard_block_engine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::discard_block_engine<_RandomNumberEngine1, + __p1, __r1>& __x); + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A %discard_block_engine random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::discard_block_engine<_RandomNumberEngine1, + __p1, __r1>& __x); + + private: + _RandomNumberEngine _M_b; + size_t _M_n; + }; + + /** + * @brief Compares two %discard_block_engine random number generator + * objects of the same type for inequality. + * + * @param __lhs A %discard_block_engine random number generator object. + * @param __rhs Another %discard_block_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::discard_block_engine<_RandomNumberEngine, __p, + __r>& __lhs, + const std::discard_block_engine<_RandomNumberEngine, __p, + __r>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * Produces random numbers by combining random numbers from some base + * engine to produce random numbers with a specifies number of bits @p __w. + */ + template + class independent_bits_engine + { + static_assert(std::is_unsigned<_UIntType>::value, + "result_type must be an unsigned integral type"); + static_assert(0u < __w && __w <= std::numeric_limits<_UIntType>::digits, + "template argument substituting __w out of bounds"); + + public: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + /** + * @brief Constructs a default %independent_bits_engine engine. + * + * The underlying engine is default constructed as well. + */ + independent_bits_engine() + : _M_b() { } + + /** + * @brief Copy constructs a %independent_bits_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + independent_bits_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng) { } + + /** + * @brief Move constructs a %independent_bits_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + independent_bits_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)) { } + + /** + * @brief Seed constructs a %independent_bits_engine engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + independent_bits_engine(result_type __s) + : _M_b(__s) { } + + /** + * @brief Generator construct a %independent_bits_engine engine. + * + * @param __q A seed sequence. + */ + template::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + independent_bits_engine(_Sseq& __q) + : _M_b(__q) + { } + + /** + * @brief Reseeds the %independent_bits_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed() + { _M_b.seed(); } + + /** + * @brief Reseeds the %independent_bits_engine object with the default + * seed for the underlying base class generator engine. + */ + void + seed(result_type __s) + { _M_b.seed(__s); } + + /** + * @brief Reseeds the %independent_bits_engine object with the given + * seed sequence. + * @param __q A seed generator function. + */ + template + void + seed(_Sseq& __q) + { _M_b.seed(__q); } + + /** + * @brief Gets a const reference to the underlying generator engine + * object. + */ + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + /** + * @brief Gets the minimum value in the generated random number range. + */ + static constexpr result_type + min() + { return 0U; } + + /** + * @brief Gets the maximum value in the generated random number range. + */ + static constexpr result_type + max() + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + /** + * @brief Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * @brief Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * @brief Compares two %independent_bits_engine random number generator + * objects of the same type for equality. + * + * @param __lhs A %independent_bits_engine random number generator + * object. + * @param __rhs Another %independent_bits_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const independent_bits_engine& __lhs, + const independent_bits_engine& __rhs) + { return __lhs._M_b == __rhs._M_b; } + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A %independent_bits_engine random number generator + * engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::independent_bits_engine<_RandomNumberEngine, + __w, _UIntType>& __x) + { + __is >> __x._M_b; + return __is; + } + + private: + _RandomNumberEngine _M_b; + }; + + /** + * @brief Compares two %independent_bits_engine random number generator + * objects of the same type for inequality. + * + * @param __lhs A %independent_bits_engine random number generator + * object. + * @param __rhs Another %independent_bits_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::independent_bits_engine<_RandomNumberEngine, __w, + _UIntType>& __lhs, + const std::independent_bits_engine<_RandomNumberEngine, __w, + _UIntType>& __rhs) + { return !(__lhs == __rhs); } + + /** + * @brief Inserts the current state of a %independent_bits_engine random + * number generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %independent_bits_engine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::independent_bits_engine<_RandomNumberEngine, + __w, _UIntType>& __x) + { + __os << __x.base(); + return __os; + } + + + /** + * @brief Produces random numbers by combining random numbers from some + * base engine to produce random numbers with a specifies number of bits + * @p __k. + */ + template + class shuffle_order_engine + { + static_assert(1u <= __k, "template argument substituting " + "__k out of bound"); + + public: + /** The type of the generated random value. */ + typedef typename _RandomNumberEngine::result_type result_type; + + static constexpr size_t table_size = __k; + + /** + * @brief Constructs a default %shuffle_order_engine engine. + * + * The underlying engine is default constructed as well. + */ + shuffle_order_engine() + : _M_b() + { _M_initialize(); } + + /** + * @brief Copy constructs a %shuffle_order_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + shuffle_order_engine(const _RandomNumberEngine& __rng) + : _M_b(__rng) + { _M_initialize(); } + + /** + * @brief Move constructs a %shuffle_order_engine engine. + * + * Copies an existing base class random number generator. + * @param __rng An existing (base class) engine object. + */ + explicit + shuffle_order_engine(_RandomNumberEngine&& __rng) + : _M_b(std::move(__rng)) + { _M_initialize(); } + + /** + * @brief Seed constructs a %shuffle_order_engine engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + shuffle_order_engine(result_type __s) + : _M_b(__s) + { _M_initialize(); } + + /** + * @brief Generator construct a %shuffle_order_engine engine. + * + * @param __q A seed sequence. + */ + template::value + && !std::is_same<_Sseq, _RandomNumberEngine>::value> + ::type> + explicit + shuffle_order_engine(_Sseq& __q) + : _M_b(__q) + { _M_initialize(); } + + /** + * @brief Reseeds the %shuffle_order_engine object with the default seed + for the underlying base class generator engine. + */ + void + seed() + { + _M_b.seed(); + _M_initialize(); + } + + /** + * @brief Reseeds the %shuffle_order_engine object with the default seed + * for the underlying base class generator engine. + */ + void + seed(result_type __s) + { + _M_b.seed(__s); + _M_initialize(); + } + + /** + * @brief Reseeds the %shuffle_order_engine object with the given seed + * sequence. + * @param __q A seed generator function. + */ + template + void + seed(_Sseq& __q) + { + _M_b.seed(__q); + _M_initialize(); + } + + /** + * Gets a const reference to the underlying generator engine object. + */ + const _RandomNumberEngine& + base() const noexcept + { return _M_b; } + + /** + * Gets the minimum value in the generated random number range. + */ + static constexpr result_type + min() + { return _RandomNumberEngine::min(); } + + /** + * Gets the maximum value in the generated random number range. + */ + static constexpr result_type + max() + { return _RandomNumberEngine::max(); } + + /** + * Discard a sequence of random numbers. + */ + void + discard(unsigned long long __z) + { + for (; __z != 0ULL; --__z) + (*this)(); + } + + /** + * Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * Compares two %shuffle_order_engine random number generator objects + * of the same type for equality. + * + * @param __lhs A %shuffle_order_engine random number generator object. + * @param __rhs Another %shuffle_order_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be equal, false otherwise. + */ + friend bool + operator==(const shuffle_order_engine& __lhs, + const shuffle_order_engine& __rhs) + { return (__lhs._M_b == __rhs._M_b + && std::equal(__lhs._M_v, __lhs._M_v + __k, __rhs._M_v) + && __lhs._M_y == __rhs._M_y); } + + /** + * @brief Inserts the current state of a %shuffle_order_engine random + * number generator engine @p __x into the output stream + @p __os. + * + * @param __os An output stream. + * @param __x A %shuffle_order_engine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::shuffle_order_engine<_RandomNumberEngine1, + __k1>& __x); + + /** + * @brief Extracts the current state of a % subtract_with_carry_engine + * random number generator engine @p __x from the input stream + * @p __is. + * + * @param __is An input stream. + * @param __x A %shuffle_order_engine random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::shuffle_order_engine<_RandomNumberEngine1, __k1>& __x); + + private: + void _M_initialize() + { + for (size_t __i = 0; __i < __k; ++__i) + _M_v[__i] = _M_b(); + _M_y = _M_b(); + } + + _RandomNumberEngine _M_b; + result_type _M_v[__k]; + result_type _M_y; + }; + + /** + * Compares two %shuffle_order_engine random number generator objects + * of the same type for inequality. + * + * @param __lhs A %shuffle_order_engine random number generator object. + * @param __rhs Another %shuffle_order_engine random number generator + * object. + * + * @returns true if the infinite sequences of generated values + * would be different, false otherwise. + */ + template + inline bool + operator!=(const std::shuffle_order_engine<_RandomNumberEngine, + __k>& __lhs, + const std::shuffle_order_engine<_RandomNumberEngine, + __k>& __rhs) + { return !(__lhs == __rhs); } + + + /** + * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller. + */ + typedef linear_congruential_engine + minstd_rand0; + + /** + * An alternative LCR (Lehmer Generator function). + */ + typedef linear_congruential_engine + minstd_rand; + + /** + * The classic Mersenne Twister. + * + * Reference: + * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally + * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions + * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30. + */ + typedef mersenne_twister_engine< + uint_fast32_t, + 32, 624, 397, 31, + 0x9908b0dfUL, 11, + 0xffffffffUL, 7, + 0x9d2c5680UL, 15, + 0xefc60000UL, 18, 1812433253UL> mt19937; + + /** + * An alternative Mersenne Twister. + */ + typedef mersenne_twister_engine< + uint_fast64_t, + 64, 312, 156, 31, + 0xb5026f5aa96619e9ULL, 29, + 0x5555555555555555ULL, 17, + 0x71d67fffeda60000ULL, 37, + 0xfff7eee000000000ULL, 43, + 6364136223846793005ULL> mt19937_64; + + typedef subtract_with_carry_engine + ranlux24_base; + + typedef subtract_with_carry_engine + ranlux48_base; + + typedef discard_block_engine ranlux24; + + typedef discard_block_engine ranlux48; + + typedef shuffle_order_engine knuth_b; + + typedef minstd_rand0 default_random_engine; + + /** + * A standard interface to a platform-specific non-deterministic + * random number generator (if any are available). + */ + class random_device + { + public: + /** The type of the generated random value. */ + typedef unsigned int result_type; + + // constructors, destructors and member functions + +#ifdef _GLIBCXX_USE_RANDOM_TR1 + + explicit + random_device(const std::string& __token = "default") + { + _M_init(__token); + } + + ~random_device() + { _M_fini(); } + +#else + + explicit + random_device(const std::string& __token = "mt19937") + { _M_init_pretr1(__token); } + + public: + +#endif + + static constexpr result_type + min() + { return std::numeric_limits::min(); } + + static constexpr result_type + max() + { return std::numeric_limits::max(); } + + double + entropy() const noexcept + { +#ifdef _GLIBCXX_USE_RANDOM_TR1 + return this->_M_getentropy(); +#else + return 0.0; +#endif + } + + result_type + operator()() + { +#ifdef _GLIBCXX_USE_RANDOM_TR1 + return this->_M_getval(); +#else + return this->_M_getval_pretr1(); +#endif + } + + // No copy functions. + random_device(const random_device&) = delete; + void operator=(const random_device&) = delete; + + private: + + void _M_init(const std::string& __token); + void _M_init_pretr1(const std::string& __token); + void _M_fini(); + + result_type _M_getval(); + result_type _M_getval_pretr1(); + double _M_getentropy() const noexcept; + + union + { + void* _M_file; + mt19937 _M_mt; + }; + }; + + /* @} */ // group random_generators + + /** + * @addtogroup random_distributions Random Number Distributions + * @ingroup random + * @{ + */ + + /** + * @addtogroup random_distributions_uniform Uniform Distributions + * @ingroup random_distributions + * @{ + */ + + // std::uniform_int_distribution is defined in + + /** + * @brief Return true if two uniform integer distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::uniform_int_distribution<_IntType>& __d1, + const std::uniform_int_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %uniform_int_distribution random number + * distribution @p __x into the output stream @p os. + * + * @param __os An output stream. + * @param __x A %uniform_int_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::uniform_int_distribution<_IntType>&); + + /** + * @brief Extracts a %uniform_int_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_int_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::uniform_int_distribution<_IntType>&); + + + /** + * @brief Uniform continuous distribution for random numbers. + * + * A continuous random distribution on the range [min, max) with equal + * probability throughout the range. The URNG should be real-valued and + * deliver number in the range [0, 1). + */ + template + class uniform_real_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef uniform_real_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_a(__a), _M_b(__b) + { + __glibcxx_assert(_M_a <= _M_b); + } + + result_type + a() const + { return _M_a; } + + result_type + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_a; + _RealType _M_b; + }; + + public: + /** + * @brief Constructs a uniform_real_distribution object. + * + * @param __a [IN] The lower bound of the distribution. + * @param __b [IN] The upper bound of the distribution. + */ + explicit + uniform_real_distribution(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_param(__a, __b) + { } + + explicit + uniform_real_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for the uniform real distribution. + */ + void + reset() { } + + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the inclusive lower bound of the distribution range. + */ + result_type + min() const + { return this->a(); } + + /** + * @brief Returns the inclusive upper bound of the distribution range. + */ + result_type + max() const + { return this->b(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return (__aurng() * (__p.b() - __p.a())) + __p.a(); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two uniform real distributions have + * the same parameters. + */ + friend bool + operator==(const uniform_real_distribution& __d1, + const uniform_real_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two uniform real distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::uniform_real_distribution<_IntType>& __d1, + const std::uniform_real_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %uniform_real_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %uniform_real_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const std::uniform_real_distribution<_RealType>&); + + /** + * @brief Extracts a %uniform_real_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_real_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + std::uniform_real_distribution<_RealType>&); + + /* @} */ // group random_distributions_uniform + + /** + * @addtogroup random_distributions_normal Normal Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief A normal continuous distribution for random numbers. + * + * The formula for the normal probability density function is + * @f[ + * p(x|\mu,\sigma) = \frac{1}{\sigma \sqrt{2 \pi}} + * e^{- \frac{{x - \mu}^ {2}}{2 \sigma ^ {2}} } + * @f] + */ + template + class normal_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef normal_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __mean = _RealType(0), + _RealType __stddev = _RealType(1)) + : _M_mean(__mean), _M_stddev(__stddev) + { + __glibcxx_assert(_M_stddev > _RealType(0)); + } + + _RealType + mean() const + { return _M_mean; } + + _RealType + stddev() const + { return _M_stddev; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_mean == __p2._M_mean + && __p1._M_stddev == __p2._M_stddev); } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_mean; + _RealType _M_stddev; + }; + + public: + /** + * Constructs a normal distribution with parameters @f$mean@f$ and + * standard deviation. + */ + explicit + normal_distribution(result_type __mean = result_type(0), + result_type __stddev = result_type(1)) + : _M_param(__mean, __stddev), _M_saved_available(false) + { } + + explicit + normal_distribution(const param_type& __p) + : _M_param(__p), _M_saved_available(false) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_saved_available = false; } + + /** + * @brief Returns the mean of the distribution. + */ + _RealType + mean() const + { return _M_param.mean(); } + + /** + * @brief Returns the standard deviation of the distribution. + */ + _RealType + stddev() const + { return _M_param.stddev(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two normal distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + template + friend bool + operator==(const std::normal_distribution<_RealType1>& __d1, + const std::normal_distribution<_RealType1>& __d2); + + /** + * @brief Inserts a %normal_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %normal_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::normal_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %normal_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %normal_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::normal_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + result_type _M_saved; + bool _M_saved_available; + }; + + /** + * @brief Return true if two normal distributions are different. + */ + template + inline bool + operator!=(const std::normal_distribution<_RealType>& __d1, + const std::normal_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A lognormal_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f[ + * p(x|m,s) = \frac{1}{sx\sqrt{2\pi}} + * \exp{-\frac{(\ln{x} - m)^2}{2s^2}} + * @f] + */ + template + class lognormal_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef lognormal_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __m = _RealType(0), + _RealType __s = _RealType(1)) + : _M_m(__m), _M_s(__s) + { } + + _RealType + m() const + { return _M_m; } + + _RealType + s() const + { return _M_s; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_m == __p2._M_m && __p1._M_s == __p2._M_s; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_m; + _RealType _M_s; + }; + + explicit + lognormal_distribution(_RealType __m = _RealType(0), + _RealType __s = _RealType(1)) + : _M_param(__m, __s), _M_nd() + { } + + explicit + lognormal_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * + */ + _RealType + m() const + { return _M_param.m(); } + + _RealType + s() const + { return _M_param.s(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { return std::exp(__p.s() * _M_nd(__urng) + __p.m()); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two lognormal distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const lognormal_distribution& __d1, + const lognormal_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd); } + + /** + * @brief Inserts a %lognormal_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %lognormal_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::lognormal_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %lognormal_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %lognormal_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::lognormal_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two lognormal distributions are different. + */ + template + inline bool + operator!=(const std::lognormal_distribution<_RealType>& __d1, + const std::lognormal_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A gamma continuous distribution for random numbers. + * + * The formula for the gamma probability density function is: + * @f[ + * p(x|\alpha,\beta) = \frac{1}{\beta\Gamma(\alpha)} + * (x/\beta)^{\alpha - 1} e^{-x/\beta} + * @f] + */ + template + class gamma_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef gamma_distribution<_RealType> distribution_type; + friend class gamma_distribution<_RealType>; + + explicit + param_type(_RealType __alpha_val = _RealType(1), + _RealType __beta_val = _RealType(1)) + : _M_alpha(__alpha_val), _M_beta(__beta_val) + { + __glibcxx_assert(_M_alpha > _RealType(0)); + _M_initialize(); + } + + _RealType + alpha() const + { return _M_alpha; } + + _RealType + beta() const + { return _M_beta; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_alpha == __p2._M_alpha + && __p1._M_beta == __p2._M_beta); } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize(); + + _RealType _M_alpha; + _RealType _M_beta; + + _RealType _M_malpha, _M_a2; + }; + + public: + /** + * @brief Constructs a gamma distribution with parameters + * @f$\alpha@f$ and @f$\beta@f$. + */ + explicit + gamma_distribution(_RealType __alpha_val = _RealType(1), + _RealType __beta_val = _RealType(1)) + : _M_param(__alpha_val, __beta_val), _M_nd() + { } + + explicit + gamma_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the @f$\alpha@f$ of the distribution. + */ + _RealType + alpha() const + { return _M_param.alpha(); } + + /** + * @brief Returns the @f$\beta@f$ of the distribution. + */ + _RealType + beta() const + { return _M_param.beta(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two gamma distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const gamma_distribution& __d1, + const gamma_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd); } + + /** + * @brief Inserts a %gamma_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %gamma_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::gamma_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %gamma_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %gamma_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::gamma_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two gamma distributions are different. + */ + template + inline bool + operator!=(const std::gamma_distribution<_RealType>& __d1, + const std::gamma_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A chi_squared_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f$p(x|n) = \frac{x^{(n/2) - 1}e^{-x/2}}{\Gamma(n/2) 2^{n/2}}@f$ + */ + template + class chi_squared_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef chi_squared_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __n = _RealType(1)) + : _M_n(__n) + { } + + _RealType + n() const + { return _M_n; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_n == __p2._M_n; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_n; + }; + + explicit + chi_squared_distribution(_RealType __n = _RealType(1)) + : _M_param(__n), _M_gd(__n / 2) + { } + + explicit + chi_squared_distribution(const param_type& __p) + : _M_param(__p), _M_gd(__p.n() / 2) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_gd.reset(); } + + /** + * + */ + _RealType + n() const + { return _M_param.n(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { + _M_param = __param; + typedef typename std::gamma_distribution::param_type + param_type; + _M_gd.param(param_type{__param.n() / 2}); + } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return 2 * _M_gd(__urng); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + return 2 * _M_gd(__urng, param_type(__p.n() / 2)); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { typename std::gamma_distribution::param_type + __p2(__p.n() / 2); + this->__generate_impl(__f, __t, __urng, __p2); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { typename std::gamma_distribution::param_type + __p2(__p.n() / 2); + this->__generate_impl(__f, __t, __urng, __p2); } + + /** + * @brief Return true if two Chi-squared distributions have + * the same parameters and the sequences that would be + * generated are equal. + */ + friend bool + operator==(const chi_squared_distribution& __d1, + const chi_squared_distribution& __d2) + { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } + + /** + * @brief Inserts a %chi_squared_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %chi_squared_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::chi_squared_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %chi_squared_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %chi_squared_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::chi_squared_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const typename + std::gamma_distribution::param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two Chi-squared distributions are different. + */ + template + inline bool + operator!=(const std::chi_squared_distribution<_RealType>& __d1, + const std::chi_squared_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A cauchy_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f$p(x|a,b) = (\pi b (1 + (\frac{x-a}{b})^2))^{-1}@f$ + */ + template + class cauchy_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef cauchy_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_a(__a), _M_b(__b) + { } + + _RealType + a() const + { return _M_a; } + + _RealType + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_a; + _RealType _M_b; + }; + + explicit + cauchy_distribution(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_param(__a, __b) + { } + + explicit + cauchy_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * + */ + _RealType + a() const + { return _M_param.a(); } + + _RealType + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Cauchy distributions have + * the same parameters. + */ + friend bool + operator==(const cauchy_distribution& __d1, + const cauchy_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two Cauchy distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::cauchy_distribution<_RealType>& __d1, + const std::cauchy_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %cauchy_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %cauchy_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::cauchy_distribution<_RealType>& __x); + + /** + * @brief Extracts a %cauchy_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %cauchy_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::cauchy_distribution<_RealType>& __x); + + + /** + * @brief A fisher_f_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f[ + * p(x|m,n) = \frac{\Gamma((m+n)/2)}{\Gamma(m/2)\Gamma(n/2)} + * (\frac{m}{n})^{m/2} x^{(m/2)-1} + * (1 + \frac{mx}{n})^{-(m+n)/2} + * @f] + */ + template + class fisher_f_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef fisher_f_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __m = _RealType(1), + _RealType __n = _RealType(1)) + : _M_m(__m), _M_n(__n) + { } + + _RealType + m() const + { return _M_m; } + + _RealType + n() const + { return _M_n; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_m == __p2._M_m && __p1._M_n == __p2._M_n; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_m; + _RealType _M_n; + }; + + explicit + fisher_f_distribution(_RealType __m = _RealType(1), + _RealType __n = _RealType(1)) + : _M_param(__m, __n), _M_gd_x(__m / 2), _M_gd_y(__n / 2) + { } + + explicit + fisher_f_distribution(const param_type& __p) + : _M_param(__p), _M_gd_x(__p.m() / 2), _M_gd_y(__p.n() / 2) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_gd_x.reset(); + _M_gd_y.reset(); + } + + /** + * + */ + _RealType + m() const + { return _M_param.m(); } + + _RealType + n() const + { return _M_param.n(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return (_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m()); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + return ((_M_gd_x(__urng, param_type(__p.m() / 2)) * n()) + / (_M_gd_y(__urng, param_type(__p.n() / 2)) * m())); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Fisher f distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const fisher_f_distribution& __d1, + const fisher_f_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_gd_x == __d2._M_gd_x + && __d1._M_gd_y == __d2._M_gd_y); } + + /** + * @brief Inserts a %fisher_f_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %fisher_f_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::fisher_f_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %fisher_f_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %fisher_f_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::fisher_f_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd_x, _M_gd_y; + }; + + /** + * @brief Return true if two Fisher f distributions are different. + */ + template + inline bool + operator!=(const std::fisher_f_distribution<_RealType>& __d1, + const std::fisher_f_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief A student_t_distribution random number distribution. + * + * The formula for the normal probability mass function is: + * @f[ + * p(x|n) = \frac{1}{\sqrt(n\pi)} \frac{\Gamma((n+1)/2)}{\Gamma(n/2)} + * (1 + \frac{x^2}{n}) ^{-(n+1)/2} + * @f] + */ + template + class student_t_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef student_t_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __n = _RealType(1)) + : _M_n(__n) + { } + + _RealType + n() const + { return _M_n; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_n == __p2._M_n; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_n; + }; + + explicit + student_t_distribution(_RealType __n = _RealType(1)) + : _M_param(__n), _M_nd(), _M_gd(__n / 2, 2) + { } + + explicit + student_t_distribution(const param_type& __p) + : _M_param(__p), _M_nd(), _M_gd(__p.n() / 2, 2) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_nd.reset(); + _M_gd.reset(); + } + + /** + * + */ + _RealType + n() const + { return _M_param.n(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + + const result_type __g = _M_gd(__urng, param_type(__p.n() / 2, 2)); + return _M_nd(__urng) * std::sqrt(__p.n() / __g); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Student t distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const student_t_distribution& __d1, + const student_t_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_nd == __d2._M_nd && __d1._M_gd == __d2._M_gd); } + + /** + * @brief Inserts a %student_t_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %student_t_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::student_t_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %student_t_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %student_t_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::student_t_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_nd; + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two Student t distributions are different. + */ + template + inline bool + operator!=(const std::student_t_distribution<_RealType>& __d1, + const std::student_t_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /* @} */ // group random_distributions_normal + + /** + * @addtogroup random_distributions_bernoulli Bernoulli Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief A Bernoulli random number distribution. + * + * Generates a sequence of true and false values with likelihood @f$p@f$ + * that true will come up and @f$(1 - p)@f$ that false will appear. + */ + class bernoulli_distribution + { + public: + /** The type of the range of the distribution. */ + typedef bool result_type; + + /** Parameter type. */ + struct param_type + { + typedef bernoulli_distribution distribution_type; + + explicit + param_type(double __p = 0.5) + : _M_p(__p) + { + __glibcxx_assert((_M_p >= 0.0) && (_M_p <= 1.0)); + } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_p == __p2._M_p; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + double _M_p; + }; + + public: + /** + * @brief Constructs a Bernoulli distribution with likelihood @p p. + * + * @param __p [IN] The likelihood of a true result being returned. + * Must be in the interval @f$[0, 1]@f$. + */ + explicit + bernoulli_distribution(double __p = 0.5) + : _M_param(__p) + { } + + explicit + bernoulli_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for a Bernoulli distribution. + */ + void + reset() { } + + /** + * @brief Returns the @p p parameter of the distribution. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::min(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + if ((__aurng() - __aurng.min()) + < __p.p() * (__aurng.max() - __aurng.min())) + return true; + return false; + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Bernoulli distributions have + * the same parameters. + */ + friend bool + operator==(const bernoulli_distribution& __d1, + const bernoulli_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two Bernoulli distributions have + * different parameters. + */ + inline bool + operator!=(const std::bernoulli_distribution& __d1, + const std::bernoulli_distribution& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %bernoulli_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %bernoulli_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::bernoulli_distribution& __x); + + /** + * @brief Extracts a %bernoulli_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %bernoulli_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::bernoulli_distribution& __x) + { + double __p; + __is >> __p; + __x.param(bernoulli_distribution::param_type(__p)); + return __is; + } + + + /** + * @brief A discrete binomial random number distribution. + * + * The formula for the binomial probability density function is + * @f$p(i|t,p) = \binom{t}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ + * and @f$p@f$ are the parameters of the distribution. + */ + template + class binomial_distribution + { + static_assert(std::is_integral<_IntType>::value, + "result_type must be an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + + /** Parameter type. */ + struct param_type + { + typedef binomial_distribution<_IntType> distribution_type; + friend class binomial_distribution<_IntType>; + + explicit + param_type(_IntType __t = _IntType(1), double __p = 0.5) + : _M_t(__t), _M_p(__p) + { + __glibcxx_assert((_M_t >= _IntType(0)) + && (_M_p >= 0.0) + && (_M_p <= 1.0)); + _M_initialize(); + } + + _IntType + t() const + { return _M_t; } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_t == __p2._M_t && __p1._M_p == __p2._M_p; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize(); + + _IntType _M_t; + double _M_p; + + double _M_q; +#if _GLIBCXX_USE_C99_MATH_TR1 + double _M_d1, _M_d2, _M_s1, _M_s2, _M_c, + _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; +#endif + bool _M_easy; + }; + + // constructors and member function + explicit + binomial_distribution(_IntType __t = _IntType(1), + double __p = 0.5) + : _M_param(__t, __p), _M_nd() + { } + + explicit + binomial_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the distribution @p t parameter. + */ + _IntType + t() const + { return _M_param.t(); } + + /** + * @brief Returns the distribution @p p parameter. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return 0; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return _M_param.t(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two binomial distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const binomial_distribution& __d1, + const binomial_distribution& __d2) +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +#else + { return __d1._M_param == __d2._M_param; } +#endif + + /** + * @brief Inserts a %binomial_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %binomial_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::binomial_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %binomial_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %binomial_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::binomial_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + result_type + _M_waiting(_UniformRandomNumberGenerator& __urng, + _IntType __t, double __q); + + param_type _M_param; + + // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two binomial distributions are different. + */ + template + inline bool + operator!=(const std::binomial_distribution<_IntType>& __d1, + const std::binomial_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A discrete geometric random number distribution. + * + * The formula for the geometric probability density function is + * @f$p(i|p) = p(1 - p)^{i}@f$ where @f$p@f$ is the parameter of the + * distribution. + */ + template + class geometric_distribution + { + static_assert(std::is_integral<_IntType>::value, + "result_type must be an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + + /** Parameter type. */ + struct param_type + { + typedef geometric_distribution<_IntType> distribution_type; + friend class geometric_distribution<_IntType>; + + explicit + param_type(double __p = 0.5) + : _M_p(__p) + { + __glibcxx_assert((_M_p > 0.0) && (_M_p < 1.0)); + _M_initialize(); + } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_p == __p2._M_p; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize() + { _M_log_1_p = std::log(1.0 - _M_p); } + + double _M_p; + + double _M_log_1_p; + }; + + // constructors and member function + explicit + geometric_distribution(double __p = 0.5) + : _M_param(__p) + { } + + explicit + geometric_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Does nothing for the geometric distribution. + */ + void + reset() { } + + /** + * @brief Returns the distribution parameter @p p. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return 0; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two geometric distributions have + * the same parameters. + */ + friend bool + operator==(const geometric_distribution& __d1, + const geometric_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two geometric distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::geometric_distribution<_IntType>& __d1, + const std::geometric_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %geometric_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %geometric_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::geometric_distribution<_IntType>& __x); + + /** + * @brief Extracts a %geometric_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %geometric_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::geometric_distribution<_IntType>& __x); + + + /** + * @brief A negative_binomial_distribution random number distribution. + * + * The formula for the negative binomial probability mass function is + * @f$p(i) = \binom{n}{i} p^i (1 - p)^{t - i}@f$ where @f$t@f$ + * and @f$p@f$ are the parameters of the distribution. + */ + template + class negative_binomial_distribution + { + static_assert(std::is_integral<_IntType>::value, + "result_type must be an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + + /** Parameter type. */ + struct param_type + { + typedef negative_binomial_distribution<_IntType> distribution_type; + + explicit + param_type(_IntType __k = 1, double __p = 0.5) + : _M_k(__k), _M_p(__p) + { + __glibcxx_assert((_M_k > 0) && (_M_p > 0.0) && (_M_p <= 1.0)); + } + + _IntType + k() const + { return _M_k; } + + double + p() const + { return _M_p; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_k == __p2._M_k && __p1._M_p == __p2._M_p; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _IntType _M_k; + double _M_p; + }; + + explicit + negative_binomial_distribution(_IntType __k = 1, double __p = 0.5) + : _M_param(__k, __p), _M_gd(__k, (1.0 - __p) / __p) + { } + + explicit + negative_binomial_distribution(const param_type& __p) + : _M_param(__p), _M_gd(__p.k(), (1.0 - __p.p()) / __p.p()) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_gd.reset(); } + + /** + * @brief Return the @f$k@f$ parameter of the distribution. + */ + _IntType + k() const + { return _M_param.k(); } + + /** + * @brief Return the @f$p@f$ parameter of the distribution. + */ + double + p() const + { return _M_param.p(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate_impl(__f, __t, __urng); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two negative binomial distributions have + * the same parameters and the sequences that would be + * generated are equal. + */ + friend bool + operator==(const negative_binomial_distribution& __d1, + const negative_binomial_distribution& __d2) + { return __d1._M_param == __d2._M_param && __d1._M_gd == __d2._M_gd; } + + /** + * @brief Inserts a %negative_binomial_distribution random + * number distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %negative_binomial_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::negative_binomial_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %negative_binomial_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %negative_binomial_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::negative_binomial_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng); + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two negative binomial distributions are different. + */ + template + inline bool + operator!=(const std::negative_binomial_distribution<_IntType>& __d1, + const std::negative_binomial_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /* @} */ // group random_distributions_bernoulli + + /** + * @addtogroup random_distributions_poisson Poisson Distributions + * @ingroup random_distributions + * @{ + */ + + /** + * @brief A discrete Poisson random number distribution. + * + * The formula for the Poisson probability density function is + * @f$p(i|\mu) = \frac{\mu^i}{i!} e^{-\mu}@f$ where @f$\mu@f$ is the + * parameter of the distribution. + */ + template + class poisson_distribution + { + static_assert(std::is_integral<_IntType>::value, + "result_type must be an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + + /** Parameter type. */ + struct param_type + { + typedef poisson_distribution<_IntType> distribution_type; + friend class poisson_distribution<_IntType>; + + explicit + param_type(double __mean = 1.0) + : _M_mean(__mean) + { + __glibcxx_assert(_M_mean > 0.0); + _M_initialize(); + } + + double + mean() const + { return _M_mean; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_mean == __p2._M_mean; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + // Hosts either log(mean) or the threshold of the simple method. + void + _M_initialize(); + + double _M_mean; + + double _M_lm_thr; +#if _GLIBCXX_USE_C99_MATH_TR1 + double _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; +#endif + }; + + // constructors and member function + explicit + poisson_distribution(double __mean = 1.0) + : _M_param(__mean), _M_nd() + { } + + explicit + poisson_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the distribution parameter @p mean. + */ + double + mean() const + { return _M_param.mean(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return 0; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Poisson distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const poisson_distribution& __d1, + const poisson_distribution& __d2) +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + { return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; } +#else + { return __d1._M_param == __d2._M_param; } +#endif + + /** + * @brief Inserts a %poisson_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %poisson_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::poisson_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %poisson_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %poisson_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::poisson_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. + std::normal_distribution _M_nd; + }; + + /** + * @brief Return true if two Poisson distributions are different. + */ + template + inline bool + operator!=(const std::poisson_distribution<_IntType>& __d1, + const std::poisson_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief An exponential continuous distribution for random numbers. + * + * The formula for the exponential probability density function is + * @f$p(x|\lambda) = \lambda e^{-\lambda x}@f$. + * + * + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$\frac{1}{\lambda}@f$
Median@f$\frac{\ln 2}{\lambda}@f$
Mode@f$zero@f$
Range@f$[0, \infty]@f$
Standard Deviation@f$\frac{1}{\lambda}@f$
+ */ + template + class exponential_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef exponential_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __lambda = _RealType(1)) + : _M_lambda(__lambda) + { + __glibcxx_assert(_M_lambda > _RealType(0)); + } + + _RealType + lambda() const + { return _M_lambda; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_lambda == __p2._M_lambda; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_lambda; + }; + + public: + /** + * @brief Constructs an exponential distribution with inverse scale + * parameter @f$\lambda@f$. + */ + explicit + exponential_distribution(const result_type& __lambda = result_type(1)) + : _M_param(__lambda) + { } + + explicit + exponential_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + * + * Has no effect on exponential distributions. + */ + void + reset() { } + + /** + * @brief Returns the inverse scale parameter of the distribution. + */ + _RealType + lambda() const + { return _M_param.lambda(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return -std::log(result_type(1) - __aurng()) / __p.lambda(); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two exponential distributions have the same + * parameters. + */ + friend bool + operator==(const exponential_distribution& __d1, + const exponential_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two exponential distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::exponential_distribution<_RealType>& __d1, + const std::exponential_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %exponential_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %exponential_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::exponential_distribution<_RealType>& __x); + + /** + * @brief Extracts a %exponential_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %exponential_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::exponential_distribution<_RealType>& __x); + + + /** + * @brief A weibull_distribution random number distribution. + * + * The formula for the normal probability density function is: + * @f[ + * p(x|\alpha,\beta) = \frac{\alpha}{\beta} (\frac{x}{\beta})^{\alpha-1} + * \exp{(-(\frac{x}{\beta})^\alpha)} + * @f] + */ + template + class weibull_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef weibull_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __a = _RealType(1), + _RealType __b = _RealType(1)) + : _M_a(__a), _M_b(__b) + { } + + _RealType + a() const + { return _M_a; } + + _RealType + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_a; + _RealType _M_b; + }; + + explicit + weibull_distribution(_RealType __a = _RealType(1), + _RealType __b = _RealType(1)) + : _M_param(__a, __b) + { } + + explicit + weibull_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the @f$a@f$ parameter of the distribution. + */ + _RealType + a() const + { return _M_param.a(); } + + /** + * @brief Return the @f$b@f$ parameter of the distribution. + */ + _RealType + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Weibull distributions have the same + * parameters. + */ + friend bool + operator==(const weibull_distribution& __d1, + const weibull_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two Weibull distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::weibull_distribution<_RealType>& __d1, + const std::weibull_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %weibull_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %weibull_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::weibull_distribution<_RealType>& __x); + + /** + * @brief Extracts a %weibull_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %weibull_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::weibull_distribution<_RealType>& __x); + + + /** + * @brief A extreme_value_distribution random number distribution. + * + * The formula for the normal probability mass function is + * @f[ + * p(x|a,b) = \frac{1}{b} + * \exp( \frac{a-x}{b} - \exp(\frac{a-x}{b})) + * @f] + */ + template + class extreme_value_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef extreme_value_distribution<_RealType> distribution_type; + + explicit + param_type(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_a(__a), _M_b(__b) + { } + + _RealType + a() const + { return _M_a; } + + _RealType + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_a; + _RealType _M_b; + }; + + explicit + extreme_value_distribution(_RealType __a = _RealType(0), + _RealType __b = _RealType(1)) + : _M_param(__a, __b) + { } + + explicit + extreme_value_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the @f$a@f$ parameter of the distribution. + */ + _RealType + a() const + { return _M_param.a(); } + + /** + * @brief Return the @f$b@f$ parameter of the distribution. + */ + _RealType + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return std::numeric_limits::lowest(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two extreme value distributions have the same + * parameters. + */ + friend bool + operator==(const extreme_value_distribution& __d1, + const extreme_value_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two extreme value distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::extreme_value_distribution<_RealType>& __d1, + const std::extreme_value_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief Inserts a %extreme_value_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %extreme_value_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::extreme_value_distribution<_RealType>& __x); + + /** + * @brief Extracts a %extreme_value_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %extreme_value_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::extreme_value_distribution<_RealType>& __x); + + + /** + * @brief A discrete_distribution random number distribution. + * + * The formula for the discrete probability mass function is + * + */ + template + class discrete_distribution + { + static_assert(std::is_integral<_IntType>::value, + "result_type must be an integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _IntType result_type; + + /** Parameter type. */ + struct param_type + { + typedef discrete_distribution<_IntType> distribution_type; + friend class discrete_distribution<_IntType>; + + param_type() + : _M_prob(), _M_cp() + { } + + template + param_type(_InputIterator __wbegin, + _InputIterator __wend) + : _M_prob(__wbegin, __wend), _M_cp() + { _M_initialize(); } + + param_type(initializer_list __wil) + : _M_prob(__wil.begin(), __wil.end()), _M_cp() + { _M_initialize(); } + + template + param_type(size_t __nw, double __xmin, double __xmax, + _Func __fw); + + // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector + probabilities() const + { return _M_prob.empty() ? std::vector(1, 1.0) : _M_prob; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_prob == __p2._M_prob; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize(); + + std::vector _M_prob; + std::vector _M_cp; + }; + + discrete_distribution() + : _M_param() + { } + + template + discrete_distribution(_InputIterator __wbegin, + _InputIterator __wend) + : _M_param(__wbegin, __wend) + { } + + discrete_distribution(initializer_list __wl) + : _M_param(__wl) + { } + + template + discrete_distribution(size_t __nw, double __xmin, double __xmax, + _Func __fw) + : _M_param(__nw, __xmin, __xmax, __fw) + { } + + explicit + discrete_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns the probabilities of the distribution. + */ + std::vector + probabilities() const + { + return _M_param._M_prob.empty() + ? std::vector(1, 1.0) : _M_param._M_prob; + } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return _M_param._M_prob.empty() + ? result_type(0) : result_type(_M_param._M_prob.size() - 1); + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two discrete distributions have the same + * parameters. + */ + friend bool + operator==(const discrete_distribution& __d1, + const discrete_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %discrete_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %discrete_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::discrete_distribution<_IntType1>& __x); + + /** + * @brief Extracts a %discrete_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %discrete_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::discrete_distribution<_IntType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two discrete distributions have different + * parameters. + */ + template + inline bool + operator!=(const std::discrete_distribution<_IntType>& __d1, + const std::discrete_distribution<_IntType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A piecewise_constant_distribution random number distribution. + * + * The formula for the piecewise constant probability mass function is + * + */ + template + class piecewise_constant_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef piecewise_constant_distribution<_RealType> distribution_type; + friend class piecewise_constant_distribution<_RealType>; + + param_type() + : _M_int(), _M_den(), _M_cp() + { } + + template + param_type(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin); + + template + param_type(initializer_list<_RealType> __bi, _Func __fw); + + template + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, + _Func __fw); + + // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector<_RealType> + intervals() const + { + if (_M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_int; + } + + std::vector + densities() const + { return _M_den.empty() ? std::vector(1, 1.0) : _M_den; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize(); + + std::vector<_RealType> _M_int; + std::vector _M_den; + std::vector _M_cp; + }; + + explicit + piecewise_constant_distribution() + : _M_param() + { } + + template + piecewise_constant_distribution(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_param(__bfirst, __bend, __wbegin) + { } + + template + piecewise_constant_distribution(initializer_list<_RealType> __bl, + _Func __fw) + : _M_param(__bl, __fw) + { } + + template + piecewise_constant_distribution(size_t __nw, + _RealType __xmin, _RealType __xmax, + _Func __fw) + : _M_param(__nw, __xmin, __xmax, __fw) + { } + + explicit + piecewise_constant_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns a vector of the intervals. + */ + std::vector<_RealType> + intervals() const + { + if (_M_param._M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_param._M_int; + } + + /** + * @brief Returns a vector of the probability densities. + */ + std::vector + densities() const + { + return _M_param._M_den.empty() + ? std::vector(1, 1.0) : _M_param._M_den; + } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { + return _M_param._M_int.empty() + ? result_type(0) : _M_param._M_int.front(); + } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return _M_param._M_int.empty() + ? result_type(1) : _M_param._M_int.back(); + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two piecewise constant distributions have the + * same parameters. + */ + friend bool + operator==(const piecewise_constant_distribution& __d1, + const piecewise_constant_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %piecewise_constant_distribution random + * number distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %piecewise_constant_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::piecewise_constant_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %piecewise_constant_distribution random + * number distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %piecewise_constant_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::piecewise_constant_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two piecewise constant distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::piecewise_constant_distribution<_RealType>& __d1, + const std::piecewise_constant_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A piecewise_linear_distribution random number distribution. + * + * The formula for the piecewise linear probability mass function is + * + */ + template + class piecewise_linear_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "result_type must be a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef piecewise_linear_distribution<_RealType> distribution_type; + friend class piecewise_linear_distribution<_RealType>; + + param_type() + : _M_int(), _M_den(), _M_cp(), _M_m() + { } + + template + param_type(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin); + + template + param_type(initializer_list<_RealType> __bl, _Func __fw); + + template + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, + _Func __fw); + + // See: http://cpp-next.com/archive/2010/10/implicit-move-must-go/ + param_type(const param_type&) = default; + param_type& operator=(const param_type&) = default; + + std::vector<_RealType> + intervals() const + { + if (_M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_int; + } + + std::vector + densities() const + { return _M_den.empty() ? std::vector(2, 1.0) : _M_den; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_int == __p2._M_int && __p1._M_den == __p2._M_den; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize(); + + std::vector<_RealType> _M_int; + std::vector _M_den; + std::vector _M_cp; + std::vector _M_m; + }; + + explicit + piecewise_linear_distribution() + : _M_param() + { } + + template + piecewise_linear_distribution(_InputIteratorB __bfirst, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_param(__bfirst, __bend, __wbegin) + { } + + template + piecewise_linear_distribution(initializer_list<_RealType> __bl, + _Func __fw) + : _M_param(__bl, __fw) + { } + + template + piecewise_linear_distribution(size_t __nw, + _RealType __xmin, _RealType __xmax, + _Func __fw) + : _M_param(__nw, __xmin, __xmax, __fw) + { } + + explicit + piecewise_linear_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the intervals of the distribution. + */ + std::vector<_RealType> + intervals() const + { + if (_M_param._M_int.empty()) + { + std::vector<_RealType> __tmp(2); + __tmp[1] = _RealType(1); + return __tmp; + } + else + return _M_param._M_int; + } + + /** + * @brief Return a vector of the probability densities of the + * distribution. + */ + std::vector + densities() const + { + return _M_param._M_den.empty() + ? std::vector(2, 1.0) : _M_param._M_den; + } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { + return _M_param._M_int.empty() + ? result_type(0) : _M_param._M_int.front(); + } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return _M_param._M_int.empty() + ? result_type(1) : _M_param._M_int.back(); + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two piecewise linear distributions have the + * same parameters. + */ + friend bool + operator==(const piecewise_linear_distribution& __d1, + const piecewise_linear_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %piecewise_linear_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %piecewise_linear_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const std::piecewise_linear_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %piecewise_linear_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %piecewise_linear_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + std::piecewise_linear_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two piecewise linear distributions have + * different parameters. + */ + template + inline bool + operator!=(const std::piecewise_linear_distribution<_RealType>& __d1, + const std::piecewise_linear_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /* @} */ // group random_distributions_poisson + + /* @} */ // group random_distributions + + /** + * @addtogroup random_utilities Random Number Utilities + * @ingroup random + * @{ + */ + + /** + * @brief The seed_seq class generates sequences of seeds for random + * number generators. + */ + class seed_seq + { + public: + /** The type of the seed vales. */ + typedef uint_least32_t result_type; + + /** Default constructor. */ + seed_seq() noexcept + : _M_v() + { } + + template + seed_seq(std::initializer_list<_IntType> il); + + template + seed_seq(_InputIterator __begin, _InputIterator __end); + + // generating functions + template + void + generate(_RandomAccessIterator __begin, _RandomAccessIterator __end); + + // property functions + size_t size() const noexcept + { return _M_v.size(); } + + template + void + param(OutputIterator __dest) const + { std::copy(_M_v.begin(), _M_v.end(), __dest); } + + // no copy functions + seed_seq(const seed_seq&) = delete; + seed_seq& operator=(const seed_seq&) = delete; + + private: + std::vector _M_v; + }; + + /* @} */ // group random_utilities + + /* @} */ // group random + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/random.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/random.tcc new file mode 100644 index 000000000..f398150d4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/random.tcc @@ -0,0 +1,3352 @@ +// random number generation (out of line) -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file bits/random.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{random} + */ + +#ifndef _RANDOM_TCC +#define _RANDOM_TCC 1 + +#include // std::accumulate and std::partial_sum + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /* + * (Further) implementation-space details. + */ + namespace __detail + { + // General case for x = (ax + c) mod m -- use Schrage's algorithm + // to avoid integer overflow. + // + // Preconditions: a > 0, m > 0. + // + // Note: only works correctly for __m % __a < __m / __a. + template + _Tp + _Mod<_Tp, __m, __a, __c, false, true>:: + __calc(_Tp __x) + { + if (__a == 1) + __x %= __m; + else + { + static const _Tp __q = __m / __a; + static const _Tp __r = __m % __a; + + _Tp __t1 = __a * (__x % __q); + _Tp __t2 = __r * (__x / __q); + if (__t1 >= __t2) + __x = __t1 - __t2; + else + __x = __m - __t2 + __t1; + } + + if (__c != 0) + { + const _Tp __d = __m - __x; + if (__d > __c) + __x += __c; + else + __x = __c - __d; + } + return __x; + } + + template + _OutputIterator + __normalize(_InputIterator __first, _InputIterator __last, + _OutputIterator __result, const _Tp& __factor) + { + for (; __first != __last; ++__first, ++__result) + *__result = *__first / __factor; + return __result; + } + + } // namespace __detail + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::multiplier; + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::increment; + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::modulus; + + template + constexpr _UIntType + linear_congruential_engine<_UIntType, __a, __c, __m>::default_seed; + + /** + * Seeds the LCR with integral value @p __s, adjusted so that the + * ring identity is never a member of the convergence set. + */ + template + void + linear_congruential_engine<_UIntType, __a, __c, __m>:: + seed(result_type __s) + { + if ((__detail::__mod<_UIntType, __m>(__c) == 0) + && (__detail::__mod<_UIntType, __m>(__s) == 0)) + _M_x = 1; + else + _M_x = __detail::__mod<_UIntType, __m>(__s); + } + + /** + * Seeds the LCR engine with a value generated by @p __q. + */ + template + template + typename std::enable_if::value>::type + linear_congruential_engine<_UIntType, __a, __c, __m>:: + seed(_Sseq& __q) + { + const _UIntType __k0 = __m == 0 ? std::numeric_limits<_UIntType>::digits + : std::__lg(__m); + const _UIntType __k = (__k0 + 31) / 32; + uint_least32_t __arr[__k + 3]; + __q.generate(__arr + 0, __arr + __k + 3); + _UIntType __factor = 1u; + _UIntType __sum = 0u; + for (size_t __j = 0; __j < __k; ++__j) + { + __sum += __arr[__j + 3] * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + seed(__sum); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const linear_congruential_engine<_UIntType, + __a, __c, __m>& __lcr) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__os.widen(' ')); + + __os << __lcr._M_x; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + linear_congruential_engine<_UIntType, __a, __c, __m>& __lcr) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec); + + __is >> __lcr._M_x; + + __is.flags(__flags); + return __is; + } + + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::word_size; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::state_size; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::shift_size; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::mask_bits; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::xor_mask; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_u; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_d; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_s; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_b; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_t; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_c; + + template + constexpr size_t + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::tempering_l; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + initialization_multiplier; + + template + constexpr _UIntType + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::default_seed; + + template + void + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + seed(result_type __sd) + { + _M_x[0] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sd); + + for (size_t __i = 1; __i < state_size; ++__i) + { + _UIntType __x = _M_x[__i - 1]; + __x ^= __x >> (__w - 2); + __x *= __f; + __x += __detail::__mod<_UIntType, __n>(__i); + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__x); + } + _M_p = state_size; + } + + template + template + typename std::enable_if::value>::type + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + seed(_Sseq& __q) + { + const _UIntType __upper_mask = (~_UIntType()) << __r; + const size_t __k = (__w + 31) / 32; + uint_least32_t __arr[__n * __k]; + __q.generate(__arr + 0, __arr + __n * __k); + + bool __zero = true; + for (size_t __i = 0; __i < state_size; ++__i) + { + _UIntType __factor = 1u; + _UIntType __sum = 0u; + for (size_t __j = 0; __j < __k; ++__j) + { + __sum += __arr[__k * __i + __j] * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sum); + + if (__zero) + { + if (__i == 0) + { + if ((_M_x[0] & __upper_mask) != 0u) + __zero = false; + } + else if (_M_x[__i] != 0u) + __zero = false; + } + } + if (__zero) + _M_x[0] = __detail::_Shift<_UIntType, __w - 1>::__value; + _M_p = state_size; + } + + template + void + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + _M_gen_rand(void) + { + const _UIntType __upper_mask = (~_UIntType()) << __r; + const _UIntType __lower_mask = ~__upper_mask; + + for (size_t __k = 0; __k < (__n - __m); ++__k) + { + _UIntType __y = ((_M_x[__k] & __upper_mask) + | (_M_x[__k + 1] & __lower_mask)); + _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + } + + for (size_t __k = (__n - __m); __k < (__n - 1); ++__k) + { + _UIntType __y = ((_M_x[__k] & __upper_mask) + | (_M_x[__k + 1] & __lower_mask)); + _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + } + + _UIntType __y = ((_M_x[__n - 1] & __upper_mask) + | (_M_x[0] & __lower_mask)); + _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + _M_p = 0; + } + + template + void + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + discard(unsigned long long __z) + { + while (__z > state_size - _M_p) + { + __z -= state_size - _M_p; + _M_gen_rand(); + } + _M_p += __z; + } + + template + typename + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>::result_type + mersenne_twister_engine<_UIntType, __w, __n, __m, __r, __a, __u, __d, + __s, __b, __t, __c, __l, __f>:: + operator()() + { + // Reload the vector - cost is O(n) amortized over n calls. + if (_M_p >= state_size) + _M_gen_rand(); + + // Calculate o(x(i)). + result_type __z = _M_x[_M_p++]; + __z ^= (__z >> __u) & __d; + __z ^= (__z << __s) & __b; + __z ^= (__z << __t) & __c; + __z ^= (__z >> __l); + + return __z; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (size_t __i = 0; __i < __n; ++__i) + __os << __x._M_x[__i] << __space; + __os << __x._M_p; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + mersenne_twister_engine<_UIntType, __w, __n, __m, + __r, __a, __u, __d, __s, __b, __t, __c, __l, __f>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (size_t __i = 0; __i < __n; ++__i) + __is >> __x._M_x[__i]; + __is >> __x._M_p; + + __is.flags(__flags); + return __is; + } + + + template + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::word_size; + + template + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::short_lag; + + template + constexpr size_t + subtract_with_carry_engine<_UIntType, __w, __s, __r>::long_lag; + + template + constexpr _UIntType + subtract_with_carry_engine<_UIntType, __w, __s, __r>::default_seed; + + template + void + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + seed(result_type __value) + { + std::linear_congruential_engine + __lcg(__value == 0u ? default_seed : __value); + + const size_t __n = (__w + 31) / 32; + + for (size_t __i = 0; __i < long_lag; ++__i) + { + _UIntType __sum = 0u; + _UIntType __factor = 1u; + for (size_t __j = 0; __j < __n; ++__j) + { + __sum += __detail::__mod::__value> + (__lcg()) * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sum); + } + _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; + _M_p = 0; + } + + template + template + typename std::enable_if::value>::type + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + seed(_Sseq& __q) + { + const size_t __k = (__w + 31) / 32; + uint_least32_t __arr[__r * __k]; + __q.generate(__arr + 0, __arr + __r * __k); + + for (size_t __i = 0; __i < long_lag; ++__i) + { + _UIntType __sum = 0u; + _UIntType __factor = 1u; + for (size_t __j = 0; __j < __k; ++__j) + { + __sum += __arr[__k * __i + __j] * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, + __detail::_Shift<_UIntType, __w>::__value>(__sum); + } + _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; + _M_p = 0; + } + + template + typename subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + result_type + subtract_with_carry_engine<_UIntType, __w, __s, __r>:: + operator()() + { + // Derive short lag index from current index. + long __ps = _M_p - short_lag; + if (__ps < 0) + __ps += long_lag; + + // Calculate new x(i) without overflow or division. + // NB: Thanks to the requirements for _UIntType, _M_x[_M_p] + _M_carry + // cannot overflow. + _UIntType __xi; + if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) + { + __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; + _M_carry = 0; + } + else + { + __xi = (__detail::_Shift<_UIntType, __w>::__value + - _M_x[_M_p] - _M_carry + _M_x[__ps]); + _M_carry = 1; + } + _M_x[_M_p] = __xi; + + // Adjust current index to loop around in ring buffer. + if (++_M_p >= long_lag) + _M_p = 0; + + return __xi; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const subtract_with_carry_engine<_UIntType, + __w, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (size_t __i = 0; __i < __r; ++__i) + __os << __x._M_x[__i] << __space; + __os << __x._M_carry << __space << __x._M_p; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + subtract_with_carry_engine<_UIntType, __w, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (size_t __i = 0; __i < __r; ++__i) + __is >> __x._M_x[__i]; + __is >> __x._M_carry; + __is >> __x._M_p; + + __is.flags(__flags); + return __is; + } + + + template + constexpr size_t + discard_block_engine<_RandomNumberEngine, __p, __r>::block_size; + + template + constexpr size_t + discard_block_engine<_RandomNumberEngine, __p, __r>::used_block; + + template + typename discard_block_engine<_RandomNumberEngine, + __p, __r>::result_type + discard_block_engine<_RandomNumberEngine, __p, __r>:: + operator()() + { + if (_M_n >= used_block) + { + _M_b.discard(block_size - _M_n); + _M_n = 0; + } + ++_M_n; + return _M_b(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const discard_block_engine<_RandomNumberEngine, + __p, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + __os << __x.base() << __space << __x._M_n; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + discard_block_engine<_RandomNumberEngine, __p, __r>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_b >> __x._M_n; + + __is.flags(__flags); + return __is; + } + + + template + typename independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: + result_type + independent_bits_engine<_RandomNumberEngine, __w, _UIntType>:: + operator()() + { + typedef typename _RandomNumberEngine::result_type _Eresult_type; + const _Eresult_type __r + = (_M_b.max() - _M_b.min() < std::numeric_limits<_Eresult_type>::max() + ? _M_b.max() - _M_b.min() + 1 : 0); + const unsigned __edig = std::numeric_limits<_Eresult_type>::digits; + const unsigned __m = __r ? std::__lg(__r) : __edig; + + typedef typename std::common_type<_Eresult_type, result_type>::type + __ctype; + const unsigned __cdig = std::numeric_limits<__ctype>::digits; + + unsigned __n, __n0; + __ctype __s0, __s1, __y0, __y1; + + for (size_t __i = 0; __i < 2; ++__i) + { + __n = (__w + __m - 1) / __m + __i; + __n0 = __n - __w % __n; + const unsigned __w0 = __w / __n; // __w0 <= __m + + __s0 = 0; + __s1 = 0; + if (__w0 < __cdig) + { + __s0 = __ctype(1) << __w0; + __s1 = __s0 << 1; + } + + __y0 = 0; + __y1 = 0; + if (__r) + { + __y0 = __s0 * (__r / __s0); + if (__s1) + __y1 = __s1 * (__r / __s1); + + if (__r - __y0 <= __y0 / __n) + break; + } + else + break; + } + + result_type __sum = 0; + for (size_t __k = 0; __k < __n0; ++__k) + { + __ctype __u; + do + __u = _M_b() - _M_b.min(); + while (__y0 && __u >= __y0); + __sum = __s0 * __sum + (__s0 ? __u % __s0 : __u); + } + for (size_t __k = __n0; __k < __n; ++__k) + { + __ctype __u; + do + __u = _M_b() - _M_b.min(); + while (__y1 && __u >= __y1); + __sum = __s1 * __sum + (__s1 ? __u % __s1 : __u); + } + return __sum; + } + + + template + constexpr size_t + shuffle_order_engine<_RandomNumberEngine, __k>::table_size; + + template + typename shuffle_order_engine<_RandomNumberEngine, __k>::result_type + shuffle_order_engine<_RandomNumberEngine, __k>:: + operator()() + { + size_t __j = __k * ((_M_y - _M_b.min()) + / (_M_b.max() - _M_b.min() + 1.0L)); + _M_y = _M_v[__j]; + _M_v[__j] = _M_b(); + + return _M_y; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const shuffle_order_engine<_RandomNumberEngine, __k>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + __os << __x.base(); + for (size_t __i = 0; __i < __k; ++__i) + __os << __space << __x._M_v[__i]; + __os << __space << __x._M_y; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + shuffle_order_engine<_RandomNumberEngine, __k>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_b; + for (size_t __i = 0; __i < __k; ++__i) + __is >> __x._M_v[__i]; + __is >> __x._M_y; + + __is.flags(__flags); + return __is; + } + + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_int_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_int_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _IntType __a, __b; + __is >> __a >> __b; + __x.param(typename uniform_int_distribution<_IntType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + uniform_real_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + auto __range = __p.b() - __p.a(); + while (__f != __t) + *__f++ = __aurng() * __range + __p.a(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_real_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_real_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename uniform_real_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + void + std::bernoulli_distribution:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + auto __limit = __p.p() * (__aurng.max() - __aurng.min()); + + while (__f != __t) + *__f++ = (__aurng() - __aurng.min()) < __limit; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bernoulli_distribution& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + + template + template + typename geometric_distribution<_IntType>::result_type + geometric_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + // About the epsilon thing see this thread: + // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + // The largest _RealType convertible to _IntType. + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + double __cand; + do + __cand = std::floor(std::log(1.0 - __aurng()) / __param._M_log_1_p); + while (__cand >= __thr); + + return result_type(__cand + __naf); + } + + template + template + void + geometric_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // About the epsilon thing see this thread: + // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + // The largest _RealType convertible to _IntType. + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + while (__f != __t) + { + double __cand; + do + __cand = std::floor(std::log(1.0 - __aurng()) + / __param._M_log_1_p); + while (__cand >= __thr); + + *__f++ = __cand + __naf; + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const geometric_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + geometric_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + double __p; + __is >> __p; + __x.param(typename geometric_distribution<_IntType>::param_type(__p)); + + __is.flags(__flags); + return __is; + } + + // This is Leger's algorithm, also in Devroye, Ch. X, Example 1.5. + template + template + typename negative_binomial_distribution<_IntType>::result_type + negative_binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + const double __y = _M_gd(__urng); + + // XXX Is the constructor too slow? + std::poisson_distribution __poisson(__y); + return __poisson(__urng); + } + + template + template + typename negative_binomial_distribution<_IntType>::result_type + negative_binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typedef typename std::gamma_distribution::param_type + param_type; + + const double __y = + _M_gd(__urng, param_type(__p.k(), (1.0 - __p.p()) / __p.p())); + + std::poisson_distribution __poisson(__y); + return __poisson(__urng); + } + + template + template + void + negative_binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + { + const double __y = _M_gd(__urng); + + // XXX Is the constructor too slow? + std::poisson_distribution __poisson(__y); + *__f++ = __poisson(__urng); + } + } + + template + template + void + negative_binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + typename std::gamma_distribution::param_type + __p2(__p.k(), (1.0 - __p.p()) / __p.p()); + + while (__f != __t) + { + const double __y = _M_gd(__urng, __p2); + + std::poisson_distribution __poisson(__y); + *__f++ = __poisson(__urng); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const negative_binomial_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.k() << __space << __x.p() + << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + negative_binomial_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + _IntType __k; + double __p; + __is >> __k >> __p >> __x._M_gd; + __x.param(typename negative_binomial_distribution<_IntType>:: + param_type(__k, __p)); + + __is.flags(__flags); + return __is; + } + + + template + void + poisson_distribution<_IntType>::param_type:: + _M_initialize() + { +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_mean >= 12) + { + const double __m = std::floor(_M_mean); + _M_lm_thr = std::log(_M_mean); + _M_lfm = std::lgamma(__m + 1); + _M_sm = std::sqrt(__m); + + const double __pi_4 = 0.7853981633974483096156608458198757L; + const double __dx = std::sqrt(2 * __m * std::log(32 * __m + / __pi_4)); + _M_d = std::round(std::max(6.0, std::min(__m, __dx))); + const double __cx = 2 * __m + _M_d; + _M_scx = std::sqrt(__cx / 2); + _M_1cx = 1 / __cx; + + _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); + _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) + / _M_d; + } + else +#endif + _M_lm_thr = std::exp(-_M_mean); + } + + /** + * A rejection algorithm when mean >= 12 and a simple method based + * upon the multiplication of uniform random variates otherwise. + * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 + * is defined. + * + * Reference: + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!). + */ + template + template + typename poisson_distribution<_IntType>::result_type + poisson_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); +#if _GLIBCXX_USE_C99_MATH_TR1 + if (__param.mean() >= 12) + { + double __x; + + // See comments above... + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const double __m = std::floor(__param.mean()); + // sqrt(pi / 2) + const double __spi_2 = 1.2533141373155002512078826424055226L; + const double __c1 = __param._M_sm * __spi_2; + const double __c2 = __param._M_c2b + __c1; + const double __c3 = __c2 + 1; + const double __c4 = __c3 + 1; + // 1 / 78 + const double __178 = 0.0128205128205128205128205128205128L; + // e^(1 / 78) + const double __e178 = 1.0129030479320018583185514777512983L; + const double __c5 = __c4 + __e178; + const double __c = __param._M_cb + __c5; + const double __2cx = 2 * (2 * __m + __param._M_d); + + bool __reject = true; + do + { + const double __u = __c * __aurng(); + const double __e = -std::log(1.0 - __aurng()); + + double __w = 0.0; + + if (__u <= __c1) + { + const double __n = _M_nd(__urng); + const double __y = -std::abs(__n) * __param._M_sm - 1; + __x = std::floor(__y); + __w = -__n * __n / 2; + if (__x < -__m) + continue; + } + else if (__u <= __c2) + { + const double __n = _M_nd(__urng); + const double __y = 1 + std::abs(__n) * __param._M_scx; + __x = std::ceil(__y); + __w = __y * (2 - __y) * __param._M_1cx; + if (__x > __param._M_d) + continue; + } + else if (__u <= __c3) + // NB: This case not in the book, nor in the Errata, + // but should be ok... + __x = -1; + else if (__u <= __c4) + __x = 0; + else if (__u <= __c5) + { + __x = 1; + // Only in the Errata, see libstdc++/83237. + __w = __178; + } + else + { + const double __v = -std::log(1.0 - __aurng()); + const double __y = __param._M_d + + __v * __2cx / __param._M_d; + __x = std::ceil(__y); + __w = -__param._M_d * __param._M_1cx * (1 + __y / 2); + } + + __reject = (__w - __e - __x * __param._M_lm_thr + > __param._M_lfm - std::lgamma(__x + __m + 1)); + + __reject |= __x + __m >= __thr; + + } while (__reject); + + return result_type(__x + __m + __naf); + } + else +#endif + { + _IntType __x = 0; + double __prod = 1.0; + + do + { + __prod *= __aurng(); + __x += 1; + } + while (__prod > __param._M_lm_thr); + + return __x - 1; + } + } + + template + template + void + poisson_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // We could duplicate everything from operator()... + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const poisson_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.mean() << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + poisson_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + double __mean; + __is >> __mean >> __x._M_nd; + __x.param(typename poisson_distribution<_IntType>::param_type(__mean)); + + __is.flags(__flags); + return __is; + } + + + template + void + binomial_distribution<_IntType>::param_type:: + _M_initialize() + { + const double __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; + + _M_easy = true; + +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_t * __p12 >= 8) + { + _M_easy = false; + const double __np = std::floor(_M_t * __p12); + const double __pa = __np / _M_t; + const double __1p = 1 - __pa; + + const double __pi_4 = 0.7853981633974483096156608458198757L; + const double __d1x = + std::sqrt(__np * __1p * std::log(32 * __np + / (81 * __pi_4 * __1p))); + _M_d1 = std::round(std::max(1.0, __d1x)); + const double __d2x = + std::sqrt(__np * __1p * std::log(32 * _M_t * __1p + / (__pi_4 * __pa))); + _M_d2 = std::round(std::max(1.0, __d2x)); + + // sqrt(pi / 2) + const double __spi_2 = 1.2533141373155002512078826424055226L; + _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); + _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p)); + _M_c = 2 * _M_d1 / __np; + _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; + const double __a12 = _M_a1 + _M_s2 * __spi_2; + const double __s1s = _M_s1 * _M_s1; + _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) + * 2 * __s1s / _M_d1 + * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); + const double __s2s = _M_s2 * _M_s2; + _M_s = (_M_a123 + 2 * __s2s / _M_d2 + * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); + _M_lf = (std::lgamma(__np + 1) + + std::lgamma(_M_t - __np + 1)); + _M_lp1p = std::log(__pa / __1p); + + _M_q = -std::log(1 - (__p12 - __pa) / __1p); + } + else +#endif + _M_q = -std::log(1 - __p12); + } + + template + template + typename binomial_distribution<_IntType>::result_type + binomial_distribution<_IntType>:: + _M_waiting(_UniformRandomNumberGenerator& __urng, + _IntType __t, double __q) + { + _IntType __x = 0; + double __sum = 0.0; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + do + { + if (__t == __x) + return __x; + const double __e = -std::log(1.0 - __aurng()); + __sum += __e / (__t - __x); + __x += 1; + } + while (__sum <= __q); + + return __x - 1; + } + + /** + * A rejection algorithm when t * p >= 8 and a simple waiting time + * method - the second in the referenced book - otherwise. + * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 + * is defined. + * + * Reference: + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. X, Sect. 4 (+ Errata!). + */ + template + template + typename binomial_distribution<_IntType>::result_type + binomial_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + result_type __ret; + const _IntType __t = __param.t(); + const double __p = __param.p(); + const double __p12 = __p <= 0.5 ? __p : 1.0 - __p; + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + +#if _GLIBCXX_USE_C99_MATH_TR1 + if (!__param._M_easy) + { + double __x; + + // See comments above... + const double __naf = + (1 - std::numeric_limits::epsilon()) / 2; + const double __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const double __np = std::floor(__t * __p12); + + // sqrt(pi / 2) + const double __spi_2 = 1.2533141373155002512078826424055226L; + const double __a1 = __param._M_a1; + const double __a12 = __a1 + __param._M_s2 * __spi_2; + const double __a123 = __param._M_a123; + const double __s1s = __param._M_s1 * __param._M_s1; + const double __s2s = __param._M_s2 * __param._M_s2; + + bool __reject; + do + { + const double __u = __param._M_s * __aurng(); + + double __v; + + if (__u <= __a1) + { + const double __n = _M_nd(__urng); + const double __y = __param._M_s1 * std::abs(__n); + __reject = __y >= __param._M_d1; + if (!__reject) + { + const double __e = -std::log(1.0 - __aurng()); + __x = std::floor(__y); + __v = -__e - __n * __n / 2 + __param._M_c; + } + } + else if (__u <= __a12) + { + const double __n = _M_nd(__urng); + const double __y = __param._M_s2 * std::abs(__n); + __reject = __y >= __param._M_d2; + if (!__reject) + { + const double __e = -std::log(1.0 - __aurng()); + __x = std::floor(-__y); + __v = -__e - __n * __n / 2; + } + } + else if (__u <= __a123) + { + const double __e1 = -std::log(1.0 - __aurng()); + const double __e2 = -std::log(1.0 - __aurng()); + + const double __y = __param._M_d1 + + 2 * __s1s * __e1 / __param._M_d1; + __x = std::floor(__y); + __v = (-__e2 + __param._M_d1 * (1 / (__t - __np) + -__y / (2 * __s1s))); + __reject = false; + } + else + { + const double __e1 = -std::log(1.0 - __aurng()); + const double __e2 = -std::log(1.0 - __aurng()); + + const double __y = __param._M_d2 + + 2 * __s2s * __e1 / __param._M_d2; + __x = std::floor(-__y); + __v = -__e2 - __param._M_d2 * __y / (2 * __s2s); + __reject = false; + } + + __reject = __reject || __x < -__np || __x > __t - __np; + if (!__reject) + { + const double __lfx = + std::lgamma(__np + __x + 1) + + std::lgamma(__t - (__np + __x) + 1); + __reject = __v > __param._M_lf - __lfx + + __x * __param._M_lp1p; + } + + __reject |= __x + __np >= __thr; + } + while (__reject); + + __x += __np + __naf; + + const _IntType __z = _M_waiting(__urng, __t - _IntType(__x), + __param._M_q); + __ret = _IntType(__x) + __z; + } + else +#endif + __ret = _M_waiting(__urng, __t, __param._M_q); + + if (__p12 != __p) + __ret = __t - __ret; + return __ret; + } + + template + template + void + binomial_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // We could duplicate everything from operator()... + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const binomial_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits::max_digits10); + + __os << __x.t() << __space << __x.p() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + binomial_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _IntType __t; + double __p; + __is >> __t >> __p >> __x._M_nd; + __x.param(typename binomial_distribution<_IntType>:: + param_type(__t, __p)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + std::exponential_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + while (__f != __t) + *__f++ = -std::log(result_type(1) - __aurng()) / __p.lambda(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const exponential_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.lambda(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + exponential_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __lambda; + __is >> __lambda; + __x.param(typename exponential_distribution<_RealType>:: + param_type(__lambda)); + + __is.flags(__flags); + return __is; + } + + + /** + * Polar method due to Marsaglia. + * + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. V, Sect. 4.4. + */ + template + template + typename normal_distribution<_RealType>::result_type + normal_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + result_type __ret; + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + if (_M_saved_available) + { + _M_saved_available = false; + __ret = _M_saved; + } + else + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __aurng() - 1.0; + __y = result_type(2.0) * __aurng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + _M_saved = __x * __mult; + _M_saved_available = true; + __ret = __y * __mult; + } + + __ret = __ret * __param.stddev() + __param.mean(); + return __ret; + } + + template + template + void + normal_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + + if (__f == __t) + return; + + if (_M_saved_available) + { + _M_saved_available = false; + *__f++ = _M_saved * __param.stddev() + __param.mean(); + + if (__f == __t) + return; + } + + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f + 1 < __t) + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __aurng() - 1.0; + __y = result_type(2.0) * __aurng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + *__f++ = __y * __mult * __param.stddev() + __param.mean(); + *__f++ = __x * __mult * __param.stddev() + __param.mean(); + } + + if (__f != __t) + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __aurng() - 1.0; + __y = result_type(2.0) * __aurng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + _M_saved = __x * __mult; + _M_saved_available = true; + *__f = __y * __mult * __param.stddev() + __param.mean(); + } + } + + template + bool + operator==(const std::normal_distribution<_RealType>& __d1, + const std::normal_distribution<_RealType>& __d2) + { + if (__d1._M_param == __d2._M_param + && __d1._M_saved_available == __d2._M_saved_available) + { + if (__d1._M_saved_available + && __d1._M_saved == __d2._M_saved) + return true; + else if(!__d1._M_saved_available) + return true; + else + return false; + } + else + return false; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const normal_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.mean() << __space << __x.stddev() + << __space << __x._M_saved_available; + if (__x._M_saved_available) + __os << __space << __x._M_saved; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + normal_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + double __mean, __stddev; + __is >> __mean >> __stddev + >> __x._M_saved_available; + if (__x._M_saved_available) + __is >> __x._M_saved; + __x.param(typename normal_distribution<_RealType>:: + param_type(__mean, __stddev)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + lognormal_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = std::exp(__p.s() * _M_nd(__urng) + __p.m()); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const lognormal_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.m() << __space << __x.s() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + lognormal_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __m, __s; + __is >> __m >> __s >> __x._M_nd; + __x.param(typename lognormal_distribution<_RealType>:: + param_type(__m, __s)); + + __is.flags(__flags); + return __is; + } + + template + template + void + std::chi_squared_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = 2 * _M_gd(__urng); + } + + template + template + void + std::chi_squared_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const typename + std::gamma_distribution::param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = 2 * _M_gd(__urng, __p); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const chi_squared_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.n() << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + chi_squared_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __n; + __is >> __n >> __x._M_gd; + __x.param(typename chi_squared_distribution<_RealType>:: + param_type(__n)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename cauchy_distribution<_RealType>::result_type + cauchy_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + _RealType __u; + do + __u = __aurng(); + while (__u == 0.5); + + const _RealType __pi = 3.1415926535897932384626433832795029L; + return __p.a() + __p.b() * std::tan(__pi * __u); + } + + template + template + void + cauchy_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + const _RealType __pi = 3.1415926535897932384626433832795029L; + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + while (__f != __t) + { + _RealType __u; + do + __u = __aurng(); + while (__u == 0.5); + + *__f++ = __p.a() + __p.b() * std::tan(__pi * __u); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const cauchy_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + cauchy_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename cauchy_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + std::fisher_f_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = ((_M_gd_x(__urng) * n()) / (_M_gd_y(__urng) * m())); + } + + template + template + void + std::fisher_f_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + typedef typename std::gamma_distribution::param_type + param_type; + param_type __p1(__p.m() / 2); + param_type __p2(__p.n() / 2); + while (__f != __t) + *__f++ = ((_M_gd_x(__urng, __p1) * n()) + / (_M_gd_y(__urng, __p2) * m())); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const fisher_f_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.m() << __space << __x.n() + << __space << __x._M_gd_x << __space << __x._M_gd_y; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + fisher_f_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __m, __n; + __is >> __m >> __n >> __x._M_gd_x >> __x._M_gd_y; + __x.param(typename fisher_f_distribution<_RealType>:: + param_type(__m, __n)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + std::student_t_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + while (__f != __t) + *__f++ = _M_nd(__urng) * std::sqrt(n() / _M_gd(__urng)); + } + + template + template + void + std::student_t_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + typename std::gamma_distribution::param_type + __p2(__p.n() / 2, 2); + while (__f != __t) + *__f++ = _M_nd(__urng) * std::sqrt(__p.n() / _M_gd(__urng, __p2)); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const student_t_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.n() << __space << __x._M_nd << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + student_t_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __n; + __is >> __n >> __x._M_nd >> __x._M_gd; + __x.param(typename student_t_distribution<_RealType>::param_type(__n)); + + __is.flags(__flags); + return __is; + } + + + template + void + gamma_distribution<_RealType>::param_type:: + _M_initialize() + { + _M_malpha = _M_alpha < 1.0 ? _M_alpha + _RealType(1.0) : _M_alpha; + + const _RealType __a1 = _M_malpha - _RealType(1.0) / _RealType(3.0); + _M_a2 = _RealType(1.0) / std::sqrt(_RealType(9.0) * __a1); + } + + /** + * Marsaglia, G. and Tsang, W. W. + * "A Simple Method for Generating Gamma Variables" + * ACM Transactions on Mathematical Software, 26, 3, 363-372, 2000. + */ + template + template + typename gamma_distribution<_RealType>::result_type + gamma_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __u, __v, __n; + const result_type __a1 = (__param._M_malpha + - _RealType(1.0) / _RealType(3.0)); + + do + { + do + { + __n = _M_nd(__urng); + __v = result_type(1.0) + __param._M_a2 * __n; + } + while (__v <= 0.0); + + __v = __v * __v * __v; + __u = __aurng(); + } + while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + + if (__param.alpha() == __param._M_malpha) + return __a1 * __v * __param.beta(); + else + { + do + __u = __aurng(); + while (__u == 0.0); + + return (std::pow(__u, result_type(1.0) / __param.alpha()) + * __a1 * __v * __param.beta()); + } + } + + template + template + void + gamma_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __u, __v, __n; + const result_type __a1 = (__param._M_malpha + - _RealType(1.0) / _RealType(3.0)); + + if (__param.alpha() == __param._M_malpha) + while (__f != __t) + { + do + { + do + { + __n = _M_nd(__urng); + __v = result_type(1.0) + __param._M_a2 * __n; + } + while (__v <= 0.0); + + __v = __v * __v * __v; + __u = __aurng(); + } + while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + + *__f++ = __a1 * __v * __param.beta(); + } + else + while (__f != __t) + { + do + { + do + { + __n = _M_nd(__urng); + __v = result_type(1.0) + __param._M_a2 * __n; + } + while (__v <= 0.0); + + __v = __v * __v * __v; + __u = __aurng(); + } + while (__u > result_type(1.0) - 0.0331 * __n * __n * __n * __n + && (std::log(__u) > (0.5 * __n * __n + __a1 + * (1.0 - __v + std::log(__v))))); + + do + __u = __aurng(); + while (__u == 0.0); + + *__f++ = (std::pow(__u, result_type(1.0) / __param.alpha()) + * __a1 * __v * __param.beta()); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const gamma_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.alpha() << __space << __x.beta() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + gamma_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __alpha_val, __beta_val; + __is >> __alpha_val >> __beta_val >> __x._M_nd; + __x.param(typename gamma_distribution<_RealType>:: + param_type(__alpha_val, __beta_val)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename weibull_distribution<_RealType>::result_type + weibull_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return __p.b() * std::pow(-std::log(result_type(1) - __aurng()), + result_type(1) / __p.a()); + } + + template + template + void + weibull_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + auto __inv_a = result_type(1) / __p.a(); + + while (__f != __t) + *__f++ = __p.b() * std::pow(-std::log(result_type(1) - __aurng()), + __inv_a); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const weibull_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + weibull_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename weibull_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename extreme_value_distribution<_RealType>::result_type + extreme_value_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + return __p.a() - __p.b() * std::log(-std::log(result_type(1) + - __aurng())); + } + + template + template + void + extreme_value_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f != __t) + *__f++ = __p.a() - __p.b() * std::log(-std::log(result_type(1) + - __aurng())); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const extreme_value_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + extreme_value_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename extreme_value_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + void + discrete_distribution<_IntType>::param_type:: + _M_initialize() + { + if (_M_prob.size() < 2) + { + _M_prob.clear(); + return; + } + + const double __sum = std::accumulate(_M_prob.begin(), + _M_prob.end(), 0.0); + // Now normalize the probabilites. + __detail::__normalize(_M_prob.begin(), _M_prob.end(), _M_prob.begin(), + __sum); + // Accumulate partial sums. + _M_cp.reserve(_M_prob.size()); + std::partial_sum(_M_prob.begin(), _M_prob.end(), + std::back_inserter(_M_cp)); + // Make sure the last cumulative probability is one. + _M_cp[_M_cp.size() - 1] = 1.0; + } + + template + template + discrete_distribution<_IntType>::param_type:: + param_type(size_t __nw, double __xmin, double __xmax, _Func __fw) + : _M_prob(), _M_cp() + { + const size_t __n = __nw == 0 ? 1 : __nw; + const double __delta = (__xmax - __xmin) / __n; + + _M_prob.reserve(__n); + for (size_t __k = 0; __k < __nw; ++__k) + _M_prob.push_back(__fw(__xmin + __k * __delta + 0.5 * __delta)); + + _M_initialize(); + } + + template + template + typename discrete_distribution<_IntType>::result_type + discrete_distribution<_IntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + if (__param._M_cp.empty()) + return result_type(0); + + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + const double __p = __aurng(); + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + + return __pos - __param._M_cp.begin(); + } + + template + template + void + discrete_distribution<_IntType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + + if (__param._M_cp.empty()) + { + while (__f != __t) + *__f++ = result_type(0); + return; + } + + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + while (__f != __t) + { + const double __p = __aurng(); + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + + *__f++ = __pos - __param._M_cp.begin(); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const discrete_distribution<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits::max_digits10); + + std::vector __prob = __x.probabilities(); + __os << __prob.size(); + for (auto __dit = __prob.begin(); __dit != __prob.end(); ++__dit) + __os << __space << *__dit; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + discrete_distribution<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + size_t __n; + __is >> __n; + + std::vector __prob_vec; + __prob_vec.reserve(__n); + for (; __n != 0; --__n) + { + double __prob; + __is >> __prob; + __prob_vec.push_back(__prob); + } + + __x.param(typename discrete_distribution<_IntType>:: + param_type(__prob_vec.begin(), __prob_vec.end())); + + __is.flags(__flags); + return __is; + } + + + template + void + piecewise_constant_distribution<_RealType>::param_type:: + _M_initialize() + { + if (_M_int.size() < 2 + || (_M_int.size() == 2 + && _M_int[0] == _RealType(0) + && _M_int[1] == _RealType(1))) + { + _M_int.clear(); + _M_den.clear(); + return; + } + + const double __sum = std::accumulate(_M_den.begin(), + _M_den.end(), 0.0); + + __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), + __sum); + + _M_cp.reserve(_M_den.size()); + std::partial_sum(_M_den.begin(), _M_den.end(), + std::back_inserter(_M_cp)); + + // Make sure the last cumulative probability is one. + _M_cp[_M_cp.size() - 1] = 1.0; + + for (size_t __k = 0; __k < _M_den.size(); ++__k) + _M_den[__k] /= _M_int[__k + 1] - _M_int[__k]; + } + + template + template + piecewise_constant_distribution<_RealType>::param_type:: + param_type(_InputIteratorB __bbegin, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_int(), _M_den(), _M_cp() + { + if (__bbegin != __bend) + { + for (;;) + { + _M_int.push_back(*__bbegin); + ++__bbegin; + if (__bbegin == __bend) + break; + + _M_den.push_back(*__wbegin); + ++__wbegin; + } + } + + _M_initialize(); + } + + template + template + piecewise_constant_distribution<_RealType>::param_type:: + param_type(initializer_list<_RealType> __bl, _Func __fw) + : _M_int(), _M_den(), _M_cp() + { + _M_int.reserve(__bl.size()); + for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) + _M_int.push_back(*__biter); + + _M_den.reserve(_M_int.size() - 1); + for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) + _M_den.push_back(__fw(0.5 * (_M_int[__k + 1] + _M_int[__k]))); + + _M_initialize(); + } + + template + template + piecewise_constant_distribution<_RealType>::param_type:: + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) + : _M_int(), _M_den(), _M_cp() + { + const size_t __n = __nw == 0 ? 1 : __nw; + const _RealType __delta = (__xmax - __xmin) / __n; + + _M_int.reserve(__n + 1); + for (size_t __k = 0; __k <= __nw; ++__k) + _M_int.push_back(__xmin + __k * __delta); + + _M_den.reserve(__n); + for (size_t __k = 0; __k < __nw; ++__k) + _M_den.push_back(__fw(_M_int[__k] + 0.5 * __delta)); + + _M_initialize(); + } + + template + template + typename piecewise_constant_distribution<_RealType>::result_type + piecewise_constant_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + const double __p = __aurng(); + if (__param._M_cp.empty()) + return __p; + + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + const size_t __i = __pos - __param._M_cp.begin(); + + const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; + + return __param._M_int[__i] + (__p - __pref) / __param._M_den[__i]; + } + + template + template + void + piecewise_constant_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + if (__param._M_cp.empty()) + { + while (__f != __t) + *__f++ = __aurng(); + return; + } + + while (__f != __t) + { + const double __p = __aurng(); + + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + const size_t __i = __pos - __param._M_cp.begin(); + + const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; + + *__f++ = (__param._M_int[__i] + + (__p - __pref) / __param._M_den[__i]); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const piecewise_constant_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + std::vector<_RealType> __int = __x.intervals(); + __os << __int.size() - 1; + + for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) + __os << __space << *__xit; + + std::vector __den = __x.densities(); + for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) + __os << __space << *__dit; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + piecewise_constant_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + size_t __n; + __is >> __n; + + std::vector<_RealType> __int_vec; + __int_vec.reserve(__n + 1); + for (size_t __i = 0; __i <= __n; ++__i) + { + _RealType __int; + __is >> __int; + __int_vec.push_back(__int); + } + + std::vector __den_vec; + __den_vec.reserve(__n); + for (size_t __i = 0; __i < __n; ++__i) + { + double __den; + __is >> __den; + __den_vec.push_back(__den); + } + + __x.param(typename piecewise_constant_distribution<_RealType>:: + param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); + + __is.flags(__flags); + return __is; + } + + + template + void + piecewise_linear_distribution<_RealType>::param_type:: + _M_initialize() + { + if (_M_int.size() < 2 + || (_M_int.size() == 2 + && _M_int[0] == _RealType(0) + && _M_int[1] == _RealType(1) + && _M_den[0] == _M_den[1])) + { + _M_int.clear(); + _M_den.clear(); + return; + } + + double __sum = 0.0; + _M_cp.reserve(_M_int.size() - 1); + _M_m.reserve(_M_int.size() - 1); + for (size_t __k = 0; __k < _M_int.size() - 1; ++__k) + { + const _RealType __delta = _M_int[__k + 1] - _M_int[__k]; + __sum += 0.5 * (_M_den[__k + 1] + _M_den[__k]) * __delta; + _M_cp.push_back(__sum); + _M_m.push_back((_M_den[__k + 1] - _M_den[__k]) / __delta); + } + + // Now normalize the densities... + __detail::__normalize(_M_den.begin(), _M_den.end(), _M_den.begin(), + __sum); + // ... and partial sums... + __detail::__normalize(_M_cp.begin(), _M_cp.end(), _M_cp.begin(), __sum); + // ... and slopes. + __detail::__normalize(_M_m.begin(), _M_m.end(), _M_m.begin(), __sum); + + // Make sure the last cumulative probablility is one. + _M_cp[_M_cp.size() - 1] = 1.0; + } + + template + template + piecewise_linear_distribution<_RealType>::param_type:: + param_type(_InputIteratorB __bbegin, + _InputIteratorB __bend, + _InputIteratorW __wbegin) + : _M_int(), _M_den(), _M_cp(), _M_m() + { + for (; __bbegin != __bend; ++__bbegin, ++__wbegin) + { + _M_int.push_back(*__bbegin); + _M_den.push_back(*__wbegin); + } + + _M_initialize(); + } + + template + template + piecewise_linear_distribution<_RealType>::param_type:: + param_type(initializer_list<_RealType> __bl, _Func __fw) + : _M_int(), _M_den(), _M_cp(), _M_m() + { + _M_int.reserve(__bl.size()); + _M_den.reserve(__bl.size()); + for (auto __biter = __bl.begin(); __biter != __bl.end(); ++__biter) + { + _M_int.push_back(*__biter); + _M_den.push_back(__fw(*__biter)); + } + + _M_initialize(); + } + + template + template + piecewise_linear_distribution<_RealType>::param_type:: + param_type(size_t __nw, _RealType __xmin, _RealType __xmax, _Func __fw) + : _M_int(), _M_den(), _M_cp(), _M_m() + { + const size_t __n = __nw == 0 ? 1 : __nw; + const _RealType __delta = (__xmax - __xmin) / __n; + + _M_int.reserve(__n + 1); + _M_den.reserve(__n + 1); + for (size_t __k = 0; __k <= __nw; ++__k) + { + _M_int.push_back(__xmin + __k * __delta); + _M_den.push_back(__fw(_M_int[__k] + __delta)); + } + + _M_initialize(); + } + + template + template + typename piecewise_linear_distribution<_RealType>::result_type + piecewise_linear_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + const double __p = __aurng(); + if (__param._M_cp.empty()) + return __p; + + auto __pos = std::lower_bound(__param._M_cp.begin(), + __param._M_cp.end(), __p); + const size_t __i = __pos - __param._M_cp.begin(); + + const double __pref = __i > 0 ? __param._M_cp[__i - 1] : 0.0; + + const double __a = 0.5 * __param._M_m[__i]; + const double __b = __param._M_den[__i]; + const double __cm = __p - __pref; + + _RealType __x = __param._M_int[__i]; + if (__a == 0) + __x += __cm / __b; + else + { + const double __d = __b * __b + 4.0 * __a * __cm; + __x += 0.5 * (std::sqrt(__d) - __b) / __a; + } + + return __x; + } + + template + template + void + piecewise_linear_distribution<_RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + // We could duplicate everything from operator()... + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const piecewise_linear_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + std::vector<_RealType> __int = __x.intervals(); + __os << __int.size() - 1; + + for (auto __xit = __int.begin(); __xit != __int.end(); ++__xit) + __os << __space << *__xit; + + std::vector __den = __x.densities(); + for (auto __dit = __den.begin(); __dit != __den.end(); ++__dit) + __os << __space << *__dit; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + piecewise_linear_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + size_t __n; + __is >> __n; + + std::vector<_RealType> __int_vec; + __int_vec.reserve(__n + 1); + for (size_t __i = 0; __i <= __n; ++__i) + { + _RealType __int; + __is >> __int; + __int_vec.push_back(__int); + } + + std::vector __den_vec; + __den_vec.reserve(__n + 1); + for (size_t __i = 0; __i <= __n; ++__i) + { + double __den; + __is >> __den; + __den_vec.push_back(__den); + } + + __x.param(typename piecewise_linear_distribution<_RealType>:: + param_type(__int_vec.begin(), __int_vec.end(), __den_vec.begin())); + + __is.flags(__flags); + return __is; + } + + + template + seed_seq::seed_seq(std::initializer_list<_IntType> __il) + { + for (auto __iter = __il.begin(); __iter != __il.end(); ++__iter) + _M_v.push_back(__detail::__mod::__value>(*__iter)); + } + + template + seed_seq::seed_seq(_InputIterator __begin, _InputIterator __end) + { + for (_InputIterator __iter = __begin; __iter != __end; ++__iter) + _M_v.push_back(__detail::__mod::__value>(*__iter)); + } + + template + void + seed_seq::generate(_RandomAccessIterator __begin, + _RandomAccessIterator __end) + { + typedef typename iterator_traits<_RandomAccessIterator>::value_type + _Type; + + if (__begin == __end) + return; + + std::fill(__begin, __end, _Type(0x8b8b8b8bu)); + + const size_t __n = __end - __begin; + const size_t __s = _M_v.size(); + const size_t __t = (__n >= 623) ? 11 + : (__n >= 68) ? 7 + : (__n >= 39) ? 5 + : (__n >= 7) ? 3 + : (__n - 1) / 2; + const size_t __p = (__n - __t) / 2; + const size_t __q = __p + __t; + const size_t __m = std::max(size_t(__s + 1), __n); + + for (size_t __k = 0; __k < __m; ++__k) + { + _Type __arg = (__begin[__k % __n] + ^ __begin[(__k + __p) % __n] + ^ __begin[(__k - 1) % __n]); + _Type __r1 = __arg ^ (__arg >> 27); + __r1 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(1664525u * __r1); + _Type __r2 = __r1; + if (__k == 0) + __r2 += __s; + else if (__k <= __s) + __r2 += __k % __n + _M_v[__k - 1]; + else + __r2 += __k % __n; + __r2 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(__r2); + __begin[(__k + __p) % __n] += __r1; + __begin[(__k + __q) % __n] += __r2; + __begin[__k % __n] = __r2; + } + + for (size_t __k = __m; __k < __m + __n; ++__k) + { + _Type __arg = (__begin[__k % __n] + + __begin[(__k + __p) % __n] + + __begin[(__k - 1) % __n]); + _Type __r3 = __arg ^ (__arg >> 27); + __r3 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(1566083941u * __r3); + _Type __r4 = __r3 - __k % __n; + __r4 = __detail::__mod<_Type, + __detail::_Shift<_Type, 32>::__value>(__r4); + __begin[(__k + __p) % __n] ^= __r3; + __begin[(__k + __q) % __n] ^= __r4; + __begin[__k % __n] = __r4; + } + } + + template + _RealType + generate_canonical(_UniformRandomNumberGenerator& __urng) + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument must be a floating point type"); + + const size_t __b + = std::min(static_cast(std::numeric_limits<_RealType>::digits), + __bits); + const long double __r = static_cast(__urng.max()) + - static_cast(__urng.min()) + 1.0L; + const size_t __log2r = std::log(__r) / std::log(2.0L); + const size_t __m = std::max(1UL, + (__b + __log2r - 1UL) / __log2r); + _RealType __ret; + _RealType __sum = _RealType(0); + _RealType __tmp = _RealType(1); + for (size_t __k = __m; __k != 0; --__k) + { + __sum += _RealType(__urng() - __urng.min()) * __tmp; + __tmp *= __r; + } + __ret = __sum / __tmp; + if (__builtin_expect(__ret >= _RealType(1), 0)) + { +#if _GLIBCXX_USE_C99_MATH_TR1 + __ret = std::nextafter(_RealType(1), _RealType(0)); +#else + __ret = _RealType(1) + - std::numeric_limits<_RealType>::epsilon() / _RealType(2); +#endif + } + return __ret; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/range_access.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/range_access.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/range_access.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/range_access.h index 2a037ad80..5beb99758 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/range_access.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/range_access.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 @@ -257,7 +257,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __cont Container. */ template - constexpr auto + [[nodiscard]] constexpr auto empty(const _Container& __cont) noexcept(noexcept(__cont.empty())) -> decltype(__cont.empty()) { return __cont.empty(); } @@ -267,7 +267,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __array Container. */ template - constexpr bool + [[nodiscard]] constexpr bool empty(const _Tp (&/*__array*/)[_Nm]) noexcept { return false; } @@ -276,7 +276,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __il Initializer list. */ template - constexpr bool + [[nodiscard]] constexpr bool empty(initializer_list<_Tp> __il) noexcept { return __il.size() == 0;} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/refwrap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/refwrap.h new file mode 100644 index 000000000..c1d46705b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/refwrap.h @@ -0,0 +1,361 @@ +// Implementation of std::reference_wrapper -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file include/bits/refwrap.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{functional} + */ + +#ifndef _GLIBCXX_REFWRAP_H +#define _GLIBCXX_REFWRAP_H 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include // for unary_function and binary_function + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * Derives from @c unary_function or @c binary_function, or perhaps + * nothing, depending on the number of arguments provided. The + * primary template is the basis case, which derives nothing. + */ + template + struct _Maybe_unary_or_binary_function { }; + + /// Derives from @c unary_function, as appropriate. + template + struct _Maybe_unary_or_binary_function<_Res, _T1> + : std::unary_function<_T1, _Res> { }; + + /// Derives from @c binary_function, as appropriate. + template + struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> + : std::binary_function<_T1, _T2, _Res> { }; + + template + struct _Mem_fn_traits; + + template + struct _Mem_fn_traits_base + { + using __result_type = _Res; + using __maybe_type + = _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...>; + using __arity = integral_constant; + }; + +#define _GLIBCXX_MEM_FN_TRAITS2(_CV, _REF, _LVAL, _RVAL) \ + template \ + struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes...) _CV _REF> \ + : _Mem_fn_traits_base<_Res, _CV _Class, _ArgTypes...> \ + { \ + using __vararg = false_type; \ + }; \ + template \ + struct _Mem_fn_traits<_Res (_Class::*)(_ArgTypes... ...) _CV _REF> \ + : _Mem_fn_traits_base<_Res, _CV _Class, _ArgTypes...> \ + { \ + using __vararg = true_type; \ + }; + +#define _GLIBCXX_MEM_FN_TRAITS(_REF, _LVAL, _RVAL) \ + _GLIBCXX_MEM_FN_TRAITS2( , _REF, _LVAL, _RVAL) \ + _GLIBCXX_MEM_FN_TRAITS2(const , _REF, _LVAL, _RVAL) \ + _GLIBCXX_MEM_FN_TRAITS2(volatile , _REF, _LVAL, _RVAL) \ + _GLIBCXX_MEM_FN_TRAITS2(const volatile, _REF, _LVAL, _RVAL) + +_GLIBCXX_MEM_FN_TRAITS( , true_type, true_type) +_GLIBCXX_MEM_FN_TRAITS(&, true_type, false_type) +_GLIBCXX_MEM_FN_TRAITS(&&, false_type, true_type) + +#if __cplusplus > 201402L +_GLIBCXX_MEM_FN_TRAITS(noexcept, true_type, true_type) +_GLIBCXX_MEM_FN_TRAITS(& noexcept, true_type, false_type) +_GLIBCXX_MEM_FN_TRAITS(&& noexcept, false_type, true_type) +#endif + +#undef _GLIBCXX_MEM_FN_TRAITS +#undef _GLIBCXX_MEM_FN_TRAITS2 + + /// If we have found a result_type, extract it. + template> + struct _Maybe_get_result_type + { }; + + template + struct _Maybe_get_result_type<_Functor, + __void_t> + { typedef typename _Functor::result_type result_type; }; + + /** + * Base class for any function object that has a weak result type, as + * defined in 20.8.2 [func.require] of C++11. + */ + template + struct _Weak_result_type_impl + : _Maybe_get_result_type<_Functor> + { }; + + /// Retrieve the result type for a function type. + template + struct _Weak_result_type_impl<_Res(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> + { typedef _Res result_type; }; + + /// Retrieve the result type for a varargs function type. + template + struct _Weak_result_type_impl<_Res(_ArgTypes......) _GLIBCXX_NOEXCEPT_QUAL> + { typedef _Res result_type; }; + + /// Retrieve the result type for a function pointer. + template + struct _Weak_result_type_impl<_Res(*)(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> + { typedef _Res result_type; }; + + /// Retrieve the result type for a varargs function pointer. + template + struct + _Weak_result_type_impl<_Res(*)(_ArgTypes......) _GLIBCXX_NOEXCEPT_QUAL> + { typedef _Res result_type; }; + + // Let _Weak_result_type_impl perform the real work. + template::value> + struct _Weak_result_type_memfun + : _Weak_result_type_impl<_Functor> + { }; + + // A pointer to member function has a weak result type. + template + struct _Weak_result_type_memfun<_MemFunPtr, true> + { + using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; + }; + + // A pointer to data member doesn't have a weak result type. + template + struct _Weak_result_type_memfun<_Func _Class::*, false> + { }; + + /** + * Strip top-level cv-qualifiers from the function object and let + * _Weak_result_type_memfun perform the real work. + */ + template + struct _Weak_result_type + : _Weak_result_type_memfun::type> + { }; + + // Detect nested argument_type. + template> + struct _Refwrap_base_arg1 + { }; + + // Nested argument_type. + template + struct _Refwrap_base_arg1<_Tp, + __void_t> + { + typedef typename _Tp::argument_type argument_type; + }; + + // Detect nested first_argument_type and second_argument_type. + template> + struct _Refwrap_base_arg2 + { }; + + // Nested first_argument_type and second_argument_type. + template + struct _Refwrap_base_arg2<_Tp, + __void_t> + { + typedef typename _Tp::first_argument_type first_argument_type; + typedef typename _Tp::second_argument_type second_argument_type; + }; + + /** + * Derives from unary_function or binary_function when it + * can. Specializations handle all of the easy cases. The primary + * template determines what to do with a class type, which may + * derive from both unary_function and binary_function. + */ + template + struct _Reference_wrapper_base + : _Weak_result_type<_Tp>, _Refwrap_base_arg1<_Tp>, _Refwrap_base_arg2<_Tp> + { }; + + // - a function type (unary) + template + struct _Reference_wrapper_base<_Res(_T1) _GLIBCXX_NOEXCEPT_QUAL> + : unary_function<_T1, _Res> + { }; + + template + struct _Reference_wrapper_base<_Res(_T1) const> + : unary_function<_T1, _Res> + { }; + + template + struct _Reference_wrapper_base<_Res(_T1) volatile> + : unary_function<_T1, _Res> + { }; + + template + struct _Reference_wrapper_base<_Res(_T1) const volatile> + : unary_function<_T1, _Res> + { }; + + // - a function type (binary) + template + struct _Reference_wrapper_base<_Res(_T1, _T2) _GLIBCXX_NOEXCEPT_QUAL> + : binary_function<_T1, _T2, _Res> + { }; + + template + struct _Reference_wrapper_base<_Res(_T1, _T2) const> + : binary_function<_T1, _T2, _Res> + { }; + + template + struct _Reference_wrapper_base<_Res(_T1, _T2) volatile> + : binary_function<_T1, _T2, _Res> + { }; + + template + struct _Reference_wrapper_base<_Res(_T1, _T2) const volatile> + : binary_function<_T1, _T2, _Res> + { }; + + // - a function pointer type (unary) + template + struct _Reference_wrapper_base<_Res(*)(_T1) _GLIBCXX_NOEXCEPT_QUAL> + : unary_function<_T1, _Res> + { }; + + // - a function pointer type (binary) + template + struct _Reference_wrapper_base<_Res(*)(_T1, _T2) _GLIBCXX_NOEXCEPT_QUAL> + : binary_function<_T1, _T2, _Res> + { }; + + template::value> + struct _Reference_wrapper_base_memfun + : _Reference_wrapper_base<_Tp> + { }; + + template + struct _Reference_wrapper_base_memfun<_MemFunPtr, true> + : _Mem_fn_traits<_MemFunPtr>::__maybe_type + { + using result_type = typename _Mem_fn_traits<_MemFunPtr>::__result_type; + }; + + /** + * @brief Primary class template for reference_wrapper. + * @ingroup functors + * @{ + */ + template + class reference_wrapper + : public _Reference_wrapper_base_memfun::type> + { + _Tp* _M_data; + + public: + typedef _Tp type; + + reference_wrapper(_Tp& __indata) noexcept + : _M_data(std::__addressof(__indata)) + { } + + reference_wrapper(_Tp&&) = delete; + + reference_wrapper(const reference_wrapper&) = default; + + reference_wrapper& + operator=(const reference_wrapper&) = default; + + operator _Tp&() const noexcept + { return this->get(); } + + _Tp& + get() const noexcept + { return *_M_data; } + + template + typename result_of<_Tp&(_Args&&...)>::type + operator()(_Args&&... __args) const + { + return std::__invoke(get(), std::forward<_Args>(__args)...); + } + }; + + + /// Denotes a reference should be taken to a variable. + template + inline reference_wrapper<_Tp> + ref(_Tp& __t) noexcept + { return reference_wrapper<_Tp>(__t); } + + /// Denotes a const reference should be taken to a variable. + template + inline reference_wrapper + cref(const _Tp& __t) noexcept + { return reference_wrapper(__t); } + + template + void ref(const _Tp&&) = delete; + + template + void cref(const _Tp&&) = delete; + + /// std::ref overload to prevent wrapping a reference_wrapper + template + inline reference_wrapper<_Tp> + ref(reference_wrapper<_Tp> __t) noexcept + { return __t; } + + /// std::cref overload to prevent wrapping a reference_wrapper + template + inline reference_wrapper + cref(reference_wrapper<_Tp> __t) noexcept + { return { __t.get() }; } + + // @} group functors + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++11 + +#endif // _GLIBCXX_REFWRAP_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex.h index 14a1ae6f6..12e830b2c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 @@ -39,12 +39,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 class match_results; _GLIBCXX_END_NAMESPACE_CXX11 -_GLIBCXX_END_NAMESPACE_VERSION namespace __detail { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - enum class _RegexExecutorPolicy : int { _S_auto, _S_alternate }; @@ -53,19 +50,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _RegexExecutorPolicy __policy, bool __match_mode> bool - __regex_algo_impl(_BiIter __s, - _BiIter __e, + __regex_algo_impl(_BiIter __s, + _BiIter __e, match_results<_BiIter, _Alloc>& __m, const basic_regex<_CharT, _TraitsT>& __re, regex_constants::match_flag_type __flags); template class _Executor; - -_GLIBCXX_END_NAMESPACE_VERSION } -_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CXX11 /** @@ -87,9 +81,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 struct regex_traits { public: - typedef _Ch_type char_type; - typedef std::basic_string string_type; - typedef std::locale locale_type; + typedef _Ch_type char_type; + typedef std::basic_string string_type; + typedef std::locale locale_type; private: struct _RegexMask { @@ -397,8 +391,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 "regex traits class must have the same char_type"); // types: - typedef _Ch_type value_type; - typedef _Rx_traits traits_type; + typedef _Ch_type value_type; + typedef _Rx_traits traits_type; typedef typename traits_type::string_type string_type; typedef regex_constants::syntax_option_type flag_type; typedef typename traits_type::locale_type locale_type; @@ -763,28 +757,74 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 basic_regex(_FwdIter __first, _FwdIter __last, locale_type __loc, flag_type __f) : _M_flags(__f), _M_loc(std::move(__loc)), - _M_automaton(__detail::__compile_nfa<_FwdIter, _Rx_traits>( + _M_automaton(__detail::__compile_nfa<_Rx_traits>( std::move(__first), std::move(__last), _M_loc, _M_flags)) { } template - friend bool __detail:: -#if _GLIBCXX_INLINE_VERSION - __7:: // Required due to PR c++/59256 -#endif - __regex_algo_impl(_Bp, _Bp, match_results<_Bp, _Ap>&, - const basic_regex<_Cp, _Rp>&, - regex_constants::match_flag_type); + friend bool + __detail::__regex_algo_impl(_Bp, _Bp, match_results<_Bp, _Ap>&, + const basic_regex<_Cp, _Rp>&, + regex_constants::match_flag_type); template friend class __detail::_Executor; - flag_type _M_flags; - locale_type _M_loc; - _AutomatonPtr _M_automaton; + flag_type _M_flags; + locale_type _M_loc; + _AutomatonPtr _M_automaton; }; +#if __cplusplus < 201703L + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::icase; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::nosubs; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::optimize; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::collate; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::ECMAScript; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::basic; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::extended; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::awk; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::grep; + + template + constexpr regex_constants::syntax_option_type + basic_regex<_Ch, _Tr>::egrep; +#endif // ! C++17 + +#if __cpp_deduction_guides >= 201606 + template + basic_regex(_ForwardIterator, _ForwardIterator, + regex_constants::syntax_option_type = {}) + -> basic_regex::value_type>; +#endif + /** @brief Standard regular expressions. */ typedef basic_regex regex; @@ -828,8 +868,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 public: typedef typename __iter_traits::value_type value_type; typedef typename __iter_traits::difference_type difference_type; - typedef _BiIter iterator; - typedef std::basic_string string_type; + typedef _BiIter iterator; + typedef std::basic_string string_type; bool matched; @@ -914,14 +954,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 /** @brief Standard regex submatch over a C-style null-terminated string. */ - typedef sub_match csub_match; + typedef sub_match csub_match; /** @brief Standard regex submatch over a standard string. */ typedef sub_match ssub_match; #ifdef _GLIBCXX_USE_WCHAR_T /** @brief Regex submatch over a C-style null-terminated wide string. */ - typedef sub_match wcsub_match; + typedef sub_match wcsub_match; /** @brief Regex submatch over a standard wide string. */ typedef sub_match wssub_match; @@ -1539,16 +1579,16 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 * @name 10.? Public Types */ //@{ - typedef sub_match<_Bi_iter> value_type; - typedef const value_type& const_reference; - typedef const_reference reference; - typedef typename _Base_type::const_iterator const_iterator; - typedef const_iterator iterator; + typedef sub_match<_Bi_iter> value_type; + typedef const value_type& const_reference; + typedef value_type& reference; + typedef typename _Base_type::const_iterator const_iterator; + typedef const_iterator iterator; typedef typename __iter_traits::difference_type difference_type; typedef typename allocator_traits<_Alloc>::size_type size_type; - typedef _Alloc allocator_type; + typedef _Alloc allocator_type; typedef typename __iter_traits::value_type char_type; - typedef std::basic_string string_type; + typedef std::basic_string string_type; //@} public: @@ -1863,13 +1903,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 template - friend bool __detail:: -#if _GLIBCXX_INLINE_VERSION - __7:: // Required due to PR c++/59256 -#endif - __regex_algo_impl(_Bp, _Bp, match_results<_Bp, _Ap>&, - const basic_regex<_Cp, _Rp>&, - regex_constants::match_flag_type); + friend bool + __detail::__regex_algo_impl(_Bp, _Bp, match_results<_Bp, _Ap>&, + const basic_regex<_Cp, _Rp>&, + regex_constants::match_flag_type); void _M_resize(unsigned int __size) @@ -1902,10 +1939,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 _Bi_iter _M_begin; }; - typedef match_results cmatch; - typedef match_results smatch; + typedef match_results cmatch; + typedef match_results smatch; #ifdef _GLIBCXX_USE_WCHAR_T - typedef match_results wcmatch; + typedef match_results wcmatch; typedef match_results wsmatch; #endif @@ -1985,11 +2022,11 @@ _GLIBCXX_END_NAMESPACE_CXX11 template inline bool - regex_match(_Bi_iter __s, - _Bi_iter __e, - match_results<_Bi_iter, _Alloc>& __m, + regex_match(_Bi_iter __s, + _Bi_iter __e, + match_results<_Bi_iter, _Alloc>& __m, const basic_regex<_Ch_type, _Rx_traits>& __re, - regex_constants::match_flag_type __flags + regex_constants::match_flag_type __flags = regex_constants::match_default) { return __detail::__regex_algo_impl<_Bi_iter, _Alloc, _Ch_type, _Rx_traits, @@ -2443,11 +2480,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 { public: typedef basic_regex<_Ch_type, _Rx_traits> regex_type; - typedef match_results<_Bi_iter> value_type; - typedef std::ptrdiff_t difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; + typedef match_results<_Bi_iter> value_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type* pointer; + typedef const value_type& reference; + typedef std::forward_iterator_tag iterator_category; /** * @brief Provides a singular iterator, useful for indicating @@ -2534,18 +2571,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 } private: - _Bi_iter _M_begin; - _Bi_iter _M_end; - const regex_type* _M_pregex; - regex_constants::match_flag_type _M_flags; - match_results<_Bi_iter> _M_match; + _Bi_iter _M_begin; + _Bi_iter _M_end; + const regex_type* _M_pregex; + regex_constants::match_flag_type _M_flags; + match_results<_Bi_iter> _M_match; }; - typedef regex_iterator cregex_iterator; - typedef regex_iterator sregex_iterator; + typedef regex_iterator cregex_iterator; + typedef regex_iterator sregex_iterator; #ifdef _GLIBCXX_USE_WCHAR_T - typedef regex_iterator wcregex_iterator; - typedef regex_iterator wsregex_iterator; + typedef regex_iterator wcregex_iterator; + typedef regex_iterator wsregex_iterator; #endif // [7.12.2] Class template regex_token_iterator @@ -2562,12 +2599,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 class regex_token_iterator { public: - typedef basic_regex<_Ch_type, _Rx_traits> regex_type; - typedef sub_match<_Bi_iter> value_type; - typedef std::ptrdiff_t difference_type; - typedef const value_type* pointer; - typedef const value_type& reference; - typedef std::forward_iterator_tag iterator_category; + typedef basic_regex<_Ch_type, _Rx_traits> regex_type; + typedef sub_match<_Bi_iter> value_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type* pointer; + typedef const value_type& reference; + typedef std::forward_iterator_tag iterator_category; public: /** @@ -2769,25 +2806,25 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 _M_result = nullptr; } - _Position _M_position; - std::vector _M_subs; - value_type _M_suffix; - std::size_t _M_n; - const value_type* _M_result; + _Position _M_position; + std::vector _M_subs; + value_type _M_suffix; + std::size_t _M_n; + const value_type* _M_result; // Show whether _M_subs contains -1 - bool _M_has_m1; + bool _M_has_m1; }; /** @brief Token iterator for C-style NULL-terminated strings. */ - typedef regex_token_iterator cregex_token_iterator; + typedef regex_token_iterator cregex_token_iterator; /** @brief Token iterator for standard strings. */ - typedef regex_token_iterator sregex_token_iterator; + typedef regex_token_iterator sregex_token_iterator; #ifdef _GLIBCXX_USE_WCHAR_T /** @brief Token iterator for C-style NULL-terminated wide strings. */ - typedef regex_token_iterator wcregex_token_iterator; + typedef regex_token_iterator wcregex_token_iterator; /** @brief Token iterator for standard wide-character strings. */ typedef regex_token_iterator wsregex_token_iterator; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex.tcc similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex.tcc index dc32a49dc..b92edb9ab 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex.tcc @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -30,10 +30,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ // Result of merging regex_match and regex_search. // // __policy now can be _S_auto (auto dispatch) and _S_alternate (use @@ -118,12 +118,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } return __ret; } - -_GLIBCXX_END_NAMESPACE_VERSION } -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template template typename regex_traits<_Ch_type>::string_type @@ -377,22 +373,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION if (__flags & regex_constants::format_sed) { - for (; __fmt_first != __fmt_last;) - if (*__fmt_first == '&') - { - __output(0); - ++__fmt_first; - } - else if (*__fmt_first == '\\') - { - if (++__fmt_first != __fmt_last - && __fctyp.is(__ctype_type::digit, *__fmt_first)) - __output(__traits.value(*__fmt_first++, 10)); - else - *__out++ = '\\'; - } - else - *__out++ = *__fmt_first++; + bool __escaping = false; + for (; __fmt_first != __fmt_last; __fmt_first++) + { + if (__escaping) + { + __escaping = false; + if (__fctyp.is(__ctype_type::digit, *__fmt_first)) + __output(__traits.value(*__fmt_first, 10)); + else + *__out++ = *__fmt_first; + continue; + } + if (*__fmt_first == '\\') + { + __escaping = true; + continue; + } + if (*__fmt_first == '&') + { + __output(0); + continue; + } + *__out++ = *__fmt_first; + } + if (__escaping) + *__out++ = '\\'; } else { @@ -663,4 +669,3 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_automaton.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_automaton.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_automaton.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_automaton.h index a5fab6356..962a8450a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_automaton.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_automaton.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -35,10 +35,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ /** * @defgroup regex-detail Base and Implementation Classes * @ingroup regex @@ -333,7 +333,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION "Number of NFA states exceeds limit. Please use shorter regex " "string, or use smaller brace expression, or make " "_GLIBCXX_REGEX_STATE_LIMIT larger."); - return this->size()-1; + return this->size() - 1; } // Eliminate dummy node in this NFA to make it compact. @@ -393,8 +393,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; //@} regex-detail -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_automaton.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_automaton.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_automaton.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_automaton.tcc index 727bde1f6..7a0e6a36a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_automaton.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_automaton.tcc @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -30,10 +30,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ #ifdef _GLIBCXX_DEBUG inline std::ostream& _State_base::_M_print(std::ostream& ostr) const @@ -233,7 +233,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } return _StateSeq(_M_nfa, __m[_M_start], __m[_M_end]); } +} // namespace __detail _GLIBCXX_END_NAMESPACE_VERSION -} // namespace __detail } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_compiler.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_compiler.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_compiler.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_compiler.h index 20f72fabb..7e5c20735 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_compiler.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_compiler.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 @@ -37,12 +37,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 class regex_traits; _GLIBCXX_END_NAMESPACE_CXX11 -_GLIBCXX_END_NAMESPACE_VERSION namespace __detail { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @addtogroup regex-detail * @{ @@ -191,7 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION = typename enable_if< !__is_contiguous_normal_iter<_Iter>::value, std::shared_ptr> >::type; - template + template inline __enable_if_contiguous_normal_iter<_FwdIter, _TraitsT> __compile_nfa(_FwdIter __first, _FwdIter __last, const typename _TraitsT::locale_type& __loc, @@ -203,16 +200,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return _Cmplr(__cfirst, __cfirst + __len, __loc, __flags)._M_get_nfa(); } - template + template inline __disable_if_contiguous_normal_iter<_FwdIter, _TraitsT> __compile_nfa(_FwdIter __first, _FwdIter __last, const typename _TraitsT::locale_type& __loc, regex_constants::syntax_option_type __flags) { - using char_type = typename _TraitsT::char_type; - const basic_string __str(__first, __last); - return __compile_nfa(__str.data(), - __str.data() + __str.size(), __loc, __flags); + const basic_string __str(__first, __last); + return __compile_nfa<_TraitsT>(__str.data(), __str.data() + __str.size(), + __loc, __flags); } // [28.13.14] @@ -576,8 +572,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; //@} regex-detail -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_compiler.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_compiler.tcc similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_compiler.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_compiler.tcc index a6d8016d8..8af920e5f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_compiler.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_compiler.tcc @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -30,8 +30,9 @@ // FIXME make comments doxygen format. +/* // This compiler refers to "Regular Expression Matching Can Be Simple And Fast" -// (http://swtch.com/~rsc/regexp/regexp1.html"), +// (http://swtch.com/~rsc/regexp/regexp1.html), // but doesn't strictly follow it. // // When compiling, states are *chained* instead of tree- or graph-constructed. @@ -51,14 +52,15 @@ // article. // // That's why we introduced dummy node here ------ "end_tag" is a dummy node. -// All dummy node will be eliminated at the end of compiling process. +// All dummy nodes will be eliminated at the end of compilation. +*/ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ template _Compiler<_TraitsT>:: _Compiler(_IterT __b, _IterT __e, @@ -292,19 +294,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return true; } -#define __INSERT_REGEX_MATCHER(__func, args...)\ - do\ +#define __INSERT_REGEX_MATCHER(__func, ...)\ + do {\ if (!(_M_flags & regex_constants::icase))\ if (!(_M_flags & regex_constants::collate))\ - __func(args);\ + __func(__VA_ARGS__);\ else\ - __func(args);\ + __func(__VA_ARGS__);\ else\ if (!(_M_flags & regex_constants::collate))\ - __func(args);\ + __func(__VA_ARGS__);\ else\ - __func(args);\ - while (false) + __func(__VA_ARGS__);\ + } while (false) template bool @@ -633,7 +635,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return false; }() ^ _M_is_non_matching; } +} // namespace __detail _GLIBCXX_END_NAMESPACE_VERSION -} // namespace __detail } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_constants.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_constants.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_constants.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_constants.h index dad2d637a..7104afd93 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_constants.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_constants.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 @@ -32,6 +32,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + /** * @defgroup regex Regular Expressions * @@ -45,8 +47,6 @@ namespace std _GLIBCXX_VISIBILITY(default) */ namespace regex_constants { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @name 5.1 Regular Expression Syntax Options */ @@ -408,10 +408,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __a = __a ^ __b; } //@} +} // namespace regex_constants +/* @} */ // group regex _GLIBCXX_END_NAMESPACE_VERSION -} // namespace regex_constants - -/* @} */ // group regex } // namespace std diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_error.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_error.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_error.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_error.h index 55f6db9cf..c0f527576 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_error.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_error.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 @@ -32,6 +32,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + /** * @addtogroup regex * @{ @@ -39,8 +41,6 @@ namespace std _GLIBCXX_VISIBILITY(default) namespace regex_constants { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @name 5.3 Error Types */ @@ -120,11 +120,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr error_type error_stack(_S_error_stack); //@} -_GLIBCXX_END_NAMESPACE_VERSION } // namespace regex_constants -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // [7.8] Class regex_error /** * @brief A regular expression exception class. diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_executor.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_executor.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_executor.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_executor.h index 610547428..e50f90d08 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_executor.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_executor.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -32,10 +32,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ /** * @addtogroup regex-detail * @{ @@ -251,8 +251,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; //@} regex-detail -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_executor.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_executor.tcc similarity index 90% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_executor.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_executor.tcc index 9d4ece744..68f1213cb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_executor.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_executor.tcc @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -30,10 +30,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ template bool _Executor<_BiIter, _Alloc, _TraitsT, __dfs_mode>:: @@ -170,7 +170,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // visited more than twice. It's `twice` instead of `once` because // we need to spare one more time for potential group capture. template + bool __dfs_mode> void _Executor<_BiIter, _Alloc, _TraitsT, __dfs_mode>:: _M_rep_once_more(_Match_mode __match_mode, _StateIdT __i) { @@ -193,7 +193,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __rep_count.second--; } } - }; + } // _M_alt branch is "match once more", while _M_next is "get me out // of this quantifier". Executing _M_next first or _M_alt first don't @@ -335,6 +335,54 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_states._M_queue(__state._M_next, _M_cur_results); } + template + struct _Backref_matcher + { + _Backref_matcher(bool __icase, const _TraitsT& __traits) + : _M_traits(__traits) { } + + bool + _M_apply(_BiIter __expected_begin, + _BiIter __expected_end, _BiIter __actual_begin, + _BiIter __actual_end) + { + return _M_traits.transform(__expected_begin, __expected_end) + == _M_traits.transform(__actual_begin, __actual_end); + } + + const _TraitsT& _M_traits; + }; + + template + struct _Backref_matcher<_BiIter, std::regex_traits<_CharT>> + { + using _TraitsT = std::regex_traits<_CharT>; + _Backref_matcher(bool __icase, const _TraitsT& __traits) + : _M_icase(__icase), _M_traits(__traits) { } + + bool + _M_apply(_BiIter __expected_begin, + _BiIter __expected_end, _BiIter __actual_begin, + _BiIter __actual_end) + { + if (!_M_icase) + return _GLIBCXX_STD_A::__equal4(__expected_begin, __expected_end, + __actual_begin, __actual_end); + typedef std::ctype<_CharT> __ctype_type; + const auto& __fctyp = use_facet<__ctype_type>(_M_traits.getloc()); + return _GLIBCXX_STD_A::__equal4(__expected_begin, __expected_end, + __actual_begin, __actual_end, + [this, &__fctyp](_CharT __lhs, _CharT __rhs) + { + return __fctyp.tolower(__lhs) + == __fctyp.tolower(__rhs); + }); + } + + bool _M_icase; + const _TraitsT& _M_traits; + }; + // First fetch the matched result from _M_cur_results as __submatch; // then compare it with // (_M_current, _M_current + (__submatch.second - __submatch.first)). @@ -355,9 +403,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __last != _M_end && __tmp != __submatch.second; ++__tmp) ++__last; - if (_M_re._M_automaton->_M_traits.transform(__submatch.first, - __submatch.second) - == _M_re._M_automaton->_M_traits.transform(_M_current, __last)) + if (_Backref_matcher<_BiIter, _TraitsT>( + _M_re.flags() & regex_constants::icase, + _M_re._M_automaton->_M_traits)._M_apply( + __submatch.first, __submatch.second, _M_current, __last)) { if (__last != _M_current) { @@ -513,7 +562,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __left_is_word != __right_is_word; } +} // namespace __detail _GLIBCXX_END_NAMESPACE_VERSION -} // namespace __detail } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_scanner.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_scanner.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_scanner.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_scanner.h index 37ad862a6..78a0d9810 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_scanner.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_scanner.h @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -30,10 +30,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ /** * @addtogroup regex-detail * @{ @@ -265,8 +265,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; //@} regex-detail -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_scanner.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_scanner.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_scanner.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_scanner.tcc index ad0b0477f..090ecc778 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/regex_scanner.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/regex_scanner.tcc @@ -1,6 +1,6 @@ // class template regex -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -48,10 +48,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace __detail -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace __detail +{ template _Scanner<_CharT>:: _Scanner(typename _Scanner::_IterT __begin, @@ -584,6 +584,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } #endif -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail +_GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr.h new file mode 100644 index 000000000..8df6b7c0e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr.h @@ -0,0 +1,742 @@ +// shared_ptr and weak_ptr implementation -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +// GCC Note: Based on files from version 1.32.0 of the Boost library. + +// shared_count.hpp +// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. + +// shared_ptr.hpp +// Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// weak_ptr.hpp +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// enable_shared_from_this.hpp +// Copyright (C) 2002 Peter Dimov + +// 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 + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{memory} + */ + +#ifndef _SHARED_PTR_H +#define _SHARED_PTR_H 1 + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup pointer_abstractions + * @{ + */ + + /// 20.7.2.2.11 shared_ptr I/O + template + inline std::basic_ostream<_Ch, _Tr>& + operator<<(std::basic_ostream<_Ch, _Tr>& __os, + const __shared_ptr<_Tp, _Lp>& __p) + { + __os << __p.get(); + return __os; + } + + template + inline _Del* + get_deleter(const __shared_ptr<_Tp, _Lp>& __p) noexcept + { +#if __cpp_rtti + return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +#else + return 0; +#endif + } + + /// 20.7.2.2.10 shared_ptr get_deleter + template + inline _Del* + get_deleter(const shared_ptr<_Tp>& __p) noexcept + { +#if __cpp_rtti + return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +#else + return 0; +#endif + } + + /** + * @brief A smart pointer with reference-counted copy semantics. + * + * The object pointed to is deleted when the last shared_ptr pointing to + * it is destroyed or reset. + */ + template + class shared_ptr : public __shared_ptr<_Tp> + { + template + using _Constructible = typename enable_if< + is_constructible<__shared_ptr<_Tp>, _Args...>::value + >::type; + + template + using _Assignable = typename enable_if< + is_assignable<__shared_ptr<_Tp>&, _Arg>::value, shared_ptr& + >::type; + + public: + + using element_type = typename __shared_ptr<_Tp>::element_type; + +#if __cplusplus > 201402L +# define __cpp_lib_shared_ptr_weak_type 201606 + using weak_type = weak_ptr<_Tp>; +#endif + /** + * @brief Construct an empty %shared_ptr. + * @post use_count()==0 && get()==0 + */ + constexpr shared_ptr() noexcept : __shared_ptr<_Tp>() { } + + shared_ptr(const shared_ptr&) noexcept = default; + + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p. + * @param __p A pointer that is convertible to element_type*. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @c delete @a __p is called. + */ + template> + explicit + shared_ptr(_Yp* __p) : __shared_ptr<_Tp>(__p) { } + + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p + * and the deleter @a __d. + * @param __p A pointer. + * @param __d A deleter. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw + * + * __shared_ptr will release __p by calling __d(__p) + */ + template> + shared_ptr(_Yp* __p, _Deleter __d) + : __shared_ptr<_Tp>(__p, std::move(__d)) { } + + /** + * @brief Construct a %shared_ptr that owns a null pointer + * and the deleter @a __d. + * @param __p A null pointer constant. + * @param __d A deleter. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw + * + * The last owner will call __d(__p) + */ + template + shared_ptr(nullptr_t __p, _Deleter __d) + : __shared_ptr<_Tp>(__p, std::move(__d)) { } + + /** + * @brief Construct a %shared_ptr that owns the pointer @a __p + * and the deleter @a __d. + * @param __p A pointer. + * @param __d A deleter. + * @param __a An allocator. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw _Alloc's copy constructor and destructor must not + * throw. + * + * __shared_ptr will release __p by calling __d(__p) + */ + template> + shared_ptr(_Yp* __p, _Deleter __d, _Alloc __a) + : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } + + /** + * @brief Construct a %shared_ptr that owns a null pointer + * and the deleter @a __d. + * @param __p A null pointer constant. + * @param __d A deleter. + * @param __a An allocator. + * @post use_count() == 1 && get() == __p + * @throw std::bad_alloc, in which case @a __d(__p) is called. + * + * Requirements: _Deleter's copy constructor and destructor must + * not throw _Alloc's copy constructor and destructor must not + * throw. + * + * The last owner will call __d(__p) + */ + template + shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) + : __shared_ptr<_Tp>(__p, std::move(__d), std::move(__a)) { } + + // Aliasing constructor + + /** + * @brief Constructs a %shared_ptr instance that stores @a __p + * and shares ownership with @a __r. + * @param __r A %shared_ptr. + * @param __p A pointer that will remain valid while @a *__r is valid. + * @post get() == __p && use_count() == __r.use_count() + * + * This can be used to construct a @c shared_ptr to a sub-object + * of an object managed by an existing @c shared_ptr. + * + * @code + * shared_ptr< pair > pii(new pair()); + * shared_ptr pi(pii, &pii->first); + * assert(pii.use_count() == 2); + * @endcode + */ + template + shared_ptr(const shared_ptr<_Yp>& __r, element_type* __p) noexcept + : __shared_ptr<_Tp>(__r, __p) { } + + /** + * @brief If @a __r is empty, constructs an empty %shared_ptr; + * otherwise construct a %shared_ptr that shares ownership + * with @a __r. + * @param __r A %shared_ptr. + * @post get() == __r.get() && use_count() == __r.use_count() + */ + template&>> + shared_ptr(const shared_ptr<_Yp>& __r) noexcept + : __shared_ptr<_Tp>(__r) { } + + /** + * @brief Move-constructs a %shared_ptr instance from @a __r. + * @param __r A %shared_ptr rvalue. + * @post *this contains the old value of @a __r, @a __r is empty. + */ + shared_ptr(shared_ptr&& __r) noexcept + : __shared_ptr<_Tp>(std::move(__r)) { } + + /** + * @brief Move-constructs a %shared_ptr instance from @a __r. + * @param __r A %shared_ptr rvalue. + * @post *this contains the old value of @a __r, @a __r is empty. + */ + template>> + shared_ptr(shared_ptr<_Yp>&& __r) noexcept + : __shared_ptr<_Tp>(std::move(__r)) { } + + /** + * @brief Constructs a %shared_ptr that shares ownership with @a __r + * and stores a copy of the pointer stored in @a __r. + * @param __r A weak_ptr. + * @post use_count() == __r.use_count() + * @throw bad_weak_ptr when __r.expired(), + * in which case the constructor has no effect. + */ + template&>> + explicit shared_ptr(const weak_ptr<_Yp>& __r) + : __shared_ptr<_Tp>(__r) { } + +#if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + template>> + shared_ptr(auto_ptr<_Yp>&& __r); +#pragma GCC diagnostic pop +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2399. shared_ptr's constructor from unique_ptr should be constrained + template>> + shared_ptr(unique_ptr<_Yp, _Del>&& __r) + : __shared_ptr<_Tp>(std::move(__r)) { } + +#if __cplusplus <= 201402L && _GLIBCXX_USE_DEPRECATED + // This non-standard constructor exists to support conversions that + // were possible in C++11 and C++14 but are ill-formed in C++17. + // If an exception is thrown this constructor has no effect. + template, __sp_array_delete>* = 0> + shared_ptr(unique_ptr<_Yp, _Del>&& __r) + : __shared_ptr<_Tp>(std::move(__r), __sp_array_delete()) { } +#endif + + /** + * @brief Construct an empty %shared_ptr. + * @post use_count() == 0 && get() == nullptr + */ + constexpr shared_ptr(nullptr_t) noexcept : shared_ptr() { } + + shared_ptr& operator=(const shared_ptr&) noexcept = default; + + template + _Assignable&> + operator=(const shared_ptr<_Yp>& __r) noexcept + { + this->__shared_ptr<_Tp>::operator=(__r); + return *this; + } + +#if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" + template + _Assignable> + operator=(auto_ptr<_Yp>&& __r) + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } +#pragma GCC diagnostic pop +#endif + + shared_ptr& + operator=(shared_ptr&& __r) noexcept + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + template + _Assignable> + operator=(shared_ptr<_Yp>&& __r) noexcept + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + template + _Assignable> + operator=(unique_ptr<_Yp, _Del>&& __r) + { + this->__shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + private: + // This constructor is non-standard, it is used by allocate_shared. + template + shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) + : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...) + { } + + template + friend shared_ptr<_Yp> + allocate_shared(const _Alloc& __a, _Args&&... __args); + + // This constructor is non-standard, it is used by weak_ptr::lock(). + shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) + : __shared_ptr<_Tp>(__r, std::nothrow) { } + + friend class weak_ptr<_Tp>; + }; + +#if __cpp_deduction_guides >= 201606 + template + shared_ptr(weak_ptr<_Tp>) -> shared_ptr<_Tp>; + template + shared_ptr(unique_ptr<_Tp, _Del>) -> shared_ptr<_Tp>; +#endif + + // 20.7.2.2.7 shared_ptr comparisons + template + inline bool + operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept + { return __a.get() == __b.get(); } + + template + inline bool + operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !__a; } + + template + inline bool + operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !__a; } + + template + inline bool + operator!=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept + { return __a.get() != __b.get(); } + + template + inline bool + operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return (bool)__a; } + + template + inline bool + operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return (bool)__a; } + + template + inline bool + operator<(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept + { + using _Tp_elt = typename shared_ptr<_Tp>::element_type; + using _Up_elt = typename shared_ptr<_Up>::element_type; + using _Vp = typename common_type<_Tp_elt*, _Up_elt*>::type; + return less<_Vp>()(__a.get(), __b.get()); + } + + template + inline bool + operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { + using _Tp_elt = typename shared_ptr<_Tp>::element_type; + return less<_Tp_elt*>()(__a.get(), nullptr); + } + + template + inline bool + operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { + using _Tp_elt = typename shared_ptr<_Tp>::element_type; + return less<_Tp_elt*>()(nullptr, __a.get()); + } + + template + inline bool + operator<=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept + { return !(__b < __a); } + + template + inline bool + operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !(nullptr < __a); } + + template + inline bool + operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept + { return (__b < __a); } + + template + inline bool + operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return nullptr < __a; } + + template + inline bool + operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return __a < nullptr; } + + template + inline bool + operator>=(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept + { return !(__a < __b); } + + template + inline bool + operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !(nullptr < __a); } + + template + struct less> : public _Sp_less> + { }; + + // 20.7.2.2.8 shared_ptr specialized algorithms. + template + inline void + swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept + { __a.swap(__b); } + + // 20.7.2.2.9 shared_ptr casts. + template + inline shared_ptr<_Tp> + static_pointer_cast(const shared_ptr<_Up>& __r) noexcept + { + using _Sp = shared_ptr<_Tp>; + return _Sp(__r, static_cast(__r.get())); + } + + template + inline shared_ptr<_Tp> + const_pointer_cast(const shared_ptr<_Up>& __r) noexcept + { + using _Sp = shared_ptr<_Tp>; + return _Sp(__r, const_cast(__r.get())); + } + + template + inline shared_ptr<_Tp> + dynamic_pointer_cast(const shared_ptr<_Up>& __r) noexcept + { + using _Sp = shared_ptr<_Tp>; + if (auto* __p = dynamic_cast(__r.get())) + return _Sp(__r, __p); + return _Sp(); + } + +#if __cplusplus > 201402L + template + inline shared_ptr<_Tp> + reinterpret_pointer_cast(const shared_ptr<_Up>& __r) noexcept + { + using _Sp = shared_ptr<_Tp>; + return _Sp(__r, reinterpret_cast(__r.get())); + } +#endif + + /** + * @brief A smart pointer with weak semantics. + * + * With forwarding constructors and assignment operators. + */ + template + class weak_ptr : public __weak_ptr<_Tp> + { + template + using _Constructible = typename enable_if< + is_constructible<__weak_ptr<_Tp>, _Arg>::value + >::type; + + template + using _Assignable = typename enable_if< + is_assignable<__weak_ptr<_Tp>&, _Arg>::value, weak_ptr& + >::type; + + public: + constexpr weak_ptr() noexcept = default; + + template&>> + weak_ptr(const shared_ptr<_Yp>& __r) noexcept + : __weak_ptr<_Tp>(__r) { } + + weak_ptr(const weak_ptr&) noexcept = default; + + template&>> + weak_ptr(const weak_ptr<_Yp>& __r) noexcept + : __weak_ptr<_Tp>(__r) { } + + weak_ptr(weak_ptr&&) noexcept = default; + + template>> + weak_ptr(weak_ptr<_Yp>&& __r) noexcept + : __weak_ptr<_Tp>(std::move(__r)) { } + + weak_ptr& + operator=(const weak_ptr& __r) noexcept = default; + + template + _Assignable&> + operator=(const weak_ptr<_Yp>& __r) noexcept + { + this->__weak_ptr<_Tp>::operator=(__r); + return *this; + } + + template + _Assignable&> + operator=(const shared_ptr<_Yp>& __r) noexcept + { + this->__weak_ptr<_Tp>::operator=(__r); + return *this; + } + + weak_ptr& + operator=(weak_ptr&& __r) noexcept = default; + + template + _Assignable> + operator=(weak_ptr<_Yp>&& __r) noexcept + { + this->__weak_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } + + shared_ptr<_Tp> + lock() const noexcept + { return shared_ptr<_Tp>(*this, std::nothrow); } + }; + +#if __cpp_deduction_guides >= 201606 + template + weak_ptr(shared_ptr<_Tp>) -> weak_ptr<_Tp>; +#endif + + // 20.7.2.3.6 weak_ptr specialized algorithms. + template + inline void + swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept + { __a.swap(__b); } + + + /// Primary template owner_less + template + struct owner_less; + + /// Void specialization of owner_less + template<> + struct owner_less : _Sp_owner_less + { }; + + /// Partial specialization of owner_less for shared_ptr. + template + struct owner_less> + : public _Sp_owner_less, weak_ptr<_Tp>> + { }; + + /// Partial specialization of owner_less for weak_ptr. + template + struct owner_less> + : public _Sp_owner_less, shared_ptr<_Tp>> + { }; + + /** + * @brief Base class allowing use of member function shared_from_this. + */ + template + class enable_shared_from_this + { + protected: + constexpr enable_shared_from_this() noexcept { } + + enable_shared_from_this(const enable_shared_from_this&) noexcept { } + + enable_shared_from_this& + operator=(const enable_shared_from_this&) noexcept + { return *this; } + + ~enable_shared_from_this() { } + + public: + shared_ptr<_Tp> + shared_from_this() + { return shared_ptr<_Tp>(this->_M_weak_this); } + + shared_ptr + shared_from_this() const + { return shared_ptr(this->_M_weak_this); } + +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 +#define __cpp_lib_enable_shared_from_this 201603 + weak_ptr<_Tp> + weak_from_this() noexcept + { return this->_M_weak_this; } + + weak_ptr + weak_from_this() const noexcept + { return this->_M_weak_this; } +#endif + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept + { _M_weak_this._M_assign(__p, __n); } + + // Found by ADL when this is an associated class. + friend const enable_shared_from_this* + __enable_shared_from_this_base(const __shared_count<>&, + const enable_shared_from_this* __p) + { return __p; } + + template + friend class __shared_ptr; + + mutable weak_ptr<_Tp> _M_weak_this; + }; + + /** + * @brief Create an object that is owned by a shared_ptr. + * @param __a An allocator. + * @param __args Arguments for the @a _Tp object's constructor. + * @return A shared_ptr that owns the newly created object. + * @throw An exception thrown from @a _Alloc::allocate or from the + * constructor of @a _Tp. + * + * A copy of @a __a will be used to allocate memory for the shared_ptr + * and the new object. + */ + template + inline shared_ptr<_Tp> + allocate_shared(const _Alloc& __a, _Args&&... __args) + { + return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a}, + std::forward<_Args>(__args)...); + } + + /** + * @brief Create an object that is owned by a shared_ptr. + * @param __args Arguments for the @a _Tp object's constructor. + * @return A shared_ptr that owns the newly created object. + * @throw std::bad_alloc, or an exception thrown from the + * constructor of @a _Tp. + */ + template + inline shared_ptr<_Tp> + make_shared(_Args&&... __args) + { + typedef typename std::remove_cv<_Tp>::type _Tp_nc; + return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(), + std::forward<_Args>(__args)...); + } + + /// std::hash specialization for shared_ptr. + template + struct hash> + : public __hash_base> + { + size_t + operator()(const shared_ptr<_Tp>& __s) const noexcept + { + return std::hash::element_type*>()(__s.get()); + } + }; + + // @} group pointer_abstractions + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // _SHARED_PTR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr_atomic.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr_atomic.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr_atomic.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr_atomic.h index d05d68655..aeedb5d14 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr_atomic.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr_atomic.h @@ -1,6 +1,6 @@ // shared_ptr atomic access -*- C++ -*- -// Copyright (C) 2014-2017 Free Software Foundation, Inc. +// Copyright (C) 2014-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr_base.h similarity index 94% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr_base.h index aae31f7a9..29fc45a21 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/shared_ptr_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/shared_ptr_base.h @@ -1,6 +1,6 @@ // shared_ptr and weak_ptr implementation details -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 @@ -49,9 +49,7 @@ #ifndef _SHARED_PTR_BASE_H #define _SHARED_PTR_BASE_H 1 -#if __cpp_rtti -# include -#endif +#include #include #include #include @@ -62,7 +60,10 @@ namespace std _GLIBCXX_VISIBILITY(default) _GLIBCXX_BEGIN_NAMESPACE_VERSION #if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" template class auto_ptr; +#pragma GCC diagnostic pop #endif /** @@ -497,7 +498,25 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // helpers for make_shared / allocate_shared - struct _Sp_make_shared_tag { }; + struct _Sp_make_shared_tag + { + private: + template + friend class _Sp_counted_ptr_inplace; + + static const type_info& + _S_ti() noexcept _GLIBCXX_VISIBILITY(default) + { + alignas(type_info) static constexpr char __tag[sizeof(type_info)] = { }; + return reinterpret_cast(__tag); + } + }; + + template + struct _Sp_alloc_shared_tag + { + const _Alloc& _M_a; + }; template class _Sp_counted_ptr_inplace final : public _Sp_counted_base<_Lp> @@ -544,18 +563,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION this->~_Sp_counted_ptr_inplace(); } - // Sneaky trick so __shared_ptr can get the managed pointer + private: + friend class __shared_count<_Lp>; // To be able to call _M_ptr(). + + // No longer used, but code compiled against old libstdc++ headers + // might still call it from __shared_ptr ctor to get the pointer out. virtual void* - _M_get_deleter(const std::type_info& __ti) noexcept + _M_get_deleter(const std::type_info& __ti) noexcept override { -#if __cpp_rtti - if (__ti == typeid(_Sp_make_shared_tag)) + // Check for the fake type_info first, so we don't try to access it + // as a real type_info object. + if (&__ti == &_Sp_make_shared_tag::_S_ti()) return const_cast::type*>(_M_ptr()); +#if __cpp_rtti + // Callers compiled with old libstdc++ headers and RTTI enabled + // might pass this instead: + else if (__ti == typeid(_Sp_make_shared_tag)) + return const_cast::type*>(_M_ptr()); +#else + // Cannot detect a real type_info object. If the linker keeps a + // definition of this function compiled with -fno-rtti then callers + // that have RTTI enabled and pass a real type_info object will get + // a null pointer returned. #endif return nullptr; } - private: _Tp* _M_ptr() noexcept { return _M_impl._M_storage._M_ptr(); } _Impl _M_impl; @@ -571,6 +604,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template<_Lock_policy _Lp> class __shared_count { + template + struct __not_alloc_shared_tag { using type = void; }; + + template + struct __not_alloc_shared_tag<_Sp_alloc_shared_tag<_Tp>> { }; + public: constexpr __shared_count() noexcept : _M_pi(0) { } @@ -600,12 +639,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : __shared_count(__p, __sp_array_delete{}, allocator()) { } - template + template::type> __shared_count(_Ptr __p, _Deleter __d) : __shared_count(__p, std::move(__d), allocator()) { } - template + template::type> __shared_count(_Ptr __p, _Deleter __d, _Alloc __a) : _M_pi(0) { typedef _Sp_counted_deleter<_Ptr, _Deleter, _Alloc, _Lp> _Sp_cd_type; @@ -626,25 +667,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - __shared_count(_Sp_make_shared_tag, _Tp*, const _Alloc& __a, + __shared_count(_Tp*& __p, _Sp_alloc_shared_tag<_Alloc> __a, _Args&&... __args) - : _M_pi(0) { typedef _Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp> _Sp_cp_type; - typename _Sp_cp_type::__allocator_type __a2(__a); + typename _Sp_cp_type::__allocator_type __a2(__a._M_a); auto __guard = std::__allocate_guarded(__a2); _Sp_cp_type* __mem = __guard.get(); - ::new (__mem) _Sp_cp_type(std::move(__a), - std::forward<_Args>(__args)...); - _M_pi = __mem; + auto __pi = ::new (__mem) + _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...); __guard = nullptr; + _M_pi = __pi; + __p = __pi->_M_ptr(); } #if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // Special case for auto_ptr<_Tp> to provide the strong guarantee. template explicit __shared_count(std::auto_ptr<_Tp>&& __r); +#pragma GCC diagnostic pop #endif // Special case for unique_ptr<_Tp,_Del> to provide the strong guarantee. @@ -1157,7 +1201,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __shared_ptr(unique_ptr<_Yp, _Del>&& __r) : _M_ptr(__r.get()), _M_refcount() { - auto __raw = _S_raw_ptr(__r.get()); + auto __raw = __to_address(__r.get()); _M_refcount = __shared_count<_Lp>(std::move(__r)); _M_enable_shared_from_this_with(__raw); } @@ -1173,7 +1217,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __shared_ptr(unique_ptr<_Tp1, _Del>&& __r, __sp_array_delete) : _M_ptr(__r.get()), _M_refcount() { - auto __raw = _S_raw_ptr(__r.get()); + auto __raw = __to_address(__r.get()); _M_refcount = __shared_count<_Lp>(std::move(__r)); _M_enable_shared_from_this_with(__raw); } @@ -1181,9 +1225,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif #if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" // Postcondition: use_count() == 1 and __r.get() == 0 template> __shared_ptr(auto_ptr<_Yp>&& __r); +#pragma GCC diagnostic pop #endif constexpr __shared_ptr(nullptr_t) noexcept : __shared_ptr() { } @@ -1198,6 +1245,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } #if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" template _Assignable<_Yp> operator=(auto_ptr<_Yp>&& __r) @@ -1205,6 +1254,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __shared_ptr(std::move(__r)).swap(*this); return *this; } +#pragma GCC diagnostic pop #endif __shared_ptr& @@ -1285,54 +1335,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION owner_before(__weak_ptr<_Tp1, _Lp> const& __rhs) const noexcept { return _M_refcount._M_less(__rhs._M_refcount); } -#if __cpp_rtti protected: // This constructor is non-standard, it is used by allocate_shared. template - __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, - _Args&&... __args) - : _M_ptr(), _M_refcount(__tag, (_Tp*)0, __a, - std::forward<_Args>(__args)...) - { - // _M_ptr needs to point to the newly constructed object. - // This relies on _Sp_counted_ptr_inplace::_M_get_deleter. - void* __p = _M_refcount._M_get_deleter(typeid(__tag)); - _M_ptr = static_cast<_Tp*>(__p); - _M_enable_shared_from_this_with(_M_ptr); - } -#else - template - struct _Deleter - { - void operator()(typename _Alloc::value_type* __ptr) - { - __allocated_ptr<_Alloc> __guard{ _M_alloc, __ptr }; - allocator_traits<_Alloc>::destroy(_M_alloc, __guard.get()); - } - _Alloc _M_alloc; - }; - - template - __shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, - _Args&&... __args) - : _M_ptr(), _M_refcount() - { - typedef typename allocator_traits<_Alloc>::template - rebind_traits::type> __traits; - _Deleter __del = { __a }; - auto __guard = std::__allocate_guarded(__del._M_alloc); - auto __ptr = __guard.get(); - // _GLIBCXX_RESOLVE_LIB_DEFECTS - // 2070. allocate_shared should use allocator_traits::construct - __traits::construct(__del._M_alloc, __ptr, - std::forward<_Args>(__args)...); - __guard = nullptr; - __shared_count<_Lp> __count(__ptr, __del, __del._M_alloc); - _M_refcount._M_swap(__count); - _M_ptr = __ptr; - _M_enable_shared_from_this_with(_M_ptr); - } -#endif + __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args) + : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...) + { _M_enable_shared_from_this_with(_M_ptr); } template @@ -1382,22 +1390,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _M_get_deleter(const std::type_info& __ti) const noexcept { return _M_refcount._M_get_deleter(__ti); } - template - static _Tp1* - _S_raw_ptr(_Tp1* __ptr) - { return __ptr; } - - template - static auto - _S_raw_ptr(_Tp1 __ptr) -> decltype(std::__addressof(*__ptr)) - { return std::__addressof(*__ptr); } - template friend class __shared_ptr; template friend class __weak_ptr; template friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&) noexcept; + template + friend _Del* get_deleter(const shared_ptr<_Tp1>&) noexcept; + element_type* _M_ptr; // Contained pointer. __shared_count<_Lp> _M_refcount; // Reference counter. }; @@ -1834,7 +1835,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline __shared_ptr<_Tp, _Lp> __allocate_shared(const _Alloc& __a, _Args&&... __args) { - return __shared_ptr<_Tp, _Lp>(_Sp_make_shared_tag(), __a, + return __shared_ptr<_Tp, _Lp>(_Sp_alloc_shared_tag<_Alloc>{__a}, std::forward<_Args>(__args)...); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/slice_array.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/slice_array.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/slice_array.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/slice_array.h index cd668fbc1..05b096bb5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/slice_array.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/slice_array.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- slice_array class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/specfun.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/specfun.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/specfun.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/specfun.h index 6dd23d2c4..f9db20e32 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/specfun.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/specfun.h @@ -1,6 +1,6 @@ // Mathematical Special Functions for -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -118,8 +118,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * versions of this math library because of implementation concerns. * However, since they were in the TR1 version and since they are popular * we kept them as an extension in namespace @c __gnu_cxx: - * - @ref conf_hyperg "conf_hyperg - Confluent hypergeometric functions" - * - @ref hyperg "hyperg - Hypergeometric functions" + * - @ref __gnu_cxx::conf_hyperg "conf_hyperg - Confluent hypergeometric functions" + * - @ref __gnu_cxx::hyperg "hyperg - Hypergeometric functions" * * @section general General Features * @@ -1201,8 +1201,82 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_VERSION } // namespace std +#ifndef __STRICT_ANSI__ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Airy functions + + /** + * Return the Airy function @f$ Ai(x) @f$ of @c float argument x. + */ + inline float + airy_aif(float __x) + { + float __Ai, __Bi, __Aip, __Bip; + std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); + return __Ai; + } + + /** + * Return the Airy function @f$ Ai(x) @f$ of long double argument x. + */ + inline long double + airy_ail(long double __x) + { + long double __Ai, __Bi, __Aip, __Bip; + std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); + return __Ai; + } + + /** + * Return the Airy function @f$ Ai(x) @f$ of real argument x. + */ + template + inline typename __gnu_cxx::__promote<_Tp>::__type + airy_ai(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + __type __Ai, __Bi, __Aip, __Bip; + std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip); + return __Ai; + } + + /** + * Return the Airy function @f$ Bi(x) @f$ of @c float argument x. + */ + inline float + airy_bif(float __x) + { + float __Ai, __Bi, __Aip, __Bip; + std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); + return __Bi; + } + + /** + * Return the Airy function @f$ Bi(x) @f$ of long double argument x. + */ + inline long double + airy_bil(long double __x) + { + long double __Ai, __Bi, __Aip, __Bip; + std::__detail::__airy(__x, __Ai, __Bi, __Aip, __Bip); + return __Bi; + } + + /** + * Return the Airy function @f$ Bi(x) @f$ of real argument x. + */ + template + inline typename __gnu_cxx::__promote<_Tp>::__type + airy_bi(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + __type __Ai, __Bi, __Aip, __Bip; + std::__detail::__airy<__type>(__x, __Ai, __Bi, __Aip, __Bip); + return __Bi; + } // Confluent hypergeometric functions @@ -1302,7 +1376,9 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) return std::__detail::__hyperg<__type>(__a, __b, __c, __x); } +_GLIBCXX_END_NAMESPACE_VERSION } // namespace __gnu_cxx +#endif // __STRICT_ANSI__ #pragma GCC visibility pop diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/sstream.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/sstream.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/sstream.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/sstream.tcc index fc2fcb899..5f90b7663 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/sstream.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/sstream.tcc @@ -1,6 +1,6 @@ // String based streams -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -129,7 +129,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const __size_type __opt_len = std::max(__size_type(2 * __capacity), __size_type(512)); const __size_type __len = std::min(__opt_len, __max_size); - __string_type __tmp; + __string_type __tmp(_M_string.get_allocator()); __tmp.reserve(__len); if (this->pbase()) __tmp.assign(this->pbase(), this->epptr() - this->pbase()); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_abs.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_abs.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_abs.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_abs.h index 1f4a2cadd..6e4551d65 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_abs.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_abs.h @@ -1,6 +1,6 @@ // -*- C++ -*- C library enhancements header. -// Copyright (C) 2016-2017 Free Software Foundation, Inc. +// Copyright (C) 2016-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_function.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_function.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_function.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_function.h index 657b1c02d..96261355a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_function.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_function.h @@ -1,6 +1,6 @@ // Implementation of std::function -*- C++ -*- -// Copyright (C) 2004-2017 Free Software Foundation, Inc. +// Copyright (C) 2004-2018 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 @@ -22,7 +22,7 @@ // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see // . -/** @file include/bits/function.h +/** @file include/bits/std_function.h * This is an internal header file, included by other library headers. * Do not attempt to use it directly. @headername{functional} */ @@ -48,25 +48,6 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** - * Derives from @c unary_function or @c binary_function, or perhaps - * nothing, depending on the number of arguments provided. The - * primary template is the basis case, which derives nothing. - */ - template - struct _Maybe_unary_or_binary_function { }; - - /// Derives from @c unary_function, as appropriate. - template - struct _Maybe_unary_or_binary_function<_Res, _T1> - : std::unary_function<_T1, _Res> { }; - - /// Derives from @c binary_function, as appropriate. - template - struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> - : std::binary_function<_T1, _T2, _Res> { }; - - /** * @brief Exception class thrown when class template function's * operator() is called with an empty target. diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_mutex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_mutex.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_mutex.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_mutex.h index 17d55f557..34d22907a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/std_mutex.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/std_mutex.h @@ -1,6 +1,6 @@ // std::mutex implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_algo.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_algo.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_algo.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_algo.h index 97370ed53..753ebb7a0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_algo.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_algo.h @@ -1,6 +1,6 @@ // Algorithm implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -180,7 +180,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _InputIterator __find_if_not_n(_InputIterator __first, _Distance& __len, _Predicate __pred) { - for (; __len; --__len, ++__first) + for (; __len; --__len, (void) ++__first) if (!__pred(__first)) break; return __first; @@ -3857,8 +3857,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // C++11 -_GLIBCXX_END_NAMESPACE_VERSION - _GLIBCXX_BEGIN_NAMESPACE_ALGO /** @@ -4464,7 +4462,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __typeof__(__gen())>) for (__decltype(__n + 0) __niter = __n; - __niter > 0; --__niter, ++__first) + __niter > 0; --__niter, (void) ++__first) *__first = __gen(); return __first; } @@ -5117,6 +5115,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @return End of the output range. * @ingroup set_algorithms * @@ -5165,6 +5164,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @param __comp The comparison functor. * @return End of the output range. * @ingroup set_algorithms @@ -5237,6 +5237,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @return End of the output range. * @ingroup set_algorithms * @@ -5283,6 +5284,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @param __comp The comparison functor. * @return End of the output range. * @ingroup set_algorithms @@ -5355,6 +5357,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @return End of the output range. * @ingroup set_algorithms * @@ -5403,6 +5406,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @param __comp The comparison functor. * @return End of the output range. * @ingroup set_algorithms @@ -5485,6 +5489,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @return End of the output range. * @ingroup set_algorithms * @@ -5533,6 +5538,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO * @param __last1 End of first range. * @param __first2 Start of second range. * @param __last2 End of second range. + * @param __result Start of output range. * @param __comp The comparison functor. * @return End of the output range. * @ingroup set_algorithms @@ -5831,6 +5837,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO #endif // C++14 _GLIBCXX_END_NAMESPACE_ALGO +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_ALGO_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_algobase.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_algobase.h similarity index 93% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_algobase.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_algobase.h index ea7cd2102..1fcd7dba3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_algobase.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_algobase.h @@ -1,6 +1,6 @@ // Core algorithmic facilities -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -67,7 +67,7 @@ #include #include #include -#include // For std::swap and _GLIBCXX_MOVE +#include // For std::swap #include namespace std _GLIBCXX_VISIBILITY(default) @@ -82,14 +82,14 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __iter_swap { template - static void - iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) - { - typedef typename iterator_traits<_ForwardIterator1>::value_type - _ValueType1; - _ValueType1 __tmp = _GLIBCXX_MOVE(*__a); - *__a = _GLIBCXX_MOVE(*__b); - *__b = _GLIBCXX_MOVE(__tmp); + static void + iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) + { + typedef typename iterator_traits<_ForwardIterator1>::value_type + _ValueType1; + _ValueType1 __tmp = *__a; + *__a = *__b; + *__b = __tmp; } }; @@ -97,11 +97,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __iter_swap { template - static void - iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) - { - swap(*__a, *__b); - } + static void + iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) + { + swap(*__a, *__b); + } }; #endif @@ -287,9 +287,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move { template - static _OI - __copy_m(_II __first, _II __last, _OI __result) - { + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { for (; __first != __last; ++__result, (void)++__first) *__result = *__first; return __result; @@ -301,9 +301,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move { template - static _OI - __copy_m(_II __first, _II __last, _OI __result) - { + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { for (; __first != __last; ++__result, (void)++__first) *__result = std::move(*__first); return __result; @@ -315,9 +315,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move { template - static _OI - __copy_m(_II __first, _II __last, _OI __result) - { + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { typedef typename iterator_traits<_II>::difference_type _Distance; for(_Distance __n = __last - __first; __n > 0; --__n) { @@ -334,9 +334,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move { template - static _OI - __copy_m(_II __first, _II __last, _OI __result) - { + static _OI + __copy_m(_II __first, _II __last, _OI __result) + { typedef typename iterator_traits<_II>::difference_type _Distance; for(_Distance __n = __last - __first; __n > 0; --__n) { @@ -353,9 +353,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move<_IsMove, true, random_access_iterator_tag> { template - static _Tp* - __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) - { + static _Tp* + __copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) + { #if __cplusplus >= 201103L using __assignable = conditional<_IsMove, is_move_assignable<_Tp>, @@ -378,12 +378,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef typename iterator_traits<_OI>::value_type _ValueTypeO; typedef typename iterator_traits<_II>::iterator_category _Category; const bool __simple = (__is_trivial(_ValueTypeI) - && __is_pointer<_II>::__value - && __is_pointer<_OI>::__value + && __is_pointer<_II>::__value + && __is_pointer<_OI>::__value && __are_same<_ValueTypeI, _ValueTypeO>::__value); return std::__copy_move<_IsMove, __simple, - _Category>::__copy_m(__first, __last, __result); + _Category>::__copy_m(__first, __last, __result); } // Helpers for streambuf iterators (either istream or ostream). @@ -398,13 +398,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class ostreambuf_iterator; template - typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type __copy_move_a2(_CharT*, _CharT*, ostreambuf_iterator<_CharT, char_traits<_CharT> >); template - typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type __copy_move_a2(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT, char_traits<_CharT> >); @@ -497,9 +497,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move_backward { template - static _BI2 - __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) - { + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { while (__first != __last) *--__result = *--__last; return __result; @@ -511,9 +511,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move_backward { template - static _BI2 - __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) - { + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { while (__first != __last) *--__result = std::move(*--__last); return __result; @@ -525,9 +525,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move_backward { template - static _BI2 - __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) - { + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { typename iterator_traits<_BI1>::difference_type __n; for (__n = __last - __first; __n > 0; --__n) *--__result = *--__last; @@ -540,9 +540,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move_backward { template - static _BI2 - __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) - { + static _BI2 + __copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) + { typename iterator_traits<_BI1>::difference_type __n; for (__n = __last - __first; __n > 0; --__n) *--__result = std::move(*--__last); @@ -555,9 +555,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> { template - static _Tp* - __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) - { + static _Tp* + __copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) + { #if __cplusplus >= 201103L using __assignable = conditional<_IsMove, is_move_assignable<_Tp>, @@ -580,12 +580,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef typename iterator_traits<_BI2>::value_type _ValueType2; typedef typename iterator_traits<_BI1>::iterator_category _Category; const bool __simple = (__is_trivial(_ValueType1) - && __is_pointer<_BI1>::__value - && __is_pointer<_BI2>::__value + && __is_pointer<_BI1>::__value + && __is_pointer<_BI2>::__value && __are_same<_ValueType1, _ValueType2>::__value); return std::__copy_move_backward<_IsMove, __simple, - _Category>::__copy_move_b(__first, + _Category>::__copy_move_b(__first, __last, __result); } @@ -684,7 +684,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION for (; __first != __last; ++__first) *__first = __value; } - + template inline typename __gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type @@ -738,7 +738,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) { for (__decltype(__n + 0) __niter = __n; - __niter > 0; --__niter, ++__first) + __niter > 0; --__niter, (void) ++__first) *__first = __value; return __first; } @@ -750,7 +750,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { const _Tp __tmp = __value; for (__decltype(__n + 0) __niter = __n; - __niter > 0; --__niter, ++__first) + __niter > 0; --__niter, (void) ++__first) *__first = __tmp; return __first; } @@ -793,10 +793,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __equal { template - static bool - equal(_II1 __first1, _II1 __last1, _II2 __first2) - { - for (; __first1 != __last1; ++__first1, (void)++__first2) + static bool + equal(_II1 __first1, _II1 __last1, _II2 __first2) + { + for (; __first1 != __last1; ++__first1, (void) ++__first2) if (!(*__first1 == *__first2)) return false; return true; @@ -807,9 +807,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __equal { template - static bool - equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) - { + static bool + equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) + { if (const size_t __len = (__last1 - __first1)) return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); return true; @@ -824,8 +824,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef typename iterator_traits<_II2>::value_type _ValueType2; const bool __simple = ((__is_integer<_ValueType1>::__value || __is_pointer<_ValueType1>::__value) - && __is_pointer<_II1>::__value - && __is_pointer<_II2>::__value + && __is_pointer<_II1>::__value + && __is_pointer<_II2>::__value && __are_same<_ValueType1, _ValueType2>::__value); return std::__equal<__simple>::equal(__first1, __last1, __first2); @@ -835,24 +835,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __lc_rai { template - static _II1 - __newlast1(_II1, _II1 __last1, _II2, _II2) - { return __last1; } + static _II1 + __newlast1(_II1, _II1 __last1, _II2, _II2) + { return __last1; } template - static bool - __cnd2(_II __first, _II __last) - { return __first != __last; } + static bool + __cnd2(_II __first, _II __last) + { return __first != __last; } }; template<> struct __lc_rai { template - static _RAI1 - __newlast1(_RAI1 __first1, _RAI1 __last1, + static _RAI1 + __newlast1(_RAI1 __first1, _RAI1 __last1, _RAI2 __first2, _RAI2 __last2) - { + { const typename iterator_traits<_RAI1>::difference_type __diff1 = __last1 - __first1; const typename iterator_traits<_RAI2>::difference_type @@ -861,9 +861,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - static bool - __cnd2(_RAI, _RAI) - { return true; } + static bool + __cnd2(_RAI, _RAI) + { return true; } }; template @@ -892,7 +892,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __lexicographical_compare { template - static bool __lc(_II1, _II1, _II2, _II2); + static bool __lc(_II1, _II1, _II2, _II2); }; template @@ -910,8 +910,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __lexicographical_compare { template - static bool - __lc(const _Tp* __first1, const _Tp* __last1, + static bool + __lc(const _Tp* __first1, const _Tp* __last1, const _Up* __first2, const _Up* __last2) { const size_t __len1 = __last1 - __first1; @@ -975,7 +975,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __last Another iterator. * @param __val The search term. * @return An iterator pointing to the first element not less - * than @a val, or end() if every element is less than + * than @a val, or end() if every element is less than * @a val. * @ingroup binary_search_algorithms */ @@ -1020,8 +1020,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __lg(unsigned long long __n) { return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } -_GLIBCXX_END_NAMESPACE_VERSION - _GLIBCXX_BEGIN_NAMESPACE_ALGO /** @@ -1084,6 +1082,60 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO return true; } +#if __cplusplus >= 201103L + // 4-iterator version of std::equal for use in C++11. + template + inline bool + __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) + { + using _RATag = random_access_iterator_tag; + using _Cat1 = typename iterator_traits<_II1>::iterator_category; + using _Cat2 = typename iterator_traits<_II2>::iterator_category; + using _RAIters = __and_, is_same<_Cat2, _RATag>>; + if (_RAIters()) + { + auto __d1 = std::distance(__first1, __last1); + auto __d2 = std::distance(__first2, __last2); + if (__d1 != __d2) + return false; + return _GLIBCXX_STD_A::equal(__first1, __last1, __first2); + } + + for (; __first1 != __last1 && __first2 != __last2; + ++__first1, (void)++__first2) + if (!(*__first1 == *__first2)) + return false; + return __first1 == __last1 && __first2 == __last2; + } + + // 4-iterator version of std::equal for use in C++11. + template + inline bool + __equal4(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2, + _BinaryPredicate __binary_pred) + { + using _RATag = random_access_iterator_tag; + using _Cat1 = typename iterator_traits<_II1>::iterator_category; + using _Cat2 = typename iterator_traits<_II2>::iterator_category; + using _RAIters = __and_, is_same<_Cat2, _RATag>>; + if (_RAIters()) + { + auto __d1 = std::distance(__first1, __last1); + auto __d2 = std::distance(__first2, __last2); + if (__d1 != __d2) + return false; + return _GLIBCXX_STD_A::equal(__first1, __last1, __first2, + __binary_pred); + } + + for (; __first1 != __last1 && __first2 != __last2; + ++__first1, (void)++__first2) + if (!bool(__binary_pred(*__first1, *__first2))) + return false; + return __first1 == __last1 && __first2 == __last2; + } +#endif // C++11 + #if __cplusplus > 201103L #define __cpp_lib_robust_nonmodifying_seq_ops 201304 @@ -1114,24 +1166,7 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); - using _RATag = random_access_iterator_tag; - using _Cat1 = typename iterator_traits<_II1>::iterator_category; - using _Cat2 = typename iterator_traits<_II2>::iterator_category; - using _RAIters = __and_, is_same<_Cat2, _RATag>>; - if (_RAIters()) - { - auto __d1 = std::distance(__first1, __last1); - auto __d2 = std::distance(__first2, __last2); - if (__d1 != __d2) - return false; - return _GLIBCXX_STD_A::equal(__first1, __last1, __first2); - } - - for (; __first1 != __last1 && __first2 != __last2; - ++__first1, (void)++__first2) - if (!(*__first1 == *__first2)) - return false; - return __first1 == __last1 && __first2 == __last2; + return _GLIBCXX_STD_A::__equal4(__first1, __last1, __first2, __last2); } /** @@ -1161,27 +1196,10 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO __glibcxx_requires_valid_range(__first1, __last1); __glibcxx_requires_valid_range(__first2, __last2); - using _RATag = random_access_iterator_tag; - using _Cat1 = typename iterator_traits<_IIter1>::iterator_category; - using _Cat2 = typename iterator_traits<_IIter2>::iterator_category; - using _RAIters = __and_, is_same<_Cat2, _RATag>>; - if (_RAIters()) - { - auto __d1 = std::distance(__first1, __last1); - auto __d2 = std::distance(__first2, __last2); - if (__d1 != __d2) - return false; - return _GLIBCXX_STD_A::equal(__first1, __last1, __first2, - __binary_pred); - } - - for (; __first1 != __last1 && __first2 != __last2; - ++__first1, (void)++__first2) - if (!bool(__binary_pred(*__first1, *__first2))) - return false; - return __first1 == __last1 && __first2 == __last2; + return _GLIBCXX_STD_A::__equal4(__first1, __last1, __first2, __last2, + __binary_pred); } -#endif +#endif // C++14 /** * @brief Performs @b dictionary comparison on ranges. @@ -1257,10 +1275,10 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO _InputIterator2 __first2, _BinaryPredicate __binary_pred) { while (__first1 != __last1 && __binary_pred(__first1, __first2)) - { + { ++__first1; ++__first2; - } + } return pair<_InputIterator1, _InputIterator2>(__first1, __first2); } @@ -1336,10 +1354,10 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO { while (__first1 != __last1 && __first2 != __last2 && __binary_pred(__first1, __first2)) - { + { ++__first1; ++__first2; - } + } return pair<_InputIterator1, _InputIterator2>(__first1, __first2); } @@ -1411,11 +1429,12 @@ _GLIBCXX_BEGIN_NAMESPACE_ALGO #endif _GLIBCXX_END_NAMESPACE_ALGO +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std // NB: This file is included within many other C++ includes, as a way // of getting the base algorithms. So, make sure that parallel bits -// come in too if requested. +// come in too if requested. #ifdef _GLIBCXX_PARALLEL # include #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_bvector.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_bvector.h new file mode 100644 index 000000000..e612c725e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_bvector.h @@ -0,0 +1,1336 @@ +// vector specialization -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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-1999 + * 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_bvector.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{vector} + */ + +#ifndef _STL_BVECTOR_H +#define _STL_BVECTOR_H 1 + +#if __cplusplus >= 201103L +#include +#include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + typedef unsigned long _Bit_type; + enum { _S_word_bit = int(__CHAR_BIT__ * sizeof(_Bit_type)) }; + + struct _Bit_reference + { + _Bit_type * _M_p; + _Bit_type _M_mask; + + _Bit_reference(_Bit_type * __x, _Bit_type __y) + : _M_p(__x), _M_mask(__y) { } + + _Bit_reference() _GLIBCXX_NOEXCEPT : _M_p(0), _M_mask(0) { } + + operator bool() const _GLIBCXX_NOEXCEPT + { return !!(*_M_p & _M_mask); } + + _Bit_reference& + operator=(bool __x) _GLIBCXX_NOEXCEPT + { + if (__x) + *_M_p |= _M_mask; + else + *_M_p &= ~_M_mask; + return *this; + } + + _Bit_reference& + operator=(const _Bit_reference& __x) _GLIBCXX_NOEXCEPT + { return *this = bool(__x); } + + bool + operator==(const _Bit_reference& __x) const + { return bool(*this) == bool(__x); } + + bool + operator<(const _Bit_reference& __x) const + { return !bool(*this) && bool(__x); } + + void + flip() _GLIBCXX_NOEXCEPT + { *_M_p ^= _M_mask; } + }; + +#if __cplusplus >= 201103L + inline void + swap(_Bit_reference __x, _Bit_reference __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + inline void + swap(_Bit_reference __x, bool& __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + inline void + swap(bool& __x, _Bit_reference __y) noexcept + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } +#endif + + struct _Bit_iterator_base + : public std::iterator + { + _Bit_type * _M_p; + unsigned int _M_offset; + + _Bit_iterator_base(_Bit_type * __x, unsigned int __y) + : _M_p(__x), _M_offset(__y) { } + + void + _M_bump_up() + { + if (_M_offset++ == int(_S_word_bit) - 1) + { + _M_offset = 0; + ++_M_p; + } + } + + void + _M_bump_down() + { + if (_M_offset-- == 0) + { + _M_offset = int(_S_word_bit) - 1; + --_M_p; + } + } + + void + _M_incr(ptrdiff_t __i) + { + difference_type __n = __i + _M_offset; + _M_p += __n / int(_S_word_bit); + __n = __n % int(_S_word_bit); + if (__n < 0) + { + __n += int(_S_word_bit); + --_M_p; + } + _M_offset = static_cast(__n); + } + + bool + operator==(const _Bit_iterator_base& __i) const + { return _M_p == __i._M_p && _M_offset == __i._M_offset; } + + bool + operator<(const _Bit_iterator_base& __i) const + { + return _M_p < __i._M_p + || (_M_p == __i._M_p && _M_offset < __i._M_offset); + } + + bool + operator!=(const _Bit_iterator_base& __i) const + { return !(*this == __i); } + + bool + operator>(const _Bit_iterator_base& __i) const + { return __i < *this; } + + bool + operator<=(const _Bit_iterator_base& __i) const + { return !(__i < *this); } + + bool + operator>=(const _Bit_iterator_base& __i) const + { return !(*this < __i); } + }; + + inline ptrdiff_t + operator-(const _Bit_iterator_base& __x, const _Bit_iterator_base& __y) + { + return (int(_S_word_bit) * (__x._M_p - __y._M_p) + + __x._M_offset - __y._M_offset); + } + + struct _Bit_iterator : public _Bit_iterator_base + { + typedef _Bit_reference reference; + typedef _Bit_reference* pointer; + typedef _Bit_iterator iterator; + + _Bit_iterator() : _Bit_iterator_base(0, 0) { } + + _Bit_iterator(_Bit_type * __x, unsigned int __y) + : _Bit_iterator_base(__x, __y) { } + + iterator + _M_const_cast() const + { return *this; } + + reference + operator*() const + { return reference(_M_p, 1UL << _M_offset); } + + iterator& + operator++() + { + _M_bump_up(); + return *this; + } + + iterator + operator++(int) + { + iterator __tmp = *this; + _M_bump_up(); + return __tmp; + } + + iterator& + operator--() + { + _M_bump_down(); + return *this; + } + + iterator + operator--(int) + { + iterator __tmp = *this; + _M_bump_down(); + return __tmp; + } + + iterator& + operator+=(difference_type __i) + { + _M_incr(__i); + return *this; + } + + iterator& + operator-=(difference_type __i) + { + *this += -__i; + return *this; + } + + iterator + operator+(difference_type __i) const + { + iterator __tmp = *this; + return __tmp += __i; + } + + iterator + operator-(difference_type __i) const + { + iterator __tmp = *this; + return __tmp -= __i; + } + + reference + operator[](difference_type __i) const + { return *(*this + __i); } + }; + + inline _Bit_iterator + operator+(ptrdiff_t __n, const _Bit_iterator& __x) + { return __x + __n; } + + struct _Bit_const_iterator : public _Bit_iterator_base + { + typedef bool reference; + typedef bool const_reference; + typedef const bool* pointer; + typedef _Bit_const_iterator const_iterator; + + _Bit_const_iterator() : _Bit_iterator_base(0, 0) { } + + _Bit_const_iterator(_Bit_type * __x, unsigned int __y) + : _Bit_iterator_base(__x, __y) { } + + _Bit_const_iterator(const _Bit_iterator& __x) + : _Bit_iterator_base(__x._M_p, __x._M_offset) { } + + _Bit_iterator + _M_const_cast() const + { return _Bit_iterator(_M_p, _M_offset); } + + const_reference + operator*() const + { return _Bit_reference(_M_p, 1UL << _M_offset); } + + const_iterator& + operator++() + { + _M_bump_up(); + return *this; + } + + const_iterator + operator++(int) + { + const_iterator __tmp = *this; + _M_bump_up(); + return __tmp; + } + + const_iterator& + operator--() + { + _M_bump_down(); + return *this; + } + + const_iterator + operator--(int) + { + const_iterator __tmp = *this; + _M_bump_down(); + return __tmp; + } + + const_iterator& + operator+=(difference_type __i) + { + _M_incr(__i); + return *this; + } + + const_iterator& + operator-=(difference_type __i) + { + *this += -__i; + return *this; + } + + const_iterator + operator+(difference_type __i) const + { + const_iterator __tmp = *this; + return __tmp += __i; + } + + const_iterator + operator-(difference_type __i) const + { + const_iterator __tmp = *this; + return __tmp -= __i; + } + + const_reference + operator[](difference_type __i) const + { return *(*this + __i); } + }; + + inline _Bit_const_iterator + operator+(ptrdiff_t __n, const _Bit_const_iterator& __x) + { return __x + __n; } + + inline void + __fill_bvector(_Bit_type * __v, + unsigned int __first, unsigned int __last, bool __x) + { + const _Bit_type __fmask = ~0ul << __first; + const _Bit_type __lmask = ~0ul >> (_S_word_bit - __last); + const _Bit_type __mask = __fmask & __lmask; + + if (__x) + *__v |= __mask; + else + *__v &= ~__mask; + } + + inline void + fill(_Bit_iterator __first, _Bit_iterator __last, const bool& __x) + { + if (__first._M_p != __last._M_p) + { + _Bit_type* __first_p = __first._M_p; + if (__first._M_offset != 0) + __fill_bvector(__first_p++, __first._M_offset, _S_word_bit, __x); + + __builtin_memset(__first_p, __x ? ~0 : 0, + (__last._M_p - __first_p) * sizeof(_Bit_type)); + + if (__last._M_offset != 0) + __fill_bvector(__last._M_p, 0, __last._M_offset, __x); + } + else if (__first._M_offset != __last._M_offset) + __fill_bvector(__first._M_p, __first._M_offset, __last._M_offset, __x); + } + + template + struct _Bvector_base + { + typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template + rebind<_Bit_type>::other _Bit_alloc_type; + typedef typename __gnu_cxx::__alloc_traits<_Bit_alloc_type> + _Bit_alloc_traits; + typedef typename _Bit_alloc_traits::pointer _Bit_pointer; + + struct _Bvector_impl_data + { + _Bit_iterator _M_start; + _Bit_iterator _M_finish; + _Bit_pointer _M_end_of_storage; + + _Bvector_impl_data() _GLIBCXX_NOEXCEPT + : _M_start(), _M_finish(), _M_end_of_storage() + { } + +#if __cplusplus >= 201103L + _Bvector_impl_data(_Bvector_impl_data&& __x) noexcept + : _M_start(__x._M_start), _M_finish(__x._M_finish) + , _M_end_of_storage(__x._M_end_of_storage) + { __x._M_reset(); } + + void + _M_move_data(_Bvector_impl_data&& __x) noexcept + { + this->_M_start = __x._M_start; + this->_M_finish = __x._M_finish; + this->_M_end_of_storage = __x._M_end_of_storage; + __x._M_reset(); + } +#endif + + void + _M_reset() _GLIBCXX_NOEXCEPT + { + _M_start = _M_finish = _Bit_iterator(); + _M_end_of_storage = _Bit_pointer(); + } + }; + + struct _Bvector_impl + : public _Bit_alloc_type, public _Bvector_impl_data + { + public: + _Bvector_impl() _GLIBCXX_NOEXCEPT_IF( + is_nothrow_default_constructible<_Bit_alloc_type>::value) + : _Bit_alloc_type() + { } + + _Bvector_impl(const _Bit_alloc_type& __a) _GLIBCXX_NOEXCEPT + : _Bit_alloc_type(__a) + { } + +#if __cplusplus >= 201103L + _Bvector_impl(_Bvector_impl&&) = default; +#endif + + _Bit_type* + _M_end_addr() const _GLIBCXX_NOEXCEPT + { + if (this->_M_end_of_storage) + return std::__addressof(this->_M_end_of_storage[-1]) + 1; + return 0; + } + }; + + public: + typedef _Alloc allocator_type; + + _Bit_alloc_type& + _M_get_Bit_allocator() _GLIBCXX_NOEXCEPT + { return this->_M_impl; } + + const _Bit_alloc_type& + _M_get_Bit_allocator() const _GLIBCXX_NOEXCEPT + { return this->_M_impl; } + + allocator_type + get_allocator() const _GLIBCXX_NOEXCEPT + { return allocator_type(_M_get_Bit_allocator()); } + +#if __cplusplus >= 201103L + _Bvector_base() = default; +#else + _Bvector_base() { } +#endif + + _Bvector_base(const allocator_type& __a) + : _M_impl(__a) { } + +#if __cplusplus >= 201103L + _Bvector_base(_Bvector_base&&) = default; +#endif + + ~_Bvector_base() + { this->_M_deallocate(); } + + protected: + _Bvector_impl _M_impl; + + _Bit_pointer + _M_allocate(size_t __n) + { return _Bit_alloc_traits::allocate(_M_impl, _S_nword(__n)); } + + void + _M_deallocate() + { + if (_M_impl._M_start._M_p) + { + const size_t __n = _M_impl._M_end_addr() - _M_impl._M_start._M_p; + _Bit_alloc_traits::deallocate(_M_impl, + _M_impl._M_end_of_storage - __n, + __n); + _M_impl._M_reset(); + } + } + +#if __cplusplus >= 201103L + void + _M_move_data(_Bvector_base&& __x) noexcept + { _M_impl._M_move_data(std::move(__x._M_impl)); } +#endif + + static size_t + _S_nword(size_t __n) + { return (__n + int(_S_word_bit) - 1) / int(_S_word_bit); } + }; + +_GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +// Declare a partial specialization of vector. +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * @brief A specialization of vector for booleans which offers fixed time + * access to individual elements in any order. + * + * @ingroup sequences + * + * @tparam _Alloc Allocator type. + * + * Note that vector does not actually meet the requirements for being + * a container. This is because the reference and pointer types are not + * really references and pointers to bool. See DR96 for details. @see + * vector for function documentation. + * + * In some terminology a %vector can be described as a dynamic + * C-style array, it offers fast and efficient access to individual + * elements in any order and saves the user from worrying about + * memory and size allocation. Subscripting ( @c [] ) access is + * also provided as with C-style arrays. + */ + template + class vector : protected _Bvector_base<_Alloc> + { + typedef _Bvector_base<_Alloc> _Base; + typedef typename _Base::_Bit_pointer _Bit_pointer; + typedef typename _Base::_Bit_alloc_traits _Bit_alloc_traits; + +#if __cplusplus >= 201103L + friend struct std::hash; +#endif + + public: + typedef bool value_type; + typedef size_t size_type; + typedef ptrdiff_t difference_type; + typedef _Bit_reference reference; + typedef bool const_reference; + typedef _Bit_reference* pointer; + typedef const bool* const_pointer; + typedef _Bit_iterator iterator; + typedef _Bit_const_iterator const_iterator; + typedef std::reverse_iterator const_reverse_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef _Alloc allocator_type; + + allocator_type + get_allocator() const + { return _Base::get_allocator(); } + + protected: + using _Base::_M_allocate; + using _Base::_M_deallocate; + using _Base::_S_nword; + using _Base::_M_get_Bit_allocator; + + public: +#if __cplusplus >= 201103L + vector() = default; +#else + vector() { } +#endif + + explicit + vector(const allocator_type& __a) + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + vector(size_type __n, const allocator_type& __a = allocator_type()) + : vector(__n, false, __a) + { } + + vector(size_type __n, const bool& __value, + const allocator_type& __a = allocator_type()) +#else + explicit + vector(size_type __n, const bool& __value = bool(), + const allocator_type& __a = allocator_type()) +#endif + : _Base(__a) + { + _M_initialize(__n); + _M_initialize_value(__value); + } + + vector(const vector& __x) + : _Base(_Bit_alloc_traits::_S_select_on_copy(__x._M_get_Bit_allocator())) + { + _M_initialize(__x.size()); + _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); + } + +#if __cplusplus >= 201103L + vector(vector&&) = default; + + vector(vector&& __x, const allocator_type& __a) + noexcept(_Bit_alloc_traits::_S_always_equal()) + : _Base(__a) + { + if (__x.get_allocator() == __a) + this->_M_move_data(std::move(__x)); + else + { + _M_initialize(__x.size()); + _M_copy_aligned(__x.begin(), __x.end(), begin()); + __x.clear(); + } + } + + vector(const vector& __x, const allocator_type& __a) + : _Base(__a) + { + _M_initialize(__x.size()); + _M_copy_aligned(__x.begin(), __x.end(), this->_M_impl._M_start); + } + + vector(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + _M_initialize_range(__l.begin(), __l.end(), + random_access_iterator_tag()); + } +#endif + +#if __cplusplus >= 201103L + template> + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { _M_initialize_dispatch(__first, __last, __false_type()); } +#else + template + vector(_InputIterator __first, _InputIterator __last, + const allocator_type& __a = allocator_type()) + : _Base(__a) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_initialize_dispatch(__first, __last, _Integral()); + } +#endif + + ~vector() _GLIBCXX_NOEXCEPT { } + + vector& + operator=(const vector& __x) + { + if (&__x == this) + return *this; +#if __cplusplus >= 201103L + if (_Bit_alloc_traits::_S_propagate_on_copy_assign()) + { + if (this->_M_get_Bit_allocator() != __x._M_get_Bit_allocator()) + { + this->_M_deallocate(); + std::__alloc_on_copy(_M_get_Bit_allocator(), + __x._M_get_Bit_allocator()); + _M_initialize(__x.size()); + } + else + std::__alloc_on_copy(_M_get_Bit_allocator(), + __x._M_get_Bit_allocator()); + } +#endif + if (__x.size() > capacity()) + { + this->_M_deallocate(); + _M_initialize(__x.size()); + } + this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), + begin()); + return *this; + } + +#if __cplusplus >= 201103L + vector& + operator=(vector&& __x) noexcept(_Bit_alloc_traits::_S_nothrow_move()) + { + if (_Bit_alloc_traits::_S_propagate_on_move_assign() + || this->_M_get_Bit_allocator() == __x._M_get_Bit_allocator()) + { + this->_M_deallocate(); + this->_M_move_data(std::move(__x)); + std::__alloc_on_move(_M_get_Bit_allocator(), + __x._M_get_Bit_allocator()); + } + else + { + if (__x.size() > capacity()) + { + this->_M_deallocate(); + _M_initialize(__x.size()); + } + this->_M_impl._M_finish = _M_copy_aligned(__x.begin(), __x.end(), + begin()); + __x.clear(); + } + return *this; + } + + vector& + operator=(initializer_list __l) + { + this->assign (__l.begin(), __l.end()); + return *this; + } +#endif + + // assign(), a generalized assignment member function. Two + // versions: one that takes a count, and one that takes a range. + // The range version is a member template, so we dispatch on whether + // or not the type is an integer. + void + assign(size_type __n, const bool& __x) + { _M_fill_assign(__n, __x); } + +#if __cplusplus >= 201103L + template> + void + assign(_InputIterator __first, _InputIterator __last) + { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +#else + template + void + assign(_InputIterator __first, _InputIterator __last) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_assign_dispatch(__first, __last, _Integral()); + } +#endif + +#if __cplusplus >= 201103L + void + assign(initializer_list __l) + { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); } +#endif + + iterator + begin() _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_start; } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_start; } + + iterator + end() _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish; } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return this->_M_impl._M_finish; } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return this->_M_impl._M_start; } + + const_iterator + cend() const noexcept + { return this->_M_impl._M_finish; } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + size_type + size() const _GLIBCXX_NOEXCEPT + { return size_type(end() - begin()); } + + size_type + max_size() const _GLIBCXX_NOEXCEPT + { + const size_type __isize = + __gnu_cxx::__numeric_traits::__max + - int(_S_word_bit) + 1; + const size_type __asize + = _Bit_alloc_traits::max_size(_M_get_Bit_allocator()); + return (__asize <= __isize / int(_S_word_bit) + ? __asize * int(_S_word_bit) : __isize); + } + + size_type + capacity() const _GLIBCXX_NOEXCEPT + { return size_type(const_iterator(this->_M_impl._M_end_addr(), 0) + - begin()); } + + bool + empty() const _GLIBCXX_NOEXCEPT + { return begin() == end(); } + + reference + operator[](size_type __n) + { + return *iterator(this->_M_impl._M_start._M_p + + __n / int(_S_word_bit), __n % int(_S_word_bit)); + } + + const_reference + operator[](size_type __n) const + { + return *const_iterator(this->_M_impl._M_start._M_p + + __n / int(_S_word_bit), __n % int(_S_word_bit)); + } + + protected: + void + _M_range_check(size_type __n) const + { + if (__n >= this->size()) + __throw_out_of_range_fmt(__N("vector::_M_range_check: __n " + "(which is %zu) >= this->size() " + "(which is %zu)"), + __n, this->size()); + } + + public: + reference + at(size_type __n) + { _M_range_check(__n); return (*this)[__n]; } + + const_reference + at(size_type __n) const + { _M_range_check(__n); return (*this)[__n]; } + + void + reserve(size_type __n) + { + if (__n > max_size()) + __throw_length_error(__N("vector::reserve")); + if (capacity() < __n) + _M_reallocate(__n); + } + + reference + front() + { return *begin(); } + + const_reference + front() const + { return *begin(); } + + reference + back() + { return *(end() - 1); } + + const_reference + back() const + { return *(end() - 1); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + // N.B. DR 464 says nothing about vector but we need something + // here due to the way we are implementing DR 464 in the debug-mode + // vector class. + void + data() _GLIBCXX_NOEXCEPT { } + + void + push_back(bool __x) + { + if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr()) + *this->_M_impl._M_finish++ = __x; + else + _M_insert_aux(end(), __x); + } + + void + swap(vector& __x) _GLIBCXX_NOEXCEPT + { + std::swap(this->_M_impl._M_start, __x._M_impl._M_start); + std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish); + std::swap(this->_M_impl._M_end_of_storage, + __x._M_impl._M_end_of_storage); + _Bit_alloc_traits::_S_on_swap(_M_get_Bit_allocator(), + __x._M_get_Bit_allocator()); + } + + // [23.2.5]/1, third-to-last entry in synopsis listing + static void + swap(reference __x, reference __y) _GLIBCXX_NOEXCEPT + { + bool __tmp = __x; + __x = __y; + __y = __tmp; + } + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const bool& __x = bool()) +#else + insert(iterator __position, const bool& __x = bool()) +#endif + { + const difference_type __n = __position - begin(); + if (this->_M_impl._M_finish._M_p != this->_M_impl._M_end_addr() + && __position == end()) + *this->_M_impl._M_finish++ = __x; + else + _M_insert_aux(__position._M_const_cast(), __x); + return begin() + __n; + } + +#if __cplusplus >= 201103L + template> + iterator + insert(const_iterator __position, + _InputIterator __first, _InputIterator __last) + { + difference_type __offset = __position - cbegin(); + _M_insert_dispatch(__position._M_const_cast(), + __first, __last, __false_type()); + return begin() + __offset; + } +#else + template + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { + typedef typename std::__is_integer<_InputIterator>::__type _Integral; + _M_insert_dispatch(__position, __first, __last, _Integral()); + } +#endif + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, size_type __n, const bool& __x) + { + difference_type __offset = __position - cbegin(); + _M_fill_insert(__position._M_const_cast(), __n, __x); + return begin() + __offset; + } +#else + void + insert(iterator __position, size_type __n, const bool& __x) + { _M_fill_insert(__position, __n, __x); } +#endif + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __p, initializer_list __l) + { return this->insert(__p, __l.begin(), __l.end()); } +#endif + + void + pop_back() + { --this->_M_impl._M_finish; } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __position) +#else + erase(iterator __position) +#endif + { return _M_erase(__position._M_const_cast()); } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __first, const_iterator __last) +#else + erase(iterator __first, iterator __last) +#endif + { return _M_erase(__first._M_const_cast(), __last._M_const_cast()); } + + void + resize(size_type __new_size, bool __x = bool()) + { + if (__new_size < size()) + _M_erase_at_end(begin() + difference_type(__new_size)); + else + insert(end(), __new_size - size(), __x); + } + +#if __cplusplus >= 201103L + void + shrink_to_fit() + { _M_shrink_to_fit(); } +#endif + + void + flip() _GLIBCXX_NOEXCEPT + { + _Bit_type * const __end = this->_M_impl._M_end_addr(); + for (_Bit_type * __p = this->_M_impl._M_start._M_p; __p != __end; ++__p) + *__p = ~*__p; + } + + void + clear() _GLIBCXX_NOEXCEPT + { _M_erase_at_end(begin()); } + +#if __cplusplus >= 201103L + template +#if __cplusplus > 201402L + reference +#else + void +#endif + emplace_back(_Args&&... __args) + { + push_back(bool(__args...)); +#if __cplusplus > 201402L + return back(); +#endif + } + + template + iterator + emplace(const_iterator __pos, _Args&&... __args) + { return insert(__pos, bool(__args...)); } +#endif + + protected: + // Precondition: __first._M_offset == 0 && __result._M_offset == 0. + iterator + _M_copy_aligned(const_iterator __first, const_iterator __last, + iterator __result) + { + _Bit_type* __q = std::copy(__first._M_p, __last._M_p, __result._M_p); + return std::copy(const_iterator(__last._M_p, 0), __last, + iterator(__q, 0)); + } + + void + _M_initialize(size_type __n) + { + if (__n) + { + _Bit_pointer __q = this->_M_allocate(__n); + this->_M_impl._M_end_of_storage = __q + _S_nword(__n); + this->_M_impl._M_start = iterator(std::__addressof(*__q), 0); + } + else + { + this->_M_impl._M_end_of_storage = _Bit_pointer(); + this->_M_impl._M_start = iterator(0, 0); + } + this->_M_impl._M_finish = this->_M_impl._M_start + difference_type(__n); + + } + + void + _M_initialize_value(bool __x) + { + if (_Bit_type* __p = this->_M_impl._M_start._M_p) + __builtin_memset(__p, __x ? ~0 : 0, + (this->_M_impl._M_end_addr() - __p) + * sizeof(_Bit_type)); + } + + void + _M_reallocate(size_type __n); + +#if __cplusplus >= 201103L + bool + _M_shrink_to_fit(); +#endif + + // Check whether it's an integral type. If so, it's not an iterator. + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_initialize_dispatch(_Integer __n, _Integer __x, __true_type) + { + _M_initialize(static_cast(__n)); + _M_initialize_value(__x); + } + + template + void + _M_initialize_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { _M_initialize_range(__first, __last, + std::__iterator_category(__first)); } + + template + void + _M_initialize_range(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { + for (; __first != __last; ++__first) + push_back(*__first); + } + + template + void + _M_initialize_range(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + const size_type __n = std::distance(__first, __last); + _M_initialize(__n); + std::copy(__first, __last, this->_M_impl._M_start); + } + +#if __cplusplus < 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_assign_dispatch(_Integer __n, _Integer __val, __true_type) + { _M_fill_assign(__n, __val); } + + template + void + _M_assign_dispatch(_InputIterator __first, _InputIterator __last, + __false_type) + { _M_assign_aux(__first, __last, std::__iterator_category(__first)); } +#endif + + void + _M_fill_assign(size_t __n, bool __x) + { + if (__n > size()) + { + _M_initialize_value(__x); + insert(end(), __n - size(), __x); + } + else + { + _M_erase_at_end(begin() + __n); + _M_initialize_value(__x); + } + } + + template + void + _M_assign_aux(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) + { + iterator __cur = begin(); + for (; __first != __last && __cur != end(); ++__cur, ++__first) + *__cur = *__first; + if (__first == __last) + _M_erase_at_end(__cur); + else + insert(end(), __first, __last); + } + + template + void + _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) + { + const size_type __len = std::distance(__first, __last); + if (__len < size()) + _M_erase_at_end(std::copy(__first, __last, begin())); + else + { + _ForwardIterator __mid = __first; + std::advance(__mid, size()); + std::copy(__first, __mid, begin()); + insert(end(), __mid, __last); + } + } + + // Check whether it's an integral type. If so, it's not an iterator. + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 438. Ambiguity in the "do the right thing" clause + template + void + _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __x, + __true_type) + { _M_fill_insert(__pos, __n, __x); } + + template + void + _M_insert_dispatch(iterator __pos, + _InputIterator __first, _InputIterator __last, + __false_type) + { _M_insert_range(__pos, __first, __last, + std::__iterator_category(__first)); } + + void + _M_fill_insert(iterator __position, size_type __n, bool __x); + + template + void + _M_insert_range(iterator __pos, _InputIterator __first, + _InputIterator __last, std::input_iterator_tag) + { + for (; __first != __last; ++__first) + { + __pos = insert(__pos, *__first); + ++__pos; + } + } + + template + void + _M_insert_range(iterator __position, _ForwardIterator __first, + _ForwardIterator __last, std::forward_iterator_tag); + + void + _M_insert_aux(iterator __position, bool __x); + + size_type + _M_check_len(size_type __n, const char* __s) const + { + if (max_size() - size() < __n) + __throw_length_error(__N(__s)); + + const size_type __len = size() + std::max(size(), __n); + return (__len < size() || __len > max_size()) ? max_size() : __len; + } + + void + _M_erase_at_end(iterator __pos) + { this->_M_impl._M_finish = __pos; } + + iterator + _M_erase(iterator __pos); + + iterator + _M_erase(iterator __first, iterator __last); + }; + +_GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // DR 1182. + /// std::hash specialization for vector. + template + struct hash<_GLIBCXX_STD_C::vector> + : public __hash_base> + { + size_t + operator()(const _GLIBCXX_STD_C::vector&) const noexcept; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +}// namespace std + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_construct.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_construct.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_construct.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_construct.h index 71483b46a..e696ec8b2 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_construct.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_construct.h @@ -1,6 +1,6 @@ // nonstandard construct and destroy functions -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_deque.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_deque.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_deque.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_deque.h index 6090635b7..0d4390b29 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_deque.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_deque.h @@ -1,6 +1,6 @@ // Deque implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -67,6 +67,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER /** @@ -839,6 +840,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L + static_assert(is_same::type, _Tp>::value, + "std::deque must have a non-const, non-volatile value_type"); +# ifdef __STRICT_ANSI__ + static_assert(is_same::value, + "std::deque must have the same value_type as its allocator"); +# endif +#endif + typedef _Deque_base<_Tp, _Alloc> _Base; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef typename _Base::_Alloc_traits _Alloc_traits; @@ -2242,6 +2252,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #endif }; +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + deque(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> deque<_ValT, _Allocator>; +#endif /** * @brief Deque equality comparison. @@ -2316,6 +2335,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #undef _GLIBCXX_DEQUE_BUF_SIZE _GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_DEQUE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_function.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_function.h similarity index 79% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_function.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_function.h index 4fbcdb91f..9e81ad3f2 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_function.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_function.h @@ -1,6 +1,6 @@ // Functor implementations -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -406,14 +406,65 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __x <= __y; } }; -#if __cplusplus > 201103L + // Partial specialization of std::greater for pointers. + template + struct greater<_Tp*> : public binary_function<_Tp*, _Tp*, bool> + { + _GLIBCXX14_CONSTEXPR bool + operator()(_Tp* __x, _Tp* __y) const _GLIBCXX_NOTHROW + { + if (__builtin_constant_p (__x > __y)) + return __x > __y; + return (__UINTPTR_TYPE__)__x > (__UINTPTR_TYPE__)__y; + } + }; + + // Partial specialization of std::less for pointers. + template + struct less<_Tp*> : public binary_function<_Tp*, _Tp*, bool> + { + _GLIBCXX14_CONSTEXPR bool + operator()(_Tp* __x, _Tp* __y) const _GLIBCXX_NOTHROW + { + if (__builtin_constant_p (__x < __y)) + return __x < __y; + return (__UINTPTR_TYPE__)__x < (__UINTPTR_TYPE__)__y; + } + }; + + // Partial specialization of std::greater_equal for pointers. + template + struct greater_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> + { + _GLIBCXX14_CONSTEXPR bool + operator()(_Tp* __x, _Tp* __y) const _GLIBCXX_NOTHROW + { + if (__builtin_constant_p (__x >= __y)) + return __x >= __y; + return (__UINTPTR_TYPE__)__x >= (__UINTPTR_TYPE__)__y; + } + }; + + // Partial specialization of std::less_equal for pointers. + template + struct less_equal<_Tp*> : public binary_function<_Tp*, _Tp*, bool> + { + _GLIBCXX14_CONSTEXPR bool + operator()(_Tp* __x, _Tp* __y) const _GLIBCXX_NOTHROW + { + if (__builtin_constant_p (__x <= __y)) + return __x <= __y; + return (__UINTPTR_TYPE__)__x <= (__UINTPTR_TYPE__)__y; + } + }; + +#if __cplusplus >= 201402L /// One of the @link comparison_functors comparison functors@endlink. template<> struct equal_to { template - _GLIBCXX14_CONSTEXPR - auto + constexpr auto operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) -> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) @@ -427,8 +478,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct not_equal_to { template - _GLIBCXX14_CONSTEXPR - auto + constexpr auto operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) -> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) @@ -442,14 +492,61 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct greater { template - _GLIBCXX14_CONSTEXPR - auto + constexpr auto operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) -> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) - { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } + { + return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), + __ptr_cmp<_Tp, _Up>{}); + } + + template + constexpr bool + operator()(_Tp* __t, _Up* __u) const noexcept + { return greater>{}(__t, __u); } typedef __is_transparent is_transparent; + + private: + template + static constexpr decltype(auto) + _S_cmp(_Tp&& __t, _Up&& __u, false_type) + { return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } + + template + static constexpr bool + _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept + { + return greater{}( + static_cast(std::forward<_Tp>(__t)), + static_cast(std::forward<_Up>(__u))); + } + + // True if there is no viable operator> member function. + template + struct __not_overloaded2 : true_type { }; + + // False if we can call T.operator>(U) + template + struct __not_overloaded2<_Tp, _Up, __void_t< + decltype(std::declval<_Tp>().operator>(std::declval<_Up>()))>> + : false_type { }; + + // True if there is no overloaded operator> for these operands. + template + struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; + + // False if we can call operator>(T,U) + template + struct __not_overloaded<_Tp, _Up, __void_t< + decltype(operator>(std::declval<_Tp>(), std::declval<_Up>()))>> + : false_type { }; + + template + using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, + is_convertible<_Tp, const volatile void*>, + is_convertible<_Up, const volatile void*>>; }; /// One of the @link comparison_functors comparison functors@endlink. @@ -457,14 +554,61 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct less { template - _GLIBCXX14_CONSTEXPR - auto + constexpr auto operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) -> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) - { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } + { + return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), + __ptr_cmp<_Tp, _Up>{}); + } + + template + constexpr bool + operator()(_Tp* __t, _Up* __u) const noexcept + { return less>{}(__t, __u); } typedef __is_transparent is_transparent; + + private: + template + static constexpr decltype(auto) + _S_cmp(_Tp&& __t, _Up&& __u, false_type) + { return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } + + template + static constexpr bool + _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept + { + return less{}( + static_cast(std::forward<_Tp>(__t)), + static_cast(std::forward<_Up>(__u))); + } + + // True if there is no viable operator< member function. + template + struct __not_overloaded2 : true_type { }; + + // False if we can call T.operator<(U) + template + struct __not_overloaded2<_Tp, _Up, __void_t< + decltype(std::declval<_Tp>().operator<(std::declval<_Up>()))>> + : false_type { }; + + // True if there is no overloaded operator< for these operands. + template + struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; + + // False if we can call operator<(T,U) + template + struct __not_overloaded<_Tp, _Up, __void_t< + decltype(operator<(std::declval<_Tp>(), std::declval<_Up>()))>> + : false_type { }; + + template + using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, + is_convertible<_Tp, const volatile void*>, + is_convertible<_Up, const volatile void*>>; }; /// One of the @link comparison_functors comparison functors@endlink. @@ -472,14 +616,61 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct greater_equal { template - _GLIBCXX14_CONSTEXPR - auto + constexpr auto operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) -> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) - { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } + { + return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), + __ptr_cmp<_Tp, _Up>{}); + } + + template + constexpr bool + operator()(_Tp* __t, _Up* __u) const noexcept + { return greater_equal>{}(__t, __u); } typedef __is_transparent is_transparent; + + private: + template + static constexpr decltype(auto) + _S_cmp(_Tp&& __t, _Up&& __u, false_type) + { return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } + + template + static constexpr bool + _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept + { + return greater_equal{}( + static_cast(std::forward<_Tp>(__t)), + static_cast(std::forward<_Up>(__u))); + } + + // True if there is no viable operator>= member function. + template + struct __not_overloaded2 : true_type { }; + + // False if we can call T.operator>=(U) + template + struct __not_overloaded2<_Tp, _Up, __void_t< + decltype(std::declval<_Tp>().operator>=(std::declval<_Up>()))>> + : false_type { }; + + // True if there is no overloaded operator>= for these operands. + template + struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; + + // False if we can call operator>=(T,U) + template + struct __not_overloaded<_Tp, _Up, __void_t< + decltype(operator>=(std::declval<_Tp>(), std::declval<_Up>()))>> + : false_type { }; + + template + using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, + is_convertible<_Tp, const volatile void*>, + is_convertible<_Up, const volatile void*>>; }; /// One of the @link comparison_functors comparison functors@endlink. @@ -487,16 +678,63 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct less_equal { template - _GLIBCXX14_CONSTEXPR - auto + constexpr auto operator()(_Tp&& __t, _Up&& __u) const noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) -> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) - { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } + { + return _S_cmp(std::forward<_Tp>(__t), std::forward<_Up>(__u), + __ptr_cmp<_Tp, _Up>{}); + } + + template + constexpr bool + operator()(_Tp* __t, _Up* __u) const noexcept + { return less_equal>{}(__t, __u); } typedef __is_transparent is_transparent; + + private: + template + static constexpr decltype(auto) + _S_cmp(_Tp&& __t, _Up&& __u, false_type) + { return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } + + template + static constexpr bool + _S_cmp(_Tp&& __t, _Up&& __u, true_type) noexcept + { + return less_equal{}( + static_cast(std::forward<_Tp>(__t)), + static_cast(std::forward<_Up>(__u))); + } + + // True if there is no viable operator<= member function. + template + struct __not_overloaded2 : true_type { }; + + // False if we can call T.operator<=(U) + template + struct __not_overloaded2<_Tp, _Up, __void_t< + decltype(std::declval<_Tp>().operator<=(std::declval<_Up>()))>> + : false_type { }; + + // True if there is no overloaded operator<= for these operands. + template + struct __not_overloaded : __not_overloaded2<_Tp, _Up> { }; + + // False if we can call operator<=(T,U) + template + struct __not_overloaded<_Tp, _Up, __void_t< + decltype(operator<=(std::declval<_Tp>(), std::declval<_Up>()))>> + : false_type { }; + + template + using __ptr_cmp = __and_<__not_overloaded<_Tp, _Up>, + is_convertible<_Tp, const volatile void*>, + is_convertible<_Up, const volatile void*>>; }; -#endif +#endif // C++14 /** @} */ // 20.3.4 logical operations @@ -867,7 +1105,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct _Identity - : public unary_function<_Tp,_Tp> + : public unary_function<_Tp, _Tp> { _Tp& operator()(_Tp& __x) const @@ -878,6 +1116,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return __x; } }; + // Partial specialization, avoids confusing errors in e.g. std::set. + template struct _Identity : _Identity<_Tp> { }; + template struct _Select1st : public unary_function<_Pair, typename _Pair::first_type> diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_heap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_heap.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_heap.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_heap.h index f8cd0c054..aab70d86a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_heap.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_heap.h @@ -1,6 +1,6 @@ // Heap implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator.h new file mode 100644 index 000000000..0a301ee79 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator.h @@ -0,0 +1,1278 @@ +// Iterators -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file bits/stl_iterator.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{iterator} + * + * This file implements reverse_iterator, back_insert_iterator, + * front_insert_iterator, insert_iterator, __normal_iterator, and their + * supporting functions and overloaded operators. + */ + +#ifndef _STL_ITERATOR_H +#define _STL_ITERATOR_H 1 + +#include +#include +#include +#include + +#if __cplusplus > 201402L +# define __cpp_lib_array_constexpr 201603 +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup iterators + * @{ + */ + + // 24.4.1 Reverse iterators + /** + * Bidirectional and random access iterators have corresponding reverse + * %iterator adaptors that iterate through the data structure in the + * opposite direction. They have the same signatures as the corresponding + * iterators. The fundamental relation between a reverse %iterator and its + * corresponding %iterator @c i is established by the identity: + * @code + * &*(reverse_iterator(i)) == &*(i - 1) + * @endcode + * + * This mapping is dictated by the fact that while there is always a + * pointer past the end of an array, there might not be a valid pointer + * before the beginning of an array. [24.4.1]/1,2 + * + * Reverse iterators can be tricky and surprising at first. Their + * semantics make sense, however, and the trickiness is a side effect of + * the requirement that the iterators must be safe. + */ + template + class reverse_iterator + : public iterator::iterator_category, + typename iterator_traits<_Iterator>::value_type, + typename iterator_traits<_Iterator>::difference_type, + typename iterator_traits<_Iterator>::pointer, + typename iterator_traits<_Iterator>::reference> + { + protected: + _Iterator current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::pointer pointer; + typedef typename __traits_type::reference reference; + + /** + * The default constructor value-initializes member @p current. + * If it is a pointer, that means it is zero-initialized. + */ + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 235 No specification of default ctor for reverse_iterator + // 1012. reverse_iterator default ctor should value initialize + _GLIBCXX17_CONSTEXPR + reverse_iterator() : current() { } + + /** + * This %iterator will move in the opposite direction that @p x does. + */ + explicit _GLIBCXX17_CONSTEXPR + reverse_iterator(iterator_type __x) : current(__x) { } + + /** + * The copy constructor is normal. + */ + _GLIBCXX17_CONSTEXPR + reverse_iterator(const reverse_iterator& __x) + : current(__x.current) { } + + /** + * A %reverse_iterator across other types can be copied if the + * underlying %iterator can be converted to the type of @c current. + */ + template + _GLIBCXX17_CONSTEXPR + reverse_iterator(const reverse_iterator<_Iter>& __x) + : current(__x.base()) { } + + /** + * @return @c current, the %iterator used for underlying work. + */ + _GLIBCXX17_CONSTEXPR iterator_type + base() const + { return current; } + + /** + * @return A reference to the value at @c --current + * + * This requires that @c --current is dereferenceable. + * + * @warning This implementation requires that for an iterator of the + * underlying iterator type, @c x, a reference obtained by + * @c *x remains valid after @c x has been modified or + * destroyed. This is a bug: http://gcc.gnu.org/PR51823 + */ + _GLIBCXX17_CONSTEXPR reference + operator*() const + { + _Iterator __tmp = current; + return *--__tmp; + } + + /** + * @return A pointer to the value at @c --current + * + * This requires that @c --current is dereferenceable. + */ + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2188. Reverse iterator does not fully support targets that overload & + _GLIBCXX17_CONSTEXPR pointer + operator->() const + { return std::__addressof(operator*()); } + + /** + * @return @c *this + * + * Decrements the underlying iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator& + operator++() + { + --current; + return *this; + } + + /** + * @return The original value of @c *this + * + * Decrements the underlying iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator + operator++(int) + { + reverse_iterator __tmp = *this; + --current; + return __tmp; + } + + /** + * @return @c *this + * + * Increments the underlying iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator& + operator--() + { + ++current; + return *this; + } + + /** + * @return A reverse_iterator with the previous value of @c *this + * + * Increments the underlying iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator + operator--(int) + { + reverse_iterator __tmp = *this; + ++current; + return __tmp; + } + + /** + * @return A reverse_iterator that refers to @c current - @a __n + * + * The underlying iterator must be a Random Access Iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator + operator+(difference_type __n) const + { return reverse_iterator(current - __n); } + + /** + * @return *this + * + * Moves the underlying iterator backwards @a __n steps. + * The underlying iterator must be a Random Access Iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator& + operator+=(difference_type __n) + { + current -= __n; + return *this; + } + + /** + * @return A reverse_iterator that refers to @c current - @a __n + * + * The underlying iterator must be a Random Access Iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator + operator-(difference_type __n) const + { return reverse_iterator(current + __n); } + + /** + * @return *this + * + * Moves the underlying iterator forwards @a __n steps. + * The underlying iterator must be a Random Access Iterator. + */ + _GLIBCXX17_CONSTEXPR reverse_iterator& + operator-=(difference_type __n) + { + current += __n; + return *this; + } + + /** + * @return The value at @c current - @a __n - 1 + * + * The underlying iterator must be a Random Access Iterator. + */ + _GLIBCXX17_CONSTEXPR reference + operator[](difference_type __n) const + { return *(*this + __n); } + }; + + //@{ + /** + * @param __x A %reverse_iterator. + * @param __y A %reverse_iterator. + * @return A simple bool. + * + * Reverse iterators forward many operations to their underlying base() + * iterators. Others are implemented in terms of one another. + * + */ + template + inline _GLIBCXX17_CONSTEXPR bool + operator==(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __x.base() == __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y.base() < __x.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator!=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__x == __y); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y < __x; } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__y < __x); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>=(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return !(__x < __y); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 280. Comparison of reverse_iterator to const reverse_iterator. + template + inline _GLIBCXX17_CONSTEXPR bool + operator==(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __x.base() == __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y.base() < __x.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator!=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__x == __y); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y < __x; } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__y < __x); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>=(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return !(__x < __y); } + //@} + +#if __cplusplus < 201103L + template + inline typename reverse_iterator<_Iterator>::difference_type + operator-(const reverse_iterator<_Iterator>& __x, + const reverse_iterator<_Iterator>& __y) + { return __y.base() - __x.base(); } + + template + inline typename reverse_iterator<_IteratorL>::difference_type + operator-(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + { return __y.base() - __x.base(); } +#else + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 685. reverse_iterator/move_iterator difference has invalid signatures + template + inline _GLIBCXX17_CONSTEXPR auto + operator-(const reverse_iterator<_IteratorL>& __x, + const reverse_iterator<_IteratorR>& __y) + -> decltype(__y.base() - __x.base()) + { return __y.base() - __x.base(); } +#endif + + template + inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> + operator+(typename reverse_iterator<_Iterator>::difference_type __n, + const reverse_iterator<_Iterator>& __x) + { return reverse_iterator<_Iterator>(__x.base() - __n); } + +#if __cplusplus >= 201103L + // Same as C++14 make_reverse_iterator but used in C++03 mode too. + template + inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> + __make_reverse_iterator(_Iterator __i) + { return reverse_iterator<_Iterator>(__i); } + +# if __cplusplus > 201103L +# define __cpp_lib_make_reverse_iterator 201402 + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 2285. make_reverse_iterator + /// Generator function for reverse_iterator. + template + inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> + make_reverse_iterator(_Iterator __i) + { return reverse_iterator<_Iterator>(__i); } +# endif +#endif + +#if __cplusplus >= 201103L + template + auto + __niter_base(reverse_iterator<_Iterator> __it) + -> decltype(__make_reverse_iterator(__niter_base(__it.base()))) + { return __make_reverse_iterator(__niter_base(__it.base())); } + + template + struct __is_move_iterator > + : __is_move_iterator<_Iterator> + { }; + + template + auto + __miter_base(reverse_iterator<_Iterator> __it) + -> decltype(__make_reverse_iterator(__miter_base(__it.base()))) + { return __make_reverse_iterator(__miter_base(__it.base())); } +#endif + + // 24.4.2.2.1 back_insert_iterator + /** + * @brief Turns assignment into insertion. + * + * These are output iterators, constructed from a container-of-T. + * Assigning a T to the iterator appends it to the container using + * push_back. + * + * Tip: Using the back_inserter function to create these iterators can + * save typing. + */ + template + class back_insert_iterator + : public iterator + { + protected: + _Container* container; + + public: + /// A nested typedef for the type of whatever container you used. + typedef _Container container_type; + + /// The only way to create this %iterator is with a container. + explicit + back_insert_iterator(_Container& __x) + : container(std::__addressof(__x)) { } + + /** + * @param __value An instance of whatever type + * container_type::const_reference is; presumably a + * reference-to-const T for container. + * @return This %iterator, for chained operations. + * + * This kind of %iterator doesn't really have a @a position in the + * container (you can think of the position as being permanently at + * the end, if you like). Assigning a value to the %iterator will + * always append the value to the end of the container. + */ +#if __cplusplus < 201103L + back_insert_iterator& + operator=(typename _Container::const_reference __value) + { + container->push_back(__value); + return *this; + } +#else + back_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_back(__value); + return *this; + } + + back_insert_iterator& + operator=(typename _Container::value_type&& __value) + { + container->push_back(std::move(__value)); + return *this; + } +#endif + + /// Simply returns *this. + back_insert_iterator& + operator*() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + back_insert_iterator& + operator++() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + back_insert_iterator + operator++(int) + { return *this; } + }; + + /** + * @param __x A container of arbitrary type. + * @return An instance of back_insert_iterator working on @p __x. + * + * This wrapper function helps in creating back_insert_iterator instances. + * Typing the name of the %iterator requires knowing the precise full + * type of the container, which can be tedious and impedes generic + * programming. Using this function lets you take advantage of automatic + * template parameter deduction, making the compiler match the correct + * types for you. + */ + template + inline back_insert_iterator<_Container> + back_inserter(_Container& __x) + { return back_insert_iterator<_Container>(__x); } + + /** + * @brief Turns assignment into insertion. + * + * These are output iterators, constructed from a container-of-T. + * Assigning a T to the iterator prepends it to the container using + * push_front. + * + * Tip: Using the front_inserter function to create these iterators can + * save typing. + */ + template + class front_insert_iterator + : public iterator + { + protected: + _Container* container; + + public: + /// A nested typedef for the type of whatever container you used. + typedef _Container container_type; + + /// The only way to create this %iterator is with a container. + explicit front_insert_iterator(_Container& __x) + : container(std::__addressof(__x)) { } + + /** + * @param __value An instance of whatever type + * container_type::const_reference is; presumably a + * reference-to-const T for container. + * @return This %iterator, for chained operations. + * + * This kind of %iterator doesn't really have a @a position in the + * container (you can think of the position as being permanently at + * the front, if you like). Assigning a value to the %iterator will + * always prepend the value to the front of the container. + */ +#if __cplusplus < 201103L + front_insert_iterator& + operator=(typename _Container::const_reference __value) + { + container->push_front(__value); + return *this; + } +#else + front_insert_iterator& + operator=(const typename _Container::value_type& __value) + { + container->push_front(__value); + return *this; + } + + front_insert_iterator& + operator=(typename _Container::value_type&& __value) + { + container->push_front(std::move(__value)); + return *this; + } +#endif + + /// Simply returns *this. + front_insert_iterator& + operator*() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + front_insert_iterator& + operator++() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + front_insert_iterator + operator++(int) + { return *this; } + }; + + /** + * @param __x A container of arbitrary type. + * @return An instance of front_insert_iterator working on @p x. + * + * This wrapper function helps in creating front_insert_iterator instances. + * Typing the name of the %iterator requires knowing the precise full + * type of the container, which can be tedious and impedes generic + * programming. Using this function lets you take advantage of automatic + * template parameter deduction, making the compiler match the correct + * types for you. + */ + template + inline front_insert_iterator<_Container> + front_inserter(_Container& __x) + { return front_insert_iterator<_Container>(__x); } + + /** + * @brief Turns assignment into insertion. + * + * These are output iterators, constructed from a container-of-T. + * Assigning a T to the iterator inserts it in the container at the + * %iterator's position, rather than overwriting the value at that + * position. + * + * (Sequences will actually insert a @e copy of the value before the + * %iterator's position.) + * + * Tip: Using the inserter function to create these iterators can + * save typing. + */ + template + class insert_iterator + : public iterator + { + protected: + _Container* container; + typename _Container::iterator iter; + + public: + /// A nested typedef for the type of whatever container you used. + typedef _Container container_type; + + /** + * The only way to create this %iterator is with a container and an + * initial position (a normal %iterator into the container). + */ + insert_iterator(_Container& __x, typename _Container::iterator __i) + : container(std::__addressof(__x)), iter(__i) {} + + /** + * @param __value An instance of whatever type + * container_type::const_reference is; presumably a + * reference-to-const T for container. + * @return This %iterator, for chained operations. + * + * This kind of %iterator maintains its own position in the + * container. Assigning a value to the %iterator will insert the + * value into the container at the place before the %iterator. + * + * The position is maintained such that subsequent assignments will + * insert values immediately after one another. For example, + * @code + * // vector v contains A and Z + * + * insert_iterator i (v, ++v.begin()); + * i = 1; + * i = 2; + * i = 3; + * + * // vector v contains A, 1, 2, 3, and Z + * @endcode + */ +#if __cplusplus < 201103L + insert_iterator& + operator=(typename _Container::const_reference __value) + { + iter = container->insert(iter, __value); + ++iter; + return *this; + } +#else + insert_iterator& + operator=(const typename _Container::value_type& __value) + { + iter = container->insert(iter, __value); + ++iter; + return *this; + } + + insert_iterator& + operator=(typename _Container::value_type&& __value) + { + iter = container->insert(iter, std::move(__value)); + ++iter; + return *this; + } +#endif + + /// Simply returns *this. + insert_iterator& + operator*() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + insert_iterator& + operator++() + { return *this; } + + /// Simply returns *this. (This %iterator does not @a move.) + insert_iterator& + operator++(int) + { return *this; } + }; + + /** + * @param __x A container of arbitrary type. + * @param __i An iterator into the container. + * @return An instance of insert_iterator working on @p __x. + * + * This wrapper function helps in creating insert_iterator instances. + * Typing the name of the %iterator requires knowing the precise full + * type of the container, which can be tedious and impedes generic + * programming. Using this function lets you take advantage of automatic + * template parameter deduction, making the compiler match the correct + * types for you. + */ + template + inline insert_iterator<_Container> + inserter(_Container& __x, _Iterator __i) + { + return insert_iterator<_Container>(__x, + typename _Container::iterator(__i)); + } + + // @} group iterators + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // This iterator adapter is @a normal in the sense that it does not + // change the semantics of any of the operators of its iterator + // parameter. Its primary purpose is to convert an iterator that is + // not a class, e.g. a pointer, into an iterator that is a class. + // The _Container parameter exists solely so that different containers + // using this template can instantiate different types, even if the + // _Iterator parameter is the same. + using std::iterator_traits; + using std::iterator; + template + class __normal_iterator + { + protected: + _Iterator _M_current; + + typedef iterator_traits<_Iterator> __traits_type; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::iterator_category iterator_category; + typedef typename __traits_type::value_type value_type; + typedef typename __traits_type::difference_type difference_type; + typedef typename __traits_type::reference reference; + typedef typename __traits_type::pointer pointer; + + _GLIBCXX_CONSTEXPR __normal_iterator() _GLIBCXX_NOEXCEPT + : _M_current(_Iterator()) { } + + explicit + __normal_iterator(const _Iterator& __i) _GLIBCXX_NOEXCEPT + : _M_current(__i) { } + + // Allow iterator to const_iterator conversion + template + __normal_iterator(const __normal_iterator<_Iter, + typename __enable_if< + (std::__are_same<_Iter, typename _Container::pointer>::__value), + _Container>::__type>& __i) _GLIBCXX_NOEXCEPT + : _M_current(__i.base()) { } + + // Forward iterator requirements + reference + operator*() const _GLIBCXX_NOEXCEPT + { return *_M_current; } + + pointer + operator->() const _GLIBCXX_NOEXCEPT + { return _M_current; } + + __normal_iterator& + operator++() _GLIBCXX_NOEXCEPT + { + ++_M_current; + return *this; + } + + __normal_iterator + operator++(int) _GLIBCXX_NOEXCEPT + { return __normal_iterator(_M_current++); } + + // Bidirectional iterator requirements + __normal_iterator& + operator--() _GLIBCXX_NOEXCEPT + { + --_M_current; + return *this; + } + + __normal_iterator + operator--(int) _GLIBCXX_NOEXCEPT + { return __normal_iterator(_M_current--); } + + // Random access iterator requirements + reference + operator[](difference_type __n) const _GLIBCXX_NOEXCEPT + { return _M_current[__n]; } + + __normal_iterator& + operator+=(difference_type __n) _GLIBCXX_NOEXCEPT + { _M_current += __n; return *this; } + + __normal_iterator + operator+(difference_type __n) const _GLIBCXX_NOEXCEPT + { return __normal_iterator(_M_current + __n); } + + __normal_iterator& + operator-=(difference_type __n) _GLIBCXX_NOEXCEPT + { _M_current -= __n; return *this; } + + __normal_iterator + operator-(difference_type __n) const _GLIBCXX_NOEXCEPT + { return __normal_iterator(_M_current - __n); } + + const _Iterator& + base() const _GLIBCXX_NOEXCEPT + { return _M_current; } + }; + + // Note: In what follows, the left- and right-hand-side iterators are + // allowed to vary in types (conceptually in cv-qualification) so that + // comparison between cv-qualified and non-cv-qualified iterators be + // valid. However, the greedy and unfriendly operators in std::rel_ops + // will make overload resolution ambiguous (when in scope) if we don't + // provide overloads whose operands are of the same type. Can someone + // remind me what generic programming is about? -- Gaby + + // Forward iterator requirements + template + inline bool + operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() == __rhs.base(); } + + template + inline bool + operator==(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() == __rhs.base(); } + + template + inline bool + operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() != __rhs.base(); } + + template + inline bool + operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() != __rhs.base(); } + + // Random access iterator requirements + template + inline bool + operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() < __rhs.base(); } + + template + inline bool + operator<(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() < __rhs.base(); } + + template + inline bool + operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() > __rhs.base(); } + + template + inline bool + operator>(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() > __rhs.base(); } + + template + inline bool + operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() <= __rhs.base(); } + + template + inline bool + operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() <= __rhs.base(); } + + template + inline bool + operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() >= __rhs.base(); } + + template + inline bool + operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() >= __rhs.base(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // According to the resolution of DR179 not only the various comparison + // operators but also operator- must accept mixed iterator/const_iterator + // parameters. + template +#if __cplusplus >= 201103L + // DR 685. + inline auto + operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept + -> decltype(__lhs.base() - __rhs.base()) +#else + inline typename __normal_iterator<_IteratorL, _Container>::difference_type + operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, + const __normal_iterator<_IteratorR, _Container>& __rhs) +#endif + { return __lhs.base() - __rhs.base(); } + + template + inline typename __normal_iterator<_Iterator, _Container>::difference_type + operator-(const __normal_iterator<_Iterator, _Container>& __lhs, + const __normal_iterator<_Iterator, _Container>& __rhs) + _GLIBCXX_NOEXCEPT + { return __lhs.base() - __rhs.base(); } + + template + inline __normal_iterator<_Iterator, _Container> + operator+(typename __normal_iterator<_Iterator, _Container>::difference_type + __n, const __normal_iterator<_Iterator, _Container>& __i) + _GLIBCXX_NOEXCEPT + { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + _Iterator + __niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) + { return __it.base(); } + +#if __cplusplus >= 201103L + + /** + * @addtogroup iterators + * @{ + */ + + // 24.4.3 Move iterators + /** + * Class template move_iterator is an iterator adapter with the same + * behavior as the underlying iterator except that its dereference + * operator implicitly converts the value returned by the underlying + * iterator's dereference operator to an rvalue reference. Some + * generic algorithms can be called with move iterators to replace + * copying with moving. + */ + template + class move_iterator + { + protected: + _Iterator _M_current; + + typedef iterator_traits<_Iterator> __traits_type; + typedef typename __traits_type::reference __base_ref; + + public: + typedef _Iterator iterator_type; + typedef typename __traits_type::iterator_category iterator_category; + typedef typename __traits_type::value_type value_type; + typedef typename __traits_type::difference_type difference_type; + // NB: DR 680. + typedef _Iterator pointer; + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2106. move_iterator wrapping iterators returning prvalues + typedef typename conditional::value, + typename remove_reference<__base_ref>::type&&, + __base_ref>::type reference; + + _GLIBCXX17_CONSTEXPR + move_iterator() + : _M_current() { } + + explicit _GLIBCXX17_CONSTEXPR + move_iterator(iterator_type __i) + : _M_current(__i) { } + + template + _GLIBCXX17_CONSTEXPR + move_iterator(const move_iterator<_Iter>& __i) + : _M_current(__i.base()) { } + + _GLIBCXX17_CONSTEXPR iterator_type + base() const + { return _M_current; } + + _GLIBCXX17_CONSTEXPR reference + operator*() const + { return static_cast(*_M_current); } + + _GLIBCXX17_CONSTEXPR pointer + operator->() const + { return _M_current; } + + _GLIBCXX17_CONSTEXPR move_iterator& + operator++() + { + ++_M_current; + return *this; + } + + _GLIBCXX17_CONSTEXPR move_iterator + operator++(int) + { + move_iterator __tmp = *this; + ++_M_current; + return __tmp; + } + + _GLIBCXX17_CONSTEXPR move_iterator& + operator--() + { + --_M_current; + return *this; + } + + _GLIBCXX17_CONSTEXPR move_iterator + operator--(int) + { + move_iterator __tmp = *this; + --_M_current; + return __tmp; + } + + _GLIBCXX17_CONSTEXPR move_iterator + operator+(difference_type __n) const + { return move_iterator(_M_current + __n); } + + _GLIBCXX17_CONSTEXPR move_iterator& + operator+=(difference_type __n) + { + _M_current += __n; + return *this; + } + + _GLIBCXX17_CONSTEXPR move_iterator + operator-(difference_type __n) const + { return move_iterator(_M_current - __n); } + + _GLIBCXX17_CONSTEXPR move_iterator& + operator-=(difference_type __n) + { + _M_current -= __n; + return *this; + } + + _GLIBCXX17_CONSTEXPR reference + operator[](difference_type __n) const + { return std::move(_M_current[__n]); } + }; + + // Note: See __normal_iterator operators note from Gaby to understand + // why there are always 2 versions for most of the move_iterator + // operators. + template + inline _GLIBCXX17_CONSTEXPR bool + operator==(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return __x.base() == __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator==(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return __x.base() == __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator!=(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return !(__x == __y); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator!=(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return !(__x == __y); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return __x.base() < __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return __x.base() < __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<=(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return !(__y < __x); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator<=(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return !(__y < __x); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return __y < __x; } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return __y < __x; } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>=(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + { return !(__x < __y); } + + template + inline _GLIBCXX17_CONSTEXPR bool + operator>=(const move_iterator<_Iterator>& __x, + const move_iterator<_Iterator>& __y) + { return !(__x < __y); } + + // DR 685. + template + inline _GLIBCXX17_CONSTEXPR auto + operator-(const move_iterator<_IteratorL>& __x, + const move_iterator<_IteratorR>& __y) + -> decltype(__x.base() - __y.base()) + { return __x.base() - __y.base(); } + + template + inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> + operator+(typename move_iterator<_Iterator>::difference_type __n, + const move_iterator<_Iterator>& __x) + { return __x + __n; } + + template + inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> + make_move_iterator(_Iterator __i) + { return move_iterator<_Iterator>(__i); } + + template::value_type>::value, + _Iterator, move_iterator<_Iterator>>::type> + inline _GLIBCXX17_CONSTEXPR _ReturnType + __make_move_if_noexcept_iterator(_Iterator __i) + { return _ReturnType(__i); } + + // Overload for pointers that matches std::move_if_noexcept more closely, + // returning a constant iterator when we don't want to move. + template::value, + const _Tp*, move_iterator<_Tp*>>::type> + inline _GLIBCXX17_CONSTEXPR _ReturnType + __make_move_if_noexcept_iterator(_Tp* __i) + { return _ReturnType(__i); } + + // @} group iterators + + template + auto + __niter_base(move_iterator<_Iterator> __it) + -> decltype(make_move_iterator(__niter_base(__it.base()))) + { return make_move_iterator(__niter_base(__it.base())); } + + template + struct __is_move_iterator > + { + enum { __value = 1 }; + typedef __true_type __type; + }; + + template + auto + __miter_base(move_iterator<_Iterator> __it) + -> decltype(__miter_base(__it.base())) + { return __miter_base(__it.base()); } + +#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter) +#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) \ + std::__make_move_if_noexcept_iterator(_Iter) +#else +#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter) +#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) (_Iter) +#endif // C++11 + +#if __cpp_deduction_guides >= 201606 + // These helper traits are used for deduction guides + // of associative containers. + template + using __iter_key_t = remove_const_t< + typename iterator_traits<_InputIterator>::value_type::first_type>; + + template + using __iter_val_t = + typename iterator_traits<_InputIterator>::value_type::second_type; + + template + struct pair; + + template + using __iter_to_alloc_t = + pair>, + __iter_val_t<_InputIterator>>; + +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator_base_funcs.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator_base_funcs.h similarity index 94% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator_base_funcs.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator_base_funcs.h index ce6c3d20e..7318635f0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator_base_funcs.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator_base_funcs.h @@ -1,6 +1,6 @@ // Functions used by iterators -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -66,14 +66,14 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + _GLIBCXX_BEGIN_NAMESPACE_CONTAINER // Forward declaration for the overloads of __distance. template struct _List_iterator; template struct _List_const_iterator; _GLIBCXX_END_NAMESPACE_CONTAINER -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template inline _GLIBCXX14_CONSTEXPR typename iterator_traits<_InputIterator>::difference_type @@ -177,7 +177,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // concept requirements __glibcxx_function_requires(_RandomAccessIteratorConcept< _RandomAccessIterator>) - __i += __n; + if (__builtin_constant_p(__n) && __n == 1) + ++__i; + else if (__builtin_constant_p(__n) && __n == -1) + --__i; + else + __i += __n; } /** @@ -203,14 +208,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L - template - inline _GLIBCXX17_CONSTEXPR _ForwardIterator - next(_ForwardIterator __x, typename - iterator_traits<_ForwardIterator>::difference_type __n = 1) + template + inline _GLIBCXX17_CONSTEXPR _InputIterator + next(_InputIterator __x, typename + iterator_traits<_InputIterator>::difference_type __n = 1) { // concept requirements - __glibcxx_function_requires(_ForwardIteratorConcept< - _ForwardIterator>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) std::advance(__x, __n); return __x; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator_base_types.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator_base_types.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator_base_types.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator_base_types.h index d2c36ed2a..b6efc528a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_iterator_base_types.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_iterator_base_types.h @@ -1,6 +1,6 @@ // Types used in iterator implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_list.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_list.h similarity index 92% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_list.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_list.h index 0420dbfbb..bb1910ee4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_list.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_list.h @@ -1,6 +1,6 @@ // List implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -66,10 +66,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - // Supporting structures are split into common and templated // types; the latter publicly inherits from the former in an // effort to reduce code duplication. This results in some @@ -99,7 +99,64 @@ namespace std _GLIBCXX_VISIBILITY(default) _M_unhook() _GLIBCXX_USE_NOEXCEPT; }; - _GLIBCXX_END_NAMESPACE_VERSION + /// The %list node header. + struct _List_node_header : public _List_node_base + { +#if _GLIBCXX_USE_CXX11_ABI + std::size_t _M_size; +#endif + + _List_node_header() _GLIBCXX_NOEXCEPT + { _M_init(); } + +#if __cplusplus >= 201103L + _List_node_header(_List_node_header&& __x) noexcept + : _List_node_base{ __x._M_next, __x._M_prev } +# if _GLIBCXX_USE_CXX11_ABI + , _M_size(__x._M_size) +# endif + { + if (__x._M_base()->_M_next == __x._M_base()) + this->_M_next = this->_M_prev = this; + else + { + this->_M_next->_M_prev = this->_M_prev->_M_next = this->_M_base(); + __x._M_init(); + } + } + + void + _M_move_nodes(_List_node_header&& __x) + { + _List_node_base* const __xnode = __x._M_base(); + if (__xnode->_M_next == __xnode) + _M_init(); + else + { + _List_node_base* const __node = this->_M_base(); + __node->_M_next = __xnode->_M_next; + __node->_M_prev = __xnode->_M_prev; + __node->_M_next->_M_prev = __node->_M_prev->_M_next = __node; +# if _GLIBCXX_USE_CXX11_ABI + _M_size = __x._M_size; +# endif + __x._M_init(); + } + } +#endif + + void + _M_init() _GLIBCXX_NOEXCEPT + { + this->_M_next = this->_M_prev = this; +#if _GLIBCXX_USE_CXX11_ABI + this->_M_size = 0; +#endif + } + + private: + _List_node_base* _M_base() { return this; } + }; } // namespace detail _GLIBCXX_BEGIN_NAMESPACE_CONTAINER @@ -307,6 +364,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 rebind<_List_node<_Tp> >::other _Node_alloc_type; typedef __gnu_cxx::__alloc_traits<_Node_alloc_type> _Node_alloc_traits; +#if !_GLIBCXX_INLINE_VERSION static size_t _S_distance(const __detail::_List_node_base* __first, const __detail::_List_node_base* __last) @@ -319,27 +377,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 } return __n; } +#endif struct _List_impl : public _Node_alloc_type { -#if _GLIBCXX_USE_CXX11_ABI - _List_node _M_node; -#else - __detail::_List_node_base _M_node; -#endif + __detail::_List_node_header _M_node; - _List_impl() _GLIBCXX_NOEXCEPT - : _Node_alloc_type(), _M_node() + _List_impl() _GLIBCXX_NOEXCEPT_IF( + is_nothrow_default_constructible<_Node_alloc_type>::value) + : _Node_alloc_type() { } _List_impl(const _Node_alloc_type& __a) _GLIBCXX_NOEXCEPT - : _Node_alloc_type(__a), _M_node() + : _Node_alloc_type(__a) { } #if __cplusplus >= 201103L + _List_impl(_List_impl&&) = default; + + _List_impl(_Node_alloc_type&& __a, _List_impl&& __x) + : _Node_alloc_type(std::move(__a)), _M_node(std::move(__x._M_node)) + { } + _List_impl(_Node_alloc_type&& __a) noexcept - : _Node_alloc_type(std::move(__a)), _M_node() + : _Node_alloc_type(std::move(__a)) { } #endif }; @@ -347,27 +409,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 _List_impl _M_impl; #if _GLIBCXX_USE_CXX11_ABI - size_t _M_get_size() const { return *_M_impl._M_node._M_valptr(); } + size_t _M_get_size() const { return _M_impl._M_node._M_size; } - void _M_set_size(size_t __n) { *_M_impl._M_node._M_valptr() = __n; } + void _M_set_size(size_t __n) { _M_impl._M_node._M_size = __n; } - void _M_inc_size(size_t __n) { *_M_impl._M_node._M_valptr() += __n; } + void _M_inc_size(size_t __n) { _M_impl._M_node._M_size += __n; } - void _M_dec_size(size_t __n) { *_M_impl._M_node._M_valptr() -= __n; } + void _M_dec_size(size_t __n) { _M_impl._M_node._M_size -= __n; } +# if !_GLIBCXX_INLINE_VERSION size_t _M_distance(const __detail::_List_node_base* __first, const __detail::_List_node_base* __last) const { return _S_distance(__first, __last); } // return the stored size - size_t _M_node_count() const { return *_M_impl._M_node._M_valptr(); } + size_t _M_node_count() const { return _M_get_size(); } +# endif #else // dummy implementations used when the size is not stored size_t _M_get_size() const { return 0; } void _M_set_size(size_t) { } void _M_inc_size(size_t) { } void _M_dec_size(size_t) { } + +# if !_GLIBCXX_INLINE_VERSION size_t _M_distance(const void*, const void*) const { return 0; } // count the number of nodes @@ -376,6 +442,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 return _S_distance(_M_impl._M_node._M_next, std::__addressof(_M_impl._M_node)); } +# endif #endif typename _Node_alloc_traits::pointer @@ -397,44 +464,42 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 _M_get_Node_allocator() const _GLIBCXX_NOEXCEPT { return _M_impl; } - _List_base() - : _M_impl() - { _M_init(); } +#if __cplusplus >= 201103L + _List_base() = default; +#else + _List_base() { } +#endif _List_base(const _Node_alloc_type& __a) _GLIBCXX_NOEXCEPT : _M_impl(__a) - { _M_init(); } + { } #if __cplusplus >= 201103L - _List_base(_List_base&& __x) noexcept - : _M_impl(std::move(__x._M_get_Node_allocator())) - { _M_move_nodes(std::move(__x)); } + _List_base(_List_base&&) = default; +# if !_GLIBCXX_INLINE_VERSION _List_base(_List_base&& __x, _Node_alloc_type&& __a) : _M_impl(std::move(__a)) { if (__x._M_get_Node_allocator() == _M_get_Node_allocator()) _M_move_nodes(std::move(__x)); - else - _M_init(); // Caller must move individual elements. + // else caller must move individual elements. } +# endif + + // Used when allocator is_always_equal. + _List_base(_Node_alloc_type&& __a, _List_base&& __x) + : _M_impl(std::move(__a), std::move(__x._M_impl)) + { } + + // Used when allocator !is_always_equal. + _List_base(_Node_alloc_type&& __a) + : _M_impl(std::move(__a)) + { } void _M_move_nodes(_List_base&& __x) - { - auto* const __xnode = std::__addressof(__x._M_impl._M_node); - if (__xnode->_M_next == __xnode) - _M_init(); - else - { - auto* const __node = std::__addressof(_M_impl._M_node); - __node->_M_next = __xnode->_M_next; - __node->_M_prev = __xnode->_M_prev; - __node->_M_next->_M_prev = __node->_M_prev->_M_next = __node; - _M_set_size(__x._M_get_size()); - __x._M_init(); - } - } + { _M_impl._M_node._M_move_nodes(std::move(__x._M_impl._M_node)); } #endif // This is what actually destroys the list. @@ -446,11 +511,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 void _M_init() _GLIBCXX_NOEXCEPT - { - this->_M_impl._M_node._M_next = &this->_M_impl._M_node; - this->_M_impl._M_node._M_prev = &this->_M_impl._M_node; - _M_set_size(0); - } + { this->_M_impl._M_node._M_init(); } }; /** @@ -511,6 +572,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L + static_assert(is_same::type, _Tp>::value, + "std::list must have a non-const, non-volatile value_type"); +# ifdef __STRICT_ANSI__ + static_assert(is_same::value, + "std::list must have the same value_type as its allocator"); +# endif +#endif + typedef _List_base<_Tp, _Alloc> _Base; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef typename _Base::_Tp_alloc_traits _Tp_alloc_traits; @@ -579,6 +649,27 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 } #endif +#if _GLIBCXX_USE_CXX11_ABI + static size_t + _S_distance(const_iterator __first, const_iterator __last) + { return std::distance(__first, __last); } + + // return the stored size + size_t + _M_node_count() const + { return this->_M_get_size(); } +#else + // dummy implementations used when the size is not stored + static size_t + _S_distance(const_iterator, const_iterator) + { return 0; } + + // count the number of nodes + size_t + _M_node_count() const + { return std::distance(begin(), end()); } +#endif + public: // [23.2.2.1] construct/copy/destroy // (assign() and get_allocator() are also listed in this section) @@ -586,11 +677,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 /** * @brief Creates a %list with no elements. */ - list() #if __cplusplus >= 201103L - noexcept(is_nothrow_default_constructible<_Node_alloc_type>::value) + list() = default; +#else + list() { } #endif - : _Base() { } /** * @brief Creates a %list with no elements. @@ -657,13 +748,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 #if __cplusplus >= 201103L /** * @brief %List move constructor. - * @param __x A %list of identical element and allocator types. * - * The newly-created %list contains the exact contents of @a __x. - * The contents of @a __x are a valid, but unspecified %list. + * The newly-created %list contains the exact contents of the moved + * instance. The contents of the moved instance are a valid, but + * unspecified %list. */ - list(list&& __x) noexcept - : _Base(std::move(__x)) { } + list(list&&) = default; /** * @brief Builds a %list from an initializer_list @@ -682,15 +772,27 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 : _Base(_Node_alloc_type(__a)) { _M_initialize_dispatch(__x.begin(), __x.end(), __false_type()); } + private: + list(list&& __x, const allocator_type& __a, true_type) noexcept + : _Base(_Node_alloc_type(__a), std::move(__x)) + { } + + list(list&& __x, const allocator_type& __a, false_type) + : _Base(_Node_alloc_type(__a)) + { + if (__x._M_get_Node_allocator() == this->_M_get_Node_allocator()) + this->_M_move_nodes(std::move(__x)); + else + insert(begin(), std::__make_move_if_noexcept_iterator(__x.begin()), + std::__make_move_if_noexcept_iterator(__x.end())); + } + + public: list(list&& __x, const allocator_type& __a) noexcept(_Node_alloc_traits::_S_always_equal()) - : _Base(std::move(__x), _Node_alloc_type(__a)) - { - // If __x is not empty it means its allocator is not equal to __a, - // so we need to move from each element individually. - insert(begin(), std::__make_move_if_noexcept_iterator(__x.begin()), - std::__make_move_if_noexcept_iterator(__x.end())); - } + : list(std::move(__x), __a, + typename _Node_alloc_traits::is_always_equal{}) + { } #endif /** @@ -964,7 +1066,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 /** Returns the number of elements in the %list. */ size_type size() const _GLIBCXX_NOEXCEPT - { return this->_M_node_count(); } + { return _M_node_count(); } /** Returns the size() of the largest possible %list. */ size_type @@ -1542,7 +1644,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 if (this != std::__addressof(__x)) _M_check_equal_allocators(__x); - size_t __n = this->_M_distance(__first._M_node, __last._M_node); + size_t __n = _S_distance(__first, __last); this->_M_inc_size(__n); __x._M_dec_size(__n); @@ -1838,17 +1940,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 _M_move_assign(list&& __x, true_type) noexcept { this->_M_clear(); - if (__x.empty()) - this->_M_init(); - else - { - this->_M_impl._M_node._M_next = __x._M_impl._M_node._M_next; - this->_M_impl._M_node._M_next->_M_prev = &this->_M_impl._M_node; - this->_M_impl._M_node._M_prev = __x._M_impl._M_node._M_prev; - this->_M_impl._M_node._M_prev->_M_next = &this->_M_impl._M_node; - this->_M_set_size(__x._M_get_size()); - __x._M_init(); - } + this->_M_move_nodes(std::move(__x)); std::__alloc_on_move(this->_M_get_Node_allocator(), __x._M_get_Node_allocator()); } @@ -1867,6 +1959,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 } #endif }; + +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + list(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> list<_ValT, _Allocator>; +#endif + _GLIBCXX_END_NAMESPACE_CXX11 /** @@ -1953,7 +2056,6 @@ _GLIBCXX_END_NAMESPACE_CXX11 _GLIBCXX_END_NAMESPACE_CONTAINER #if _GLIBCXX_USE_CXX11_ABI -_GLIBCXX_BEGIN_NAMESPACE_VERSION // Detect when distance is used to compute the size of the whole list. template @@ -1972,12 +2074,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_STD_C::_List_const_iterator<_Tp> __last, input_iterator_tag) { - typedef _GLIBCXX_STD_C::_List_node _Sentinel; + typedef __detail::_List_node_header _Sentinel; _GLIBCXX_STD_C::_List_const_iterator<_Tp> __beyond = __last; ++__beyond; - bool __whole = __first == __beyond; + const bool __whole = __first == __beyond; if (__builtin_constant_p (__whole) && __whole) - return *static_cast(__last._M_node)->_M_valptr(); + return static_cast(__last._M_node)->_M_size; ptrdiff_t __n = 0; while (__first != __last) @@ -1987,9 +2089,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } return __n; } +#endif _GLIBCXX_END_NAMESPACE_VERSION -#endif } // namespace std #endif /* _STL_LIST_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_map.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_map.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_map.h index ea0e32777..da7c56c33 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_map.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_map.h @@ -1,6 +1,6 @@ // Map implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -65,6 +65,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template @@ -117,6 +118,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L && defined(__STRICT_ANSI__) + static_assert(is_same::value, + "std::map must have the same value_type as its allocator"); +#endif + public: class value_compare : public std::binary_function @@ -627,7 +633,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } template - friend class _Rb_tree_merge_helper; + friend class std::_Rb_tree_merge_helper; template void @@ -802,12 +808,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER insert(value_type&& __x) { return _M_t._M_insert_unique(std::move(__x)); } - template::value>::type> - std::pair + template + __enable_if_t::value, + pair> insert(_Pair&& __x) - { return _M_t._M_insert_unique(std::forward<_Pair>(__x)); } + { return _M_t._M_emplace_unique(std::forward<_Pair>(__x)); } #endif // @} @@ -863,13 +868,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER insert(const_iterator __position, value_type&& __x) { return _M_t._M_insert_unique_(__position, std::move(__x)); } - template::value>::type> - iterator + template + __enable_if_t::value, iterator> insert(const_iterator __position, _Pair&& __x) - { return _M_t._M_insert_unique_(__position, - std::forward<_Pair>(__x)); } + { + return _M_t._M_emplace_hint_unique(__position, + std::forward<_Pair>(__x)); + } #endif // @} @@ -1380,6 +1385,40 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER const map<_K1, _T1, _C1, _A1>&); }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + map(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + map(initializer_list>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> map<_Key, _Tp, _Compare, _Allocator>; + + template , + typename = _RequireAllocator<_Allocator>> + map(_InputIterator, _InputIterator, _Allocator) + -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + less<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + map(initializer_list>, _Allocator) + -> map<_Key, _Tp, less<_Key>, _Allocator>; + +#endif + /** * @brief Map equality comparison. * @param __x A %map. @@ -1452,7 +1491,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_CONTAINER #if __cplusplus > 201402L -_GLIBCXX_BEGIN_NAMESPACE_VERSION // Allow std::map access to internals of compatible maps. template @@ -1471,9 +1509,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _S_get_tree(_GLIBCXX_STD_C::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) { return __map._M_t; } }; -_GLIBCXX_END_NAMESPACE_VERSION #endif // C++17 +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_MAP_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_multimap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_multimap.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_multimap.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_multimap.h index 68ffea3ad..efd355f25 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_multimap.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_multimap.h @@ -1,6 +1,6 @@ // Multimap implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -63,6 +63,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template @@ -116,6 +117,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_class_requires2(value_type, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L && defined(__STRICT_ANSI__) + static_assert(is_same::value, + "std::multimap must have the same value_type as its allocator"); +#endif + public: class value_compare : public std::binary_function @@ -538,12 +544,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER insert(value_type&& __x) { return _M_t._M_insert_equal(std::move(__x)); } - template::value>::type> - iterator + template + __enable_if_t::value, iterator> insert(_Pair&& __x) - { return _M_t._M_insert_equal(std::forward<_Pair>(__x)); } + { return _M_t._M_emplace_equal(std::forward<_Pair>(__x)); } #endif // @} @@ -583,13 +587,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER insert(const_iterator __position, value_type&& __x) { return _M_t._M_insert_equal_(__position, std::move(__x)); } - template::value>::type> - iterator + template + __enable_if_t::value, iterator> insert(const_iterator __position, _Pair&& __x) - { return _M_t._M_insert_equal_(__position, - std::forward<_Pair>(__x)); } + { + return _M_t._M_emplace_hint_equal(__position, + std::forward<_Pair>(__x)); + } #endif // @} @@ -645,7 +649,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } template - friend class _Rb_tree_merge_helper; + friend class std::_Rb_tree_merge_helper; template void @@ -1046,6 +1050,39 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER const multimap<_K1, _T1, _C1, _A1>&); }; +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + multimap(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + multimap(initializer_list>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multimap<_Key, _Tp, _Compare, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + multimap(_InputIterator, _InputIterator, _Allocator) + -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + less<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + multimap(initializer_list>, _Allocator) + -> multimap<_Key, _Tp, less<_Key>, _Allocator>; + +#endif + /** * @brief Multimap equality comparison. * @param __x A %multimap. @@ -1118,7 +1155,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_CONTAINER #if __cplusplus > 201402L -_GLIBCXX_BEGIN_NAMESPACE_VERSION // Allow std::multimap access to internals of compatible maps. template @@ -1137,9 +1173,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _S_get_tree(_GLIBCXX_STD_C::multimap<_Key, _Val, _Cmp2, _Alloc>& __map) { return __map._M_t; } }; -_GLIBCXX_END_NAMESPACE_VERSION #endif // C++17 +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_MULTIMAP_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_multiset.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_multiset.h similarity index 94% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_multiset.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_multiset.h index 60a3db844..f41f56c94 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_multiset.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_multiset.h @@ -1,6 +1,6 @@ // Multiset implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -63,6 +63,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template @@ -105,6 +106,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L + static_assert(is_same::type, _Key>::value, + "std::multiset must have a non-const, non-volatile value_type"); +# ifdef __STRICT_ANSI__ + static_assert(is_same::value, + "std::multiset must have the same value_type as its allocator"); +# endif +#endif + public: // typedefs: typedef _Key key_type; @@ -579,7 +589,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { return _M_t._M_reinsert_node_hint_equal(__hint, std::move(__nh)); } template - friend class _Rb_tree_merge_helper; + friend class std::_Rb_tree_merge_helper; template void @@ -880,6 +890,43 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER const multiset<_K1, _C1, _A1>&); }; +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + multiset(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multiset::value_type, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator<_Key>, + typename = _RequireAllocator<_Allocator>> + multiset(initializer_list<_Key>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multiset<_Key, _Compare, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + multiset(_InputIterator, _InputIterator, _Allocator) + -> multiset::value_type, + less::value_type>, + _Allocator>; + + template> + multiset(initializer_list<_Key>, _Allocator) + -> multiset<_Key, less<_Key>, _Allocator>; + +#endif + /** * @brief Multiset equality comparison. * @param __x A %multiset. @@ -953,7 +1000,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_CONTAINER #if __cplusplus > 201402L -_GLIBCXX_BEGIN_NAMESPACE_VERSION // Allow std::multiset access to internals of compatible sets. template struct @@ -971,9 +1017,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _S_get_tree(_GLIBCXX_STD_C::multiset<_Val, _Cmp2, _Alloc>& __set) { return __set._M_t; } }; -_GLIBCXX_END_NAMESPACE_VERSION + #endif // C++17 +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_MULTISET_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_numeric.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_numeric.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_numeric.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_numeric.h index 9f9816428..dcc29fe06 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_numeric.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_numeric.h @@ -1,6 +1,6 @@ // Numeric functions implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_pair.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_pair.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_pair.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_pair.h index b6245b65c..48af2b02e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_pair.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_pair.h @@ -1,6 +1,6 @@ // Pair implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -185,8 +185,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __nonesuch_no_braces : std::__nonesuch { explicit __nonesuch_no_braces(const __nonesuch&) = delete; }; +#endif // C++11 -#endif + template class __pair_base + { +#if __cplusplus >= 201103L + template 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 + }; /** * @brief Struct holding two objects of arbitrary type. @@ -196,6 +206,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ template 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 @@ -374,19 +385,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return *this; } - pair& - operator=(typename conditional< - __not_<__and_, - is_copy_assignable<_T2>>>::value, - const pair&, const __nonesuch_no_braces&>::type __p) = delete; - pair& operator=(typename conditional< __and_, is_move_assignable<_T2>>::value, pair&&, __nonesuch_no_braces&&>::type __p) noexcept(__and_, - is_nothrow_move_assignable<_T2>>::value) + is_nothrow_move_assignable<_T2>>::value) { first = std::forward(__p.first); second = std::forward(__p.second); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_queue.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_queue.h similarity index 91% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_queue.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_queue.h index c49f371fb..f6828def5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_queue.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_queue.h @@ -1,6 +1,6 @@ // Queue implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -302,6 +302,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // __cplusplus >= 201103L }; +#if __cpp_deduction_guides >= 201606 + template::value>> + queue(_Container) -> queue; + + template::value>, + typename = enable_if_t<__is_allocator<_Allocator>::value>> + queue(_Container, _Allocator) + -> queue; +#endif + /** * @brief Queue equality comparison. * @param __x A %queue. @@ -492,14 +504,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION priority_queue(const _Compare& __x, const _Alloc& __a) : c(__a), comp(__x) { } + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2537. Constructors [...] taking allocators should call make_heap template> priority_queue(const _Compare& __x, const _Sequence& __c, const _Alloc& __a) - : c(__c, __a), comp(__x) { } + : c(__c, __a), comp(__x) + { std::make_heap(c.begin(), c.end(), comp); } template> priority_queue(const _Compare& __x, _Sequence&& __c, const _Alloc& __a) - : c(std::move(__c), __a), comp(__x) { } + : c(std::move(__c), __a), comp(__x) + { std::make_heap(c.begin(), c.end(), comp); } template> priority_queue(const priority_queue& __q, const _Alloc& __a) @@ -653,6 +669,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // __cplusplus >= 201103L }; +#if __cpp_deduction_guides >= 201606 + template::value>, + typename = enable_if_t::value>> + priority_queue(_Compare, _Container) + -> priority_queue; + + template::value_type, + typename _Compare = less<_ValT>, + typename _Container = vector<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = enable_if_t::value>, + typename = enable_if_t::value>> + priority_queue(_InputIterator, _InputIterator, _Compare = _Compare(), + _Container = _Container()) + -> priority_queue<_ValT, _Container, _Compare>; + + template::value>, + typename = enable_if_t::value>, + typename = enable_if_t<__is_allocator<_Allocator>::value>> + priority_queue(_Compare, _Container, _Allocator) + -> priority_queue; +#endif + // No equality/comparison operators are provided for priority_queue. #if __cplusplus >= 201103L diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_raw_storage_iter.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_raw_storage_iter.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_raw_storage_iter.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_raw_storage_iter.h index 4ad9a9137..eabe20f7b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_raw_storage_iter.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_raw_storage_iter.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_relops.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_relops.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_relops.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_relops.h index a2614bd30..568ae8830 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_relops.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_relops.h @@ -1,6 +1,6 @@ // std::rel_ops implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -66,10 +66,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace rel_ops { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** @namespace std::rel_ops * @brief The generated relational operators are sequestered here. */ @@ -125,10 +125,9 @@ namespace std _GLIBCXX_VISIBILITY(default) inline bool operator>=(const _Tp& __x, const _Tp& __y) { return !(__x < __y); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace rel_ops +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_RELOPS_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_set.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_set.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_set.h index 817bc2d87..2e332efa4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_set.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_set.h @@ -1,6 +1,6 @@ // Set implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -63,6 +63,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template @@ -103,6 +104,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_class_requires2(_Key, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L + static_assert(is_same::type, _Key>::value, + "std::set must have a non-const, non-volatile value_type"); +# ifdef __STRICT_ANSI__ + static_assert(is_same::value, + "std::set must have the same value_type as its allocator"); +# endif +#endif + public: // typedefs: //@{ @@ -594,7 +604,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { return _M_t._M_reinsert_node_hint_unique(__hint, std::move(__nh)); } template - friend class _Rb_tree_merge_helper; + friend class std::_Rb_tree_merge_helper; template void @@ -897,6 +907,41 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); }; +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + set(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> set::value_type, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator<_Key>, + typename = _RequireAllocator<_Allocator>> + set(initializer_list<_Key>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> set<_Key, _Compare, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + set(_InputIterator, _InputIterator, _Allocator) + -> set::value_type, + less::value_type>, + _Allocator>; + + template> + set(initializer_list<_Key>, _Allocator) + -> set<_Key, less<_Key>, _Allocator>; + +#endif /** * @brief Set equality comparison. @@ -969,7 +1014,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_CONTAINER #if __cplusplus > 201402L -_GLIBCXX_BEGIN_NAMESPACE_VERSION // Allow std::set access to internals of compatible sets. template struct @@ -986,8 +1030,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _S_get_tree(_GLIBCXX_STD_C::multiset<_Val, _Cmp2, _Alloc>& __set) { return __set._M_t; } }; -_GLIBCXX_END_NAMESPACE_VERSION #endif // C++17 +_GLIBCXX_END_NAMESPACE_VERSION } //namespace std #endif /* _STL_SET_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_stack.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_stack.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_stack.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_stack.h index 5f2b4ab44..c83289a55 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_stack.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_stack.h @@ -1,6 +1,6 @@ // Stack implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -276,6 +276,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif // __cplusplus >= 201103L }; +#if __cpp_deduction_guides >= 201606 + template::value>> + stack(_Container) -> stack; + + template::value>, + typename = enable_if_t<__is_allocator<_Allocator>::value>> + stack(_Container, _Allocator) + -> stack; +#endif + /** * @brief Stack equality comparison. * @param __x A %stack. diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_tempbuf.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_tempbuf.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_tempbuf.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_tempbuf.h index 03b4cd29f..56c4ac574 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_tempbuf.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_tempbuf.h @@ -1,6 +1,6 @@ // Temporary buffer implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_tree.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_tree.h similarity index 93% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_tree.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_tree.h index b08496f10..fd96a6359 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_tree.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_tree.h @@ -1,6 +1,6 @@ // RB tree implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -91,7 +91,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // time begin(), and to the rightmost node of the tree, to enable // linear time performance when used with the generic set algorithms // (set_union, etc.) - // + // // (2) when a node being deleted has two children its successor node // is relinked into its place, rather than copied, so that the only // iterators invalidated are those referring to the deleted node. @@ -260,11 +260,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef _Tp* pointer; typedef bidirectional_iterator_tag iterator_category; - typedef ptrdiff_t difference_type; + typedef ptrdiff_t difference_type; - typedef _Rb_tree_iterator<_Tp> _Self; + typedef _Rb_tree_iterator<_Tp> _Self; typedef _Rb_tree_node_base::_Base_ptr _Base_ptr; - typedef _Rb_tree_node<_Tp>* _Link_type; + typedef _Rb_tree_node<_Tp>* _Link_type; _Rb_tree_iterator() _GLIBCXX_NOEXCEPT : _M_node() { } @@ -325,18 +325,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct _Rb_tree_const_iterator { - typedef _Tp value_type; + typedef _Tp value_type; typedef const _Tp& reference; typedef const _Tp* pointer; typedef _Rb_tree_iterator<_Tp> iterator; typedef bidirectional_iterator_tag iterator_category; - typedef ptrdiff_t difference_type; + typedef ptrdiff_t difference_type; - typedef _Rb_tree_const_iterator<_Tp> _Self; - typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; - typedef const _Rb_tree_node<_Tp>* _Link_type; + typedef _Rb_tree_const_iterator<_Tp> _Self; + typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr; + typedef const _Rb_tree_node<_Tp>* _Link_type; _Rb_tree_const_iterator() _GLIBCXX_NOEXCEPT : _M_node() { } @@ -404,20 +404,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template inline bool operator==(const _Rb_tree_iterator<_Val>& __x, - const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT + const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT { return __x._M_node == __y._M_node; } template inline bool operator!=(const _Rb_tree_iterator<_Val>& __x, - const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT + const _Rb_tree_const_iterator<_Val>& __y) _GLIBCXX_NOEXCEPT { return __x._M_node != __y._M_node; } void _Rb_tree_insert_and_rebalance(const bool __insert_left, - _Rb_tree_node_base* __x, - _Rb_tree_node_base* __p, - _Rb_tree_node_base& __header) throw (); + _Rb_tree_node_base* __x, + _Rb_tree_node_base* __p, + _Rb_tree_node_base& __header) throw (); _Rb_tree_node_base* _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z, @@ -440,11 +440,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template > + typename _Compare, typename _Alloc = allocator<_Val> > class _Rb_tree { typedef typename __gnu_cxx::__alloc_traits<_Alloc>::template - rebind<_Rb_tree_node<_Val> >::other _Node_allocator; + rebind<_Rb_tree_node<_Val> >::other _Node_allocator; typedef __gnu_cxx::__alloc_traits<_Node_allocator> _Alloc_traits; @@ -572,11 +572,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Node_allocator& _M_get_Node_allocator() _GLIBCXX_NOEXCEPT - { return *static_cast<_Node_allocator*>(&this->_M_impl); } - + { return this->_M_impl; } + const _Node_allocator& _M_get_Node_allocator() const _GLIBCXX_NOEXCEPT - { return *static_cast(&this->_M_impl); } + { return this->_M_impl; } allocator_type get_allocator() const _GLIBCXX_NOEXCEPT @@ -636,8 +636,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - _Link_type - _M_create_node(_Args&&... __args) + _Link_type + _M_create_node(_Args&&... __args) { _Link_type __tmp = _M_get_node(); _M_construct_node(__tmp, std::forward<_Args>(__args)...); @@ -671,23 +671,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } protected: +#if _GLIBCXX_INLINE_VERSION + template +#else // Unused _Is_pod_comparator is kept as it is part of mangled name. template - struct _Rb_tree_impl +#endif + struct _Rb_tree_impl : public _Node_allocator , public _Rb_tree_key_compare<_Key_compare> , public _Rb_tree_header - { + { typedef _Rb_tree_key_compare<_Key_compare> _Base_key_compare; -#if __cplusplus < 201103L _Rb_tree_impl() + _GLIBCXX_NOEXCEPT_IF( + is_nothrow_default_constructible<_Node_allocator>::value + && is_nothrow_default_constructible<_Base_key_compare>::value ) + : _Node_allocator() { } -#else - _Rb_tree_impl() = default; - _Rb_tree_impl(_Rb_tree_impl&&) = default; -#endif _Rb_tree_impl(const _Rb_tree_impl& __x) : _Node_allocator(_Alloc_traits::_S_select_on_copy(__x)) @@ -699,6 +702,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION : _Node_allocator(__a), _Base_key_compare(__comp) { } #else + _Rb_tree_impl(_Rb_tree_impl&&) = default; + _Rb_tree_impl(const _Key_compare& __comp, _Node_allocator&& __a) : _Node_allocator(std::move(__a)), _Base_key_compare(__comp) { } @@ -830,19 +835,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION private: #if __cplusplus >= 201103L template - iterator + iterator _M_insert_(_Base_ptr __x, _Base_ptr __y, _Arg&& __v, _NodeGen&); iterator _M_insert_node(_Base_ptr __x, _Base_ptr __y, _Link_type __z); template - iterator - _M_insert_lower(_Base_ptr __y, _Arg&& __v); + iterator + _M_insert_lower(_Base_ptr __y, _Arg&& __v); template - iterator - _M_insert_equal_lower(_Arg&& __x); + iterator + _M_insert_equal_lower(_Arg&& __x); iterator _M_insert_lower_node(_Base_ptr __p, _Link_type __z); @@ -946,7 +951,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif ~_Rb_tree() _GLIBCXX_NOEXCEPT - { _M_erase(_M_begin()); } + { + _M_erase(_M_begin()); + +#if __cplusplus >= 201103L + static_assert(__is_invocable<_Compare&, const _Key&, const _Key&>{}, + "comparison object must be invocable " + "with two arguments of key type"); +# if __cplusplus >= 201703L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2542. Missing const requirements for associative containers + static_assert(is_invocable_v, + "comparison object must be invocable as const"); +# endif // C++17 +#endif // C++11 + } _Rb_tree& operator=(const _Rb_tree& __x); @@ -993,7 +1012,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { return _M_impl._M_node_count == 0; } size_type - size() const _GLIBCXX_NOEXCEPT + size() const _GLIBCXX_NOEXCEPT { return _M_impl._M_node_count; } size_type @@ -1007,15 +1026,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Insert/erase. #if __cplusplus >= 201103L template - pair - _M_insert_unique(_Arg&& __x); + pair + _M_insert_unique(_Arg&& __x); template - iterator - _M_insert_equal(_Arg&& __x); + iterator + _M_insert_equal(_Arg&& __x); template - iterator + iterator _M_insert_unique_(const_iterator __pos, _Arg&& __x, _NodeGen&); template @@ -1085,12 +1104,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template - void - _M_insert_unique(_InputIterator __first, _InputIterator __last); + void + _M_insert_unique(_InputIterator __first, _InputIterator __last); template - void - _M_insert_equal(_InputIterator __first, _InputIterator __last); + void + _M_insert_equal(_InputIterator __first, _InputIterator __last); private: void @@ -1168,7 +1187,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void clear() _GLIBCXX_NOEXCEPT { - _M_erase(_M_begin()); + _M_erase(_M_begin()); _M_impl._M_reset(); } @@ -1528,7 +1547,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; template + typename _Compare, typename _Alloc> inline bool operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) @@ -1538,7 +1557,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline bool operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) @@ -1548,35 +1567,35 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline bool operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return !(__x == __y); } template + typename _Compare, typename _Alloc> inline bool operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return __y < __x; } template + typename _Compare, typename _Alloc> inline bool operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return !(__y < __x); } template + typename _Compare, typename _Alloc> inline bool operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) { return !(__x < __y); } template + typename _Compare, typename _Alloc> inline void swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x, _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y) @@ -1584,7 +1603,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L template + typename _Compare, typename _Alloc> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _Rb_tree(_Rb_tree&& __x, _Node_allocator&& __a) : _M_impl(__x._M_impl._M_key_compare, std::move(__a)) @@ -1595,7 +1614,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_move_data(_Rb_tree& __x, std::false_type) @@ -1616,7 +1635,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_move_assign(_Rb_tree& __x, true_type) @@ -1629,7 +1648,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_move_assign(_Rb_tree& __x, false_type) @@ -1655,7 +1674,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> inline _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: operator=(_Rb_tree&& __x) @@ -1668,7 +1687,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1681,7 +1700,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1695,7 +1714,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template + typename _Compare, typename _Alloc> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: operator=(const _Rb_tree& __x) @@ -1730,7 +1749,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #else @@ -1759,7 +1778,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -1784,7 +1803,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -1802,7 +1821,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { __y = __x; __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ? - _S_left(__x) : _S_right(__x); + _S_left(__x) : _S_right(__x); } return _M_insert_lower(__y, _GLIBCXX_FORWARD(_Arg, __v)); } @@ -1845,7 +1864,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_erase(_Link_type __x) @@ -1861,7 +1880,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1877,7 +1896,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1893,7 +1912,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1909,7 +1928,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -1925,7 +1944,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::iterator, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -1948,7 +1967,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __y = __x, __x = _S_left(__x); __xu = _S_right(__xu); return pair(_M_lower_bound(__x, __y, __k), + iterator>(_M_lower_bound(__x, __y, __k), _M_upper_bound(__xu, __yu, __k)); } } @@ -1957,7 +1976,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::const_iterator, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -1980,7 +1999,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __y = __x, __x = _S_left(__x); __xu = _S_right(__xu); return pair(_M_lower_bound(__x, __y, __k), + const_iterator>(_M_lower_bound(__x, __y, __k), _M_upper_bound(__xu, __yu, __k)); } } @@ -1989,7 +2008,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: swap(_Rb_tree& __t) @@ -2007,7 +2026,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::swap(_M_root(),__t._M_root()); std::swap(_M_leftmost(),__t._M_leftmost()); std::swap(_M_rightmost(),__t._M_rightmost()); - + _M_root()->_M_parent = _M_end(); __t._M_root()->_M_parent = __t._M_end(); std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count); @@ -2020,7 +2039,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -2052,7 +2071,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, typename _Rb_tree<_Key, _Val, _KeyOfValue, @@ -2067,13 +2086,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { __y = __x; __x = _M_impl._M_key_compare(__k, _S_key(__x)) ? - _S_left(__x) : _S_right(__x); + _S_left(__x) : _S_right(__x); } return _Res(__x, __y); } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -2102,7 +2121,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #endif @@ -2122,10 +2141,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, - typename _Rb_tree<_Key, _Val, _KeyOfValue, + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Base_ptr> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_get_insert_hint_unique_pos(const_iterator __position, @@ -2181,7 +2200,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #else @@ -2208,10 +2227,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> pair::_Base_ptr, - typename _Rb_tree<_Key, _Val, _KeyOfValue, + typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Base_ptr> _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_get_insert_hint_equal_pos(const_iterator __position, const key_type& __k) @@ -2246,7 +2265,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } else { - // ... then try after. + // ... then try after. iterator __after = __pos; if (__pos._M_node == _M_rightmost()) return _Res(0, _M_rightmost()); @@ -2263,7 +2282,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> #if __cplusplus >= 201103L template #else @@ -2292,7 +2311,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #if __cplusplus >= 201103L template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_node(_Base_ptr __x, _Base_ptr __p, _Link_type __z) @@ -2308,7 +2327,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_lower_node(_Base_ptr __p, _Link_type __z) @@ -2324,7 +2343,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_insert_equal_lower_node(_Link_type __z) @@ -2335,13 +2354,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { __y = __x; __x = !_M_impl._M_key_compare(_S_key(__x), _S_key(__z)) ? - _S_left(__x) : _S_right(__x); + _S_left(__x) : _S_right(__x); } return _M_insert_lower_node(__y, __z); } template + typename _Compare, typename _Alloc> template pair::iterator, bool> @@ -2368,7 +2387,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2389,7 +2408,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2415,7 +2434,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> template typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2441,7 +2460,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif template + typename _Cmp, typename _Alloc> template void _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: @@ -2453,7 +2472,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Cmp, typename _Alloc> template void _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>:: @@ -2465,7 +2484,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_erase_aux(const_iterator __position) @@ -2479,7 +2498,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: _M_erase_aux(const_iterator __first, const_iterator __last) @@ -2492,7 +2511,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: erase(const _Key& __x) @@ -2504,7 +2523,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> void _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: erase(const _Key* __first, const _Key* __last) @@ -2514,7 +2533,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2527,7 +2546,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: @@ -2535,12 +2554,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { const_iterator __j = _M_lower_bound(_M_begin(), _M_end(), __k); return (__j == end() - || _M_impl._M_key_compare(__k, + || _M_impl._M_key_compare(__k, _S_key(__j._M_node))) ? end() : __j; } template + typename _Compare, typename _Alloc> typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>:: count(const _Key& __k) const @@ -2552,10 +2571,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_PURE unsigned int _Rb_tree_black_count(const _Rb_tree_node_base* __node, - const _Rb_tree_node_base* __root) throw (); + const _Rb_tree_node_base* __root) throw (); template + typename _Compare, typename _Alloc> bool _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const { diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_uninitialized.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_uninitialized.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_uninitialized.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_uninitialized.h index c2ba863ed..bb460f28e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_uninitialized.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_uninitialized.h @@ -1,6 +1,6 @@ // Raw memory manipulators -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -206,7 +206,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ForwardIterator __cur = __first; __try { - for (; __n > 0; --__n, ++__cur) + for (; __n > 0; --__n, (void) ++__cur) std::_Construct(std::__addressof(*__cur), __x); return __cur; } @@ -347,7 +347,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __try { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; - for (; __n > 0; --__n, ++__cur) + for (; __n > 0; --__n, (void) ++__cur) __traits::construct(__alloc, std::__addressof(*__cur), __x); return __cur; } @@ -523,7 +523,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ForwardIterator __cur = __first; __try { - for (; __n > 0; --__n, ++__cur) + for (; __n > 0; --__n, (void) ++__cur) std::_Construct(std::__addressof(*__cur)); return __cur; } @@ -627,7 +627,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __try { typedef __gnu_cxx::__alloc_traits<_Allocator> __traits; - for (; __n > 0; --__n, ++__cur) + for (; __n > 0; --__n, (void) ++__cur) __traits::construct(__alloc, std::__addressof(*__cur)); return __cur; } @@ -687,7 +687,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ForwardIterator __cur = __first; __try { - for (; __n > 0; --__n, ++__cur) + for (; __n > 0; --__n, (void) ++__cur) std::_Construct_novalue(std::__addressof(*__cur)); return __cur; } @@ -747,7 +747,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ForwardIterator __cur = __result; __try { - for (; __n > 0; --__n, ++__first, ++__cur) + for (; __n > 0; --__n, (void) ++__first, ++__cur) std::_Construct(std::__addressof(*__cur), *__first); return __cur; } @@ -775,7 +775,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _ForwardIterator __cur = __result; __try { - for (; __n > 0; --__n, ++__first, ++__cur) + for (; __n > 0; --__n, (void) ++__first, ++__cur) std::_Construct(std::__addressof(*__cur), *__first); return {__first, __cur}; } @@ -826,7 +826,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif -#if __cplusplus > 201402L +#if __cplusplus >= 201703L +# define __cpp_lib_raw_memory_algorithms 201606L + template inline void uninitialized_default_construct(_ForwardIterator __first, @@ -877,7 +879,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __count, __result); return {__res.first.base(), __res.second}; } -#endif +#endif // C++17 _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_vector.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_vector.h similarity index 90% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_vector.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_vector.h index fb882126c..129d45cd3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stl_vector.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stl_vector.h @@ -1,6 +1,6 @@ // Vector implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -65,8 +65,15 @@ #include +#if _GLIBCXX_SANITIZE_STD_ALLOCATOR && _GLIBCXX_SANITIZE_VECTOR +extern "C" void +__sanitizer_annotate_contiguous_container(const void*, const void*, + const void*, const void*); +#endif + namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER /// See bits/stl_deque.h's _Deque_base for an explanation. @@ -106,6 +113,121 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER std::swap(_M_finish, __x._M_finish); std::swap(_M_end_of_storage, __x._M_end_of_storage); } + +#if _GLIBCXX_SANITIZE_STD_ALLOCATOR && _GLIBCXX_SANITIZE_VECTOR + template + struct _Asan + { + typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type> + ::size_type size_type; + + static void _S_shrink(_Vector_impl&, size_type) { } + static void _S_on_dealloc(_Vector_impl&) { } + + typedef _Vector_impl& _Reinit; + + struct _Grow + { + _Grow(_Vector_impl&, size_type) { } + void _M_grew(size_type) { } + }; + }; + + // Enable ASan annotations for memory obtained from std::allocator. + template + struct _Asan > + { + typedef typename __gnu_cxx::__alloc_traits<_Tp_alloc_type> + ::size_type size_type; + + // Adjust ASan annotation for [_M_start, _M_end_of_storage) to + // mark end of valid region as __curr instead of __prev. + static void + _S_adjust(_Vector_impl& __impl, pointer __prev, pointer __curr) + { + __sanitizer_annotate_contiguous_container(__impl._M_start, + __impl._M_end_of_storage, __prev, __curr); + } + + static void + _S_grow(_Vector_impl& __impl, size_type __n) + { _S_adjust(__impl, __impl._M_finish, __impl._M_finish + __n); } + + static void + _S_shrink(_Vector_impl& __impl, size_type __n) + { _S_adjust(__impl, __impl._M_finish + __n, __impl._M_finish); } + + static void + _S_on_dealloc(_Vector_impl& __impl) + { + if (__impl._M_start) + _S_adjust(__impl, __impl._M_finish, __impl._M_end_of_storage); + } + + // Used on reallocation to tell ASan unused capacity is invalid. + struct _Reinit + { + explicit _Reinit(_Vector_impl& __impl) : _M_impl(__impl) + { + // Mark unused capacity as valid again before deallocating it. + _S_on_dealloc(_M_impl); + } + + ~_Reinit() + { + // Mark unused capacity as invalid after reallocation. + if (_M_impl._M_start) + _S_adjust(_M_impl, _M_impl._M_end_of_storage, + _M_impl._M_finish); + } + + _Vector_impl& _M_impl; + +#if __cplusplus >= 201103L + _Reinit(const _Reinit&) = delete; + _Reinit& operator=(const _Reinit&) = delete; +#endif + }; + + // Tell ASan when unused capacity is initialized to be valid. + struct _Grow + { + _Grow(_Vector_impl& __impl, size_type __n) + : _M_impl(__impl), _M_n(__n) + { _S_grow(_M_impl, __n); } + + ~_Grow() { if (_M_n) _S_shrink(_M_impl, _M_n); } + + void _M_grew(size_type __n) { _M_n -= __n; } + +#if __cplusplus >= 201103L + _Grow(const _Grow&) = delete; + _Grow& operator=(const _Grow&) = delete; +#endif + private: + _Vector_impl& _M_impl; + size_type _M_n; + }; + }; + +#define _GLIBCXX_ASAN_ANNOTATE_REINIT \ + typename _Base::_Vector_impl::template _Asan<>::_Reinit const \ + __attribute__((__unused__)) __reinit_guard(this->_M_impl) +#define _GLIBCXX_ASAN_ANNOTATE_GROW(n) \ + typename _Base::_Vector_impl::template _Asan<>::_Grow \ + __attribute__((__unused__)) __grow_guard(this->_M_impl, (n)) +#define _GLIBCXX_ASAN_ANNOTATE_GREW(n) __grow_guard._M_grew(n) +#define _GLIBCXX_ASAN_ANNOTATE_SHRINK(n) \ + _Base::_Vector_impl::template _Asan<>::_S_shrink(this->_M_impl, n) +#define _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC \ + _Base::_Vector_impl::template _Asan<>::_S_on_dealloc(this->_M_impl) +#else // ! (_GLIBCXX_SANITIZE_STD_ALLOCATOR && _GLIBCXX_SANITIZE_VECTOR) +#define _GLIBCXX_ASAN_ANNOTATE_REINIT +#define _GLIBCXX_ASAN_ANNOTATE_GROW(n) +#define _GLIBCXX_ASAN_ANNOTATE_GREW(n) +#define _GLIBCXX_ASAN_ANNOTATE_SHRINK(n) +#define _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC +#endif // _GLIBCXX_SANITIZE_STD_ALLOCATOR && _GLIBCXX_SANITIZE_VECTOR }; public: @@ -159,8 +281,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #endif ~_Vector_base() _GLIBCXX_NOEXCEPT - { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage - - this->_M_impl._M_start); } + { + _M_deallocate(_M_impl._M_start, + _M_impl._M_end_of_storage - _M_impl._M_start); + } public: _Vector_impl _M_impl; @@ -190,7 +314,6 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER } }; - /** * @brief A standard container which offers fixed time access to * individual elements in any order. @@ -224,6 +347,15 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_class_requires2(_Tp, _Alloc_value_type, _SameTypeConcept) #endif +#if __cplusplus >= 201103L + static_assert(is_same::type, _Tp>::value, + "std::vector must have a non-const, non-volatile value_type"); +# ifdef __STRICT_ANSI__ + static_assert(is_same::value, + "std::vector must have the same value_type as its allocator"); +# endif +#endif + typedef _Vector_base<_Tp, _Alloc> _Base; typedef typename _Base::_Tp_alloc_type _Tp_alloc_type; typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; @@ -431,8 +563,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER * responsibility. */ ~vector() _GLIBCXX_NOEXCEPT - { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, - _M_get_Tp_allocator()); } + { + std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + _GLIBCXX_ASAN_ANNOTATE_BEFORE_DEALLOC; + } /** * @brief %Vector assignment operator. @@ -940,9 +1075,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) { + _GLIBCXX_ASAN_ANNOTATE_GROW(1); _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, __x); ++this->_M_impl._M_finish; + _GLIBCXX_ASAN_ANNOTATE_GREW(1); } else _M_realloc_insert(end(), __x); @@ -977,6 +1114,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __glibcxx_requires_nonempty(); --this->_M_impl._M_finish; _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); + _GLIBCXX_ASAN_ANNOTATE_SHRINK(1); } #if __cplusplus >= 201103L @@ -1302,22 +1440,27 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER // Called by the second initialize_dispatch above template void - _M_range_initialize(_InputIterator __first, - _InputIterator __last, std::input_iterator_tag) + _M_range_initialize(_InputIterator __first, _InputIterator __last, + std::input_iterator_tag) { - for (; __first != __last; ++__first) + __try { + for (; __first != __last; ++__first) #if __cplusplus >= 201103L - emplace_back(*__first); + emplace_back(*__first); #else - push_back(*__first); + push_back(*__first); #endif + } __catch(...) { + clear(); + __throw_exception_again; + } } // Called by the second initialize_dispatch above template void - _M_range_initialize(_ForwardIterator __first, - _ForwardIterator __last, std::forward_iterator_tag) + _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last, + std::forward_iterator_tag) { const size_type __n = std::distance(__first, __last); this->_M_impl._M_start = this->_M_allocate(__n); @@ -1510,8 +1653,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER void _M_erase_at_end(pointer __pos) _GLIBCXX_NOEXCEPT { - std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator()); - this->_M_impl._M_finish = __pos; + if (size_type __n = this->_M_impl._M_finish - __pos) + { + std::_Destroy(__pos, this->_M_impl._M_finish, + _M_get_Tp_allocator()); + this->_M_impl._M_finish = __pos; + _GLIBCXX_ASAN_ANNOTATE_SHRINK(__n); + } } iterator @@ -1561,7 +1709,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template typename std::pointer_traits<_Ptr>::element_type* _M_data_ptr(_Ptr __ptr) const - { return empty() ? nullptr : std::__addressof(*__ptr); } + { return empty() ? nullptr : std::__to_address(__ptr); } #else template _Up* @@ -1571,15 +1719,24 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template value_type* _M_data_ptr(_Ptr __ptr) - { return __ptr.operator->(); } + { return empty() ? (value_type*)0 : __ptr.operator->(); } template const value_type* _M_data_ptr(_Ptr __ptr) const - { return __ptr.operator->(); } + { return empty() ? (const value_type*)0 : __ptr.operator->(); } #endif }; +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + vector(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> vector<_ValT, _Allocator>; +#endif /** * @brief Vector equality comparison. @@ -1646,6 +1803,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { __x.swap(__y); } _GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _STL_VECTOR_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stream_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stream_iterator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stream_iterator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stream_iterator.h index 552ed36d8..002310c07 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stream_iterator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stream_iterator.h @@ -1,6 +1,6 @@ // Stream iterators -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/streambuf.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/streambuf.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/streambuf.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/streambuf.tcc index a8ac056c2..15da8f1e9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/streambuf.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/streambuf.tcc @@ -1,6 +1,6 @@ // Stream buffer classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/streambuf_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/streambuf_iterator.h similarity index 77% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/streambuf_iterator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/streambuf_iterator.h index f0451b12c..292ef3a53 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/streambuf_iterator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/streambuf_iterator.h @@ -1,6 +1,6 @@ // Streambuf iterators -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -38,7 +38,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION - + /** * @addtogroup iterators * @{ @@ -49,7 +49,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template class istreambuf_iterator : public iterator= 201103L // LWG 445. _CharT> @@ -70,22 +70,27 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, - ostreambuf_iterator<_CharT2> >::__type + ostreambuf_iterator<_CharT2> >::__type copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, ostreambuf_iterator<_CharT2>); template - friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, _CharT2*>::__type __copy_move_a2(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, _CharT2*); template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, - istreambuf_iterator<_CharT2> >::__type + istreambuf_iterator<_CharT2> >::__type find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, const _CharT2&); + template + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + void>::__type + advance(istreambuf_iterator<_CharT2>&, _Distance); + private: // 24.5.3 istreambuf_iterator // p 1 @@ -95,7 +100,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // NB: This implementation assumes the "end of stream" value // is EOF, or -1. mutable streambuf_type* _M_sbuf; - mutable int_type _M_c; + int_type _M_c; public: /// Construct end of input stream iterator. @@ -122,28 +127,29 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION char_type operator*() const { + int_type __c = _M_get(); + #ifdef _GLIBCXX_DEBUG_PEDANTIC // Dereferencing a past-the-end istreambuf_iterator is a // libstdc++ extension - __glibcxx_requires_cond(!_M_at_eof(), + __glibcxx_requires_cond(!_S_is_eof(__c), _M_message(__gnu_debug::__msg_deref_istreambuf) ._M_iterator(*this)); #endif - return traits_type::to_char_type(_M_get()); + return traits_type::to_char_type(__c); } /// Advance the iterator. Calls streambuf.sbumpc(). istreambuf_iterator& operator++() { - __glibcxx_requires_cond(!_M_at_eof(), + __glibcxx_requires_cond(_M_sbuf && + (!_S_is_eof(_M_c) || !_S_is_eof(_M_sbuf->sgetc())), _M_message(__gnu_debug::__msg_inc_istreambuf) ._M_iterator(*this)); - if (_M_sbuf) - { - _M_sbuf->sbumpc(); - _M_c = traits_type::eof(); - } + + _M_sbuf->sbumpc(); + _M_c = traits_type::eof(); return *this; } @@ -151,22 +157,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION istreambuf_iterator operator++(int) { - __glibcxx_requires_cond(!_M_at_eof(), + __glibcxx_requires_cond(_M_sbuf && + (!_S_is_eof(_M_c) || !_S_is_eof(_M_sbuf->sgetc())), _M_message(__gnu_debug::__msg_inc_istreambuf) ._M_iterator(*this)); istreambuf_iterator __old = *this; - if (_M_sbuf) - { - __old._M_c = _M_sbuf->sbumpc(); - _M_c = traits_type::eof(); - } + __old._M_c = _M_sbuf->sbumpc(); + _M_c = traits_type::eof(); return __old; } // _GLIBCXX_RESOLVE_LIB_DEFECTS // 110 istreambuf_iterator::equal not const - // NB: there is also number 111 (NAD, Future) pending on this function. + // NB: there is also number 111 (NAD) relevant to this function. /// Return true both iterators are end or both are not end. bool equal(const istreambuf_iterator& __b) const @@ -176,26 +180,21 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION int_type _M_get() const { - const int_type __eof = traits_type::eof(); - int_type __ret = __eof; - if (_M_sbuf) - { - if (!traits_type::eq_int_type(_M_c, __eof)) - __ret = _M_c; - else if (!traits_type::eq_int_type((__ret = _M_sbuf->sgetc()), - __eof)) - _M_c = __ret; - else - _M_sbuf = 0; - } + int_type __ret = _M_c; + if (_M_sbuf && _S_is_eof(__ret) && _S_is_eof(__ret = _M_sbuf->sgetc())) + _M_sbuf = 0; return __ret; } bool _M_at_eof() const + { return _S_is_eof(_M_get()); } + + static bool + _S_is_eof(int_type __c) { const int_type __eof = traits_type::eof(); - return traits_type::eq_int_type(_M_get(), __eof); + return traits_type::eq_int_type(__c, __eof); } }; @@ -220,15 +219,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Types: //@{ /// Public typedefs - typedef _CharT char_type; - typedef _Traits traits_type; + typedef _CharT char_type; + typedef _Traits traits_type; typedef basic_streambuf<_CharT, _Traits> streambuf_type; typedef basic_ostream<_CharT, _Traits> ostream_type; //@} template friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, - ostreambuf_iterator<_CharT2> >::__type + ostreambuf_iterator<_CharT2> >::__type copy(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, ostreambuf_iterator<_CharT2>); @@ -289,7 +288,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Overloads for streambuf iterators. template typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, - ostreambuf_iterator<_CharT> >::__type + ostreambuf_iterator<_CharT> >::__type copy(istreambuf_iterator<_CharT> __first, istreambuf_iterator<_CharT> __last, ostreambuf_iterator<_CharT> __result) @@ -305,8 +304,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, - ostreambuf_iterator<_CharT> >::__type + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + ostreambuf_iterator<_CharT> >::__type __copy_move_a2(_CharT* __first, _CharT* __last, ostreambuf_iterator<_CharT> __result) { @@ -329,15 +328,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template - typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, - _CharT*>::__type + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + _CharT*>::__type __copy_move_a2(istreambuf_iterator<_CharT> __first, istreambuf_iterator<_CharT> __last, _CharT* __result) { - typedef istreambuf_iterator<_CharT> __is_iterator_type; - typedef typename __is_iterator_type::traits_type traits_type; + typedef istreambuf_iterator<_CharT> __is_iterator_type; + typedef typename __is_iterator_type::traits_type traits_type; typedef typename __is_iterator_type::streambuf_type streambuf_type; - typedef typename traits_type::int_type int_type; + typedef typename traits_type::int_type int_type; if (__first._M_sbuf && !__last._M_sbuf) { @@ -369,17 +368,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION find(istreambuf_iterator<_CharT> __first, istreambuf_iterator<_CharT> __last, const _CharT& __val) { - typedef istreambuf_iterator<_CharT> __is_iterator_type; + typedef istreambuf_iterator<_CharT> __is_iterator_type; typedef typename __is_iterator_type::traits_type traits_type; typedef typename __is_iterator_type::streambuf_type streambuf_type; - typedef typename traits_type::int_type int_type; + typedef typename traits_type::int_type int_type; + const int_type __eof = traits_type::eof(); if (__first._M_sbuf && !__last._M_sbuf) { const int_type __ival = traits_type::to_int_type(__val); streambuf_type* __sb = __first._M_sbuf; int_type __c = __sb->sgetc(); - while (!traits_type::eq_int_type(__c, traits_type::eof()) + while (!traits_type::eq_int_type(__c, __eof) && !traits_type::eq_int_type(__c, __ival)) { streamsize __n = __sb->egptr() - __sb->gptr(); @@ -396,14 +396,55 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __c = __sb->snextc(); } - if (!traits_type::eq_int_type(__c, traits_type::eof())) - __first._M_c = __c; - else - __first._M_sbuf = 0; + __first._M_c = __eof; } + return __first; } + template + typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, + void>::__type + advance(istreambuf_iterator<_CharT>& __i, _Distance __n) + { + if (__n == 0) + return; + + __glibcxx_assert(__n > 0); + __glibcxx_requires_cond(!__i._M_at_eof(), + _M_message(__gnu_debug::__msg_inc_istreambuf) + ._M_iterator(__i)); + + typedef istreambuf_iterator<_CharT> __is_iterator_type; + typedef typename __is_iterator_type::traits_type traits_type; + typedef typename __is_iterator_type::streambuf_type streambuf_type; + typedef typename traits_type::int_type int_type; + const int_type __eof = traits_type::eof(); + + streambuf_type* __sb = __i._M_sbuf; + while (__n > 0) + { + streamsize __size = __sb->egptr() - __sb->gptr(); + if (__size > __n) + { + __sb->__safe_gbump(__n); + break; + } + + __sb->__safe_gbump(__size); + __n -= __size; + if (traits_type::eq_int_type(__sb->underflow(), __eof)) + { + __glibcxx_requires_cond(__n == 0, + _M_message(__gnu_debug::__msg_inc_istreambuf) + ._M_iterator(__i)); + break; + } + } + + __i._M_c = __eof; + } + // @} group iterators _GLIBCXX_END_NAMESPACE_VERSION diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/string_view.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/string_view.tcc new file mode 100644 index 000000000..07ccc849d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/string_view.tcc @@ -0,0 +1,229 @@ +// Components for manipulating non-owning sequences of characters -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file include/bits/string_view.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{string_view} + */ + +// +// N3762 basic_string_view library +// + +#ifndef _GLIBCXX_STRING_VIEW_TCC +#define _GLIBCXX_STRING_VIEW_TCC 1 + +#pragma GCC system_header + +#if __cplusplus >= 201703L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find(const _CharT* __str, size_type __pos, size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + + if (__n == 0) + return __pos <= this->_M_len ? __pos : npos; + + if (__n <= this->_M_len) + { + for (; __pos <= this->_M_len - __n; ++__pos) + if (traits_type::eq(this->_M_str[__pos], __str[0]) + && traits_type::compare(this->_M_str + __pos + 1, + __str + 1, __n - 1) == 0) + return __pos; + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find(_CharT __c, size_type __pos) const noexcept + { + size_type __ret = npos; + if (__pos < this->_M_len) + { + const size_type __n = this->_M_len - __pos; + const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); + if (__p) + __ret = __p - this->_M_str; + } + return __ret; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + + if (__n <= this->_M_len) + { + __pos = std::min(size_type(this->_M_len - __n), __pos); + do + { + if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) + return __pos; + } + while (__pos-- > 0); + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + rfind(_CharT __c, size_type __pos) const noexcept + { + size_type __size = this->_M_len; + if (__size > 0) + { + if (--__size > __pos) + __size = __pos; + for (++__size; __size-- > 0; ) + if (traits_type::eq(this->_M_str[__size], __c)) + return __size; + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_first_of(const _CharT* __str, size_type __pos, + size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + for (; __n && __pos < this->_M_len; ++__pos) + { + const _CharT* __p = traits_type::find(__str, __n, + this->_M_str[__pos]); + if (__p) + return __pos; + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_last_of(const _CharT* __str, size_type __pos, + size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + size_type __size = this->size(); + if (__size && __n) + { + if (--__size > __pos) + __size = __pos; + do + { + if (traits_type::find(__str, __n, this->_M_str[__size])) + return __size; + } + while (__size-- != 0); + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_first_not_of(const _CharT* __str, size_type __pos, + size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + for (; __pos < this->_M_len; ++__pos) + if (!traits_type::find(__str, __n, this->_M_str[__pos])) + return __pos; + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_first_not_of(_CharT __c, size_type __pos) const noexcept + { + for (; __pos < this->_M_len; ++__pos) + if (!traits_type::eq(this->_M_str[__pos], __c)) + return __pos; + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_last_not_of(const _CharT* __str, size_type __pos, + size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + size_type __size = this->_M_len; + if (__size) + { + if (--__size > __pos) + __size = __pos; + do + { + if (!traits_type::find(__str, __n, this->_M_str[__size])) + return __size; + } + while (__size--); + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_last_not_of(_CharT __c, size_type __pos) const noexcept + { + size_type __size = this->_M_len; + if (__size) + { + if (--__size > __pos) + __size = __pos; + do + { + if (!traits_type::eq(this->_M_str[__size], __c)) + return __size; + } + while (__size--); + } + return npos; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201402L + +#endif // _GLIBCXX_STRING_VIEW_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stringfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stringfwd.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stringfwd.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stringfwd.h index 15db187f9..cf39dbfe0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/stringfwd.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/stringfwd.h @@ -1,6 +1,6 @@ // Forward declarations -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/uniform_int_dist.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/uniform_int_dist.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/uniform_int_dist.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/uniform_int_dist.h index af7ac14bc..64d4445aa 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/uniform_int_dist.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/uniform_int_dist.h @@ -1,6 +1,6 @@ // Class template uniform_int_distribution -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -36,22 +36,19 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __detail { -_GLIBCXX_BEGIN_NAMESPACE_VERSION /* Determine whether number is a power of 2. */ template inline bool _Power_of_2(_Tp __x) { return ((__x - 1) & __x) == 0; - }; -_GLIBCXX_END_NAMESPACE_VERSION + } } -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Uniform discrete distribution for random numbers. * A discrete random distribution on the range @f$[min, max]@f$ with equal diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unique_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unique_ptr.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unique_ptr.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unique_ptr.h index a31cd67d6..8225e3a82 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/unique_ptr.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unique_ptr.h @@ -1,6 +1,6 @@ // unique_ptr implementation -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 @@ -48,7 +48,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION */ #if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" template class auto_ptr; +#pragma GCC diagnostic pop #endif /// Primary template of default_delete, used by unique_ptr @@ -187,7 +190,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename = _DeleterConstraint<_Up>> constexpr unique_ptr() noexcept : _M_t() - { } + { } /** Takes ownership of a pointer. * @@ -230,7 +233,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Creates a unique_ptr that owns nothing. template > - constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } + constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } // Move constructors. @@ -254,10 +257,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { } #if _GLIBCXX_USE_DEPRECATED +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" /// Converting constructor from @c auto_ptr template, is_same<_Dp, default_delete<_Tp>>>> unique_ptr(auto_ptr<_Up>&& __u) noexcept; +#pragma GCC diagnostic pop #endif /// Destructor, invokes the deleter if the stored pointer is not null. @@ -452,7 +458,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typename = _DeleterConstraint<_Up>> constexpr unique_ptr() noexcept : _M_t() - { } + { } /** Takes ownership of a pointer. * @@ -511,7 +517,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// Creates a unique_ptr that owns nothing. template > - constexpr unique_ptr(nullptr_t) noexcept : unique_ptr() { } + constexpr unique_ptr(nullptr_t) noexcept : _M_t() { } template>> diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unordered_map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unordered_map.h new file mode 100644 index 000000000..79ede69ce --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unordered_map.h @@ -0,0 +1,2134 @@ +// unordered_map implementation -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file bits/unordered_map.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{unordered_map} + */ + +#ifndef _UNORDERED_MAP_H +#define _UNORDERED_MAP_H + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /// Base types for unordered_map. + template + using __umap_traits = __detail::_Hashtable_traits<_Cache, false, true>; + + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator >, + typename _Tr = __umap_traits<__cache_default<_Key, _Hash>::value>> + using __umap_hashtable = _Hashtable<_Key, std::pair, + _Alloc, __detail::_Select1st, + _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + /// Base types for unordered_multimap. + template + using __ummap_traits = __detail::_Hashtable_traits<_Cache, false, false>; + + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator >, + typename _Tr = __ummap_traits<__cache_default<_Key, _Hash>::value>> + using __ummap_hashtable = _Hashtable<_Key, std::pair, + _Alloc, __detail::_Select1st, + _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + template + class unordered_multimap; + + /** + * @brief A standard container composed of unique keys (containing + * at most one of each key value) that associates values of another type + * with the keys. + * + * @ingroup unordered_associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Tp Type of mapped objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + * @tparam _Pred Predicate function object type, defaults + * to equal_to<_Value>. + * @tparam _Alloc Allocator type, defaults to + * std::allocator>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * The resulting value type of the container is std::pair. + * + * Base is _Hashtable, dispatched at compile time via template + * alias __umap_hashtable. + */ + template, + typename _Pred = equal_to<_Key>, + typename _Alloc = allocator>> + class unordered_map + { + typedef __umap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::mapped_type mapped_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename _Hashtable::pointer pointer; + typedef typename _Hashtable::const_pointer const_pointer; + typedef typename _Hashtable::reference reference; + typedef typename _Hashtable::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + +#if __cplusplus > 201402L + using node_type = typename _Hashtable::node_type; + using insert_return_type = typename _Hashtable::insert_return_type; +#endif + + //construct/destroy/copy + + /// Default constructor. + unordered_map() = default; + + /** + * @brief Default constructor creates no elements. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_map(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_map from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_map consisting of copies of the elements from + * [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__first, __last, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_map(const unordered_map&) = default; + + /// Move constructor. + unordered_map(unordered_map&&) = default; + + /** + * @brief Creates an %unordered_map with no elements. + * @param __a An allocator object. + */ + explicit + unordered_map(const allocator_type& __a) + : _M_h(__a) + { } + + /* + * @brief Copy constructor with allocator argument. + * @param __uset Input %unordered_map to copy. + * @param __a An allocator object. + */ + unordered_map(const unordered_map& __umap, + const allocator_type& __a) + : _M_h(__umap._M_h, __a) + { } + + /* + * @brief Move constructor with allocator argument. + * @param __uset Input %unordered_map to move. + * @param __a An allocator object. + */ + unordered_map(unordered_map&& __umap, + const allocator_type& __a) + : _M_h(std::move(__umap._M_h), __a) + { } + + /** + * @brief Builds an %unordered_map from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_map consisting of copies of the elements in the + * list. This is linear in N (where N is @a __l.size()). + */ + unordered_map(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + unordered_map(size_type __n, const allocator_type& __a) + : unordered_map(__n, hasher(), key_equal(), __a) + { } + + unordered_map(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_map(__n, __hf, key_equal(), __a) + { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_map(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_map(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_map(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_map(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_map(__l, __n, __hf, key_equal(), __a) + { } + + /// Copy assignment operator. + unordered_map& + operator=(const unordered_map&) = default; + + /// Move assignment operator. + unordered_map& + operator=(unordered_map&&) = default; + + /** + * @brief %Unordered_map list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_map with copies of the elements in + * the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_map and + * that the resulting %unordered_map's size is the same as the number + * of elements assigned. + */ + unordered_map& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object used by the %unordered_map. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_map is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_map. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_map. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + /** + * Returns a read/write iterator that points to the first element in the + * %unordered_map. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_map. + */ + const_iterator + begin() const noexcept + { return _M_h.begin(); } + + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + //@} + + /** + * Returns a read/write iterator that points one past the last element in + * the %unordered_map. + */ + iterator + end() noexcept + { return _M_h.end(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_map. + */ + const_iterator + end() const noexcept + { return _M_h.end(); } + + const_iterator + cend() const noexcept + { return _M_h.end(); } + //@} + + // modifiers. + + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_map. + * + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted pair, and the second is a bool that + * is true if the pair was actually inserted. + * + * This function attempts to build and insert a (key, value) %pair into + * the %unordered_map. + * An %unordered_map relies on unique keys and thus a %pair is only + * inserted if its first element (the key) is not already present in the + * %unordered_map. + * + * Insertion requires amortized constant time. + */ + template + std::pair + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_map. + * + * @param __pos An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * @return An iterator that points to the element with key of the + * std::pair built from @a __args (may or may not be that + * std::pair). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + +#if __cplusplus > 201402L + /// Extract a node. + node_type + extract(const_iterator __pos) + { + __glibcxx_assert(__pos != end()); + return _M_h.extract(__pos); + } + + /// Extract a node. + node_type + extract(const key_type& __key) + { return _M_h.extract(__key); } + + /// Re-insert an extracted node. + insert_return_type + insert(node_type&& __nh) + { return _M_h._M_reinsert_node(std::move(__nh)); } + + /// Re-insert an extracted node. + iterator + insert(const_iterator, node_type&& __nh) + { return _M_h._M_reinsert_node(std::move(__nh)).position; } + +#define __cpp_lib_unordered_map_try_emplace 201411 + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_map. + * + * @param __k Key to use for finding a possibly existing pair in + * the unordered_map. + * @param __args Arguments used to generate the .second for a + * new pair instance. + * + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted pair, and the second is a bool that + * is true if the pair was actually inserted. + * + * This function attempts to build and insert a (key, value) %pair into + * the %unordered_map. + * An %unordered_map relies on unique keys and thus a %pair is only + * inserted if its first element (the key) is not already present in the + * %unordered_map. + * If a %pair is not inserted, this function has no effect. + * + * Insertion requires amortized constant time. + */ + template + pair + try_emplace(const key_type& __k, _Args&&... __args) + { + iterator __i = find(__k); + if (__i == end()) + { + __i = emplace(std::piecewise_construct, + std::forward_as_tuple(__k), + std::forward_as_tuple( + std::forward<_Args>(__args)...)) + .first; + return {__i, true}; + } + return {__i, false}; + } + + // move-capable overload + template + pair + try_emplace(key_type&& __k, _Args&&... __args) + { + iterator __i = find(__k); + if (__i == end()) + { + __i = emplace(std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::forward_as_tuple( + std::forward<_Args>(__args)...)) + .first; + return {__i, true}; + } + return {__i, false}; + } + + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_map. + * + * @param __hint An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __k Key to use for finding a possibly existing pair in + * the unordered_map. + * @param __args Arguments used to generate the .second for a + * new pair instance. + * @return An iterator that points to the element with key of the + * std::pair built from @a __args (may or may not be that + * std::pair). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. However, if insertion did not take place, + * this function has no effect. + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + template + iterator + try_emplace(const_iterator __hint, const key_type& __k, + _Args&&... __args) + { + iterator __i = find(__k); + if (__i == end()) + __i = emplace_hint(__hint, std::piecewise_construct, + std::forward_as_tuple(__k), + std::forward_as_tuple( + std::forward<_Args>(__args)...)); + return __i; + } + + // move-capable overload + template + iterator + try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) + { + iterator __i = find(__k); + if (__i == end()) + __i = emplace_hint(__hint, std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::forward_as_tuple( + std::forward<_Args>(__args)...)); + return __i; + } +#endif // C++17 + + //@{ + /** + * @brief Attempts to insert a std::pair into the %unordered_map. + + * @param __x Pair to be inserted (see std::make_pair for easy + * creation of pairs). + * + * @return A pair, of which the first element is an iterator that + * points to the possibly inserted pair, and the second is + * a bool that is true if the pair was actually inserted. + * + * This function attempts to insert a (key, value) %pair into the + * %unordered_map. An %unordered_map relies on unique keys and thus a + * %pair is only inserted if its first element (the key) is not already + * present in the %unordered_map. + * + * Insertion requires amortized constant time. + */ + std::pair + insert(const value_type& __x) + { return _M_h.insert(__x); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + std::pair + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + + template + __enable_if_t::value, + pair> + insert(_Pair&& __x) + { return _M_h.emplace(std::forward<_Pair>(__x)); } + //@} + + //@{ + /** + * @brief Attempts to insert a std::pair into the %unordered_map. + * @param __hint An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the element with key of + * @a __x (may or may not be the %pair passed in). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument insert() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * See + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + + template + __enable_if_t::value, iterator> + insert(const_iterator __hint, _Pair&& __x) + { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } + //@} + + /** + * @brief A template function that attempts to insert a range of + * elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Attempts to insert a list of elements into the %unordered_map. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + + +#if __cplusplus > 201402L +#define __cpp_lib_unordered_map_insertion 201411 + /** + * @brief Attempts to insert a std::pair into the %unordered_map. + * @param __k Key to use for finding a possibly existing pair in + * the map. + * @param __obj Argument used to generate the .second for a pair + * instance. + * + * @return A pair, of which the first element is an iterator that + * points to the possibly inserted pair, and the second is + * a bool that is true if the pair was actually inserted. + * + * This function attempts to insert a (key, value) %pair into the + * %unordered_map. An %unordered_map relies on unique keys and thus a + * %pair is only inserted if its first element (the key) is not already + * present in the %unordered_map. + * If the %pair was already in the %unordered_map, the .second of + * the %pair is assigned from __obj. + * + * Insertion requires amortized constant time. + */ + template + pair + insert_or_assign(const key_type& __k, _Obj&& __obj) + { + iterator __i = find(__k); + if (__i == end()) + { + __i = emplace(std::piecewise_construct, + std::forward_as_tuple(__k), + std::forward_as_tuple(std::forward<_Obj>(__obj))) + .first; + return {__i, true}; + } + (*__i).second = std::forward<_Obj>(__obj); + return {__i, false}; + } + + // move-capable overload + template + pair + insert_or_assign(key_type&& __k, _Obj&& __obj) + { + iterator __i = find(__k); + if (__i == end()) + { + __i = emplace(std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::forward_as_tuple(std::forward<_Obj>(__obj))) + .first; + return {__i, true}; + } + (*__i).second = std::forward<_Obj>(__obj); + return {__i, false}; + } + + /** + * @brief Attempts to insert a std::pair into the %unordered_map. + * @param __hint An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __k Key to use for finding a possibly existing pair in + * the unordered_map. + * @param __obj Argument used to generate the .second for a pair + * instance. + * @return An iterator that points to the element with key of + * @a __x (may or may not be the %pair passed in). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument insert() + * does. + * If the %pair was already in the %unordered map, the .second of + * the %pair is assigned from __obj. + * Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * See + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + template + iterator + insert_or_assign(const_iterator __hint, const key_type& __k, + _Obj&& __obj) + { + iterator __i = find(__k); + if (__i == end()) + { + return emplace_hint(__hint, std::piecewise_construct, + std::forward_as_tuple(__k), + std::forward_as_tuple( + std::forward<_Obj>(__obj))); + } + (*__i).second = std::forward<_Obj>(__obj); + return __i; + } + + // move-capable overload + template + iterator + insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) + { + iterator __i = find(__k); + if (__i == end()) + { + return emplace_hint(__hint, std::piecewise_construct, + std::forward_as_tuple(std::move(__k)), + std::forward_as_tuple( + std::forward<_Obj>(__obj))); + } + (*__i).second = std::forward<_Obj>(__obj); + return __i; + } +#endif + + //@{ + /** + * @brief Erases an element from an %unordered_map. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_map. + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __position) + { return _M_h.erase(__position); } + //@} + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_map. For an %unordered_map the result of this function + * can only be 0 (not present) or 1 (present). + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_map. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an %unordered_map. + * Note that this function only erases the elements, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_map. + * Note that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_map. + * @param __x An %unordered_map of the same element and allocator + * types. + * + * This exchanges the elements between two %unordered_map in constant + * time. + * Note that the global std::swap() function is specialized such that + * std::swap(m1,m2) will feed to this function. + */ + void + swap(unordered_map& __x) + noexcept( noexcept(_M_h.swap(__x._M_h)) ) + { _M_h.swap(__x._M_h); } + +#if __cplusplus > 201402L + template + friend class std::_Hash_merge_helper; + + template + void + merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper = _Hash_merge_helper; + _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) + { merge(__source); } + + template + void + merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper = _Hash_merge_helper; + _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) + { merge(__source); } +#endif // C++17 + + // observers. + + /// Returns the hash functor object with which the %unordered_map was + /// constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_map was + /// constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_map. + * @param __x Key to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Key to count. + * @return Number of elements with specified key. + * + * This function only makes sense for %unordered_multimap; for + * %unordered_map the result will either be 0 (not present) or 1 + * (present). + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function probably only makes sense for %unordered_multimap. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + //@{ + /** + * @brief Subscript ( @c [] ) access to %unordered_map data. + * @param __k The key for which data should be retrieved. + * @return A reference to the data of the (key,data) %pair. + * + * Allows for easy lookup with the subscript ( @c [] )operator. Returns + * data associated with the key specified in subscript. If the key does + * not exist, a pair with that key is created using default values, which + * is then returned. + * + * Lookup requires constant time. + */ + mapped_type& + operator[](const key_type& __k) + { return _M_h[__k]; } + + mapped_type& + operator[](key_type&& __k) + { return _M_h[std::move(__k)]; } + //@} + + //@{ + /** + * @brief Access to %unordered_map data. + * @param __k The key for which data should be retrieved. + * @return A reference to the data whose key is equal to @a __k, if + * such a data is present in the %unordered_map. + * @throw std::out_of_range If no such data is present. + */ + mapped_type& + at(const key_type& __k) + { return _M_h.at(__k); } + + const mapped_type& + at(const key_type& __k) const + { return _M_h.at(__k); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_map. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_map. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + /** + * @brief Returns a read/write iterator pointing to the first bucket + * element. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + /** + * @brief Returns a read/write iterator pointing to one past the last + * bucket elements. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_map tries to keep the + /// load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_map maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_map. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_map maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_map for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, + const unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&); + }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Pred = equal_to<__iter_key_t<_InputIterator>>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, + typename unordered_map::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + _Hash, _Pred, _Allocator>; + + template, + typename _Pred = equal_to<_Key>, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + unordered_map(initializer_list>, + typename unordered_map::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_map<_Key, _Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, + typename unordered_map::size_type, _Allocator) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, _Allocator) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, + typename unordered_map::size_type, + _Hash, _Allocator) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, _Hash, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + unordered_map(initializer_list>, + typename unordered_map::size_type, + _Allocator) + -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_map(initializer_list>, _Allocator) + -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_map(initializer_list>, + typename unordered_map::size_type, + _Hash, _Allocator) + -> unordered_map<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; + +#endif + + /** + * @brief A standard container composed of equivalent keys + * (possibly containing multiple of each key value) that associates + * values of another type with the keys. + * + * @ingroup unordered_associative_containers + * + * @tparam _Key Type of key objects. + * @tparam _Tp Type of mapped objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + * @tparam _Pred Predicate function object type, defaults + * to equal_to<_Value>. + * @tparam _Alloc Allocator type, defaults to + * std::allocator>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * The resulting value type of the container is std::pair. + * + * Base is _Hashtable, dispatched at compile time via template + * alias __ummap_hashtable. + */ + template, + typename _Pred = equal_to<_Key>, + typename _Alloc = allocator>> + class unordered_multimap + { + typedef __ummap_hashtable<_Key, _Tp, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::mapped_type mapped_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename _Hashtable::pointer pointer; + typedef typename _Hashtable::const_pointer const_pointer; + typedef typename _Hashtable::reference reference; + typedef typename _Hashtable::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + +#if __cplusplus > 201402L + using node_type = typename _Hashtable::node_type; +#endif + + //construct/destroy/copy + + /// Default constructor. + unordered_multimap() = default; + + /** + * @brief Default constructor creates no elements. + * @param __n Mnimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_multimap(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_multimap from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multimap consisting of copies of the elements + * from [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__first, __last, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_multimap(const unordered_multimap&) = default; + + /// Move constructor. + unordered_multimap(unordered_multimap&&) = default; + + /** + * @brief Creates an %unordered_multimap with no elements. + * @param __a An allocator object. + */ + explicit + unordered_multimap(const allocator_type& __a) + : _M_h(__a) + { } + + /* + * @brief Copy constructor with allocator argument. + * @param __uset Input %unordered_multimap to copy. + * @param __a An allocator object. + */ + unordered_multimap(const unordered_multimap& __ummap, + const allocator_type& __a) + : _M_h(__ummap._M_h, __a) + { } + + /* + * @brief Move constructor with allocator argument. + * @param __uset Input %unordered_multimap to move. + * @param __a An allocator object. + */ + unordered_multimap(unordered_multimap&& __ummap, + const allocator_type& __a) + : _M_h(std::move(__ummap._M_h), __a) + { } + + /** + * @brief Builds an %unordered_multimap from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multimap consisting of copies of the elements in + * the list. This is linear in N (where N is @a __l.size()). + */ + unordered_multimap(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + unordered_multimap(size_type __n, const allocator_type& __a) + : unordered_multimap(__n, hasher(), key_equal(), __a) + { } + + unordered_multimap(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__n, __hf, key_equal(), __a) + { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_multimap(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_multimap(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_multimap(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__l, __n, __hf, key_equal(), __a) + { } + + /// Copy assignment operator. + unordered_multimap& + operator=(const unordered_multimap&) = default; + + /// Move assignment operator. + unordered_multimap& + operator=(unordered_multimap&&) = default; + + /** + * @brief %Unordered_multimap list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_multimap with copies of the + * elements in the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_multimap + * and that the resulting %unordered_multimap's size is the same as the + * number of elements assigned. + */ + unordered_multimap& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object used by the %unordered_multimap. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_multimap is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_multimap. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_multimap. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + /** + * Returns a read/write iterator that points to the first element in the + * %unordered_multimap. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_multimap. + */ + const_iterator + begin() const noexcept + { return _M_h.begin(); } + + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + //@} + + /** + * Returns a read/write iterator that points one past the last element in + * the %unordered_multimap. + */ + iterator + end() noexcept + { return _M_h.end(); } + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_multimap. + */ + const_iterator + end() const noexcept + { return _M_h.end(); } + + const_iterator + cend() const noexcept + { return _M_h.end(); } + //@} + + // modifiers. + + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_multimap. + * + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * + * @return An iterator that points to the inserted pair. + * + * This function attempts to build and insert a (key, value) %pair into + * the %unordered_multimap. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to build and insert a std::pair into the + * %unordered_multimap. + * + * @param __pos An iterator that serves as a hint as to where the pair + * should be inserted. + * @param __args Arguments used to generate a new pair instance (see + * std::piecewise_contruct for passing arguments to each + * part of the pair constructor). + * @return An iterator that points to the element with key of the + * std::pair built from @a __args. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Inserts a std::pair into the %unordered_multimap. + * @param __x Pair to be inserted (see std::make_pair for easy + * creation of pairs). + * + * @return An iterator that points to the inserted pair. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const value_type& __x) + { return _M_h.insert(__x); } + + iterator + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + + template + __enable_if_t::value, iterator> + insert(_Pair&& __x) + { return _M_h.emplace(std::forward<_Pair>(__x)); } + //@} + + //@{ + /** + * @brief Inserts a std::pair into the %unordered_multimap. + * @param __hint An iterator that serves as a hint as to where the + * pair should be inserted. + * @param __x Pair to be inserted (see std::make_pair for easy creation + * of pairs). + * @return An iterator that points to the element with key of + * @a __x (may or may not be the %pair passed in). + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * See + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * for more on @a hinting. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + + template + __enable_if_t::value, iterator> + insert(const_iterator __hint, _Pair&& __x) + { return _M_h.emplace_hint(__hint, std::forward<_Pair>(__x)); } + //@} + + /** + * @brief A template function that attempts to insert a range of + * elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Attempts to insert a list of elements into the + * %unordered_multimap. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + +#if __cplusplus > 201402L + /// Extract a node. + node_type + extract(const_iterator __pos) + { + __glibcxx_assert(__pos != end()); + return _M_h.extract(__pos); + } + + /// Extract a node. + node_type + extract(const key_type& __key) + { return _M_h.extract(__key); } + + /// Re-insert an extracted node. + iterator + insert(node_type&& __nh) + { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } + + /// Re-insert an extracted node. + iterator + insert(const_iterator __hint, node_type&& __nh) + { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } +#endif // C++17 + + //@{ + /** + * @brief Erases an element from an %unordered_multimap. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_multimap. + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __position) + { return _M_h.erase(__position); } + //@} + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of elements to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_multimap. + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_multimap. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an + * %unordered_multimap. + * Note that this function only erases the elements, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_multimap. + * Note that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_multimap. + * @param __x An %unordered_multimap of the same element and allocator + * types. + * + * This exchanges the elements between two %unordered_multimap in + * constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(m1,m2) will feed to this function. + */ + void + swap(unordered_multimap& __x) + noexcept( noexcept(_M_h.swap(__x._M_h)) ) + { _M_h.swap(__x._M_h); } + +#if __cplusplus > 201402L + template + friend class std::_Hash_merge_helper; + + template + void + merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper + = _Hash_merge_helper; + _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_multimap<_Key, _Tp, _H2, _P2, _Alloc>&& __source) + { merge(__source); } + + template + void + merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper + = _Hash_merge_helper; + _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_map<_Key, _Tp, _H2, _P2, _Alloc>&& __source) + { merge(__source); } +#endif // C++17 + + // observers. + + /// Returns the hash functor object with which the %unordered_multimap + /// was constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_multimap + /// was constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_multimap. + * @param __x Key to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Key to count. + * @return Number of elements with specified key. + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_multimap. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_multimap. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + /** + * @brief Returns a read/write iterator pointing to the first bucket + * element. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + /** + * @brief Returns a read/write iterator pointing to one past the last + * bucket elements. + * @param __n The bucket index. + * @return A read/write local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_multimap tries to keep + /// the load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_multimap maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_multimap. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_multimap maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_multimap for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_multimap<_Key1, _Tp1, + _Hash1, _Pred1, _Alloc1>&, + const unordered_multimap<_Key1, _Tp1, + _Hash1, _Pred1, _Alloc1>&); + }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Pred = equal_to<__iter_key_t<_InputIterator>>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, + unordered_multimap::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, _Hash, _Pred, + _Allocator>; + + template, + typename _Pred = equal_to<_Key>, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(initializer_list>, + unordered_multimap::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multimap<_Key, _Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, + unordered_multimap::size_type, _Allocator) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, _Allocator) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, + unordered_multimap::size_type, _Hash, + _Allocator) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, _Hash, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + unordered_multimap(initializer_list>, + unordered_multimap::size_type, + _Allocator) + -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_multimap(initializer_list>, _Allocator) + -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_multimap(initializer_list>, + unordered_multimap::size_type, + _Hash, _Allocator) + -> unordered_multimap<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; + +#endif + + template + inline void + swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline void + swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + template + inline bool + operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER + +#if __cplusplus > 201402L + // Allow std::unordered_map access to internals of compatible maps. + template + struct _Hash_merge_helper< + _GLIBCXX_STD_C::unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>, + _Hash2, _Eq2> + { + private: + template + using unordered_map = _GLIBCXX_STD_C::unordered_map<_Tp...>; + template + using unordered_multimap = _GLIBCXX_STD_C::unordered_multimap<_Tp...>; + + friend unordered_map<_Key, _Val, _Hash1, _Eq1, _Alloc>; + + static auto& + _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) + { return __map._M_h; } + + static auto& + _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) + { return __map._M_h; } + }; + + // Allow std::unordered_multimap access to internals of compatible maps. + template + struct _Hash_merge_helper< + _GLIBCXX_STD_C::unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>, + _Hash2, _Eq2> + { + private: + template + using unordered_map = _GLIBCXX_STD_C::unordered_map<_Tp...>; + template + using unordered_multimap = _GLIBCXX_STD_C::unordered_multimap<_Tp...>; + + friend unordered_multimap<_Key, _Val, _Hash1, _Eq1, _Alloc>; + + static auto& + _S_get_table(unordered_map<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) + { return __map._M_h; } + + static auto& + _S_get_table(unordered_multimap<_Key, _Val, _Hash2, _Eq2, _Alloc>& __map) + { return __map._M_h; } + }; +#endif // C++17 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif /* _UNORDERED_MAP_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unordered_set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unordered_set.h new file mode 100644 index 000000000..c9ac4ad57 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/unordered_set.h @@ -0,0 +1,1745 @@ +// unordered_set implementation -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file bits/unordered_set.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{unordered_set} + */ + +#ifndef _UNORDERED_SET_H +#define _UNORDERED_SET_H + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /// Base types for unordered_set. + template + using __uset_traits = __detail::_Hashtable_traits<_Cache, true, true>; + + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value>, + typename _Tr = __uset_traits<__cache_default<_Value, _Hash>::value>> + using __uset_hashtable = _Hashtable<_Value, _Value, _Alloc, + __detail::_Identity, _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + /// Base types for unordered_multiset. + template + using __umset_traits = __detail::_Hashtable_traits<_Cache, true, false>; + + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value>, + typename _Tr = __umset_traits<__cache_default<_Value, _Hash>::value>> + using __umset_hashtable = _Hashtable<_Value, _Value, _Alloc, + __detail::_Identity, + _Pred, _Hash, + __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, _Tr>; + + template + class unordered_multiset; + + /** + * @brief A standard container composed of unique keys (containing + * at most one of each key value) in which the elements' keys are + * the elements themselves. + * + * @ingroup unordered_associative_containers + * + * @tparam _Value Type of key objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + + * @tparam _Pred Predicate function object type, defaults to + * equal_to<_Value>. + * + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * Base is _Hashtable, dispatched at compile time via template + * alias __uset_hashtable. + */ + template, + typename _Pred = equal_to<_Value>, + typename _Alloc = allocator<_Value>> + class unordered_set + { + typedef __uset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename _Hashtable::pointer pointer; + typedef typename _Hashtable::const_pointer const_pointer; + typedef typename _Hashtable::reference reference; + typedef typename _Hashtable::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + +#if __cplusplus > 201402L + using node_type = typename _Hashtable::node_type; + using insert_return_type = typename _Hashtable::insert_return_type; +#endif + + // construct/destroy/copy + + /// Default constructor. + unordered_set() = default; + + /** + * @brief Default constructor creates no elements. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_set(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_set from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_set consisting of copies of the elements from + * [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__first, __last, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_set(const unordered_set&) = default; + + /// Move constructor. + unordered_set(unordered_set&&) = default; + + /** + * @brief Creates an %unordered_set with no elements. + * @param __a An allocator object. + */ + explicit + unordered_set(const allocator_type& __a) + : _M_h(__a) + { } + + /* + * @brief Copy constructor with allocator argument. + * @param __uset Input %unordered_set to copy. + * @param __a An allocator object. + */ + unordered_set(const unordered_set& __uset, + const allocator_type& __a) + : _M_h(__uset._M_h, __a) + { } + + /* + * @brief Move constructor with allocator argument. + * @param __uset Input %unordered_set to move. + * @param __a An allocator object. + */ + unordered_set(unordered_set&& __uset, + const allocator_type& __a) + : _M_h(std::move(__uset._M_h), __a) + { } + + /** + * @brief Builds an %unordered_set from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_set consisting of copies of the elements in the + * list. This is linear in N (where N is @a __l.size()). + */ + unordered_set(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + unordered_set(size_type __n, const allocator_type& __a) + : unordered_set(__n, hasher(), key_equal(), __a) + { } + + unordered_set(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__n, __hf, key_equal(), __a) + { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_set(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_set(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_set(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__l, __n, __hf, key_equal(), __a) + { } + + /// Copy assignment operator. + unordered_set& + operator=(const unordered_set&) = default; + + /// Move assignment operator. + unordered_set& + operator=(unordered_set&&) = default; + + /** + * @brief %Unordered_set list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_set with copies of the elements in + * the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_set and + * that the resulting %unordered_set's size is the same as the number + * of elements assigned. + */ + unordered_set& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object used by the %unordered_set. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_set is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_set. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_set. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_set. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + const_iterator + begin() const noexcept + { return _M_h.begin(); } + //@} + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_set. + */ + iterator + end() noexcept + { return _M_h.end(); } + + const_iterator + end() const noexcept + { return _M_h.end(); } + //@} + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_set. + */ + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_set. + */ + const_iterator + cend() const noexcept + { return _M_h.end(); } + + // modifiers. + + /** + * @brief Attempts to build and insert an element into the + * %unordered_set. + * @param __args Arguments used to generate an element. + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted element, and the second is a bool + * that is true if the element was actually inserted. + * + * This function attempts to build and insert an element into the + * %unordered_set. An %unordered_set relies on unique keys and thus an + * element is only inserted if it is not already present in the + * %unordered_set. + * + * Insertion requires amortized constant time. + */ + template + std::pair + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Attempts to insert an element into the %unordered_set. + * @param __pos An iterator that serves as a hint as to where the + * element should be inserted. + * @param __args Arguments used to generate the element to be + * inserted. + * @return An iterator that points to the element with key equivalent to + * the one generated from @a __args (may or may not be the + * element itself). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument emplace() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * For more on @a hinting, see: + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Attempts to insert an element into the %unordered_set. + * @param __x Element to be inserted. + * @return A pair, of which the first element is an iterator that points + * to the possibly inserted element, and the second is a bool + * that is true if the element was actually inserted. + * + * This function attempts to insert an element into the %unordered_set. + * An %unordered_set relies on unique keys and thus an element is only + * inserted if it is not already present in the %unordered_set. + * + * Insertion requires amortized constant time. + */ + std::pair + insert(const value_type& __x) + { return _M_h.insert(__x); } + + std::pair + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + //@} + + //@{ + /** + * @brief Attempts to insert an element into the %unordered_set. + * @param __hint An iterator that serves as a hint as to where the + * element should be inserted. + * @param __x Element to be inserted. + * @return An iterator that points to the element with key of + * @a __x (may or may not be the element passed in). + * + * This function is not concerned about whether the insertion took place, + * and thus does not return a boolean like the single-argument insert() + * does. Note that the first parameter is only a hint and can + * potentially improve the performance of the insertion process. A bad + * hint would cause no gains in efficiency. + * + * For more on @a hinting, see: + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * + * Insertion requires amortized constant. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + iterator + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + //@} + + /** + * @brief A template function that attempts to insert a range of + * elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Attempts to insert a list of elements into the %unordered_set. + * @param __l A std::initializer_list of elements + * to be inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + +#if __cplusplus > 201402L + /// Extract a node. + node_type + extract(const_iterator __pos) + { + __glibcxx_assert(__pos != end()); + return _M_h.extract(__pos); + } + + /// Extract a node. + node_type + extract(const key_type& __key) + { return _M_h.extract(__key); } + + /// Re-insert an extracted node. + insert_return_type + insert(node_type&& __nh) + { return _M_h._M_reinsert_node(std::move(__nh)); } + + /// Re-insert an extracted node. + iterator + insert(const_iterator, node_type&& __nh) + { return _M_h._M_reinsert_node(std::move(__nh)).position; } +#endif // C++17 + + //@{ + /** + * @brief Erases an element from an %unordered_set. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_set. Note that this function only erases the + * element, and that if the element is itself a pointer, the pointed-to + * memory is not touched in any way. Managing the pointer is the user's + * responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __position) + { return _M_h.erase(__position); } + //@} + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_set. For an %unordered_set the result of this function + * can only be 0 (not present) or 1 (present). + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_set. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an %unordered_set. + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_set. Note that this function only + * erases the elements, and that if the elements themselves are pointers, + * the pointed-to memory is not touched in any way. Managing the pointer + * is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_set. + * @param __x An %unordered_set of the same element and allocator + * types. + * + * This exchanges the elements between two sets in constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(s1,s2) will feed to this function. + */ + void + swap(unordered_set& __x) + noexcept( noexcept(_M_h.swap(__x._M_h)) ) + { _M_h.swap(__x._M_h); } + +#if __cplusplus > 201402L + template + friend class std::_Hash_merge_helper; + + template + void + merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper = _Hash_merge_helper; + _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) + { merge(__source); } + + template + void + merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper = _Hash_merge_helper; + _M_h._M_merge_unique(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) + { merge(__source); } +#endif // C++17 + + // observers. + + /// Returns the hash functor object with which the %unordered_set was + /// constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_set was + /// constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_set. + * @param __x Element to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Element to located. + * @return Number of elements with specified key. + * + * This function only makes sense for unordered_multisets; for + * unordered_set the result will either be 0 (not present) or 1 + * (present). + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + * + * This function probably only makes sense for multisets. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_set. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_set. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_set tries to keep the + /// load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_set maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_set. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_set maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_set for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&, + const unordered_set<_Value1, _Hash1, _Pred1, _Alloc1>&); + }; + +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Pred = + equal_to::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_set(_InputIterator, _InputIterator, + unordered_set::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_set::value_type, + _Hash, _Pred, _Allocator>; + + template, + typename _Pred = equal_to<_Tp>, + typename _Allocator = allocator<_Tp>, + typename = _RequireAllocator<_Allocator>> + unordered_set(initializer_list<_Tp>, + unordered_set::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_set<_Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_set(_InputIterator, _InputIterator, + unordered_set::size_type, _Allocator) + -> unordered_set::value_type, + hash< + typename iterator_traits<_InputIterator>::value_type>, + equal_to< + typename iterator_traits<_InputIterator>::value_type>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_set(_InputIterator, _InputIterator, + unordered_set::size_type, + _Hash, _Allocator) + -> unordered_set::value_type, + _Hash, + equal_to< + typename iterator_traits<_InputIterator>::value_type>, + _Allocator>; + + template> + unordered_set(initializer_list<_Tp>, + unordered_set::size_type, _Allocator) + -> unordered_set<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; + + template> + unordered_set(initializer_list<_Tp>, + unordered_set::size_type, _Hash, _Allocator) + -> unordered_set<_Tp, _Hash, equal_to<_Tp>, _Allocator>; + +#endif + + /** + * @brief A standard container composed of equivalent keys + * (possibly containing multiple of each key value) in which the + * elements' keys are the elements themselves. + * + * @ingroup unordered_associative_containers + * + * @tparam _Value Type of key objects. + * @tparam _Hash Hashing function object type, defaults to hash<_Value>. + * @tparam _Pred Predicate function object type, defaults + * to equal_to<_Value>. + * @tparam _Alloc Allocator type, defaults to allocator<_Key>. + * + * Meets the requirements of a container, and + * unordered associative container + * + * Base is _Hashtable, dispatched at compile time via template + * alias __umset_hashtable. + */ + template, + typename _Pred = equal_to<_Value>, + typename _Alloc = allocator<_Value>> + class unordered_multiset + { + typedef __umset_hashtable<_Value, _Hash, _Pred, _Alloc> _Hashtable; + _Hashtable _M_h; + + public: + // typedefs: + //@{ + /// Public typedefs. + typedef typename _Hashtable::key_type key_type; + typedef typename _Hashtable::value_type value_type; + typedef typename _Hashtable::hasher hasher; + typedef typename _Hashtable::key_equal key_equal; + typedef typename _Hashtable::allocator_type allocator_type; + //@} + + //@{ + /// Iterator-related typedefs. + typedef typename _Hashtable::pointer pointer; + typedef typename _Hashtable::const_pointer const_pointer; + typedef typename _Hashtable::reference reference; + typedef typename _Hashtable::const_reference const_reference; + typedef typename _Hashtable::iterator iterator; + typedef typename _Hashtable::const_iterator const_iterator; + typedef typename _Hashtable::local_iterator local_iterator; + typedef typename _Hashtable::const_local_iterator const_local_iterator; + typedef typename _Hashtable::size_type size_type; + typedef typename _Hashtable::difference_type difference_type; + //@} + +#if __cplusplus > 201402L + using node_type = typename _Hashtable::node_type; +#endif + + // construct/destroy/copy + + /// Default constructor. + unordered_multiset() = default; + + /** + * @brief Default constructor creates no elements. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + */ + explicit + unordered_multiset(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__n, __hf, __eql, __a) + { } + + /** + * @brief Builds an %unordered_multiset from a range. + * @param __first An input iterator. + * @param __last An input iterator. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multiset consisting of copies of the elements + * from [__first,__last). This is linear in N (where N is + * distance(__first,__last)). + */ + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__first, __last, __n, __hf, __eql, __a) + { } + + /// Copy constructor. + unordered_multiset(const unordered_multiset&) = default; + + /// Move constructor. + unordered_multiset(unordered_multiset&&) = default; + + /** + * @brief Builds an %unordered_multiset from an initializer_list. + * @param __l An initializer_list. + * @param __n Minimal initial number of buckets. + * @param __hf A hash functor. + * @param __eql A key equality functor. + * @param __a An allocator object. + * + * Create an %unordered_multiset consisting of copies of the elements in + * the list. This is linear in N (where N is @a __l.size()). + */ + unordered_multiset(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _M_h(__l, __n, __hf, __eql, __a) + { } + + /// Copy assignment operator. + unordered_multiset& + operator=(const unordered_multiset&) = default; + + /// Move assignment operator. + unordered_multiset& + operator=(unordered_multiset&&) = default; + + /** + * @brief Creates an %unordered_multiset with no elements. + * @param __a An allocator object. + */ + explicit + unordered_multiset(const allocator_type& __a) + : _M_h(__a) + { } + + /* + * @brief Copy constructor with allocator argument. + * @param __uset Input %unordered_multiset to copy. + * @param __a An allocator object. + */ + unordered_multiset(const unordered_multiset& __umset, + const allocator_type& __a) + : _M_h(__umset._M_h, __a) + { } + + /* + * @brief Move constructor with allocator argument. + * @param __umset Input %unordered_multiset to move. + * @param __a An allocator object. + */ + unordered_multiset(unordered_multiset&& __umset, + const allocator_type& __a) + : _M_h(std::move(__umset._M_h), __a) + { } + + unordered_multiset(size_type __n, const allocator_type& __a) + : unordered_multiset(__n, hasher(), key_equal(), __a) + { } + + unordered_multiset(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__n, __hf, key_equal(), __a) + { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_multiset(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__l, __n, __hf, key_equal(), __a) + { } + + /** + * @brief %Unordered_multiset list assignment operator. + * @param __l An initializer_list. + * + * This function fills an %unordered_multiset with copies of the elements + * in the initializer list @a __l. + * + * Note that the assignment completely changes the %unordered_multiset + * and that the resulting %unordered_multiset's size is the same as the + * number of elements assigned. + */ + unordered_multiset& + operator=(initializer_list __l) + { + _M_h = __l; + return *this; + } + + /// Returns the allocator object used by the %unordered_multiset. + allocator_type + get_allocator() const noexcept + { return _M_h.get_allocator(); } + + // size and capacity: + + /// Returns true if the %unordered_multiset is empty. + bool + empty() const noexcept + { return _M_h.empty(); } + + /// Returns the size of the %unordered_multiset. + size_type + size() const noexcept + { return _M_h.size(); } + + /// Returns the maximum size of the %unordered_multiset. + size_type + max_size() const noexcept + { return _M_h.max_size(); } + + // iterators. + + //@{ + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_multiset. + */ + iterator + begin() noexcept + { return _M_h.begin(); } + + const_iterator + begin() const noexcept + { return _M_h.begin(); } + //@} + + //@{ + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_multiset. + */ + iterator + end() noexcept + { return _M_h.end(); } + + const_iterator + end() const noexcept + { return _M_h.end(); } + //@} + + /** + * Returns a read-only (constant) iterator that points to the first + * element in the %unordered_multiset. + */ + const_iterator + cbegin() const noexcept + { return _M_h.begin(); } + + /** + * Returns a read-only (constant) iterator that points one past the last + * element in the %unordered_multiset. + */ + const_iterator + cend() const noexcept + { return _M_h.end(); } + + // modifiers. + + /** + * @brief Builds and insert an element into the %unordered_multiset. + * @param __args Arguments used to generate an element. + * @return An iterator that points to the inserted element. + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace(_Args&&... __args) + { return _M_h.emplace(std::forward<_Args>(__args)...); } + + /** + * @brief Inserts an element into the %unordered_multiset. + * @param __pos An iterator that serves as a hint as to where the + * element should be inserted. + * @param __args Arguments used to generate the element to be + * inserted. + * @return An iterator that points to the inserted element. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * For more on @a hinting, see: + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * + * Insertion requires amortized constant time. + */ + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { return _M_h.emplace_hint(__pos, std::forward<_Args>(__args)...); } + + //@{ + /** + * @brief Inserts an element into the %unordered_multiset. + * @param __x Element to be inserted. + * @return An iterator that points to the inserted element. + * + * Insertion requires amortized constant time. + */ + iterator + insert(const value_type& __x) + { return _M_h.insert(__x); } + + iterator + insert(value_type&& __x) + { return _M_h.insert(std::move(__x)); } + //@} + + //@{ + /** + * @brief Inserts an element into the %unordered_multiset. + * @param __hint An iterator that serves as a hint as to where the + * element should be inserted. + * @param __x Element to be inserted. + * @return An iterator that points to the inserted element. + * + * Note that the first parameter is only a hint and can potentially + * improve the performance of the insertion process. A bad hint would + * cause no gains in efficiency. + * + * For more on @a hinting, see: + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/associative.html#containers.associative.insert_hints + * + * Insertion requires amortized constant. + */ + iterator + insert(const_iterator __hint, const value_type& __x) + { return _M_h.insert(__hint, __x); } + + iterator + insert(const_iterator __hint, value_type&& __x) + { return _M_h.insert(__hint, std::move(__x)); } + //@} + + /** + * @brief A template function that inserts a range of elements. + * @param __first Iterator pointing to the start of the range to be + * inserted. + * @param __last Iterator pointing to the end of the range. + * + * Complexity similar to that of the range constructor. + */ + template + void + insert(_InputIterator __first, _InputIterator __last) + { _M_h.insert(__first, __last); } + + /** + * @brief Inserts a list of elements into the %unordered_multiset. + * @param __l A std::initializer_list of elements to be + * inserted. + * + * Complexity similar to that of the range constructor. + */ + void + insert(initializer_list __l) + { _M_h.insert(__l); } + +#if __cplusplus > 201402L + /// Extract a node. + node_type + extract(const_iterator __pos) + { + __glibcxx_assert(__pos != end()); + return _M_h.extract(__pos); + } + + /// Extract a node. + node_type + extract(const key_type& __key) + { return _M_h.extract(__key); } + + /// Re-insert an extracted node. + iterator + insert(node_type&& __nh) + { return _M_h._M_reinsert_node_multi(cend(), std::move(__nh)); } + + /// Re-insert an extracted node. + iterator + insert(const_iterator __hint, node_type&& __nh) + { return _M_h._M_reinsert_node_multi(__hint, std::move(__nh)); } +#endif // C++17 + + //@{ + /** + * @brief Erases an element from an %unordered_multiset. + * @param __position An iterator pointing to the element to be erased. + * @return An iterator pointing to the element immediately following + * @a __position prior to the element being erased. If no such + * element exists, end() is returned. + * + * This function erases an element, pointed to by the given iterator, + * from an %unordered_multiset. + * + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __position) + { return _M_h.erase(__position); } + + // LWG 2059. + iterator + erase(iterator __position) + { return _M_h.erase(__position); } + //@} + + + /** + * @brief Erases elements according to the provided key. + * @param __x Key of element to be erased. + * @return The number of elements erased. + * + * This function erases all the elements located by the given key from + * an %unordered_multiset. + * + * Note that this function only erases the element, and that if the + * element is itself a pointer, the pointed-to memory is not touched in + * any way. Managing the pointer is the user's responsibility. + */ + size_type + erase(const key_type& __x) + { return _M_h.erase(__x); } + + /** + * @brief Erases a [__first,__last) range of elements from an + * %unordered_multiset. + * @param __first Iterator pointing to the start of the range to be + * erased. + * @param __last Iterator pointing to the end of the range to + * be erased. + * @return The iterator @a __last. + * + * This function erases a sequence of elements from an + * %unordered_multiset. + * + * Note that this function only erases the element, and that if + * the element is itself a pointer, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + iterator + erase(const_iterator __first, const_iterator __last) + { return _M_h.erase(__first, __last); } + + /** + * Erases all elements in an %unordered_multiset. + * + * Note that this function only erases the elements, and that if the + * elements themselves are pointers, the pointed-to memory is not touched + * in any way. Managing the pointer is the user's responsibility. + */ + void + clear() noexcept + { _M_h.clear(); } + + /** + * @brief Swaps data with another %unordered_multiset. + * @param __x An %unordered_multiset of the same element and allocator + * types. + * + * This exchanges the elements between two sets in constant time. + * Note that the global std::swap() function is specialized such that + * std::swap(s1,s2) will feed to this function. + */ + void + swap(unordered_multiset& __x) + noexcept( noexcept(_M_h.swap(__x._M_h)) ) + { _M_h.swap(__x._M_h); } + +#if __cplusplus > 201402L + template + friend class std::_Hash_merge_helper; + + template + void + merge(unordered_multiset<_Value, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper + = _Hash_merge_helper; + _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_multiset<_Value, _H2, _P2, _Alloc>&& __source) + { merge(__source); } + + template + void + merge(unordered_set<_Value, _H2, _P2, _Alloc>& __source) + { + using _Merge_helper + = _Hash_merge_helper; + _M_h._M_merge_multi(_Merge_helper::_S_get_table(__source)); + } + + template + void + merge(unordered_set<_Value, _H2, _P2, _Alloc>&& __source) + { merge(__source); } +#endif // C++17 + + // observers. + + /// Returns the hash functor object with which the %unordered_multiset + /// was constructed. + hasher + hash_function() const + { return _M_h.hash_function(); } + + /// Returns the key comparison object with which the %unordered_multiset + /// was constructed. + key_equal + key_eq() const + { return _M_h.key_eq(); } + + // lookup. + + //@{ + /** + * @brief Tries to locate an element in an %unordered_multiset. + * @param __x Element to be located. + * @return Iterator pointing to sought-after element, or end() if not + * found. + * + * This function takes a key and tries to locate the element with which + * the key matches. If successful the function returns an iterator + * pointing to the sought after element. If unsuccessful it returns the + * past-the-end ( @c end() ) iterator. + */ + iterator + find(const key_type& __x) + { return _M_h.find(__x); } + + const_iterator + find(const key_type& __x) const + { return _M_h.find(__x); } + //@} + + /** + * @brief Finds the number of elements. + * @param __x Element to located. + * @return Number of elements with specified key. + */ + size_type + count(const key_type& __x) const + { return _M_h.count(__x); } + + //@{ + /** + * @brief Finds a subsequence matching given key. + * @param __x Key to be located. + * @return Pair of iterators that possibly points to the subsequence + * matching given key. + */ + std::pair + equal_range(const key_type& __x) + { return _M_h.equal_range(__x); } + + std::pair + equal_range(const key_type& __x) const + { return _M_h.equal_range(__x); } + //@} + + // bucket interface. + + /// Returns the number of buckets of the %unordered_multiset. + size_type + bucket_count() const noexcept + { return _M_h.bucket_count(); } + + /// Returns the maximum number of buckets of the %unordered_multiset. + size_type + max_bucket_count() const noexcept + { return _M_h.max_bucket_count(); } + + /* + * @brief Returns the number of elements in a given bucket. + * @param __n A bucket index. + * @return The number of elements in the bucket. + */ + size_type + bucket_size(size_type __n) const + { return _M_h.bucket_size(__n); } + + /* + * @brief Returns the bucket index of a given element. + * @param __key A key instance. + * @return The key bucket index. + */ + size_type + bucket(const key_type& __key) const + { return _M_h.bucket(__key); } + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to the first + * bucket element. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + begin(size_type __n) + { return _M_h.begin(__n); } + + const_local_iterator + begin(size_type __n) const + { return _M_h.begin(__n); } + + const_local_iterator + cbegin(size_type __n) const + { return _M_h.cbegin(__n); } + //@} + + //@{ + /** + * @brief Returns a read-only (constant) iterator pointing to one past + * the last bucket elements. + * @param __n The bucket index. + * @return A read-only local iterator. + */ + local_iterator + end(size_type __n) + { return _M_h.end(__n); } + + const_local_iterator + end(size_type __n) const + { return _M_h.end(__n); } + + const_local_iterator + cend(size_type __n) const + { return _M_h.cend(__n); } + //@} + + // hash policy. + + /// Returns the average number of elements per bucket. + float + load_factor() const noexcept + { return _M_h.load_factor(); } + + /// Returns a positive number that the %unordered_multiset tries to keep the + /// load factor less than or equal to. + float + max_load_factor() const noexcept + { return _M_h.max_load_factor(); } + + /** + * @brief Change the %unordered_multiset maximum load factor. + * @param __z The new maximum load factor. + */ + void + max_load_factor(float __z) + { _M_h.max_load_factor(__z); } + + /** + * @brief May rehash the %unordered_multiset. + * @param __n The new number of buckets. + * + * Rehash will occur only if the new number of buckets respect the + * %unordered_multiset maximum load factor. + */ + void + rehash(size_type __n) + { _M_h.rehash(__n); } + + /** + * @brief Prepare the %unordered_multiset for a specified number of + * elements. + * @param __n Number of elements required. + * + * Same as rehash(ceil(n / max_load_factor())). + */ + void + reserve(size_type __n) + { _M_h.reserve(__n); } + + template + friend bool + operator==(const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&, + const unordered_multiset<_Value1, _Hash1, _Pred1, _Alloc1>&); + }; + + +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Pred = + equal_to::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(_InputIterator, _InputIterator, + unordered_multiset::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multiset::value_type, + _Hash, _Pred, _Allocator>; + + template, + typename _Pred = equal_to<_Tp>, + typename _Allocator = allocator<_Tp>, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(initializer_list<_Tp>, + unordered_multiset::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multiset<_Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(_InputIterator, _InputIterator, + unordered_multiset::size_type, _Allocator) + -> unordered_multiset::value_type, + hash::value_type>, + equal_to::value_type>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(_InputIterator, _InputIterator, + unordered_multiset::size_type, + _Hash, _Allocator) + -> unordered_multiset::value_type, + _Hash, + equal_to< + typename + iterator_traits<_InputIterator>::value_type>, + _Allocator>; + + template> + unordered_multiset(initializer_list<_Tp>, + unordered_multiset::size_type, _Allocator) + -> unordered_multiset<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; + + template> + unordered_multiset(initializer_list<_Tp>, + unordered_multiset::size_type, _Hash, _Allocator) + -> unordered_multiset<_Tp, _Hash, equal_to<_Tp>, _Allocator>; + +#endif + + template + inline void + swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline void + swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + template + inline bool + operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_h._M_equal(__y._M_h); } + + template + inline bool + operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +_GLIBCXX_END_NAMESPACE_CONTAINER + +#if __cplusplus > 201402L + // Allow std::unordered_set access to internals of compatible sets. + template + struct _Hash_merge_helper< + _GLIBCXX_STD_C::unordered_set<_Val, _Hash1, _Eq1, _Alloc>, _Hash2, _Eq2> + { + private: + template + using unordered_set = _GLIBCXX_STD_C::unordered_set<_Tp...>; + template + using unordered_multiset = _GLIBCXX_STD_C::unordered_multiset<_Tp...>; + + friend unordered_set<_Val, _Hash1, _Eq1, _Alloc>; + + static auto& + _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) + { return __set._M_h; } + + static auto& + _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) + { return __set._M_h; } + }; + + // Allow std::unordered_multiset access to internals of compatible sets. + template + struct _Hash_merge_helper< + _GLIBCXX_STD_C::unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>, + _Hash2, _Eq2> + { + private: + template + using unordered_set = _GLIBCXX_STD_C::unordered_set<_Tp...>; + template + using unordered_multiset = _GLIBCXX_STD_C::unordered_multiset<_Tp...>; + + friend unordered_multiset<_Val, _Hash1, _Eq1, _Alloc>; + + static auto& + _S_get_table(unordered_set<_Val, _Hash2, _Eq2, _Alloc>& __set) + { return __set._M_h; } + + static auto& + _S_get_table(unordered_multiset<_Val, _Hash2, _Eq2, _Alloc>& __set) + { return __set._M_h; } + }; +#endif // C++17 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif /* _UNORDERED_SET_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/uses_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/uses_allocator.h similarity index 92% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/uses_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/uses_allocator.h index 4d60716b4..203758cfe 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/uses_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/uses_allocator.h @@ -1,6 +1,6 @@ // Uses-allocator Construction -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 @@ -83,14 +83,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct __uses_alloc : conditional< - is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value, + is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>::value, __uses_alloc1<_Alloc>, __uses_alloc2<_Alloc>>::type { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2586. Wrong value category used in scoped_allocator_adaptor::construct static_assert(__or_< - is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>, - is_constructible<_Tp, _Args..., _Alloc>>::value, "construction with" - " an allocator must be possible if uses_allocator is true"); + is_constructible<_Tp, allocator_arg_t, const _Alloc&, _Args...>, + is_constructible<_Tp, _Args..., const _Alloc&>>::value, + "construction with an allocator must be possible" + " if uses_allocator is true"); }; template diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_after.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_after.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_after.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_after.h index 54ba7fed6..7f62b292e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_after.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_after.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- internal _Meta class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_array.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_array.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_array.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_array.h index bb32d7ac1..f3770df3e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_array.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_array.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- internal _Array helper class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -341,17 +341,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // - // Compute the sum of elements in range [__f, __l) + // Compute the sum of elements in range [__f, __l) which must not be empty. // This is a naive algorithm. It suffers from cancelling. - // In the future try to specialize - // for _Tp = float, double, long double using a more accurate - // algorithm. + // In the future try to specialize for _Tp = float, double, long double + // using a more accurate algorithm. // template inline _Tp __valarray_sum(const _Tp* __f, const _Tp* __l) { - _Tp __r = _Tp(); + _Tp __r = *__f++; while (__f != __l) __r += *__f++; return __r; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_array.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_array.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_array.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_array.tcc index 9879c5281..8034e1eef 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_array.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_array.tcc @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- internal _Array helper class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_before.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_before.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_before.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_before.h index 67603e109..a77fdf203 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/valarray_before.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/valarray_before.h @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- internal _Meta class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/vector.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/vector.tcc similarity index 88% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/vector.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/vector.tcc index 8d688661c..93f033008 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/bits/vector.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bits/vector.tcc @@ -1,6 +1,6 @@ // Vector implementation (out of line) -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -58,6 +58,7 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION _GLIBCXX_BEGIN_NAMESPACE_CONTAINER template @@ -73,6 +74,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER pointer __tmp = _M_allocate_and_copy(__n, _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(this->_M_impl._M_start), _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(this->_M_impl._M_finish)); + _GLIBCXX_ASAN_ANNOTATE_REINIT; std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, _M_get_Tp_allocator()); _M_deallocate(this->_M_impl._M_start, @@ -97,9 +99,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) { + _GLIBCXX_ASAN_ANNOTATE_GROW(1); _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, std::forward<_Args>(__args)...); ++this->_M_impl._M_finish; + _GLIBCXX_ASAN_ANNOTATE_GREW(1); } else _M_realloc_insert(end(), std::forward<_Args>(__args)...); @@ -122,9 +126,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) if (__position == end()) { + _GLIBCXX_ASAN_ANNOTATE_GROW(1); _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, __x); ++this->_M_impl._M_finish; + _GLIBCXX_ASAN_ANNOTATE_GREW(1); } else { @@ -157,6 +163,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_MOVE3(__position + 1, end(), __position); --this->_M_impl._M_finish; _Alloc_traits::destroy(this->_M_impl, this->_M_impl._M_finish); + _GLIBCXX_ASAN_ANNOTATE_SHRINK(1); return __position; } @@ -181,6 +188,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { if (&__x != this) { + _GLIBCXX_ASAN_ANNOTATE_REINIT; #if __cplusplus >= 201103L if (_Alloc_traits::_S_propagate_on_copy_assign()) { @@ -245,10 +253,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER else if (__n > size()) { std::fill(begin(), end(), __val); + const size_type __add = __n - size(); + _GLIBCXX_ASAN_ANNOTATE_GROW(__add); this->_M_impl._M_finish = std::__uninitialized_fill_n_a(this->_M_impl._M_finish, - __n - size(), __val, - _M_get_Tp_allocator()); + __add, __val, _M_get_Tp_allocator()); + _GLIBCXX_ASAN_ANNOTATE_GREW(__add); } else _M_erase_at_end(std::fill_n(this->_M_impl._M_start, __n, __val)); @@ -284,6 +294,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER if (__len > capacity()) { pointer __tmp(_M_allocate_and_copy(__len, __first, __last)); + _GLIBCXX_ASAN_ANNOTATE_REINIT; std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, _M_get_Tp_allocator()); _M_deallocate(this->_M_impl._M_start, @@ -300,10 +311,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _ForwardIterator __mid = __first; std::advance(__mid, size()); std::copy(__first, __mid, this->_M_impl._M_start); + const size_type __attribute__((__unused__)) __n = __len - size(); + _GLIBCXX_ASAN_ANNOTATE_GROW(__n); this->_M_impl._M_finish = std::__uninitialized_copy_a(__mid, __last, this->_M_impl._M_finish, _M_get_Tp_allocator()); + _GLIBCXX_ASAN_ANNOTATE_GREW(__n); } } @@ -317,9 +331,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) if (__position == cend()) { + _GLIBCXX_ASAN_ANNOTATE_GROW(1); _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, std::move(__v)); ++this->_M_impl._M_finish; + _GLIBCXX_ASAN_ANNOTATE_GREW(1); } else _M_insert_aux(begin() + __n, std::move(__v)); @@ -340,9 +356,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) if (__position == cend()) { + _GLIBCXX_ASAN_ANNOTATE_GROW(1); _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, std::forward<_Args>(__args)...); ++this->_M_impl._M_finish; + _GLIBCXX_ASAN_ANNOTATE_GREW(1); } else { @@ -370,10 +388,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_insert_aux(iterator __position, const _Tp& __x) #endif { + _GLIBCXX_ASAN_ANNOTATE_GROW(1); _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish, - _GLIBCXX_MOVE(*(this->_M_impl._M_finish - - 1))); + _GLIBCXX_MOVE(*(this->_M_impl._M_finish - 1))); ++this->_M_impl._M_finish; + _GLIBCXX_ASAN_ANNOTATE_GREW(1); #if __cplusplus < 201103L _Tp __x_copy = __x; #endif @@ -402,6 +421,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { const size_type __len = _M_check_len(size_type(1), "vector::_M_realloc_insert"); + pointer __old_start = this->_M_impl._M_start; + pointer __old_finish = this->_M_impl._M_finish; const size_type __elems_before = __position - begin(); pointer __new_start(this->_M_allocate(__len)); pointer __new_finish(__new_start); @@ -423,14 +444,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER __new_finish = std::__uninitialized_move_if_noexcept_a - (this->_M_impl._M_start, __position.base(), + (__old_start, __position.base(), __new_start, _M_get_Tp_allocator()); ++__new_finish; __new_finish = std::__uninitialized_move_if_noexcept_a - (__position.base(), this->_M_impl._M_finish, + (__position.base(), __old_finish, __new_finish, _M_get_Tp_allocator()); } __catch(...) @@ -443,11 +464,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_deallocate(__new_start, __len); __throw_exception_again; } - std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, - _M_get_Tp_allocator()); - _M_deallocate(this->_M_impl._M_start, - this->_M_impl._M_end_of_storage - - this->_M_impl._M_start); + _GLIBCXX_ASAN_ANNOTATE_REINIT; + std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator()); + _M_deallocate(__old_start, + this->_M_impl._M_end_of_storage - __old_start); this->_M_impl._M_start = __new_start; this->_M_impl._M_finish = __new_finish; this->_M_impl._M_end_of_storage = __new_start + __len; @@ -473,11 +493,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER pointer __old_finish(this->_M_impl._M_finish); if (__elems_after > __n) { + _GLIBCXX_ASAN_ANNOTATE_GROW(__n); std::__uninitialized_move_a(this->_M_impl._M_finish - __n, this->_M_impl._M_finish, this->_M_impl._M_finish, _M_get_Tp_allocator()); this->_M_impl._M_finish += __n; + _GLIBCXX_ASAN_ANNOTATE_GREW(__n); _GLIBCXX_MOVE_BACKWARD3(__position.base(), __old_finish - __n, __old_finish); std::fill(__position.base(), __position.base() + __n, @@ -485,15 +507,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER } else { + _GLIBCXX_ASAN_ANNOTATE_GROW(__n); this->_M_impl._M_finish = std::__uninitialized_fill_n_a(this->_M_impl._M_finish, __n - __elems_after, __x_copy, _M_get_Tp_allocator()); + _GLIBCXX_ASAN_ANNOTATE_GREW(__n - __elems_after); std::__uninitialized_move_a(__position.base(), __old_finish, this->_M_impl._M_finish, _M_get_Tp_allocator()); this->_M_impl._M_finish += __elems_after; + _GLIBCXX_ASAN_ANNOTATE_GREW(__elems_after); std::fill(__position.base(), __old_finish, __x_copy); } } @@ -536,6 +561,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_deallocate(__new_start, __len); __throw_exception_again; } + _GLIBCXX_ASAN_ANNOTATE_REINIT; std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, _M_get_Tp_allocator()); _M_deallocate(this->_M_impl._M_start, @@ -556,44 +582,52 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { if (__n != 0) { - if (size_type(this->_M_impl._M_end_of_storage - - this->_M_impl._M_finish) >= __n) + const size_type __size = size(); + size_type __navail = size_type(this->_M_impl._M_end_of_storage + - this->_M_impl._M_finish); + + if (__size > max_size() || __navail > max_size() - __size) + __builtin_unreachable(); + + if (__navail >= __n) { + _GLIBCXX_ASAN_ANNOTATE_GROW(__n); this->_M_impl._M_finish = std::__uninitialized_default_n_a(this->_M_impl._M_finish, __n, _M_get_Tp_allocator()); + _GLIBCXX_ASAN_ANNOTATE_GREW(__n); } else { const size_type __len = _M_check_len(__n, "vector::_M_default_append"); - const size_type __old_size = this->size(); pointer __new_start(this->_M_allocate(__len)); - pointer __new_finish(__new_start); + pointer __destroy_from = pointer(); __try { - __new_finish - = std::__uninitialized_move_if_noexcept_a - (this->_M_impl._M_start, this->_M_impl._M_finish, - __new_start, _M_get_Tp_allocator()); - __new_finish = - std::__uninitialized_default_n_a(__new_finish, __n, - _M_get_Tp_allocator()); + std::__uninitialized_default_n_a(__new_start + __size, + __n, _M_get_Tp_allocator()); + __destroy_from = __new_start + __size; + std::__uninitialized_move_if_noexcept_a( + this->_M_impl._M_start, this->_M_impl._M_finish, + __new_start, _M_get_Tp_allocator()); } __catch(...) { - std::_Destroy(__new_start, __new_finish, - _M_get_Tp_allocator()); + if (__destroy_from) + std::_Destroy(__destroy_from, __destroy_from + __n, + _M_get_Tp_allocator()); _M_deallocate(__new_start, __len); __throw_exception_again; } + _GLIBCXX_ASAN_ANNOTATE_REINIT; std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, _M_get_Tp_allocator()); _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage - this->_M_impl._M_start); this->_M_impl._M_start = __new_start; - this->_M_impl._M_finish = __new_finish; + this->_M_impl._M_finish = __new_start + __size + __n; this->_M_impl._M_end_of_storage = __new_start + __len; } } @@ -606,6 +640,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { if (capacity() == size()) return false; + _GLIBCXX_ASAN_ANNOTATE_REINIT; return std::__shrink_to_fit_aux::_S_do_it(*this); } #endif @@ -617,10 +652,17 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_range_insert(iterator __pos, _InputIterator __first, _InputIterator __last, std::input_iterator_tag) { - for (; __first != __last; ++__first) + if (__pos == end()) { - __pos = insert(__pos, *__first); - ++__pos; + for (; __first != __last; ++__first) + insert(end(), *__first); + } + else if (__first != __last) + { + vector __tmp(__first, __last, _M_get_Tp_allocator()); + insert(__pos, + _GLIBCXX_MAKE_MOVE_ITERATOR(__tmp.begin()), + _GLIBCXX_MAKE_MOVE_ITERATOR(__tmp.end())); } } @@ -641,11 +683,13 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER pointer __old_finish(this->_M_impl._M_finish); if (__elems_after > __n) { + _GLIBCXX_ASAN_ANNOTATE_GROW(__n); std::__uninitialized_move_a(this->_M_impl._M_finish - __n, this->_M_impl._M_finish, this->_M_impl._M_finish, _M_get_Tp_allocator()); this->_M_impl._M_finish += __n; + _GLIBCXX_ASAN_ANNOTATE_GREW(__n); _GLIBCXX_MOVE_BACKWARD3(__position.base(), __old_finish - __n, __old_finish); std::copy(__first, __last, __position); @@ -654,15 +698,18 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER { _ForwardIterator __mid = __first; std::advance(__mid, __elems_after); + _GLIBCXX_ASAN_ANNOTATE_GROW(__n); std::__uninitialized_copy_a(__mid, __last, this->_M_impl._M_finish, _M_get_Tp_allocator()); this->_M_impl._M_finish += __n - __elems_after; + _GLIBCXX_ASAN_ANNOTATE_GREW(__n - __elems_after); std::__uninitialized_move_a(__position.base(), __old_finish, this->_M_impl._M_finish, _M_get_Tp_allocator()); this->_M_impl._M_finish += __elems_after; + _GLIBCXX_ASAN_ANNOTATE_GREW(__elems_after); std::copy(__first, __mid, __position); } } @@ -694,6 +741,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _M_deallocate(__new_start, __len); __throw_exception_again; } + _GLIBCXX_ASAN_ANNOTATE_REINIT; std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, _M_get_Tp_allocator()); _M_deallocate(this->_M_impl._M_start, @@ -856,6 +904,7 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER #endif _GLIBCXX_END_NAMESPACE_CONTAINER +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #if __cplusplus >= 201103L @@ -902,4 +951,9 @@ _GLIBCXX_END_NAMESPACE_VERSION #endif // C++11 +#undef _GLIBCXX_ASAN_ANNOTATE_REINIT +#undef _GLIBCXX_ASAN_ANNOTATE_GROW +#undef _GLIBCXX_ASAN_ANNOTATE_GREW +#undef _GLIBCXX_ASAN_ANNOTATE_SHRINK + #endif /* _VECTOR_TCC */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bitset new file mode 100644 index 000000000..e598ea312 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/bitset @@ -0,0 +1,1596 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file include/bitset + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_BITSET +#define _GLIBCXX_BITSET 1 + +#pragma GCC system_header + +#include +#include // For invalid_argument, out_of_range, + // overflow_error +#include +#include + +#if __cplusplus >= 201103L +# include +#endif + +#define _GLIBCXX_BITSET_BITS_PER_WORD (__CHAR_BIT__ * __SIZEOF_LONG__) +#define _GLIBCXX_BITSET_WORDS(__n) \ + ((__n) / _GLIBCXX_BITSET_BITS_PER_WORD + \ + ((__n) % _GLIBCXX_BITSET_BITS_PER_WORD == 0 ? 0 : 1)) + +#define _GLIBCXX_BITSET_BITS_PER_ULL (__CHAR_BIT__ * __SIZEOF_LONG_LONG__) + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_CONTAINER + + /** + * Base class, general case. It is a class invariant that _Nw will be + * nonnegative. + * + * See documentation for bitset. + */ + template + struct _Base_bitset + { + typedef unsigned long _WordT; + + /// 0 is the least significant word. + _WordT _M_w[_Nw]; + + _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT + : _M_w() { } + +#if __cplusplus >= 201103L + constexpr _Base_bitset(unsigned long long __val) noexcept + : _M_w{ _WordT(__val) +#if __SIZEOF_LONG_LONG__ > __SIZEOF_LONG__ + , _WordT(__val >> _GLIBCXX_BITSET_BITS_PER_WORD) +#endif + } { } +#else + _Base_bitset(unsigned long __val) + : _M_w() + { _M_w[0] = __val; } +#endif + + static _GLIBCXX_CONSTEXPR size_t + _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT + { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR _WordT + _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } + + _WordT& + _M_getword(size_t __pos) _GLIBCXX_NOEXCEPT + { return _M_w[_S_whichword(__pos)]; } + + _GLIBCXX_CONSTEXPR _WordT + _M_getword(size_t __pos) const _GLIBCXX_NOEXCEPT + { return _M_w[_S_whichword(__pos)]; } + +#if __cplusplus >= 201103L + const _WordT* + _M_getdata() const noexcept + { return _M_w; } +#endif + + _WordT& + _M_hiword() _GLIBCXX_NOEXCEPT + { return _M_w[_Nw - 1]; } + + _GLIBCXX_CONSTEXPR _WordT + _M_hiword() const _GLIBCXX_NOEXCEPT + { return _M_w[_Nw - 1]; } + + void + _M_do_and(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] &= __x._M_w[__i]; + } + + void + _M_do_or(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] |= __x._M_w[__i]; + } + + void + _M_do_xor(const _Base_bitset<_Nw>& __x) _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] ^= __x._M_w[__i]; + } + + void + _M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT; + + void + _M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT; + + void + _M_do_flip() _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] = ~_M_w[__i]; + } + + void + _M_do_set() _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + _M_w[__i] = ~static_cast<_WordT>(0); + } + + void + _M_do_reset() _GLIBCXX_NOEXCEPT + { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); } + + bool + _M_is_equal(const _Base_bitset<_Nw>& __x) const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; ++__i) + if (_M_w[__i] != __x._M_w[__i]) + return false; + return true; + } + + template + bool + _M_are_all() const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw - 1; __i++) + if (_M_w[__i] != ~static_cast<_WordT>(0)) + return false; + return _M_hiword() == (~static_cast<_WordT>(0) + >> (_Nw * _GLIBCXX_BITSET_BITS_PER_WORD + - _Nb)); + } + + bool + _M_is_any() const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + if (_M_w[__i] != static_cast<_WordT>(0)) + return true; + return false; + } + + size_t + _M_do_count() const _GLIBCXX_NOEXCEPT + { + size_t __result = 0; + for (size_t __i = 0; __i < _Nw; __i++) + __result += __builtin_popcountl(_M_w[__i]); + return __result; + } + + unsigned long + _M_do_to_ulong() const; + +#if __cplusplus >= 201103L + unsigned long long + _M_do_to_ullong() const; +#endif + + // find first "on" bit + size_t + _M_do_find_first(size_t) const _GLIBCXX_NOEXCEPT; + + // find the next "on" bit that follows "prev" + size_t + _M_do_find_next(size_t, size_t) const _GLIBCXX_NOEXCEPT; + }; + + // Definitions of non-inline functions from _Base_bitset. + template + void + _Base_bitset<_Nw>::_M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__shift != 0, 1)) + { + const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD; + const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD; + + if (__offset == 0) + for (size_t __n = _Nw - 1; __n >= __wshift; --__n) + _M_w[__n] = _M_w[__n - __wshift]; + else + { + const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD + - __offset); + for (size_t __n = _Nw - 1; __n > __wshift; --__n) + _M_w[__n] = ((_M_w[__n - __wshift] << __offset) + | (_M_w[__n - __wshift - 1] >> __sub_offset)); + _M_w[__wshift] = _M_w[0] << __offset; + } + + std::fill(_M_w + 0, _M_w + __wshift, static_cast<_WordT>(0)); + } + } + + template + void + _Base_bitset<_Nw>::_M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__shift != 0, 1)) + { + const size_t __wshift = __shift / _GLIBCXX_BITSET_BITS_PER_WORD; + const size_t __offset = __shift % _GLIBCXX_BITSET_BITS_PER_WORD; + const size_t __limit = _Nw - __wshift - 1; + + if (__offset == 0) + for (size_t __n = 0; __n <= __limit; ++__n) + _M_w[__n] = _M_w[__n + __wshift]; + else + { + const size_t __sub_offset = (_GLIBCXX_BITSET_BITS_PER_WORD + - __offset); + for (size_t __n = 0; __n < __limit; ++__n) + _M_w[__n] = ((_M_w[__n + __wshift] >> __offset) + | (_M_w[__n + __wshift + 1] << __sub_offset)); + _M_w[__limit] = _M_w[_Nw-1] >> __offset; + } + + std::fill(_M_w + __limit + 1, _M_w + _Nw, static_cast<_WordT>(0)); + } + } + + template + unsigned long + _Base_bitset<_Nw>::_M_do_to_ulong() const + { + for (size_t __i = 1; __i < _Nw; ++__i) + if (_M_w[__i]) + __throw_overflow_error(__N("_Base_bitset::_M_do_to_ulong")); + return _M_w[0]; + } + +#if __cplusplus >= 201103L + template + unsigned long long + _Base_bitset<_Nw>::_M_do_to_ullong() const + { + const bool __dw = sizeof(unsigned long long) > sizeof(unsigned long); + for (size_t __i = 1 + __dw; __i < _Nw; ++__i) + if (_M_w[__i]) + __throw_overflow_error(__N("_Base_bitset::_M_do_to_ullong")); + + if (__dw) + return _M_w[0] + (static_cast(_M_w[1]) + << _GLIBCXX_BITSET_BITS_PER_WORD); + return _M_w[0]; + } +#endif + + template + size_t + _Base_bitset<_Nw>:: + _M_do_find_first(size_t __not_found) const _GLIBCXX_NOEXCEPT + { + for (size_t __i = 0; __i < _Nw; __i++) + { + _WordT __thisword = _M_w[__i]; + if (__thisword != static_cast<_WordT>(0)) + return (__i * _GLIBCXX_BITSET_BITS_PER_WORD + + __builtin_ctzl(__thisword)); + } + // not found, so return an indication of failure. + return __not_found; + } + + template + size_t + _Base_bitset<_Nw>:: + _M_do_find_next(size_t __prev, size_t __not_found) const _GLIBCXX_NOEXCEPT + { + // make bound inclusive + ++__prev; + + // check out of bounds + if (__prev >= _Nw * _GLIBCXX_BITSET_BITS_PER_WORD) + return __not_found; + + // search first word + size_t __i = _S_whichword(__prev); + _WordT __thisword = _M_w[__i]; + + // mask off bits below bound + __thisword &= (~static_cast<_WordT>(0)) << _S_whichbit(__prev); + + if (__thisword != static_cast<_WordT>(0)) + return (__i * _GLIBCXX_BITSET_BITS_PER_WORD + + __builtin_ctzl(__thisword)); + + // check subsequent words + __i++; + for (; __i < _Nw; __i++) + { + __thisword = _M_w[__i]; + if (__thisword != static_cast<_WordT>(0)) + return (__i * _GLIBCXX_BITSET_BITS_PER_WORD + + __builtin_ctzl(__thisword)); + } + // not found, so return an indication of failure. + return __not_found; + } // end _M_do_find_next + + /** + * Base class, specialization for a single word. + * + * See documentation for bitset. + */ + template<> + struct _Base_bitset<1> + { + typedef unsigned long _WordT; + _WordT _M_w; + + _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT + : _M_w(0) + { } + +#if __cplusplus >= 201103L + constexpr _Base_bitset(unsigned long long __val) noexcept +#else + _Base_bitset(unsigned long __val) +#endif + : _M_w(__val) + { } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT + { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR _WordT + _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } + + _WordT& + _M_getword(size_t) _GLIBCXX_NOEXCEPT + { return _M_w; } + + _GLIBCXX_CONSTEXPR _WordT + _M_getword(size_t) const _GLIBCXX_NOEXCEPT + { return _M_w; } + +#if __cplusplus >= 201103L + const _WordT* + _M_getdata() const noexcept + { return &_M_w; } +#endif + + _WordT& + _M_hiword() _GLIBCXX_NOEXCEPT + { return _M_w; } + + _GLIBCXX_CONSTEXPR _WordT + _M_hiword() const _GLIBCXX_NOEXCEPT + { return _M_w; } + + void + _M_do_and(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT + { _M_w &= __x._M_w; } + + void + _M_do_or(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT + { _M_w |= __x._M_w; } + + void + _M_do_xor(const _Base_bitset<1>& __x) _GLIBCXX_NOEXCEPT + { _M_w ^= __x._M_w; } + + void + _M_do_left_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { _M_w <<= __shift; } + + void + _M_do_right_shift(size_t __shift) _GLIBCXX_NOEXCEPT + { _M_w >>= __shift; } + + void + _M_do_flip() _GLIBCXX_NOEXCEPT + { _M_w = ~_M_w; } + + void + _M_do_set() _GLIBCXX_NOEXCEPT + { _M_w = ~static_cast<_WordT>(0); } + + void + _M_do_reset() _GLIBCXX_NOEXCEPT + { _M_w = 0; } + + bool + _M_is_equal(const _Base_bitset<1>& __x) const _GLIBCXX_NOEXCEPT + { return _M_w == __x._M_w; } + + template + bool + _M_are_all() const _GLIBCXX_NOEXCEPT + { return _M_w == (~static_cast<_WordT>(0) + >> (_GLIBCXX_BITSET_BITS_PER_WORD - _Nb)); } + + bool + _M_is_any() const _GLIBCXX_NOEXCEPT + { return _M_w != 0; } + + size_t + _M_do_count() const _GLIBCXX_NOEXCEPT + { return __builtin_popcountl(_M_w); } + + unsigned long + _M_do_to_ulong() const _GLIBCXX_NOEXCEPT + { return _M_w; } + +#if __cplusplus >= 201103L + unsigned long long + _M_do_to_ullong() const noexcept + { return _M_w; } +#endif + + size_t + _M_do_find_first(size_t __not_found) const _GLIBCXX_NOEXCEPT + { + if (_M_w != 0) + return __builtin_ctzl(_M_w); + else + return __not_found; + } + + // find the next "on" bit that follows "prev" + size_t + _M_do_find_next(size_t __prev, size_t __not_found) const + _GLIBCXX_NOEXCEPT + { + ++__prev; + if (__prev >= ((size_t) _GLIBCXX_BITSET_BITS_PER_WORD)) + return __not_found; + + _WordT __x = _M_w >> __prev; + if (__x != 0) + return __builtin_ctzl(__x) + __prev; + else + return __not_found; + } + }; + + /** + * Base class, specialization for no storage (zero-length %bitset). + * + * See documentation for bitset. + */ + template<> + struct _Base_bitset<0> + { + typedef unsigned long _WordT; + + _GLIBCXX_CONSTEXPR _Base_bitset() _GLIBCXX_NOEXCEPT + { } + +#if __cplusplus >= 201103L + constexpr _Base_bitset(unsigned long long) noexcept +#else + _Base_bitset(unsigned long) +#endif + { } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichword(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos / _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbyte(size_t __pos) _GLIBCXX_NOEXCEPT + { return (__pos % _GLIBCXX_BITSET_BITS_PER_WORD) / __CHAR_BIT__; } + + static _GLIBCXX_CONSTEXPR size_t + _S_whichbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return __pos % _GLIBCXX_BITSET_BITS_PER_WORD; } + + static _GLIBCXX_CONSTEXPR _WordT + _S_maskbit(size_t __pos) _GLIBCXX_NOEXCEPT + { return (static_cast<_WordT>(1)) << _S_whichbit(__pos); } + + // This would normally give access to the data. The bounds-checking + // in the bitset class will prevent the user from getting this far, + // but (1) it must still return an lvalue to compile, and (2) the + // user might call _Unchecked_set directly, in which case this /needs/ + // to fail. Let's not penalize zero-length users unless they actually + // make an unchecked call; all the memory ugliness is therefore + // localized to this single should-never-get-this-far function. + _WordT& + _M_getword(size_t) _GLIBCXX_NOEXCEPT + { + __throw_out_of_range(__N("_Base_bitset::_M_getword")); + return *new _WordT; + } + + _GLIBCXX_CONSTEXPR _WordT + _M_getword(size_t) const _GLIBCXX_NOEXCEPT + { return 0; } + + _GLIBCXX_CONSTEXPR _WordT + _M_hiword() const _GLIBCXX_NOEXCEPT + { return 0; } + + void + _M_do_and(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_or(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_xor(const _Base_bitset<0>&) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_left_shift(size_t) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_right_shift(size_t) _GLIBCXX_NOEXCEPT + { } + + void + _M_do_flip() _GLIBCXX_NOEXCEPT + { } + + void + _M_do_set() _GLIBCXX_NOEXCEPT + { } + + void + _M_do_reset() _GLIBCXX_NOEXCEPT + { } + + // Are all empty bitsets equal to each other? Are they equal to + // themselves? How to compare a thing which has no state? What is + // the sound of one zero-length bitset clapping? + bool + _M_is_equal(const _Base_bitset<0>&) const _GLIBCXX_NOEXCEPT + { return true; } + + template + bool + _M_are_all() const _GLIBCXX_NOEXCEPT + { return true; } + + bool + _M_is_any() const _GLIBCXX_NOEXCEPT + { return false; } + + size_t + _M_do_count() const _GLIBCXX_NOEXCEPT + { return 0; } + + unsigned long + _M_do_to_ulong() const _GLIBCXX_NOEXCEPT + { return 0; } + +#if __cplusplus >= 201103L + unsigned long long + _M_do_to_ullong() const noexcept + { return 0; } +#endif + + // Normally "not found" is the size, but that could also be + // misinterpreted as an index in this corner case. Oh well. + size_t + _M_do_find_first(size_t) const _GLIBCXX_NOEXCEPT + { return 0; } + + size_t + _M_do_find_next(size_t, size_t) const _GLIBCXX_NOEXCEPT + { return 0; } + }; + + + // Helper class to zero out the unused high-order bits in the highest word. + template + struct _Sanitize + { + typedef unsigned long _WordT; + + static void + _S_do_sanitize(_WordT& __val) _GLIBCXX_NOEXCEPT + { __val &= ~((~static_cast<_WordT>(0)) << _Extrabits); } + }; + + template<> + struct _Sanitize<0> + { + typedef unsigned long _WordT; + + static void + _S_do_sanitize(_WordT) _GLIBCXX_NOEXCEPT { } + }; + +#if __cplusplus >= 201103L + template + struct _Sanitize_val + { + static constexpr unsigned long long + _S_do_sanitize_val(unsigned long long __val) + { return __val; } + }; + + template + struct _Sanitize_val<_Nb, true> + { + static constexpr unsigned long long + _S_do_sanitize_val(unsigned long long __val) + { return __val & ~((~static_cast(0)) << _Nb); } + }; +#endif + + /** + * @brief The %bitset class represents a @e fixed-size sequence of bits. + * @ingroup utilities + * + * (Note that %bitset does @e not meet the formal requirements of a + * container. Mainly, it lacks iterators.) + * + * The template argument, @a Nb, may be any non-negative number, + * specifying the number of bits (e.g., "0", "12", "1024*1024"). + * + * In the general unoptimized case, storage is allocated in word-sized + * blocks. Let B be the number of bits in a word, then (Nb+(B-1))/B + * words will be used for storage. B - Nb%B bits are unused. (They are + * the high-order bits in the highest word.) It is a class invariant + * that those unused bits are always zero. + * + * If you think of %bitset as a simple array of bits, be + * aware that your mental picture is reversed: a %bitset behaves + * the same way as bits in integers do, with the bit at index 0 in + * the least significant / right-hand position, and the bit at + * index Nb-1 in the most significant / left-hand position. + * Thus, unlike other containers, a %bitset's index counts from + * right to left, to put it very loosely. + * + * This behavior is preserved when translating to and from strings. For + * example, the first line of the following program probably prints + * b('a') is 0001100001 on a modern ASCII system. + * + * @code + * #include + * #include + * #include + * + * using namespace std; + * + * int main() + * { + * long a = 'a'; + * bitset<10> b(a); + * + * cout << "b('a') is " << b << endl; + * + * ostringstream s; + * s << b; + * string str = s.str(); + * cout << "index 3 in the string is " << str[3] << " but\n" + * << "index 3 in the bitset is " << b[3] << endl; + * } + * @endcode + * + * Also see: + * https://gcc.gnu.org/onlinedocs/libstdc++/manual/ext_containers.html + * for a description of extensions. + * + * Most of the actual code isn't contained in %bitset<> itself, but in the + * base class _Base_bitset. The base class works with whole words, not with + * individual bits. This allows us to specialize _Base_bitset for the + * important special case where the %bitset is only a single word. + * + * Extra confusion can result due to the fact that the storage for + * _Base_bitset @e is a regular array, and is indexed as such. This is + * carefully encapsulated. + */ + template + class bitset + : private _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> + { + private: + typedef _Base_bitset<_GLIBCXX_BITSET_WORDS(_Nb)> _Base; + typedef unsigned long _WordT; + + template + void + _M_check_initial_position(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position) const + { + if (__position > __s.size()) + __throw_out_of_range_fmt(__N("bitset::bitset: __position " + "(which is %zu) > __s.size() " + "(which is %zu)"), + __position, __s.size()); + } + + void _M_check(size_t __position, const char *__s) const + { + if (__position >= _Nb) + __throw_out_of_range_fmt(__N("%s: __position (which is %zu) " + ">= _Nb (which is %zu)"), + __s, __position, _Nb); + } + + void + _M_do_sanitize() _GLIBCXX_NOEXCEPT + { + typedef _Sanitize<_Nb % _GLIBCXX_BITSET_BITS_PER_WORD> __sanitize_type; + __sanitize_type::_S_do_sanitize(this->_M_hiword()); + } + +#if __cplusplus >= 201103L + friend struct std::hash; +#endif + + public: + /** + * This encapsulates the concept of a single bit. An instance of this + * class is a proxy for an actual bit; this way the individual bit + * operations are done as faster word-size bitwise instructions. + * + * Most users will never need to use this class directly; conversions + * to and from bool are automatic and should be transparent. Overloaded + * operators help to preserve the illusion. + * + * (On a typical system, this bit %reference is 64 + * times the size of an actual bit. Ha.) + */ + class reference + { + friend class bitset; + + _WordT* _M_wp; + size_t _M_bpos; + + // left undefined + reference(); + + public: + reference(bitset& __b, size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_wp = &__b._M_getword(__pos); + _M_bpos = _Base::_S_whichbit(__pos); + } + + ~reference() _GLIBCXX_NOEXCEPT + { } + + // For b[i] = __x; + reference& + operator=(bool __x) _GLIBCXX_NOEXCEPT + { + if (__x) + *_M_wp |= _Base::_S_maskbit(_M_bpos); + else + *_M_wp &= ~_Base::_S_maskbit(_M_bpos); + return *this; + } + + // For b[i] = b[__j]; + reference& + operator=(const reference& __j) _GLIBCXX_NOEXCEPT + { + if ((*(__j._M_wp) & _Base::_S_maskbit(__j._M_bpos))) + *_M_wp |= _Base::_S_maskbit(_M_bpos); + else + *_M_wp &= ~_Base::_S_maskbit(_M_bpos); + return *this; + } + + // Flips the bit + bool + operator~() const _GLIBCXX_NOEXCEPT + { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) == 0; } + + // For __x = b[i]; + operator bool() const _GLIBCXX_NOEXCEPT + { return (*(_M_wp) & _Base::_S_maskbit(_M_bpos)) != 0; } + + // For b[i].flip(); + reference& + flip() _GLIBCXX_NOEXCEPT + { + *_M_wp ^= _Base::_S_maskbit(_M_bpos); + return *this; + } + }; + friend class reference; + + // 23.3.5.1 constructors: + /// All bits set to zero. + _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT + { } + + /// Initial bits bitwise-copied from a single word (others set to zero). +#if __cplusplus >= 201103L + constexpr bitset(unsigned long long __val) noexcept + : _Base(_Sanitize_val<_Nb>::_S_do_sanitize_val(__val)) { } +#else + bitset(unsigned long __val) + : _Base(__val) + { _M_do_sanitize(); } +#endif + + /** + * Use a subset of a string. + * @param __s A string of @a 0 and @a 1 characters. + * @param __position Index of the first character in @a __s to use; + * defaults to zero. + * @throw std::out_of_range If @a pos is bigger the size of @a __s. + * @throw std::invalid_argument If a character appears in the string + * which is neither @a 0 nor @a 1. + */ + template + explicit + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position = 0) + : _Base() + { + _M_check_initial_position(__s, __position); + _M_copy_from_string(__s, __position, + std::basic_string<_CharT, _Traits, _Alloc>::npos, + _CharT('0'), _CharT('1')); + } + + /** + * Use a subset of a string. + * @param __s A string of @a 0 and @a 1 characters. + * @param __position Index of the first character in @a __s to use. + * @param __n The number of characters to copy. + * @throw std::out_of_range If @a __position is bigger the size + * of @a __s. + * @throw std::invalid_argument If a character appears in the string + * which is neither @a 0 nor @a 1. + */ + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position, size_t __n) + : _Base() + { + _M_check_initial_position(__s, __position); + _M_copy_from_string(__s, __position, __n, _CharT('0'), _CharT('1')); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __s, + size_t __position, size_t __n, + _CharT __zero, _CharT __one = _CharT('1')) + : _Base() + { + _M_check_initial_position(__s, __position); + _M_copy_from_string(__s, __position, __n, __zero, __one); + } + +#if __cplusplus >= 201103L + /** + * Construct from a character %array. + * @param __str An %array of characters @a zero and @a one. + * @param __n The number of characters to use. + * @param __zero The character corresponding to the value 0. + * @param __one The character corresponding to the value 1. + * @throw std::invalid_argument If a character appears in the string + * which is neither @a __zero nor @a __one. + */ + template + explicit + bitset(const _CharT* __str, + typename std::basic_string<_CharT>::size_type __n + = std::basic_string<_CharT>::npos, + _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) + : _Base() + { + if (!__str) + __throw_logic_error(__N("bitset::bitset(const _CharT*, ...)")); + + if (__n == std::basic_string<_CharT>::npos) + __n = std::char_traits<_CharT>::length(__str); + _M_copy_from_ptr<_CharT, std::char_traits<_CharT>>(__str, __n, 0, + __n, __zero, + __one); + } +#endif + + // 23.3.5.2 bitset operations: + //@{ + /** + * Operations on bitsets. + * @param __rhs A same-sized bitset. + * + * These should be self-explanatory. + */ + bitset<_Nb>& + operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + this->_M_do_and(__rhs); + return *this; + } + + bitset<_Nb>& + operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + this->_M_do_or(__rhs); + return *this; + } + + bitset<_Nb>& + operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + this->_M_do_xor(__rhs); + return *this; + } + //@} + + //@{ + /** + * Operations on bitsets. + * @param __position The number of places to shift. + * + * These should be self-explanatory. + */ + bitset<_Nb>& + operator<<=(size_t __position) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__position < _Nb, 1)) + { + this->_M_do_left_shift(__position); + this->_M_do_sanitize(); + } + else + this->_M_do_reset(); + return *this; + } + + bitset<_Nb>& + operator>>=(size_t __position) _GLIBCXX_NOEXCEPT + { + if (__builtin_expect(__position < _Nb, 1)) + { + this->_M_do_right_shift(__position); + this->_M_do_sanitize(); + } + else + this->_M_do_reset(); + return *this; + } + //@} + + //@{ + /** + * These versions of single-bit set, reset, flip, and test are + * extensions from the SGI version. They do no range checking. + * @ingroup SGIextensions + */ + bitset<_Nb>& + _Unchecked_set(size_t __pos) _GLIBCXX_NOEXCEPT + { + this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); + return *this; + } + + bitset<_Nb>& + _Unchecked_set(size_t __pos, int __val) _GLIBCXX_NOEXCEPT + { + if (__val) + this->_M_getword(__pos) |= _Base::_S_maskbit(__pos); + else + this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); + return *this; + } + + bitset<_Nb>& + _Unchecked_reset(size_t __pos) _GLIBCXX_NOEXCEPT + { + this->_M_getword(__pos) &= ~_Base::_S_maskbit(__pos); + return *this; + } + + bitset<_Nb>& + _Unchecked_flip(size_t __pos) _GLIBCXX_NOEXCEPT + { + this->_M_getword(__pos) ^= _Base::_S_maskbit(__pos); + return *this; + } + + _GLIBCXX_CONSTEXPR bool + _Unchecked_test(size_t __pos) const _GLIBCXX_NOEXCEPT + { return ((this->_M_getword(__pos) & _Base::_S_maskbit(__pos)) + != static_cast<_WordT>(0)); } + //@} + + // Set, reset, and flip. + /** + * @brief Sets every bit to true. + */ + bitset<_Nb>& + set() _GLIBCXX_NOEXCEPT + { + this->_M_do_set(); + this->_M_do_sanitize(); + return *this; + } + + /** + * @brief Sets a given bit to a particular value. + * @param __position The index of the bit. + * @param __val Either true or false, defaults to true. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + */ + bitset<_Nb>& + set(size_t __position, bool __val = true) + { + this->_M_check(__position, __N("bitset::set")); + return _Unchecked_set(__position, __val); + } + + /** + * @brief Sets every bit to false. + */ + bitset<_Nb>& + reset() _GLIBCXX_NOEXCEPT + { + this->_M_do_reset(); + return *this; + } + + /** + * @brief Sets a given bit to false. + * @param __position The index of the bit. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + * + * Same as writing @c set(pos,false). + */ + bitset<_Nb>& + reset(size_t __position) + { + this->_M_check(__position, __N("bitset::reset")); + return _Unchecked_reset(__position); + } + + /** + * @brief Toggles every bit to its opposite value. + */ + bitset<_Nb>& + flip() _GLIBCXX_NOEXCEPT + { + this->_M_do_flip(); + this->_M_do_sanitize(); + return *this; + } + + /** + * @brief Toggles a given bit to its opposite value. + * @param __position The index of the bit. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + */ + bitset<_Nb>& + flip(size_t __position) + { + this->_M_check(__position, __N("bitset::flip")); + return _Unchecked_flip(__position); + } + + /// See the no-argument flip(). + bitset<_Nb> + operator~() const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(*this).flip(); } + + //@{ + /** + * @brief Array-indexing support. + * @param __position Index into the %bitset. + * @return A bool for a const %bitset. For non-const + * bitsets, an instance of the reference proxy class. + * @note These operators do no range checking and throw no exceptions, + * as required by DR 11 to the standard. + * + * _GLIBCXX_RESOLVE_LIB_DEFECTS Note that this implementation already + * resolves DR 11 (items 1 and 2), but does not do the range-checking + * required by that DR's resolution. -pme + * The DR has since been changed: range-checking is a precondition + * (users' responsibility), and these functions must not throw. -pme + */ + reference + operator[](size_t __position) + { return reference(*this, __position); } + + _GLIBCXX_CONSTEXPR bool + operator[](size_t __position) const + { return _Unchecked_test(__position); } + //@} + + /** + * @brief Returns a numerical interpretation of the %bitset. + * @return The integral equivalent of the bits. + * @throw std::overflow_error If there are too many bits to be + * represented in an @c unsigned @c long. + */ + unsigned long + to_ulong() const + { return this->_M_do_to_ulong(); } + +#if __cplusplus >= 201103L + unsigned long long + to_ullong() const + { return this->_M_do_to_ullong(); } +#endif + + /** + * @brief Returns a character interpretation of the %bitset. + * @return The string equivalent of the bits. + * + * Note the ordering of the bits: decreasing character positions + * correspond to increasing bit positions (see the main class notes for + * an example). + */ + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string() const + { + std::basic_string<_CharT, _Traits, _Alloc> __result; + _M_copy_to_string(__result, _CharT('0'), _CharT('1')); + return __result; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + std::basic_string<_CharT, _Traits, _Alloc> __result; + _M_copy_to_string(__result, __zero, __one); + return __result; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 434. bitset::to_string() hard to use. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string() const + { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 853. to_string needs updating with zero and one. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { return to_string<_CharT, _Traits, + std::allocator<_CharT> >(__zero, __one); } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string() const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(); + } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(__zero, __one); + } + + std::basic_string, std::allocator > + to_string() const + { + return to_string, + std::allocator >(); + } + + std::basic_string, std::allocator > + to_string(char __zero, char __one = '1') const + { + return to_string, + std::allocator >(__zero, __one); + } + + // Helper functions for string operations. + template + void + _M_copy_from_ptr(const _CharT*, size_t, size_t, size_t, + _CharT, _CharT); + + template + void + _M_copy_from_string(const std::basic_string<_CharT, + _Traits, _Alloc>& __s, size_t __pos, size_t __n, + _CharT __zero, _CharT __one) + { _M_copy_from_ptr<_CharT, _Traits>(__s.data(), __s.size(), __pos, __n, + __zero, __one); } + + template + void + _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>&, + _CharT, _CharT) const; + + // NB: Backward compat. + template + void + _M_copy_from_string(const std::basic_string<_CharT, + _Traits, _Alloc>& __s, size_t __pos, size_t __n) + { _M_copy_from_string(__s, __pos, __n, _CharT('0'), _CharT('1')); } + + template + void + _M_copy_to_string(std::basic_string<_CharT, _Traits,_Alloc>& __s) const + { _M_copy_to_string(__s, _CharT('0'), _CharT('1')); } + + /// Returns the number of bits which are set. + size_t + count() const _GLIBCXX_NOEXCEPT + { return this->_M_do_count(); } + + /// Returns the total number of bits. + _GLIBCXX_CONSTEXPR size_t + size() const _GLIBCXX_NOEXCEPT + { return _Nb; } + + //@{ + /// These comparisons for equality/inequality are, well, @e bitwise. + bool + operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return this->_M_is_equal(__rhs); } + + bool + operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return !this->_M_is_equal(__rhs); } + //@} + + /** + * @brief Tests the value of a bit. + * @param __position The index of a bit. + * @return The value at @a pos. + * @throw std::out_of_range If @a pos is bigger the size of the %set. + */ + bool + test(size_t __position) const + { + this->_M_check(__position, __N("bitset::test")); + return _Unchecked_test(__position); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 693. std::bitset::all() missing. + /** + * @brief Tests whether all the bits are on. + * @return True if all the bits are set. + */ + bool + all() const _GLIBCXX_NOEXCEPT + { return this->template _M_are_all<_Nb>(); } + + /** + * @brief Tests whether any of the bits are on. + * @return True if at least one bit is set. + */ + bool + any() const _GLIBCXX_NOEXCEPT + { return this->_M_is_any(); } + + /** + * @brief Tests whether any of the bits are on. + * @return True if none of the bits are set. + */ + bool + none() const _GLIBCXX_NOEXCEPT + { return !this->_M_is_any(); } + + //@{ + /// Self-explanatory. + bitset<_Nb> + operator<<(size_t __position) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(*this) <<= __position; } + + bitset<_Nb> + operator>>(size_t __position) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(*this) >>= __position; } + //@} + + /** + * @brief Finds the index of the first "on" bit. + * @return The index of the first bit set, or size() if not found. + * @ingroup SGIextensions + * @sa _Find_next + */ + size_t + _Find_first() const _GLIBCXX_NOEXCEPT + { return this->_M_do_find_first(_Nb); } + + /** + * @brief Finds the index of the next "on" bit after prev. + * @return The index of the next bit set, or size() if not found. + * @param __prev Where to start searching. + * @ingroup SGIextensions + * @sa _Find_first + */ + size_t + _Find_next(size_t __prev) const _GLIBCXX_NOEXCEPT + { return this->_M_do_find_next(__prev, _Nb); } + }; + + // Definitions of non-inline member functions. + template + template + void + bitset<_Nb>:: + _M_copy_from_ptr(const _CharT* __s, size_t __len, + size_t __pos, size_t __n, _CharT __zero, _CharT __one) + { + reset(); + const size_t __nbits = std::min(_Nb, std::min(__n, size_t(__len - __pos))); + for (size_t __i = __nbits; __i > 0; --__i) + { + const _CharT __c = __s[__pos + __nbits - __i]; + if (_Traits::eq(__c, __zero)) + ; + else if (_Traits::eq(__c, __one)) + _Unchecked_set(__i - 1); + else + __throw_invalid_argument(__N("bitset::_M_copy_from_ptr")); + } + } + + template + template + void + bitset<_Nb>:: + _M_copy_to_string(std::basic_string<_CharT, _Traits, _Alloc>& __s, + _CharT __zero, _CharT __one) const + { + __s.assign(_Nb, __zero); + for (size_t __i = _Nb; __i > 0; --__i) + if (_Unchecked_test(__i - 1)) + _Traits::assign(__s[_Nb - __i], __one); + } + + // 23.3.5.3 bitset operations: + //@{ + /** + * @brief Global bitwise operations on bitsets. + * @param __x A bitset. + * @param __y A bitset of the same size as @a __x. + * @return A new bitset. + * + * These should be self-explanatory. + */ + template + inline bitset<_Nb> + operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { + bitset<_Nb> __result(__x); + __result &= __y; + return __result; + } + + template + inline bitset<_Nb> + operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { + bitset<_Nb> __result(__x); + __result |= __y; + return __result; + } + + template + inline bitset<_Nb> + operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { + bitset<_Nb> __result(__x); + __result ^= __y; + return __result; + } + //@} + + //@{ + /** + * @brief Global I/O operators for bitsets. + * + * Direct I/O between streams and bitsets is supported. Output is + * straightforward. Input will skip whitespace, only accept @a 0 and @a 1 + * characters, and will only extract as many digits as the %bitset will + * hold. + */ + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) + { + typedef typename _Traits::char_type char_type; + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + std::basic_string<_CharT, _Traits> __tmp; + __tmp.reserve(_Nb); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 303. Bitset input operator underspecified + const char_type __zero = __is.widen('0'); + const char_type __one = __is.widen('1'); + + typename __ios_base::iostate __state = __ios_base::goodbit; + typename __istream_type::sentry __sentry(__is); + if (__sentry) + { + __try + { + for (size_t __i = _Nb; __i > 0; --__i) + { + static typename _Traits::int_type __eof = _Traits::eof(); + + typename _Traits::int_type __c1 = __is.rdbuf()->sbumpc(); + if (_Traits::eq_int_type(__c1, __eof)) + { + __state |= __ios_base::eofbit; + break; + } + else + { + const char_type __c2 = _Traits::to_char_type(__c1); + if (_Traits::eq(__c2, __zero)) + __tmp.push_back(__zero); + else if (_Traits::eq(__c2, __one)) + __tmp.push_back(__one); + else if (_Traits:: + eq_int_type(__is.rdbuf()->sputbackc(__c2), + __eof)) + { + __state |= __ios_base::failbit; + break; + } + } + } + } + __catch(__cxxabiv1::__forced_unwind&) + { + __is._M_setstate(__ios_base::badbit); + __throw_exception_again; + } + __catch(...) + { __is._M_setstate(__ios_base::badbit); } + } + + if (__tmp.empty() && _Nb) + __state |= __ios_base::failbit; + else + __x._M_copy_from_string(__tmp, static_cast(0), _Nb, + __zero, __one); + if (__state) + __is.setstate(__state); + return __is; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bitset<_Nb>& __x) + { + std::basic_string<_CharT, _Traits> __tmp; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + const ctype<_CharT>& __ct = use_facet >(__os.getloc()); + __x._M_copy_to_string(__tmp, __ct.widen('0'), __ct.widen('1')); + return __os << __tmp; + } + //@} + +_GLIBCXX_END_NAMESPACE_CONTAINER +} // namespace std + +#undef _GLIBCXX_BITSET_WORDS +#undef _GLIBCXX_BITSET_BITS_PER_WORD +#undef _GLIBCXX_BITSET_BITS_PER_ULL + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // DR 1182. + /// std::hash specialization for bitset. + template + struct hash<_GLIBCXX_STD_C::bitset<_Nb>> + : public __hash_base> + { + size_t + operator()(const _GLIBCXX_STD_C::bitset<_Nb>& __b) const noexcept + { + const size_t __clength = (_Nb + __CHAR_BIT__ - 1) / __CHAR_BIT__; + return std::_Hash_impl::hash(__b._M_getdata(), __clength); + } + }; + + template<> + struct hash<_GLIBCXX_STD_C::bitset<0>> + : public __hash_base> + { + size_t + operator()(const _GLIBCXX_STD_C::bitset<0>&) const noexcept + { return 0; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_BITSET */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cassert b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cassert similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cassert rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cassert index 4b40751f3..51f18bdbe 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cassert +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cassert @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ccomplex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ccomplex new file mode 100644 index 000000000..837c941cd --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ccomplex @@ -0,0 +1,42 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/ccomplex + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CCOMPLEX +#define _GLIBCXX_CCOMPLEX 1 + +#if __cplusplus < 201103L +# include +#endif + +extern "C++" { +#include +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cctype new file mode 100644 index 000000000..a775e4e7c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cctype @@ -0,0 +1,94 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cctype + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c ctype.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CCTYPE +#define _GLIBCXX_CCTYPE 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef isalnum +#undef isalpha +#undef iscntrl +#undef isdigit +#undef isgraph +#undef islower +#undef isprint +#undef ispunct +#undef isspace +#undef isupper +#undef isxdigit +#undef tolower +#undef toupper + +namespace std +{ + using ::isalnum; + using ::isalpha; + using ::iscntrl; + using ::isdigit; + using ::isgraph; + using ::islower; + using ::isprint; + using ::ispunct; + using ::isspace; + using ::isupper; + using ::isxdigit; + using ::tolower; + using ::toupper; +} // namespace std + +#if __cplusplus >= 201103L + +#ifdef _GLIBCXX_USE_C99_CTYPE_TR1 + +#undef isblank + +namespace std +{ + using ::isblank; +} // namespace std + +#endif // _GLIBCXX_USE_C99_CTYPE_TR1 + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cerrno b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cerrno similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cerrno rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cerrno index deee423e1..f5564048e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cerrno +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cerrno @@ -1,6 +1,6 @@ // The -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cfenv b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cfenv new file mode 100644 index 000000000..479cd1dbe --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cfenv @@ -0,0 +1,84 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/cfenv + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CFENV +#define _GLIBCXX_CFENV 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +#if _GLIBCXX_HAVE_FENV_H +# include +#endif + +#ifdef _GLIBCXX_USE_C99_FENV_TR1 + +#undef feclearexcept +#undef fegetexceptflag +#undef feraiseexcept +#undef fesetexceptflag +#undef fetestexcept +#undef fegetround +#undef fesetround +#undef fegetenv +#undef feholdexcept +#undef fesetenv +#undef feupdateenv + +namespace std +{ + // types + using ::fenv_t; + using ::fexcept_t; + + // functions + using ::feclearexcept; + using ::fegetexceptflag; + using ::feraiseexcept; + using ::fesetexceptflag; + using ::fetestexcept; + + using ::fegetround; + using ::fesetround; + + using ::fegetenv; + using ::feholdexcept; + using ::fesetenv; + using ::feupdateenv; +} // namespace std + +#endif // _GLIBCXX_USE_C99_FENV_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CFENV diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cfloat b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cfloat new file mode 100644 index 000000000..02fcc869e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cfloat @@ -0,0 +1,56 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cfloat + * 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 float.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 +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CFLOAT +#define _GLIBCXX_CFLOAT 1 + +#if __cplusplus >= 201103L +# ifndef DECIMAL_DIG +# define DECIMAL_DIG __DECIMAL_DIG__ +# endif +# ifndef FLT_EVAL_METHOD +# define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +# endif +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/charconv b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/charconv new file mode 100644 index 000000000..922c2c7e2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/charconv @@ -0,0 +1,658 @@ +// Primitive numeric conversions (to_chars and from_chars) -*- C++ -*- + +// Copyright (C) 2017-2018 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 +// . + +/** @file include/charconv + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CHARCONV +#define _GLIBCXX_CHARCONV 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include +#include // for std::errc + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// Result type of std::to_chars + struct to_chars_result + { + char* ptr; + errc ec; + }; + + /// Result type of std::from_chars + struct from_chars_result + { + const char* ptr; + errc ec; + }; + +namespace __detail +{ + template + using __is_one_of = __or_...>; + + template + using __is_int_to_chars_type = __and_, + __not_<__is_one_of<_Tp, bool, char16_t, char32_t +#if _GLIBCXX_USE_WCHAR_T + , wchar_t +#endif + >>>; + + template + using __integer_to_chars_result_type + = enable_if_t<__is_int_to_chars_type<_Tp>::value, to_chars_result>; + + template + using __unsigned_least_t + = conditional_t<(sizeof(_Tp) <= sizeof(int)), unsigned int, + conditional_t<(sizeof(_Tp) <= sizeof(long)), unsigned long, + conditional_t<(sizeof(_Tp) <= sizeof(long long)), unsigned long long, +#if _GLIBCXX_USE_INT128 + conditional_t<(sizeof(_Tp) <= sizeof(__int128)), unsigned __int128, +#endif + void +#if _GLIBCXX_USE_INT128 + > +#endif + >>>; + + // Generic implementation for arbitrary bases. + template + constexpr unsigned + __to_chars_len(_Tp __value, int __base = 10) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + unsigned __n = 1; + const int __b2 = __base * __base; + const int __b3 = __b2 * __base; + const int __b4 = __b3 * __base; + for (;;) + { + if (__value < __base) return __n; + if (__value < __b2) return __n + 1; + if (__value < __b3) return __n + 2; + if (__value < __b4) return __n + 3; + __value /= (unsigned)__b4; + __n += 4; + } + } + + template + constexpr unsigned + __to_chars_len_2(_Tp __value) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + constexpr size_t __nbits = __CHAR_BIT__ * sizeof(_Tp); + + // N.B. __builtin_clzll is undefined if __value == 0, but std::to_chars + // handles zero values directly. + + // For sizeof(_Tp) > 1 this is an order of magnitude faster than + // the generic __to_chars_len. + return __nbits + - (__builtin_clzll(__value) + - ((__CHAR_BIT__ * sizeof(long long)) - __nbits)); + } + + template + constexpr unsigned + __to_chars_len_8(_Tp __value) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + constexpr size_t __nbits = __CHAR_BIT__ * sizeof(_Tp); + + if _GLIBCXX17_CONSTEXPR (__nbits <= 16) + { + return __value > 077777u ? 6u + : __value > 07777u ? 5u + : __value > 0777u ? 4u + : __value > 077u ? 3u + : __value > 07u ? 2u + : 1u; + } + else + return __to_chars_len(__value, 8); + } + + // Generic implementation for arbitrary bases. + template + to_chars_result + __to_chars(char* __first, char* __last, _Tp __val, int __base) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + to_chars_result __res; + + const unsigned __len = __to_chars_len(__val, __base); + + if (__builtin_expect((__last - __first) < __len, 0)) + { + __res.ptr = __last; + __res.ec = errc::value_too_large; + return __res; + } + + unsigned __pos = __len - 1; + + static constexpr char __digits[] + = "0123456789abcdefghijklmnopqrstuvwxyz"; + + while (__val >= __base) + { + auto const __quo = __val / __base; + auto const __rem = __val % __base; + __first[__pos--] = __digits[__rem]; + __val = __quo; + } + *__first = __digits[__val]; + + __res.ptr = __first + __len; + __res.ec = {}; + return __res; + } + + template + __integer_to_chars_result_type<_Tp> + __to_chars_16(char* __first, char* __last, _Tp __val) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + to_chars_result __res; + + const unsigned __len = __to_chars_len(__val, 0x10); + + if (__builtin_expect((__last - __first) < __len, 0)) + { + __res.ptr = __last; + __res.ec = errc::value_too_large; + return __res; + } + + static constexpr char __digits[513] = + "000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f" + "202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f" + "404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f" + "606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f" + "808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f" + "a0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf" + "c0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf" + "e0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff"; + unsigned __pos = __len - 1; + while (__val >= 0x100) + { + auto const __num = (__val % 0x100) * 2; + __val /= 0x100; + __first[__pos] = __digits[__num + 1]; + __first[__pos - 1] = __digits[__num]; + __pos -= 2; + } + if (__val >= 0x10) + { + auto const __num = __val * 2; + __first[__pos] = __digits[__num + 1]; + __first[__pos - 1] = __digits[__num]; + } + else + __first[__pos] = "0123456789abcdef"[__val]; + __res.ptr = __first + __len; + __res.ec = {}; + return __res; + } + + template + __integer_to_chars_result_type<_Tp> + __to_chars_10(char* __first, char* __last, _Tp __val) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + to_chars_result __res; + + const unsigned __len = __to_chars_len(__val, 10); + + if (__builtin_expect((__last - __first) < __len, 0)) + { + __res.ptr = __last; + __res.ec = errc::value_too_large; + return __res; + } + + static constexpr char __digits[201] = + "0001020304050607080910111213141516171819" + "2021222324252627282930313233343536373839" + "4041424344454647484950515253545556575859" + "6061626364656667686970717273747576777879" + "8081828384858687888990919293949596979899"; + unsigned __pos = __len - 1; + while (__val >= 100) + { + auto const __num = (__val % 100) * 2; + __val /= 100; + __first[__pos] = __digits[__num + 1]; + __first[__pos - 1] = __digits[__num]; + __pos -= 2; + } + if (__val >= 10) + { + auto const __num = __val * 2; + __first[__pos] = __digits[__num + 1]; + __first[__pos - 1] = __digits[__num]; + } + else + __first[__pos] = '0' + __val; + __res.ptr = __first + __len; + __res.ec = {}; + return __res; + } + + template + __integer_to_chars_result_type<_Tp> + __to_chars_8(char* __first, char* __last, _Tp __val) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + to_chars_result __res; + + const unsigned __len = __to_chars_len_8(__val); + + if (__builtin_expect((__last - __first) < __len, 0)) + { + __res.ptr = __last; + __res.ec = errc::value_too_large; + return __res; + } + + static constexpr char __digits[129] = + "00010203040506071011121314151617" + "20212223242526273031323334353637" + "40414243444546475051525354555657" + "60616263646566677071727374757677"; + unsigned __pos = __len - 1; + while (__val >= 0100) + { + auto const __num = (__val % 0100) * 2; + __val /= 0100; + __first[__pos] = __digits[__num + 1]; + __first[__pos - 1] = __digits[__num]; + __pos -= 2; + } + if (__val >= 010) + { + auto const __num = __val * 2; + __first[__pos] = __digits[__num + 1]; + __first[__pos - 1] = __digits[__num]; + } + else + __first[__pos] = '0' + __val; + __res.ptr = __first + __len; + __res.ec = {}; + return __res; + } + + template + __integer_to_chars_result_type<_Tp> + __to_chars_2(char* __first, char* __last, _Tp __val) noexcept + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + to_chars_result __res; + + const unsigned __len = __to_chars_len_2(__val); + + if (__builtin_expect((__last - __first) < __len, 0)) + { + __res.ptr = __last; + __res.ec = errc::value_too_large; + return __res; + } + + unsigned __pos = __len - 1; + + while (__pos) + { + __first[__pos--] = '0' + (__val & 1); + __val >>= 1; + } + *__first = '0' + (__val & 1); + + __res.ptr = __first + __len; + __res.ec = {}; + return __res; + } + +} // namespace __detail + + template + __detail::__integer_to_chars_result_type<_Tp> + to_chars(char* __first, char* __last, _Tp __value, int __base = 10) + { + __glibcxx_assert(2 <= __base && __base <= 36); + + using _Up = __detail::__unsigned_least_t<_Tp>; + _Up __unsigned_val = __value; + + if (__value == 0 && __first != __last) + { + *__first = '0'; + return { __first + 1, errc{} }; + } + + if _GLIBCXX17_CONSTEXPR (std::is_signed<_Tp>::value) + if (__value < 0) + { + if (__builtin_expect(__first != __last, 1)) + *__first++ = '-'; + __unsigned_val = _Up(~__value) + _Up(1); + } + + switch (__base) + { + case 16: + return __detail::__to_chars_16(__first, __last, __unsigned_val); + case 10: + return __detail::__to_chars_10(__first, __last, __unsigned_val); + case 8: + return __detail::__to_chars_8(__first, __last, __unsigned_val); + case 2: + return __detail::__to_chars_2(__first, __last, __unsigned_val); + default: + return __detail::__to_chars(__first, __last, __unsigned_val, __base); + } + } + +namespace __detail +{ + template + bool + __raise_and_add(_Tp& __val, int __base, unsigned char __c) + { + if (__builtin_mul_overflow(__val, __base, &__val) + || __builtin_add_overflow(__val, __c, &__val)) + return false; + return true; + } + + /// std::from_chars implementation for integers in base 2. + template + bool + __from_chars_binary(const char*& __first, const char* __last, _Tp& __val) + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + const ptrdiff_t __len = __last - __first; + int __i = 0; + while (__i < __len) + { + const unsigned char __c = (unsigned)__first[__i] - '0'; + if (__c < 2) + __val = (__val << 1) | __c; + else + break; + __i++; + } + __first += __i; + return __i <= (sizeof(_Tp) * __CHAR_BIT__); + } + + /// std::from_chars implementation for integers in bases 3 to 10. + template + bool + __from_chars_digit(const char*& __first, const char* __last, _Tp& __val, + int __base) + { + static_assert(is_integral<_Tp>::value, "implementation bug"); + static_assert(is_unsigned<_Tp>::value, "implementation bug"); + + auto __matches = [__base](char __c) { + return '0' <= __c && __c <= ('0' + (__base - 1)); + }; + + while (__first != __last) + { + const char __c = *__first; + if (__matches(__c)) + { + if (!__raise_and_add(__val, __base, __c - '0')) + { + while (++__first != __last && __matches(*__first)) + ; + return false; + } + __first++; + } + else + return true; + } + return true; + } + + constexpr unsigned char + __from_chars_alpha_to_num(char __c) + { + switch (__c) + { + case 'a': + case 'A': + return 10; + case 'b': + case 'B': + return 11; + case 'c': + case 'C': + return 12; + case 'd': + case 'D': + return 13; + case 'e': + case 'E': + return 14; + case 'f': + case 'F': + return 15; + case 'g': + case 'G': + return 16; + case 'h': + case 'H': + return 17; + case 'i': + case 'I': + return 18; + case 'j': + case 'J': + return 19; + case 'k': + case 'K': + return 20; + case 'l': + case 'L': + return 21; + case 'm': + case 'M': + return 22; + case 'n': + case 'N': + return 23; + case 'o': + case 'O': + return 24; + case 'p': + case 'P': + return 25; + case 'q': + case 'Q': + return 26; + case 'r': + case 'R': + return 27; + case 's': + case 'S': + return 28; + case 't': + case 'T': + return 29; + case 'u': + case 'U': + return 30; + case 'v': + case 'V': + return 31; + case 'w': + case 'W': + return 32; + case 'x': + case 'X': + return 33; + case 'y': + case 'Y': + return 34; + case 'z': + case 'Z': + return 35; + } + return std::numeric_limits::max(); + } + + /// std::from_chars implementation for integers in bases 11 to 26. + template + bool + __from_chars_alnum(const char*& __first, const char* __last, _Tp& __val, + int __base) + { + bool __valid = true; + while (__first != __last) + { + unsigned char __c = *__first; + if (std::isdigit(__c)) + __c -= '0'; + else + { + __c = __from_chars_alpha_to_num(__c); + if (__c >= __base) + break; + } + + if (__builtin_expect(__valid, 1)) + __valid = __raise_and_add(__val, __base, __c); + __first++; + } + return __valid; + } + + template + using __integer_from_chars_result_type + = enable_if_t<__is_int_to_chars_type<_Tp>::value, from_chars_result>; + +} // namespace __detail + + /// std::from_chars for integral types. + template + __detail::__integer_from_chars_result_type<_Tp> + from_chars(const char* __first, const char* __last, _Tp& __value, + int __base = 10) + { + __glibcxx_assert(2 <= __base && __base <= 36); + + from_chars_result __res{__first, {}}; + + int __sign = 1; + if _GLIBCXX17_CONSTEXPR (std::is_signed<_Tp>::value) + if (__first != __last && *__first == '-') + { + __sign = -1; + ++__first; + } + + using _Up = __detail::__unsigned_least_t<_Tp>; + _Up __val = 0; + + const auto __start = __first; + bool __valid; + if (__base == 2) + __valid = __detail::__from_chars_binary(__first, __last, __val); + else if (__base <= 10) + __valid = __detail::__from_chars_digit(__first, __last, __val, __base); + else + __valid = __detail::__from_chars_alnum(__first, __last, __val, __base); + + if (__builtin_expect(__first == __start, 0)) + __res.ec = errc::invalid_argument; + else + { + __res.ptr = __first; + if (!__valid) + __res.ec = errc::result_out_of_range; + else + { + if _GLIBCXX17_CONSTEXPR (std::is_signed<_Tp>::value) + { + _Tp __tmp; + if (__builtin_mul_overflow(__val, __sign, &__tmp)) + __res.ec = errc::result_out_of_range; + else + __value = __tmp; + } + else + { + if _GLIBCXX17_CONSTEXPR + (numeric_limits<_Up>::max() > numeric_limits<_Tp>::max()) + { + if (__val > numeric_limits<_Tp>::max()) + __res.ec = errc::result_out_of_range; + else + __value = __val; + } + else + __value = __val; + } + } + } + return __res; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std +#endif // C++14 +#endif // _GLIBCXX_CHARCONV diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/chrono b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/chrono new file mode 100644 index 000000000..1daca8700 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/chrono @@ -0,0 +1,987 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2018 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 +// . + +/** @file include/chrono + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CHRONO +#define _GLIBCXX_CHRONO 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include +#include // for literals support. + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup chrono Time + * @ingroup utilities + * + * Classes and functions for time. + * @{ + */ + + /** @namespace std::chrono + * @brief ISO C++ 2011 entities sub-namespace for time and date. + */ + namespace chrono + { + template> + struct duration; + + template + struct time_point; + } + + // 20.11.4.3 specialization of common_type (for duration, sfinae-friendly) + + template + struct __duration_common_type_wrapper + { + private: + typedef __static_gcd<_Period1::num, _Period2::num> __gcd_num; + typedef __static_gcd<_Period1::den, _Period2::den> __gcd_den; + typedef typename _CT::type __cr; + typedef ratio<__gcd_num::value, + (_Period1::den / __gcd_den::value) * _Period2::den> __r; + public: + typedef __success_type> type; + }; + + template + struct __duration_common_type_wrapper<__failure_type, _Period1, _Period2> + { typedef __failure_type type; }; + + template + struct common_type, + chrono::duration<_Rep2, _Period2>> + : public __duration_common_type_wrapper>::type, _Period1, _Period2>::type + { }; + + // 20.11.4.3 specialization of common_type (for time_point, sfinae-friendly) + + template + struct __timepoint_common_type_wrapper + { + typedef __success_type> + type; + }; + + template + struct __timepoint_common_type_wrapper<__failure_type, _Clock> + { typedef __failure_type type; }; + + template + struct common_type, + chrono::time_point<_Clock, _Duration2>> + : public __timepoint_common_type_wrapper>::type, _Clock>::type + { }; + + namespace chrono + { + // Primary template for duration_cast impl. + template + struct __duration_cast_impl + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>(static_cast<_CR>(__d.count()) + * static_cast<_CR>(_CF::num) + / static_cast<_CR>(_CF::den))); + } + }; + + template + struct __duration_cast_impl<_ToDur, _CF, _CR, true, true> + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>(__d.count())); + } + }; + + template + struct __duration_cast_impl<_ToDur, _CF, _CR, true, false> + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>( + static_cast<_CR>(__d.count()) / static_cast<_CR>(_CF::den))); + } + }; + + template + struct __duration_cast_impl<_ToDur, _CF, _CR, false, true> + { + template + static constexpr _ToDur + __cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::rep __to_rep; + return _ToDur(static_cast<__to_rep>( + static_cast<_CR>(__d.count()) * static_cast<_CR>(_CF::num))); + } + }; + + template + struct __is_duration + : std::false_type + { }; + + template + struct __is_duration> + : std::true_type + { }; + + template + using __enable_if_is_duration + = typename enable_if<__is_duration<_Tp>::value, _Tp>::type; + + template + using __disable_if_is_duration + = typename enable_if::value, _Tp>::type; + + /// duration_cast + template + constexpr __enable_if_is_duration<_ToDur> + duration_cast(const duration<_Rep, _Period>& __d) + { + typedef typename _ToDur::period __to_period; + typedef typename _ToDur::rep __to_rep; + typedef ratio_divide<_Period, __to_period> __cf; + typedef typename common_type<__to_rep, _Rep, intmax_t>::type + __cr; + typedef __duration_cast_impl<_ToDur, __cf, __cr, + __cf::num == 1, __cf::den == 1> __dc; + return __dc::__cast(__d); + } + + /// treat_as_floating_point + template + struct treat_as_floating_point + : is_floating_point<_Rep> + { }; + +#if __cplusplus > 201402L + template + inline constexpr bool treat_as_floating_point_v = + treat_as_floating_point<_Rep>::value; +#endif // C++17 + +#if __cplusplus >= 201703L +# define __cpp_lib_chrono 201611 + + template + constexpr __enable_if_is_duration<_ToDur> + floor(const duration<_Rep, _Period>& __d) + { + auto __to = chrono::duration_cast<_ToDur>(__d); + if (__to > __d) + return __to - _ToDur{1}; + return __to; + } + + template + constexpr __enable_if_is_duration<_ToDur> + ceil(const duration<_Rep, _Period>& __d) + { + auto __to = chrono::duration_cast<_ToDur>(__d); + if (__to < __d) + return __to + _ToDur{1}; + return __to; + } + + template + constexpr enable_if_t< + __and_<__is_duration<_ToDur>, + __not_>>::value, + _ToDur> + round(const duration<_Rep, _Period>& __d) + { + _ToDur __t0 = chrono::floor<_ToDur>(__d); + _ToDur __t1 = __t0 + _ToDur{1}; + auto __diff0 = __d - __t0; + auto __diff1 = __t1 - __d; + if (__diff0 == __diff1) + { + if (__t0.count() & 1) + return __t1; + return __t0; + } + else if (__diff0 < __diff1) + return __t0; + return __t1; + } + + template + constexpr + enable_if_t::is_signed, duration<_Rep, _Period>> + abs(duration<_Rep, _Period> __d) + { + if (__d >= __d.zero()) + return __d; + return -__d; + } +#endif // C++17 + + /// duration_values + template + struct duration_values + { + static constexpr _Rep + zero() noexcept + { return _Rep(0); } + + static constexpr _Rep + max() noexcept + { return numeric_limits<_Rep>::max(); } + + static constexpr _Rep + min() noexcept + { return numeric_limits<_Rep>::lowest(); } + }; + + template + struct __is_ratio + : std::false_type + { }; + + template + struct __is_ratio> + : std::true_type + { }; + + /// duration + template + struct duration + { + private: + template + using __is_float = treat_as_floating_point<_Rep2>; + + // _Period2 is an exact multiple of _Period + template + using __is_harmonic + = __bool_constant::den == 1>; + + public: + + typedef _Rep rep; + typedef _Period period; + + static_assert(!__is_duration<_Rep>::value, "rep cannot be a duration"); + static_assert(__is_ratio<_Period>::value, + "period must be a specialization of ratio"); + static_assert(_Period::num > 0, "period must be positive"); + + // 20.11.5.1 construction / copy / destroy + constexpr duration() = default; + + duration(const duration&) = default; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3050. Conversion specification problem in chrono::duration + template, + __or_<__is_float, __not_<__is_float<_Rep2>>>>> + constexpr explicit duration(const _Rep2& __rep) + : __r(static_cast(__rep)) { } + + template, + __and_<__is_harmonic<_Period2>, + __not_<__is_float<_Rep2>>>>>> + constexpr duration(const duration<_Rep2, _Period2>& __d) + : __r(duration_cast(__d).count()) { } + + ~duration() = default; + duration& operator=(const duration&) = default; + + // 20.11.5.2 observer + constexpr rep + count() const + { return __r; } + + // 20.11.5.3 arithmetic + constexpr duration + operator+() const + { return *this; } + + constexpr duration + operator-() const + { return duration(-__r); } + + _GLIBCXX17_CONSTEXPR duration& + operator++() + { + ++__r; + return *this; + } + + _GLIBCXX17_CONSTEXPR duration + operator++(int) + { return duration(__r++); } + + _GLIBCXX17_CONSTEXPR duration& + operator--() + { + --__r; + return *this; + } + + _GLIBCXX17_CONSTEXPR duration + operator--(int) + { return duration(__r--); } + + _GLIBCXX17_CONSTEXPR duration& + operator+=(const duration& __d) + { + __r += __d.count(); + return *this; + } + + _GLIBCXX17_CONSTEXPR duration& + operator-=(const duration& __d) + { + __r -= __d.count(); + return *this; + } + + _GLIBCXX17_CONSTEXPR duration& + operator*=(const rep& __rhs) + { + __r *= __rhs; + return *this; + } + + _GLIBCXX17_CONSTEXPR duration& + operator/=(const rep& __rhs) + { + __r /= __rhs; + return *this; + } + + // DR 934. + template + _GLIBCXX17_CONSTEXPR + typename enable_if::value, + duration&>::type + operator%=(const rep& __rhs) + { + __r %= __rhs; + return *this; + } + + template + _GLIBCXX17_CONSTEXPR + typename enable_if::value, + duration&>::type + operator%=(const duration& __d) + { + __r %= __d.count(); + return *this; + } + + // 20.11.5.4 special values + static constexpr duration + zero() noexcept + { return duration(duration_values::zero()); } + + static constexpr duration + min() noexcept + { return duration(duration_values::min()); } + + static constexpr duration + max() noexcept + { return duration(duration_values::max()); } + + private: + rep __r; + }; + + template + constexpr typename common_type, + duration<_Rep2, _Period2>>::type + operator+(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__cd(__lhs).count() + __cd(__rhs).count()); + } + + template + constexpr typename common_type, + duration<_Rep2, _Period2>>::type + operator-(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__cd(__lhs).count() - __cd(__rhs).count()); + } + + // SFINAE helper to obtain common_type<_Rep1, _Rep2> only if _Rep2 + // is implicitly convertible to it. + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 3050. Conversion specification problem in chrono::duration constructor + template::type> + using __common_rep_t = typename + enable_if::value, _CRep>::type; + + template + constexpr duration<__common_rep_t<_Rep1, _Rep2>, _Period> + operator*(const duration<_Rep1, _Period>& __d, const _Rep2& __s) + { + typedef duration::type, _Period> + __cd; + return __cd(__cd(__d).count() * __s); + } + + template + constexpr duration<__common_rep_t<_Rep2, _Rep1>, _Period> + operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) + { return __d * __s; } + + template + constexpr + duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> + operator/(const duration<_Rep1, _Period>& __d, const _Rep2& __s) + { + typedef duration::type, _Period> + __cd; + return __cd(__cd(__d).count() / __s); + } + + template + constexpr typename common_type<_Rep1, _Rep2>::type + operator/(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__lhs).count() / __cd(__rhs).count(); + } + + // DR 934. + template + constexpr + duration<__common_rep_t<_Rep1, __disable_if_is_duration<_Rep2>>, _Period> + operator%(const duration<_Rep1, _Period>& __d, const _Rep2& __s) + { + typedef duration::type, _Period> + __cd; + return __cd(__cd(__d).count() % __s); + } + + template + constexpr typename common_type, + duration<_Rep2, _Period2>>::type + operator%(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __cd; + return __cd(__cd(__lhs).count() % __cd(__rhs).count()); + } + + // comparisons + template + constexpr bool + operator==(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __ct; + return __ct(__lhs).count() == __ct(__rhs).count(); + } + + template + constexpr bool + operator<(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<__dur1,__dur2>::type __ct; + return __ct(__lhs).count() < __ct(__rhs).count(); + } + + template + constexpr bool + operator!=(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return !(__lhs == __rhs); } + + template + constexpr bool + operator<=(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return !(__rhs < __lhs); } + + template + constexpr bool + operator>(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return __rhs < __lhs; } + + template + constexpr bool + operator>=(const duration<_Rep1, _Period1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { return !(__lhs < __rhs); } + + /// nanoseconds + typedef duration nanoseconds; + + /// microseconds + typedef duration microseconds; + + /// milliseconds + typedef duration milliseconds; + + /// seconds + typedef duration seconds; + + /// minutes + typedef duration> minutes; + + /// hours + typedef duration> hours; + + /// time_point + template + struct time_point + { + typedef _Clock clock; + typedef _Dur duration; + typedef typename duration::rep rep; + typedef typename duration::period period; + + constexpr time_point() : __d(duration::zero()) + { } + + constexpr explicit time_point(const duration& __dur) + : __d(__dur) + { } + + // conversions + template>> + constexpr time_point(const time_point& __t) + : __d(__t.time_since_epoch()) + { } + + // observer + constexpr duration + time_since_epoch() const + { return __d; } + + // arithmetic + _GLIBCXX17_CONSTEXPR time_point& + operator+=(const duration& __dur) + { + __d += __dur; + return *this; + } + + _GLIBCXX17_CONSTEXPR time_point& + operator-=(const duration& __dur) + { + __d -= __dur; + return *this; + } + + // special values + static constexpr time_point + min() noexcept + { return time_point(duration::min()); } + + static constexpr time_point + max() noexcept + { return time_point(duration::max()); } + + private: + duration __d; + }; + + /// time_point_cast + template + constexpr typename enable_if<__is_duration<_ToDur>::value, + time_point<_Clock, _ToDur>>::type + time_point_cast(const time_point<_Clock, _Dur>& __t) + { + typedef time_point<_Clock, _ToDur> __time_point; + return __time_point(duration_cast<_ToDur>(__t.time_since_epoch())); + } + +#if __cplusplus > 201402L + template + constexpr + enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> + floor(const time_point<_Clock, _Dur>& __tp) + { + return time_point<_Clock, _ToDur>{ + chrono::floor<_ToDur>(__tp.time_since_epoch())}; + } + + template + constexpr + enable_if_t<__is_duration<_ToDur>::value, time_point<_Clock, _ToDur>> + ceil(const time_point<_Clock, _Dur>& __tp) + { + return time_point<_Clock, _ToDur>{ + chrono::ceil<_ToDur>(__tp.time_since_epoch())}; + } + + template + constexpr enable_if_t< + __and_<__is_duration<_ToDur>, + __not_>>::value, + time_point<_Clock, _ToDur>> + round(const time_point<_Clock, _Dur>& __tp) + { + return time_point<_Clock, _ToDur>{ + chrono::round<_ToDur>(__tp.time_since_epoch())}; + } +#endif // C++17 + + template + constexpr time_point<_Clock, + typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> + operator+(const time_point<_Clock, _Dur1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<_Dur1,__dur2>::type __ct; + typedef time_point<_Clock, __ct> __time_point; + return __time_point(__lhs.time_since_epoch() + __rhs); + } + + template + constexpr time_point<_Clock, + typename common_type, _Dur2>::type> + operator+(const duration<_Rep1, _Period1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { + typedef duration<_Rep1, _Period1> __dur1; + typedef typename common_type<__dur1,_Dur2>::type __ct; + typedef time_point<_Clock, __ct> __time_point; + return __time_point(__rhs.time_since_epoch() + __lhs); + } + + template + constexpr time_point<_Clock, + typename common_type<_Dur1, duration<_Rep2, _Period2>>::type> + operator-(const time_point<_Clock, _Dur1>& __lhs, + const duration<_Rep2, _Period2>& __rhs) + { + typedef duration<_Rep2, _Period2> __dur2; + typedef typename common_type<_Dur1,__dur2>::type __ct; + typedef time_point<_Clock, __ct> __time_point; + return __time_point(__lhs.time_since_epoch() -__rhs); + } + + template + constexpr typename common_type<_Dur1, _Dur2>::type + operator-(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __lhs.time_since_epoch() - __rhs.time_since_epoch(); } + + template + constexpr bool + operator==(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __lhs.time_since_epoch() == __rhs.time_since_epoch(); } + + template + constexpr bool + operator!=(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return !(__lhs == __rhs); } + + template + constexpr bool + operator<(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __lhs.time_since_epoch() < __rhs.time_since_epoch(); } + + template + constexpr bool + operator<=(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return !(__rhs < __lhs); } + + template + constexpr bool + operator>(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return __rhs < __lhs; } + + template + constexpr bool + operator>=(const time_point<_Clock, _Dur1>& __lhs, + const time_point<_Clock, _Dur2>& __rhs) + { return !(__lhs < __rhs); } + + + // Clocks. + + // Why nanosecond resolution as the default? + // Why have std::system_clock always count in the highest + // resolution (ie nanoseconds), even if on some OSes the low 3 + // or 9 decimal digits will be always zero? This allows later + // implementations to change the system_clock::now() + // implementation any time to provide better resolution without + // changing function signature or units. + + // To support the (forward) evolution of the library's defined + // clocks, wrap inside inline namespace so that the current + // defintions of system_clock, steady_clock, and + // high_resolution_clock types are uniquely mangled. This way, new + // code can use the latests clocks, while the library can contain + // compatibility definitions for previous versions. At some + // point, when these clocks settle down, the inlined namespaces + // can be removed. XXX GLIBCXX_ABI Deprecated + inline namespace _V2 { + + /** + * @brief System clock. + * + * Time returned represents wall time from the system-wide clock. + */ + struct system_clock + { + typedef chrono::nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + + static_assert(system_clock::duration::min() + < system_clock::duration::zero(), + "a clock's minimum duration cannot be less than its epoch"); + + static constexpr bool is_steady = false; + + static time_point + now() noexcept; + + // Map to C API + static std::time_t + to_time_t(const time_point& __t) noexcept + { + return std::time_t(duration_cast + (__t.time_since_epoch()).count()); + } + + static time_point + from_time_t(std::time_t __t) noexcept + { + typedef chrono::time_point __from; + return time_point_cast + (__from(chrono::seconds(__t))); + } + }; + + + /** + * @brief Monotonic clock + * + * Time returned has the property of only increasing at a uniform rate. + */ + struct steady_clock + { + typedef chrono::nanoseconds duration; + typedef duration::rep rep; + typedef duration::period period; + typedef chrono::time_point time_point; + + static constexpr bool is_steady = true; + + static time_point + now() noexcept; + }; + + + /** + * @brief Highest-resolution clock + * + * This is the clock "with the shortest tick period." Alias to + * std::system_clock until higher-than-nanosecond definitions + * become feasible. + */ + using high_resolution_clock = system_clock; + + } // end inline namespace _V2 + } // namespace chrono + +#if __cplusplus > 201103L + +#define __cpp_lib_chrono_udls 201304 + + inline namespace literals + { + inline namespace chrono_literals + { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wliteral-suffix" + template + struct _Checked_integral_constant + : integral_constant<_Rep, static_cast<_Rep>(_Val)> + { + static_assert(_Checked_integral_constant::value >= 0 + && _Checked_integral_constant::value == _Val, + "literal value cannot be represented by duration type"); + }; + + template + constexpr _Dur __check_overflow() + { + using _Val = __parse_int::_Parse_int<_Digits...>; + using _Rep = typename _Dur::rep; + // TODO: should be simply integral_constant<_Rep, _Val::value> + // but GCC doesn't reject narrowing conversions to _Rep. + using _CheckedVal = _Checked_integral_constant<_Rep, _Val::value>; + return _Dur{_CheckedVal::value}; + } + + constexpr chrono::duration> + operator""h(long double __hours) + { return chrono::duration>{__hours}; } + + template + constexpr chrono::hours + operator""h() + { return __check_overflow(); } + + constexpr chrono::duration> + operator""min(long double __mins) + { return chrono::duration>{__mins}; } + + template + constexpr chrono::minutes + operator""min() + { return __check_overflow(); } + + constexpr chrono::duration + operator""s(long double __secs) + { return chrono::duration{__secs}; } + + template + constexpr chrono::seconds + operator""s() + { return __check_overflow(); } + + constexpr chrono::duration + operator""ms(long double __msecs) + { return chrono::duration{__msecs}; } + + template + constexpr chrono::milliseconds + operator""ms() + { return __check_overflow(); } + + constexpr chrono::duration + operator""us(long double __usecs) + { return chrono::duration{__usecs}; } + + template + constexpr chrono::microseconds + operator""us() + { return __check_overflow(); } + + constexpr chrono::duration + operator""ns(long double __nsecs) + { return chrono::duration{__nsecs}; } + + template + constexpr chrono::nanoseconds + operator""ns() + { return __check_overflow(); } + +#pragma GCC diagnostic pop + } // inline namespace chrono_literals + } // inline namespace literals + + namespace chrono + { + using namespace literals::chrono_literals; + } // namespace chrono + +#endif // C++14 + + // @} group chrono + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif //_GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif //_GLIBCXX_CHRONO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cinttypes b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cinttypes new file mode 100644 index 000000000..ad08d8ab8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cinttypes @@ -0,0 +1,81 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/cinttypes + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CINTTYPES +#define _GLIBCXX_CINTTYPES 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +// For 27.9.2/3 (see C99, Note 184) +#if _GLIBCXX_HAVE_INTTYPES_H +# ifndef __STDC_FORMAT_MACROS +# define _UNDEF__STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS +# endif +# include +# ifdef _UNDEF__STDC_FORMAT_MACROS +# undef __STDC_FORMAT_MACROS +# undef _UNDEF__STDC_FORMAT_MACROS +# endif +#endif + +#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1 + +namespace std +{ + // types + using ::imaxdiv_t; + + // functions + using ::imaxabs; + using ::imaxdiv; + + // GCC does not support extended integer types + // intmax_t abs(intmax_t) + // imaxdiv_t div(intmax_t, intmax_t) + + using ::strtoimax; + using ::strtoumax; + +#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 + using ::wcstoimax; + using ::wcstoumax; +#endif +} // namespace std + +#endif // _GLIBCXX_USE_C99_INTTYPES_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CINTTYPES diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ciso646 b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ciso646 similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ciso646 rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ciso646 index f603f59de..16b40c13c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ciso646 +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ciso646 @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/climits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/climits new file mode 100644 index 000000000..6b97f457c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/climits @@ -0,0 +1,59 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @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 +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CLIMITS +#define _GLIBCXX_CLIMITS 1 + +#ifndef LLONG_MIN +#define LLONG_MIN (-__LONG_LONG_MAX__ - 1) +#endif + +#ifndef LLONG_MAX +#define LLONG_MAX __LONG_LONG_MAX__ +#endif + +#ifndef ULLONG_MAX +#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1) +#endif + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/clocale b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/clocale similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/clocale rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/clocale index a9d7445e8..179c2e5f9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/clocale +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/clocale @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cmath new file mode 100644 index 000000000..4489e17d0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cmath @@ -0,0 +1,1897 @@ +// -*- C++ -*- C forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cmath + * 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 math.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: 26.5 C library +// + +#pragma GCC system_header + +#include +#include +#include +#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +#include_next +#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS +#include + +#ifndef _GLIBCXX_CMATH +#define _GLIBCXX_CMATH 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef div +#undef acos +#undef asin +#undef atan +#undef atan2 +#undef ceil +#undef cos +#undef cosh +#undef exp +#undef fabs +#undef floor +#undef fmod +#undef frexp +#undef ldexp +#undef log +#undef log10 +#undef modf +#undef pow +#undef sin +#undef sinh +#undef sqrt +#undef tan +#undef tanh + +extern "C++" +{ +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using ::acos; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + acos(float __x) + { return __builtin_acosf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + acos(long double __x) + { return __builtin_acosl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acos(_Tp __x) + { return __builtin_acos(__x); } + + using ::asin; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + asin(float __x) + { return __builtin_asinf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + asin(long double __x) + { return __builtin_asinl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asin(_Tp __x) + { return __builtin_asin(__x); } + + using ::atan; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + atan(float __x) + { return __builtin_atanf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + atan(long double __x) + { return __builtin_atanl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atan(_Tp __x) + { return __builtin_atan(__x); } + + using ::atan2; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + atan2(float __y, float __x) + { return __builtin_atan2f(__y, __x); } + + inline _GLIBCXX_CONSTEXPR long double + atan2(long double __y, long double __x) + { return __builtin_atan2l(__y, __x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + atan2(_Tp __y, _Up __x) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return atan2(__type(__y), __type(__x)); + } + + using ::ceil; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + ceil(float __x) + { return __builtin_ceilf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + ceil(long double __x) + { return __builtin_ceill(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ceil(_Tp __x) + { return __builtin_ceil(__x); } + + using ::cos; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + cos(float __x) + { return __builtin_cosf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + cos(long double __x) + { return __builtin_cosl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cos(_Tp __x) + { return __builtin_cos(__x); } + + using ::cosh; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + cosh(float __x) + { return __builtin_coshf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + cosh(long double __x) + { return __builtin_coshl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cosh(_Tp __x) + { return __builtin_cosh(__x); } + + using ::exp; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + exp(float __x) + { return __builtin_expf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + exp(long double __x) + { return __builtin_expl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp(_Tp __x) + { return __builtin_exp(__x); } + + using ::fabs; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + fabs(float __x) + { return __builtin_fabsf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + fabs(long double __x) + { return __builtin_fabsl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + fabs(_Tp __x) + { return __builtin_fabs(__x); } + + using ::floor; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + floor(float __x) + { return __builtin_floorf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + floor(long double __x) + { return __builtin_floorl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + floor(_Tp __x) + { return __builtin_floor(__x); } + + using ::fmod; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + fmod(float __x, float __y) + { return __builtin_fmodf(__x, __y); } + + inline _GLIBCXX_CONSTEXPR long double + fmod(long double __x, long double __y) + { return __builtin_fmodl(__x, __y); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmod(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmod(__type(__x), __type(__y)); + } + + using ::frexp; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline float + frexp(float __x, int* __exp) + { return __builtin_frexpf(__x, __exp); } + + inline long double + frexp(long double __x, int* __exp) + { return __builtin_frexpl(__x, __exp); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + frexp(_Tp __x, int* __exp) + { return __builtin_frexp(__x, __exp); } + + using ::ldexp; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + ldexp(float __x, int __exp) + { return __builtin_ldexpf(__x, __exp); } + + inline _GLIBCXX_CONSTEXPR long double + ldexp(long double __x, int __exp) + { return __builtin_ldexpl(__x, __exp); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + ldexp(_Tp __x, int __exp) + { return __builtin_ldexp(__x, __exp); } + + using ::log; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + log(float __x) + { return __builtin_logf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + log(long double __x) + { return __builtin_logl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log(_Tp __x) + { return __builtin_log(__x); } + + using ::log10; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + log10(float __x) + { return __builtin_log10f(__x); } + + inline _GLIBCXX_CONSTEXPR long double + log10(long double __x) + { return __builtin_log10l(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log10(_Tp __x) + { return __builtin_log10(__x); } + + using ::modf; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline float + modf(float __x, float* __iptr) + { return __builtin_modff(__x, __iptr); } + + inline long double + modf(long double __x, long double* __iptr) + { return __builtin_modfl(__x, __iptr); } +#endif + + using ::pow; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + pow(float __x, float __y) + { return __builtin_powf(__x, __y); } + + inline _GLIBCXX_CONSTEXPR long double + pow(long double __x, long double __y) + { return __builtin_powl(__x, __y); } + +#if __cplusplus < 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 550. What should the return type of pow(float,int) be? + inline double + pow(double __x, int __i) + { return __builtin_powi(__x, __i); } + + inline float + pow(float __x, int __n) + { return __builtin_powif(__x, __n); } + + inline long double + pow(long double __x, int __n) + { return __builtin_powil(__x, __n); } +#endif +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + pow(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return pow(__type(__x), __type(__y)); + } + + using ::sin; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + sin(float __x) + { return __builtin_sinf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + sin(long double __x) + { return __builtin_sinl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sin(_Tp __x) + { return __builtin_sin(__x); } + + using ::sinh; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + sinh(float __x) + { return __builtin_sinhf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + sinh(long double __x) + { return __builtin_sinhl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sinh(_Tp __x) + { return __builtin_sinh(__x); } + + using ::sqrt; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + sqrt(float __x) + { return __builtin_sqrtf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + sqrt(long double __x) + { return __builtin_sqrtl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + sqrt(_Tp __x) + { return __builtin_sqrt(__x); } + + using ::tan; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + tan(float __x) + { return __builtin_tanf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + tan(long double __x) + { return __builtin_tanl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tan(_Tp __x) + { return __builtin_tan(__x); } + + using ::tanh; + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO + inline _GLIBCXX_CONSTEXPR float + tanh(float __x) + { return __builtin_tanhf(__x); } + + inline _GLIBCXX_CONSTEXPR long double + tanh(long double __x) + { return __builtin_tanhl(__x); } +#endif + + template + inline _GLIBCXX_CONSTEXPR + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tanh(_Tp __x) + { return __builtin_tanh(__x); } + +#if _GLIBCXX_USE_C99_MATH +#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC + +// These are possible macros imported from C99-land. +#undef fpclassify +#undef isfinite +#undef isinf +#undef isnan +#undef isnormal +#undef signbit +#undef isgreater +#undef isgreaterequal +#undef isless +#undef islessequal +#undef islessgreater +#undef isunordered + +#if __cplusplus >= 201103L + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr int + fpclassify(float __x) + { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __x); } + + constexpr int + fpclassify(double __x) + { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __x); } + + constexpr int + fpclassify(long double __x) + { return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + fpclassify(_Tp __x) + { return __x != 0 ? FP_NORMAL : FP_ZERO; } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isfinite(float __x) + { return __builtin_isfinite(__x); } + + constexpr bool + isfinite(double __x) + { return __builtin_isfinite(__x); } + + constexpr bool + isfinite(long double __x) + { return __builtin_isfinite(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isfinite(_Tp __x) + { return true; } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isinf(float __x) + { return __builtin_isinf(__x); } + +#if _GLIBCXX_HAVE_OBSOLETE_ISINF \ + && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC + using ::isinf; +#else + constexpr bool + isinf(double __x) + { return __builtin_isinf(__x); } +#endif + + constexpr bool + isinf(long double __x) + { return __builtin_isinf(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isinf(_Tp __x) + { return false; } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isnan(float __x) + { return __builtin_isnan(__x); } + +#if _GLIBCXX_HAVE_OBSOLETE_ISNAN \ + && !_GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC + using ::isnan; +#else + constexpr bool + isnan(double __x) + { return __builtin_isnan(__x); } +#endif + + constexpr bool + isnan(long double __x) + { return __builtin_isnan(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnan(_Tp __x) + { return false; } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isnormal(float __x) + { return __builtin_isnormal(__x); } + + constexpr bool + isnormal(double __x) + { return __builtin_isnormal(__x); } + + constexpr bool + isnormal(long double __x) + { return __builtin_isnormal(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + isnormal(_Tp __x) + { return __x != 0 ? true : false; } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + // Note: middle-end/36757 is fixed, __builtin_signbit is type-generic. + constexpr bool + signbit(float __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(double __x) + { return __builtin_signbit(__x); } + + constexpr bool + signbit(long double __x) + { return __builtin_signbit(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + bool>::__type + signbit(_Tp __x) + { return __x < 0 ? true : false; } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isgreater(float __x, float __y) + { return __builtin_isgreater(__x, __y); } + + constexpr bool + isgreater(double __x, double __y) + { return __builtin_isgreater(__x, __y); } + + constexpr bool + isgreater(long double __x, long double __y) + { return __builtin_isgreater(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isgreater(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isgreater(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isgreaterequal(float __x, float __y) + { return __builtin_isgreaterequal(__x, __y); } + + constexpr bool + isgreaterequal(double __x, double __y) + { return __builtin_isgreaterequal(__x, __y); } + + constexpr bool + isgreaterequal(long double __x, long double __y) + { return __builtin_isgreaterequal(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isgreaterequal(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isgreaterequal(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isless(float __x, float __y) + { return __builtin_isless(__x, __y); } + + constexpr bool + isless(double __x, double __y) + { return __builtin_isless(__x, __y); } + + constexpr bool + isless(long double __x, long double __y) + { return __builtin_isless(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isless(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isless(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + islessequal(float __x, float __y) + { return __builtin_islessequal(__x, __y); } + + constexpr bool + islessequal(double __x, double __y) + { return __builtin_islessequal(__x, __y); } + + constexpr bool + islessequal(long double __x, long double __y) + { return __builtin_islessequal(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + islessequal(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_islessequal(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + islessgreater(float __x, float __y) + { return __builtin_islessgreater(__x, __y); } + + constexpr bool + islessgreater(double __x, double __y) + { return __builtin_islessgreater(__x, __y); } + + constexpr bool + islessgreater(long double __x, long double __y) + { return __builtin_islessgreater(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + islessgreater(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_islessgreater(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr bool + isunordered(float __x, float __y) + { return __builtin_isunordered(__x, __y); } + + constexpr bool + isunordered(double __x, double __y) + { return __builtin_isunordered(__x, __y); } + + constexpr bool + isunordered(long double __x, long double __y) + { return __builtin_isunordered(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename + __gnu_cxx::__enable_if<(__is_arithmetic<_Tp>::__value + && __is_arithmetic<_Up>::__value), bool>::__type + isunordered(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return __builtin_isunordered(__type(__x), __type(__y)); + } +#endif + +#else + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + fpclassify(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isfinite(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isfinite(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isinf(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isinf(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isnan(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isnan(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isnormal(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isnormal(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + signbit(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_signbit(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isgreater(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isgreater(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isgreaterequal(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isgreaterequal(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isless(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isless(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + islessequal(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_islessequal(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + islessgreater(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_islessgreater(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isunordered(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isunordered(__type(__f1), __type(__f2)); + } + +#endif // C++11 +#endif /* _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC */ +#endif /* _GLIBCXX_USE_C99_MATH */ + +#if __cplusplus >= 201103L + +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + +#undef acosh +#undef acoshf +#undef acoshl +#undef asinh +#undef asinhf +#undef asinhl +#undef atanh +#undef atanhf +#undef atanhl +#undef cbrt +#undef cbrtf +#undef cbrtl +#undef copysign +#undef copysignf +#undef copysignl +#undef erf +#undef erff +#undef erfl +#undef erfc +#undef erfcf +#undef erfcl +#undef exp2 +#undef exp2f +#undef exp2l +#undef expm1 +#undef expm1f +#undef expm1l +#undef fdim +#undef fdimf +#undef fdiml +#undef fma +#undef fmaf +#undef fmal +#undef fmax +#undef fmaxf +#undef fmaxl +#undef fmin +#undef fminf +#undef fminl +#undef hypot +#undef hypotf +#undef hypotl +#undef ilogb +#undef ilogbf +#undef ilogbl +#undef lgamma +#undef lgammaf +#undef lgammal +#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS +#undef llrint +#undef llrintf +#undef llrintl +#undef llround +#undef llroundf +#undef llroundl +#endif +#undef log1p +#undef log1pf +#undef log1pl +#undef log2 +#undef log2f +#undef log2l +#undef logb +#undef logbf +#undef logbl +#undef lrint +#undef lrintf +#undef lrintl +#undef lround +#undef lroundf +#undef lroundl +#undef nan +#undef nanf +#undef nanl +#undef nearbyint +#undef nearbyintf +#undef nearbyintl +#undef nextafter +#undef nextafterf +#undef nextafterl +#undef nexttoward +#undef nexttowardf +#undef nexttowardl +#undef remainder +#undef remainderf +#undef remainderl +#undef remquo +#undef remquof +#undef remquol +#undef rint +#undef rintf +#undef rintl +#undef round +#undef roundf +#undef roundl +#undef scalbln +#undef scalblnf +#undef scalblnl +#undef scalbn +#undef scalbnf +#undef scalbnl +#undef tgamma +#undef tgammaf +#undef tgammal +#undef trunc +#undef truncf +#undef truncl + + // types + using ::double_t; + using ::float_t; + + // functions + using ::acosh; + using ::acoshf; + using ::acoshl; + + using ::asinh; + using ::asinhf; + using ::asinhl; + + using ::atanh; + using ::atanhf; + using ::atanhl; + + using ::cbrt; + using ::cbrtf; + using ::cbrtl; + + using ::copysign; + using ::copysignf; + using ::copysignl; + + using ::erf; + using ::erff; + using ::erfl; + + using ::erfc; + using ::erfcf; + using ::erfcl; + + using ::exp2; + using ::exp2f; + using ::exp2l; + + using ::expm1; + using ::expm1f; + using ::expm1l; + + using ::fdim; + using ::fdimf; + using ::fdiml; + + using ::fma; + using ::fmaf; + using ::fmal; + + using ::fmax; + using ::fmaxf; + using ::fmaxl; + + using ::fmin; + using ::fminf; + using ::fminl; + + using ::hypot; + using ::hypotf; + using ::hypotl; + + using ::ilogb; + using ::ilogbf; + using ::ilogbl; + + using ::lgamma; + using ::lgammaf; + using ::lgammal; + +#ifndef _GLIBCXX_NO_C99_ROUNDING_FUNCS + using ::llrint; + using ::llrintf; + using ::llrintl; + + using ::llround; + using ::llroundf; + using ::llroundl; +#endif + + using ::log1p; + using ::log1pf; + using ::log1pl; + + using ::log2; + using ::log2f; + using ::log2l; + + using ::logb; + using ::logbf; + using ::logbl; + + using ::lrint; + using ::lrintf; + using ::lrintl; + + using ::lround; + using ::lroundf; + using ::lroundl; + + using ::nan; + using ::nanf; + using ::nanl; + + using ::nearbyint; + using ::nearbyintf; + using ::nearbyintl; + + using ::nextafter; + using ::nextafterf; + using ::nextafterl; + + using ::nexttoward; + using ::nexttowardf; + using ::nexttowardl; + + using ::remainder; + using ::remainderf; + using ::remainderl; + + using ::remquo; + using ::remquof; + using ::remquol; + + using ::rint; + using ::rintf; + using ::rintl; + + using ::round; + using ::roundf; + using ::roundl; + + using ::scalbln; + using ::scalblnf; + using ::scalblnl; + + using ::scalbn; + using ::scalbnf; + using ::scalbnl; + + using ::tgamma; + using ::tgammaf; + using ::tgammal; + + using ::trunc; + using ::truncf; + using ::truncl; + + /// Additional overloads. +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + acosh(float __x) + { return __builtin_acoshf(__x); } + + constexpr long double + acosh(long double __x) + { return __builtin_acoshl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acosh(_Tp __x) + { return __builtin_acosh(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + asinh(float __x) + { return __builtin_asinhf(__x); } + + constexpr long double + asinh(long double __x) + { return __builtin_asinhl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asinh(_Tp __x) + { return __builtin_asinh(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + atanh(float __x) + { return __builtin_atanhf(__x); } + + constexpr long double + atanh(long double __x) + { return __builtin_atanhl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atanh(_Tp __x) + { return __builtin_atanh(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + cbrt(float __x) + { return __builtin_cbrtf(__x); } + + constexpr long double + cbrt(long double __x) + { return __builtin_cbrtl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cbrt(_Tp __x) + { return __builtin_cbrt(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + copysign(float __x, float __y) + { return __builtin_copysignf(__x, __y); } + + constexpr long double + copysign(long double __x, long double __y) + { return __builtin_copysignl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + copysign(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return copysign(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + erf(float __x) + { return __builtin_erff(__x); } + + constexpr long double + erf(long double __x) + { return __builtin_erfl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erf(_Tp __x) + { return __builtin_erf(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + erfc(float __x) + { return __builtin_erfcf(__x); } + + constexpr long double + erfc(long double __x) + { return __builtin_erfcl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erfc(_Tp __x) + { return __builtin_erfc(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + exp2(float __x) + { return __builtin_exp2f(__x); } + + constexpr long double + exp2(long double __x) + { return __builtin_exp2l(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp2(_Tp __x) + { return __builtin_exp2(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + expm1(float __x) + { return __builtin_expm1f(__x); } + + constexpr long double + expm1(long double __x) + { return __builtin_expm1l(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + expm1(_Tp __x) + { return __builtin_expm1(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + fdim(float __x, float __y) + { return __builtin_fdimf(__x, __y); } + + constexpr long double + fdim(long double __x, long double __y) + { return __builtin_fdiml(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fdim(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fdim(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + fma(float __x, float __y, float __z) + { return __builtin_fmaf(__x, __y, __z); } + + constexpr long double + fma(long double __x, long double __y, long double __z) + { return __builtin_fmal(__x, __y, __z); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type + fma(_Tp __x, _Up __y, _Vp __z) + { + typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; + return fma(__type(__x), __type(__y), __type(__z)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + fmax(float __x, float __y) + { return __builtin_fmaxf(__x, __y); } + + constexpr long double + fmax(long double __x, long double __y) + { return __builtin_fmaxl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmax(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmax(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + fmin(float __x, float __y) + { return __builtin_fminf(__x, __y); } + + constexpr long double + fmin(long double __x, long double __y) + { return __builtin_fminl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmin(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmin(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + hypot(float __x, float __y) + { return __builtin_hypotf(__x, __y); } + + constexpr long double + hypot(long double __x, long double __y) + { return __builtin_hypotl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + hypot(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return hypot(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr int + ilogb(float __x) + { return __builtin_ilogbf(__x); } + + constexpr int + ilogb(long double __x) + { return __builtin_ilogbl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr + typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + ilogb(_Tp __x) + { return __builtin_ilogb(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + lgamma(float __x) + { return __builtin_lgammaf(__x); } + + constexpr long double + lgamma(long double __x) + { return __builtin_lgammal(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + lgamma(_Tp __x) + { return __builtin_lgamma(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr long long + llrint(float __x) + { return __builtin_llrintf(__x); } + + constexpr long long + llrint(long double __x) + { return __builtin_llrintl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llrint(_Tp __x) + { return __builtin_llrint(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr long long + llround(float __x) + { return __builtin_llroundf(__x); } + + constexpr long long + llround(long double __x) + { return __builtin_llroundl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llround(_Tp __x) + { return __builtin_llround(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + log1p(float __x) + { return __builtin_log1pf(__x); } + + constexpr long double + log1p(long double __x) + { return __builtin_log1pl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log1p(_Tp __x) + { return __builtin_log1p(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + // DR 568. + constexpr float + log2(float __x) + { return __builtin_log2f(__x); } + + constexpr long double + log2(long double __x) + { return __builtin_log2l(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log2(_Tp __x) + { return __builtin_log2(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + logb(float __x) + { return __builtin_logbf(__x); } + + constexpr long double + logb(long double __x) + { return __builtin_logbl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + logb(_Tp __x) + { return __builtin_logb(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr long + lrint(float __x) + { return __builtin_lrintf(__x); } + + constexpr long + lrint(long double __x) + { return __builtin_lrintl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lrint(_Tp __x) + { return __builtin_lrint(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr long + lround(float __x) + { return __builtin_lroundf(__x); } + + constexpr long + lround(long double __x) + { return __builtin_lroundl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lround(_Tp __x) + { return __builtin_lround(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + nearbyint(float __x) + { return __builtin_nearbyintf(__x); } + + constexpr long double + nearbyint(long double __x) + { return __builtin_nearbyintl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nearbyint(_Tp __x) + { return __builtin_nearbyint(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + nextafter(float __x, float __y) + { return __builtin_nextafterf(__x, __y); } + + constexpr long double + nextafter(long double __x, long double __y) + { return __builtin_nextafterl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + nextafter(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return nextafter(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + nexttoward(float __x, long double __y) + { return __builtin_nexttowardf(__x, __y); } + + constexpr long double + nexttoward(long double __x, long double __y) + { return __builtin_nexttowardl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nexttoward(_Tp __x, long double __y) + { return __builtin_nexttoward(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + remainder(float __x, float __y) + { return __builtin_remainderf(__x, __y); } + + constexpr long double + remainder(long double __x, long double __y) + { return __builtin_remainderl(__x, __y); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remainder(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remainder(__type(__x), __type(__y)); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + remquo(float __x, float __y, int* __pquo) + { return __builtin_remquof(__x, __y, __pquo); } + + inline long double + remquo(long double __x, long double __y, int* __pquo) + { return __builtin_remquol(__x, __y, __pquo); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remquo(_Tp __x, _Up __y, int* __pquo) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remquo(__type(__x), __type(__y), __pquo); + } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + rint(float __x) + { return __builtin_rintf(__x); } + + constexpr long double + rint(long double __x) + { return __builtin_rintl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + rint(_Tp __x) + { return __builtin_rint(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + round(float __x) + { return __builtin_roundf(__x); } + + constexpr long double + round(long double __x) + { return __builtin_roundl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + round(_Tp __x) + { return __builtin_round(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + scalbln(float __x, long __ex) + { return __builtin_scalblnf(__x, __ex); } + + constexpr long double + scalbln(long double __x, long __ex) + { return __builtin_scalblnl(__x, __ex); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbln(_Tp __x, long __ex) + { return __builtin_scalbln(__x, __ex); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + scalbn(float __x, int __ex) + { return __builtin_scalbnf(__x, __ex); } + + constexpr long double + scalbn(long double __x, int __ex) + { return __builtin_scalbnl(__x, __ex); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbn(_Tp __x, int __ex) + { return __builtin_scalbn(__x, __ex); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + tgamma(float __x) + { return __builtin_tgammaf(__x); } + + constexpr long double + tgamma(long double __x) + { return __builtin_tgammal(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tgamma(_Tp __x) + { return __builtin_tgamma(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + constexpr float + trunc(float __x) + { return __builtin_truncf(__x); } + + constexpr long double + trunc(long double __x) + { return __builtin_truncl(__x); } +#endif + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT + template + constexpr typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + trunc(_Tp __x) + { return __builtin_trunc(__x); } +#endif + +#endif // _GLIBCXX_USE_C99_MATH_TR1 +#endif // C++11 + +#if __cplusplus > 201402L + + // [c.math.hypot3], three-dimensional hypotenuse +#define __cpp_lib_hypot 201603 + + template + inline _Tp + __hypot3(_Tp __x, _Tp __y, _Tp __z) + { + __x = std::abs(__x); + __y = std::abs(__y); + __z = std::abs(__z); + if (_Tp __a = __x < __y ? __y < __z ? __z : __y : __x < __z ? __z : __x) + return __a * std::sqrt((__x / __a) * (__x / __a) + + (__y / __a) * (__y / __a) + + (__z / __a) * (__z / __a)); + else + return {}; + } + + inline float + hypot(float __x, float __y, float __z) + { return std::__hypot3(__x, __y, __z); } + + inline double + hypot(double __x, double __y, double __z) + { return std::__hypot3(__x, __y, __z); } + + inline long double + hypot(long double __x, long double __y, long double __z) + { return std::__hypot3(__x, __y, __z); } + + template + typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type + hypot(_Tp __x, _Up __y, _Vp __z) + { + using __type = typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type; + return std::__hypot3<__type>(__x, __y, __z); + } +#endif // C++17 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if _GLIBCXX_USE_STD_SPEC_FUNCS +# include +#endif + +} // extern "C++" + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/codecvt b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/codecvt similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/codecvt rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/codecvt index 67e358fd0..2a1bcdb66 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/codecvt +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/codecvt @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/complex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/complex new file mode 100644 index 000000000..2e2c2c065 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/complex @@ -0,0 +1,2004 @@ +// The template and inlines for the -*- C++ -*- complex number classes. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/complex + * This is a Standard C++ Library header. + */ + +// +// ISO C++ 14882: 26.2 Complex Numbers +// Note: this is not a conforming implementation. +// Initially implemented by Ulrich Drepper +// Improved by Gabriel Dos Reis +// + +#ifndef _GLIBCXX_COMPLEX +#define _GLIBCXX_COMPLEX 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include + +// Get rid of a macro possibly defined in +#undef complex + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup complex_numbers Complex Numbers + * @ingroup numerics + * + * Classes and functions for complex numbers. + * @{ + */ + + // Forward declarations. + template class complex; + template<> class complex; + template<> class complex; + template<> class complex; + + /// Return magnitude of @a z. + template _Tp abs(const complex<_Tp>&); + /// Return phase angle of @a z. + template _Tp arg(const complex<_Tp>&); + /// Return @a z magnitude squared. + template _Tp norm(const complex<_Tp>&); + + /// Return complex conjugate of @a z. + template complex<_Tp> conj(const complex<_Tp>&); + /// Return complex with magnitude @a rho and angle @a theta. + template complex<_Tp> polar(const _Tp&, const _Tp& = 0); + + // Transcendentals: + /// Return complex cosine of @a z. + template complex<_Tp> cos(const complex<_Tp>&); + /// Return complex hyperbolic cosine of @a z. + template complex<_Tp> cosh(const complex<_Tp>&); + /// Return complex base e exponential of @a z. + template complex<_Tp> exp(const complex<_Tp>&); + /// Return complex natural logarithm of @a z. + template complex<_Tp> log(const complex<_Tp>&); + /// Return complex base 10 logarithm of @a z. + template complex<_Tp> log10(const complex<_Tp>&); + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const complex<_Tp>&, int); + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const complex<_Tp>&, const _Tp&); + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const complex<_Tp>&, + const complex<_Tp>&); + /// Return @a x to the @a y'th power. + template complex<_Tp> pow(const _Tp&, const complex<_Tp>&); + /// Return complex sine of @a z. + template complex<_Tp> sin(const complex<_Tp>&); + /// Return complex hyperbolic sine of @a z. + template complex<_Tp> sinh(const complex<_Tp>&); + /// Return complex square root of @a z. + template complex<_Tp> sqrt(const complex<_Tp>&); + /// Return complex tangent of @a z. + template complex<_Tp> tan(const complex<_Tp>&); + /// Return complex hyperbolic tangent of @a z. + template complex<_Tp> tanh(const complex<_Tp>&); + + + // 26.2.2 Primary template class complex + /** + * Template to represent complex numbers. + * + * Specializations for float, double, and long double are part of the + * library. Results with any other type are not guaranteed. + * + * @param Tp Type of real and imaginary values. + */ + template + struct complex + { + /// Value typedef. + typedef _Tp value_type; + + /// Default constructor. First parameter is x, second parameter is y. + /// Unspecified parameters default to 0. + _GLIBCXX_CONSTEXPR complex(const _Tp& __r = _Tp(), const _Tp& __i = _Tp()) + : _M_real(__r), _M_imag(__i) { } + + // Let the compiler synthesize the copy constructor +#if __cplusplus >= 201103L + constexpr complex(const complex&) = default; +#endif + + /// Converting constructor. + template + _GLIBCXX_CONSTEXPR complex(const complex<_Up>& __z) + : _M_real(__z.real()), _M_imag(__z.imag()) { } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + _GLIBCXX_ABI_TAG_CXX11 + constexpr _Tp + real() const { return _M_real; } + + _GLIBCXX_ABI_TAG_CXX11 + constexpr _Tp + imag() const { return _M_imag; } +#else + /// Return real part of complex number. + _Tp& + real() { return _M_real; } + + /// Return real part of complex number. + const _Tp& + real() const { return _M_real; } + + /// Return imaginary part of complex number. + _Tp& + imag() { return _M_imag; } + + /// Return imaginary part of complex number. + const _Tp& + imag() const { return _M_imag; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(_Tp __val) { _M_real = __val; } + + void + imag(_Tp __val) { _M_imag = __val; } + + /// Assign a scalar to this complex number. + complex<_Tp>& operator=(const _Tp&); + + /// Add a scalar to this complex number. + // 26.2.5/1 + complex<_Tp>& + operator+=(const _Tp& __t) + { + _M_real += __t; + return *this; + } + + /// Subtract a scalar from this complex number. + // 26.2.5/3 + complex<_Tp>& + operator-=(const _Tp& __t) + { + _M_real -= __t; + return *this; + } + + /// Multiply this complex number by a scalar. + complex<_Tp>& operator*=(const _Tp&); + /// Divide this complex number by a scalar. + complex<_Tp>& operator/=(const _Tp&); + + // Let the compiler synthesize the copy assignment operator +#if __cplusplus >= 201103L + complex& operator=(const complex&) = default; +#endif + + /// Assign another complex number to this one. + template + complex<_Tp>& operator=(const complex<_Up>&); + /// Add another complex number to this one. + template + complex<_Tp>& operator+=(const complex<_Up>&); + /// Subtract another complex number from this one. + template + complex<_Tp>& operator-=(const complex<_Up>&); + /// Multiply this complex number by another. + template + complex<_Tp>& operator*=(const complex<_Up>&); + /// Divide this complex number by another. + template + complex<_Tp>& operator/=(const complex<_Up>&); + + _GLIBCXX_CONSTEXPR complex __rep() const + { return *this; } + + private: + _Tp _M_real; + _Tp _M_imag; + }; + + template + complex<_Tp>& + complex<_Tp>::operator=(const _Tp& __t) + { + _M_real = __t; + _M_imag = _Tp(); + return *this; + } + + // 26.2.5/5 + template + complex<_Tp>& + complex<_Tp>::operator*=(const _Tp& __t) + { + _M_real *= __t; + _M_imag *= __t; + return *this; + } + + // 26.2.5/7 + template + complex<_Tp>& + complex<_Tp>::operator/=(const _Tp& __t) + { + _M_real /= __t; + _M_imag /= __t; + return *this; + } + + template + template + complex<_Tp>& + complex<_Tp>::operator=(const complex<_Up>& __z) + { + _M_real = __z.real(); + _M_imag = __z.imag(); + return *this; + } + + // 26.2.5/9 + template + template + complex<_Tp>& + complex<_Tp>::operator+=(const complex<_Up>& __z) + { + _M_real += __z.real(); + _M_imag += __z.imag(); + return *this; + } + + // 26.2.5/11 + template + template + complex<_Tp>& + complex<_Tp>::operator-=(const complex<_Up>& __z) + { + _M_real -= __z.real(); + _M_imag -= __z.imag(); + return *this; + } + + // 26.2.5/13 + // XXX: This is a grammar school implementation. + template + template + complex<_Tp>& + complex<_Tp>::operator*=(const complex<_Up>& __z) + { + const _Tp __r = _M_real * __z.real() - _M_imag * __z.imag(); + _M_imag = _M_real * __z.imag() + _M_imag * __z.real(); + _M_real = __r; + return *this; + } + + // 26.2.5/15 + // XXX: This is a grammar school implementation. + template + template + complex<_Tp>& + complex<_Tp>::operator/=(const complex<_Up>& __z) + { + const _Tp __r = _M_real * __z.real() + _M_imag * __z.imag(); + const _Tp __n = std::norm(__z); + _M_imag = (_M_imag * __z.real() - _M_real * __z.imag()) / __n; + _M_real = __r / __n; + return *this; + } + + // Operators: + //@{ + /// Return new complex value @a x plus @a y. + template + inline complex<_Tp> + operator+(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r += __y; + return __r; + } + + template + inline complex<_Tp> + operator+(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r += __y; + return __r; + } + + template + inline complex<_Tp> + operator+(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __y; + __r += __x; + return __r; + } + //@} + + //@{ + /// Return new complex value @a x minus @a y. + template + inline complex<_Tp> + operator-(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r -= __y; + return __r; + } + + template + inline complex<_Tp> + operator-(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r -= __y; + return __r; + } + + template + inline complex<_Tp> + operator-(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r(__x, -__y.imag()); + __r -= __y.real(); + return __r; + } + //@} + + //@{ + /// Return new complex value @a x times @a y. + template + inline complex<_Tp> + operator*(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r *= __y; + return __r; + } + + template + inline complex<_Tp> + operator*(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r *= __y; + return __r; + } + + template + inline complex<_Tp> + operator*(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __y; + __r *= __x; + return __r; + } + //@} + + //@{ + /// Return new complex value @a x divided by @a y. + template + inline complex<_Tp> + operator/(const complex<_Tp>& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r /= __y; + return __r; + } + + template + inline complex<_Tp> + operator/(const complex<_Tp>& __x, const _Tp& __y) + { + complex<_Tp> __r = __x; + __r /= __y; + return __r; + } + + template + inline complex<_Tp> + operator/(const _Tp& __x, const complex<_Tp>& __y) + { + complex<_Tp> __r = __x; + __r /= __y; + return __r; + } + //@} + + /// Return @a x. + template + inline complex<_Tp> + operator+(const complex<_Tp>& __x) + { return __x; } + + /// Return complex negation of @a x. + template + inline complex<_Tp> + operator-(const complex<_Tp>& __x) + { return complex<_Tp>(-__x.real(), -__x.imag()); } + + //@{ + /// Return true if @a x is equal to @a y. + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __x.real() == __y.real() && __x.imag() == __y.imag(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const complex<_Tp>& __x, const _Tp& __y) + { return __x.real() == __y && __x.imag() == _Tp(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator==(const _Tp& __x, const complex<_Tp>& __y) + { return __x == __y.real() && _Tp() == __y.imag(); } + //@} + + //@{ + /// Return false if @a x is equal to @a y. + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __x.real() != __y.real() || __x.imag() != __y.imag(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const complex<_Tp>& __x, const _Tp& __y) + { return __x.real() != __y || __x.imag() != _Tp(); } + + template + inline _GLIBCXX_CONSTEXPR bool + operator!=(const _Tp& __x, const complex<_Tp>& __y) + { return __x != __y.real() || _Tp() != __y.imag(); } + //@} + + /// Extraction operator for complex values. + template + basic_istream<_CharT, _Traits>& + operator>>(basic_istream<_CharT, _Traits>& __is, complex<_Tp>& __x) + { + bool __fail = true; + _CharT __ch; + if (__is >> __ch) + { + if (_Traits::eq(__ch, __is.widen('('))) + { + _Tp __u; + if (__is >> __u >> __ch) + { + const _CharT __rparen = __is.widen(')'); + if (_Traits::eq(__ch, __rparen)) + { + __x = __u; + __fail = false; + } + else if (_Traits::eq(__ch, __is.widen(','))) + { + _Tp __v; + if (__is >> __v >> __ch) + { + if (_Traits::eq(__ch, __rparen)) + { + __x = complex<_Tp>(__u, __v); + __fail = false; + } + else + __is.putback(__ch); + } + } + else + __is.putback(__ch); + } + } + else + { + __is.putback(__ch); + _Tp __u; + if (__is >> __u) + { + __x = __u; + __fail = false; + } + } + } + if (__fail) + __is.setstate(ios_base::failbit); + return __is; + } + + /// Insertion operator for complex values. + template + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x) + { + basic_ostringstream<_CharT, _Traits> __s; + __s.flags(__os.flags()); + __s.imbue(__os.getloc()); + __s.precision(__os.precision()); + __s << '(' << __x.real() << ',' << __x.imag() << ')'; + return __os << __s.str(); + } + + // Values +#if __cplusplus >= 201103L + template + constexpr _Tp + real(const complex<_Tp>& __z) + { return __z.real(); } + + template + constexpr _Tp + imag(const complex<_Tp>& __z) + { return __z.imag(); } +#else + template + inline _Tp& + real(complex<_Tp>& __z) + { return __z.real(); } + + template + inline const _Tp& + real(const complex<_Tp>& __z) + { return __z.real(); } + + template + inline _Tp& + imag(complex<_Tp>& __z) + { return __z.imag(); } + + template + inline const _Tp& + imag(const complex<_Tp>& __z) + { return __z.imag(); } +#endif + + // 26.2.7/3 abs(__z): Returns the magnitude of __z. + template + inline _Tp + __complex_abs(const complex<_Tp>& __z) + { + _Tp __x = __z.real(); + _Tp __y = __z.imag(); + const _Tp __s = std::max(abs(__x), abs(__y)); + if (__s == _Tp()) // well ... + return __s; + __x /= __s; + __y /= __s; + return __s * sqrt(__x * __x + __y * __y); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline float + __complex_abs(__complex__ float __z) { return __builtin_cabsf(__z); } + + inline double + __complex_abs(__complex__ double __z) { return __builtin_cabs(__z); } + + inline long double + __complex_abs(const __complex__ long double& __z) + { return __builtin_cabsl(__z); } + + template + inline _Tp + abs(const complex<_Tp>& __z) { return __complex_abs(__z.__rep()); } +#else + template + inline _Tp + abs(const complex<_Tp>& __z) { return __complex_abs(__z); } +#endif + + + // 26.2.7/4: arg(__z): Returns the phase angle of __z. + template + inline _Tp + __complex_arg(const complex<_Tp>& __z) + { return atan2(__z.imag(), __z.real()); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline float + __complex_arg(__complex__ float __z) { return __builtin_cargf(__z); } + + inline double + __complex_arg(__complex__ double __z) { return __builtin_carg(__z); } + + inline long double + __complex_arg(const __complex__ long double& __z) + { return __builtin_cargl(__z); } + + template + inline _Tp + arg(const complex<_Tp>& __z) { return __complex_arg(__z.__rep()); } +#else + template + inline _Tp + arg(const complex<_Tp>& __z) { return __complex_arg(__z); } +#endif + + // 26.2.7/5: norm(__z) returns the squared magnitude of __z. + // As defined, norm() is -not- a norm is the common mathematical + // sense used in numerics. The helper class _Norm_helper<> tries to + // distinguish between builtin floating point and the rest, so as + // to deliver an answer as close as possible to the real value. + template + struct _Norm_helper + { + template + static inline _Tp _S_do_it(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return __x * __x + __y * __y; + } + }; + + template<> + struct _Norm_helper + { + template + static inline _Tp _S_do_it(const complex<_Tp>& __z) + { + _Tp __res = std::abs(__z); + return __res * __res; + } + }; + + template + inline _Tp + norm(const complex<_Tp>& __z) + { + return _Norm_helper<__is_floating<_Tp>::__value + && !_GLIBCXX_FAST_MATH>::_S_do_it(__z); + } + + template + inline complex<_Tp> + polar(const _Tp& __rho, const _Tp& __theta) + { + __glibcxx_assert( __rho >= 0 ); + return complex<_Tp>(__rho * cos(__theta), __rho * sin(__theta)); + } + + template + inline complex<_Tp> + conj(const complex<_Tp>& __z) + { return complex<_Tp>(__z.real(), -__z.imag()); } + + // Transcendentals + + // 26.2.8/1 cos(__z): Returns the cosine of __z. + template + inline complex<_Tp> + __complex_cos(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(cos(__x) * cosh(__y), -sin(__x) * sinh(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_cos(__complex__ float __z) { return __builtin_ccosf(__z); } + + inline __complex__ double + __complex_cos(__complex__ double __z) { return __builtin_ccos(__z); } + + inline __complex__ long double + __complex_cos(const __complex__ long double& __z) + { return __builtin_ccosl(__z); } + + template + inline complex<_Tp> + cos(const complex<_Tp>& __z) { return __complex_cos(__z.__rep()); } +#else + template + inline complex<_Tp> + cos(const complex<_Tp>& __z) { return __complex_cos(__z); } +#endif + + // 26.2.8/2 cosh(__z): Returns the hyperbolic cosine of __z. + template + inline complex<_Tp> + __complex_cosh(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(cosh(__x) * cos(__y), sinh(__x) * sin(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_cosh(__complex__ float __z) { return __builtin_ccoshf(__z); } + + inline __complex__ double + __complex_cosh(__complex__ double __z) { return __builtin_ccosh(__z); } + + inline __complex__ long double + __complex_cosh(const __complex__ long double& __z) + { return __builtin_ccoshl(__z); } + + template + inline complex<_Tp> + cosh(const complex<_Tp>& __z) { return __complex_cosh(__z.__rep()); } +#else + template + inline complex<_Tp> + cosh(const complex<_Tp>& __z) { return __complex_cosh(__z); } +#endif + + // 26.2.8/3 exp(__z): Returns the complex base e exponential of x + template + inline complex<_Tp> + __complex_exp(const complex<_Tp>& __z) + { return std::polar<_Tp>(exp(__z.real()), __z.imag()); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_exp(__complex__ float __z) { return __builtin_cexpf(__z); } + + inline __complex__ double + __complex_exp(__complex__ double __z) { return __builtin_cexp(__z); } + + inline __complex__ long double + __complex_exp(const __complex__ long double& __z) + { return __builtin_cexpl(__z); } + + template + inline complex<_Tp> + exp(const complex<_Tp>& __z) { return __complex_exp(__z.__rep()); } +#else + template + inline complex<_Tp> + exp(const complex<_Tp>& __z) { return __complex_exp(__z); } +#endif + + // 26.2.8/5 log(__z): Returns the natural complex logarithm of __z. + // The branch cut is along the negative axis. + template + inline complex<_Tp> + __complex_log(const complex<_Tp>& __z) + { return complex<_Tp>(log(std::abs(__z)), std::arg(__z)); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_log(__complex__ float __z) { return __builtin_clogf(__z); } + + inline __complex__ double + __complex_log(__complex__ double __z) { return __builtin_clog(__z); } + + inline __complex__ long double + __complex_log(const __complex__ long double& __z) + { return __builtin_clogl(__z); } + + template + inline complex<_Tp> + log(const complex<_Tp>& __z) { return __complex_log(__z.__rep()); } +#else + template + inline complex<_Tp> + log(const complex<_Tp>& __z) { return __complex_log(__z); } +#endif + + template + inline complex<_Tp> + log10(const complex<_Tp>& __z) + { return std::log(__z) / log(_Tp(10.0)); } + + // 26.2.8/10 sin(__z): Returns the sine of __z. + template + inline complex<_Tp> + __complex_sin(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(sin(__x) * cosh(__y), cos(__x) * sinh(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_sin(__complex__ float __z) { return __builtin_csinf(__z); } + + inline __complex__ double + __complex_sin(__complex__ double __z) { return __builtin_csin(__z); } + + inline __complex__ long double + __complex_sin(const __complex__ long double& __z) + { return __builtin_csinl(__z); } + + template + inline complex<_Tp> + sin(const complex<_Tp>& __z) { return __complex_sin(__z.__rep()); } +#else + template + inline complex<_Tp> + sin(const complex<_Tp>& __z) { return __complex_sin(__z); } +#endif + + // 26.2.8/11 sinh(__z): Returns the hyperbolic sine of __z. + template + inline complex<_Tp> + __complex_sinh(const complex<_Tp>& __z) + { + const _Tp __x = __z.real(); + const _Tp __y = __z.imag(); + return complex<_Tp>(sinh(__x) * cos(__y), cosh(__x) * sin(__y)); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_sinh(__complex__ float __z) { return __builtin_csinhf(__z); } + + inline __complex__ double + __complex_sinh(__complex__ double __z) { return __builtin_csinh(__z); } + + inline __complex__ long double + __complex_sinh(const __complex__ long double& __z) + { return __builtin_csinhl(__z); } + + template + inline complex<_Tp> + sinh(const complex<_Tp>& __z) { return __complex_sinh(__z.__rep()); } +#else + template + inline complex<_Tp> + sinh(const complex<_Tp>& __z) { return __complex_sinh(__z); } +#endif + + // 26.2.8/13 sqrt(__z): Returns the complex square root of __z. + // The branch cut is on the negative axis. + template + complex<_Tp> + __complex_sqrt(const complex<_Tp>& __z) + { + _Tp __x = __z.real(); + _Tp __y = __z.imag(); + + if (__x == _Tp()) + { + _Tp __t = sqrt(abs(__y) / 2); + return complex<_Tp>(__t, __y < _Tp() ? -__t : __t); + } + else + { + _Tp __t = sqrt(2 * (std::abs(__z) + abs(__x))); + _Tp __u = __t / 2; + return __x > _Tp() + ? complex<_Tp>(__u, __y / __t) + : complex<_Tp>(abs(__y) / __t, __y < _Tp() ? -__u : __u); + } + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_sqrt(__complex__ float __z) { return __builtin_csqrtf(__z); } + + inline __complex__ double + __complex_sqrt(__complex__ double __z) { return __builtin_csqrt(__z); } + + inline __complex__ long double + __complex_sqrt(const __complex__ long double& __z) + { return __builtin_csqrtl(__z); } + + template + inline complex<_Tp> + sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z.__rep()); } +#else + template + inline complex<_Tp> + sqrt(const complex<_Tp>& __z) { return __complex_sqrt(__z); } +#endif + + // 26.2.8/14 tan(__z): Return the complex tangent of __z. + + template + inline complex<_Tp> + __complex_tan(const complex<_Tp>& __z) + { return std::sin(__z) / std::cos(__z); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_tan(__complex__ float __z) { return __builtin_ctanf(__z); } + + inline __complex__ double + __complex_tan(__complex__ double __z) { return __builtin_ctan(__z); } + + inline __complex__ long double + __complex_tan(const __complex__ long double& __z) + { return __builtin_ctanl(__z); } + + template + inline complex<_Tp> + tan(const complex<_Tp>& __z) { return __complex_tan(__z.__rep()); } +#else + template + inline complex<_Tp> + tan(const complex<_Tp>& __z) { return __complex_tan(__z); } +#endif + + + // 26.2.8/15 tanh(__z): Returns the hyperbolic tangent of __z. + + template + inline complex<_Tp> + __complex_tanh(const complex<_Tp>& __z) + { return std::sinh(__z) / std::cosh(__z); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_tanh(__complex__ float __z) { return __builtin_ctanhf(__z); } + + inline __complex__ double + __complex_tanh(__complex__ double __z) { return __builtin_ctanh(__z); } + + inline __complex__ long double + __complex_tanh(const __complex__ long double& __z) + { return __builtin_ctanhl(__z); } + + template + inline complex<_Tp> + tanh(const complex<_Tp>& __z) { return __complex_tanh(__z.__rep()); } +#else + template + inline complex<_Tp> + tanh(const complex<_Tp>& __z) { return __complex_tanh(__z); } +#endif + + + // 26.2.8/9 pow(__x, __y): Returns the complex power base of __x + // raised to the __y-th power. The branch + // cut is on the negative axis. + template + complex<_Tp> + __complex_pow_unsigned(complex<_Tp> __x, unsigned __n) + { + complex<_Tp> __y = __n % 2 ? __x : complex<_Tp>(1); + + while (__n >>= 1) + { + __x *= __x; + if (__n % 2) + __y *= __x; + } + + return __y; + } + + // In C++11 mode we used to implement the resolution of + // DR 844. complex pow return type is ambiguous. + // thus the following overload was disabled in that mode. However, doing + // that causes all sorts of issues, see, for example: + // http://gcc.gnu.org/ml/libstdc++/2013-01/msg00058.html + // and also PR57974. + template + inline complex<_Tp> + pow(const complex<_Tp>& __z, int __n) + { + return __n < 0 + ? complex<_Tp>(1) / std::__complex_pow_unsigned(__z, -(unsigned)__n) + : std::__complex_pow_unsigned(__z, __n); + } + + template + complex<_Tp> + pow(const complex<_Tp>& __x, const _Tp& __y) + { +#if ! _GLIBCXX_USE_C99_COMPLEX + if (__x == _Tp()) + return _Tp(); +#endif + if (__x.imag() == _Tp() && __x.real() > _Tp()) + return pow(__x.real(), __y); + + complex<_Tp> __t = std::log(__x); + return std::polar<_Tp>(exp(__y * __t.real()), __y * __t.imag()); + } + + template + inline complex<_Tp> + __complex_pow(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __x == _Tp() ? _Tp() : std::exp(__y * std::log(__x)); } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_pow(__complex__ float __x, __complex__ float __y) + { return __builtin_cpowf(__x, __y); } + + inline __complex__ double + __complex_pow(__complex__ double __x, __complex__ double __y) + { return __builtin_cpow(__x, __y); } + + inline __complex__ long double + __complex_pow(const __complex__ long double& __x, + const __complex__ long double& __y) + { return __builtin_cpowl(__x, __y); } + + template + inline complex<_Tp> + pow(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __complex_pow(__x.__rep(), __y.__rep()); } +#else + template + inline complex<_Tp> + pow(const complex<_Tp>& __x, const complex<_Tp>& __y) + { return __complex_pow(__x, __y); } +#endif + + template + inline complex<_Tp> + pow(const _Tp& __x, const complex<_Tp>& __y) + { + return __x > _Tp() ? std::polar<_Tp>(pow(__x, __y.real()), + __y.imag() * log(__x)) + : std::pow(complex<_Tp>(__x), __y); + } + + /// 26.2.3 complex specializations + /// complex specialization + template<> + struct complex + { + typedef float value_type; + typedef __complex__ float _ComplexT; + + _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } + + _GLIBCXX_CONSTEXPR complex(float __r = 0.0f, float __i = 0.0f) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + explicit _GLIBCXX_CONSTEXPR complex(const complex&); + explicit _GLIBCXX_CONSTEXPR complex(const complex&); + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr float + real() const { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr float + imag() const { return __imag__ _M_value; } +#else + float& + real() { return __real__ _M_value; } + + const float& + real() const { return __real__ _M_value; } + + float& + imag() { return __imag__ _M_value; } + + const float& + imag() const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(float __val) { __real__ _M_value = __val; } + + void + imag(float __val) { __imag__ _M_value = __val; } + + complex& + operator=(float __f) + { + _M_value = __f; + return *this; + } + + complex& + operator+=(float __f) + { + _M_value += __f; + return *this; + } + + complex& + operator-=(float __f) + { + _M_value -= __f; + return *this; + } + + complex& + operator*=(float __f) + { + _M_value *= __f; + return *this; + } + + complex& + operator/=(float __f) + { + _M_value /= __f; + return *this; + } + + // Let the compiler synthesize the copy and assignment + // operator. It always does a pretty good job. + // complex& operator=(const complex&); + + template + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_CONSTEXPR _ComplexT __rep() const { return _M_value; } + + private: + _ComplexT _M_value; + }; + + /// 26.2.3 complex specializations + /// complex specialization + template<> + struct complex + { + typedef double value_type; + typedef __complex__ double _ComplexT; + + _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } + + _GLIBCXX_CONSTEXPR complex(double __r = 0.0, double __i = 0.0) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + _GLIBCXX_CONSTEXPR complex(const complex& __z) + : _M_value(__z.__rep()) { } + + explicit _GLIBCXX_CONSTEXPR complex(const complex&); + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr double + real() const { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr double + imag() const { return __imag__ _M_value; } +#else + double& + real() { return __real__ _M_value; } + + const double& + real() const { return __real__ _M_value; } + + double& + imag() { return __imag__ _M_value; } + + const double& + imag() const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(double __val) { __real__ _M_value = __val; } + + void + imag(double __val) { __imag__ _M_value = __val; } + + complex& + operator=(double __d) + { + _M_value = __d; + return *this; + } + + complex& + operator+=(double __d) + { + _M_value += __d; + return *this; + } + + complex& + operator-=(double __d) + { + _M_value -= __d; + return *this; + } + + complex& + operator*=(double __d) + { + _M_value *= __d; + return *this; + } + + complex& + operator/=(double __d) + { + _M_value /= __d; + return *this; + } + + // The compiler will synthesize this, efficiently. + // complex& operator=(const complex&); + + template + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_CONSTEXPR _ComplexT __rep() const { return _M_value; } + + private: + _ComplexT _M_value; + }; + + /// 26.2.3 complex specializations + /// complex specialization + template<> + struct complex + { + typedef long double value_type; + typedef __complex__ long double _ComplexT; + + _GLIBCXX_CONSTEXPR complex(_ComplexT __z) : _M_value(__z) { } + + _GLIBCXX_CONSTEXPR complex(long double __r = 0.0L, + long double __i = 0.0L) +#if __cplusplus >= 201103L + : _M_value{ __r, __i } { } +#else + { + __real__ _M_value = __r; + __imag__ _M_value = __i; + } +#endif + + _GLIBCXX_CONSTEXPR complex(const complex& __z) + : _M_value(__z.__rep()) { } + + _GLIBCXX_CONSTEXPR complex(const complex& __z) + : _M_value(__z.__rep()) { } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + __attribute ((__abi_tag__ ("cxx11"))) + constexpr long double + real() const { return __real__ _M_value; } + + __attribute ((__abi_tag__ ("cxx11"))) + constexpr long double + imag() const { return __imag__ _M_value; } +#else + long double& + real() { return __real__ _M_value; } + + const long double& + real() const { return __real__ _M_value; } + + long double& + imag() { return __imag__ _M_value; } + + const long double& + imag() const { return __imag__ _M_value; } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 387. std::complex over-encapsulated. + void + real(long double __val) { __real__ _M_value = __val; } + + void + imag(long double __val) { __imag__ _M_value = __val; } + + complex& + operator=(long double __r) + { + _M_value = __r; + return *this; + } + + complex& + operator+=(long double __r) + { + _M_value += __r; + return *this; + } + + complex& + operator-=(long double __r) + { + _M_value -= __r; + return *this; + } + + complex& + operator*=(long double __r) + { + _M_value *= __r; + return *this; + } + + complex& + operator/=(long double __r) + { + _M_value /= __r; + return *this; + } + + // The compiler knows how to do this efficiently + // complex& operator=(const complex&); + + template + complex& + operator=(const complex<_Tp>& __z) + { + __real__ _M_value = __z.real(); + __imag__ _M_value = __z.imag(); + return *this; + } + + template + complex& + operator+=(const complex<_Tp>& __z) + { + __real__ _M_value += __z.real(); + __imag__ _M_value += __z.imag(); + return *this; + } + + template + complex& + operator-=(const complex<_Tp>& __z) + { + __real__ _M_value -= __z.real(); + __imag__ _M_value -= __z.imag(); + return *this; + } + + template + complex& + operator*=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value *= __t; + return *this; + } + + template + complex& + operator/=(const complex<_Tp>& __z) + { + _ComplexT __t; + __real__ __t = __z.real(); + __imag__ __t = __z.imag(); + _M_value /= __t; + return *this; + } + + _GLIBCXX_CONSTEXPR _ComplexT __rep() const { return _M_value; } + + private: + _ComplexT _M_value; + }; + + // These bits have to be at the end of this file, so that the + // specializations have all been defined. + inline _GLIBCXX_CONSTEXPR + complex::complex(const complex& __z) + : _M_value(__z.__rep()) { } + + inline _GLIBCXX_CONSTEXPR + complex::complex(const complex& __z) + : _M_value(__z.__rep()) { } + + inline _GLIBCXX_CONSTEXPR + complex::complex(const complex& __z) + : _M_value(__z.__rep()) { } + + // Inhibit implicit instantiations for required instantiations, + // which are defined via explicit instantiations elsewhere. + // NB: This syntax is a GNU extension. +#if _GLIBCXX_EXTERN_TEMPLATE + extern template istream& operator>>(istream&, complex&); + extern template ostream& operator<<(ostream&, const complex&); + extern template istream& operator>>(istream&, complex&); + extern template ostream& operator<<(ostream&, const complex&); + extern template istream& operator>>(istream&, complex&); + extern template ostream& operator<<(ostream&, const complex&); + +#ifdef _GLIBCXX_USE_WCHAR_T + extern template wistream& operator>>(wistream&, complex&); + extern template wostream& operator<<(wostream&, const complex&); + extern template wistream& operator>>(wistream&, complex&); + extern template wostream& operator<<(wostream&, const complex&); + extern template wistream& operator>>(wistream&, complex&); + extern template wostream& operator<<(wostream&, const complex&); +#endif +#endif + + // @} group complex_numbers + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // See ext/type_traits.h for the primary template. + template + struct __promote_2, _Up> + { + public: + typedef std::complex::__type> __type; + }; + + template + struct __promote_2<_Tp, std::complex<_Up> > + { + public: + typedef std::complex::__type> __type; + }; + + template + struct __promote_2, std::complex<_Up> > + { + public: + typedef std::complex::__type> __type; + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if __cplusplus >= 201103L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Forward declarations. + template std::complex<_Tp> acos(const std::complex<_Tp>&); + template std::complex<_Tp> asin(const std::complex<_Tp>&); + template std::complex<_Tp> atan(const std::complex<_Tp>&); + + template std::complex<_Tp> acosh(const std::complex<_Tp>&); + template std::complex<_Tp> asinh(const std::complex<_Tp>&); + template std::complex<_Tp> atanh(const std::complex<_Tp>&); + // DR 595. + template _Tp fabs(const std::complex<_Tp>&); + + template + inline std::complex<_Tp> + __complex_acos(const std::complex<_Tp>& __z) + { + const std::complex<_Tp> __t = std::asin(__z); + const _Tp __pi_2 = 1.5707963267948966192313216916397514L; + return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag()); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_acos(__complex__ float __z) + { return __builtin_cacosf(__z); } + + inline __complex__ double + __complex_acos(__complex__ double __z) + { return __builtin_cacos(__z); } + + inline __complex__ long double + __complex_acos(const __complex__ long double& __z) + { return __builtin_cacosl(__z); } + + template + inline std::complex<_Tp> + acos(const std::complex<_Tp>& __z) + { return __complex_acos(__z.__rep()); } +#else + /// acos(__z) [8.1.2]. + // Effects: Behaves the same as C99 function cacos, defined + // in subclause 7.3.5.1. + template + inline std::complex<_Tp> + acos(const std::complex<_Tp>& __z) + { return __complex_acos(__z); } +#endif + + template + inline std::complex<_Tp> + __complex_asin(const std::complex<_Tp>& __z) + { + std::complex<_Tp> __t(-__z.imag(), __z.real()); + __t = std::asinh(__t); + return std::complex<_Tp>(__t.imag(), -__t.real()); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_asin(__complex__ float __z) + { return __builtin_casinf(__z); } + + inline __complex__ double + __complex_asin(__complex__ double __z) + { return __builtin_casin(__z); } + + inline __complex__ long double + __complex_asin(const __complex__ long double& __z) + { return __builtin_casinl(__z); } + + template + inline std::complex<_Tp> + asin(const std::complex<_Tp>& __z) + { return __complex_asin(__z.__rep()); } +#else + /// asin(__z) [8.1.3]. + // Effects: Behaves the same as C99 function casin, defined + // in subclause 7.3.5.2. + template + inline std::complex<_Tp> + asin(const std::complex<_Tp>& __z) + { return __complex_asin(__z); } +#endif + + template + std::complex<_Tp> + __complex_atan(const std::complex<_Tp>& __z) + { + const _Tp __r2 = __z.real() * __z.real(); + const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag(); + + _Tp __num = __z.imag() + _Tp(1.0); + _Tp __den = __z.imag() - _Tp(1.0); + + __num = __r2 + __num * __num; + __den = __r2 + __den * __den; + + return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x), + _Tp(0.25) * log(__num / __den)); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_atan(__complex__ float __z) + { return __builtin_catanf(__z); } + + inline __complex__ double + __complex_atan(__complex__ double __z) + { return __builtin_catan(__z); } + + inline __complex__ long double + __complex_atan(const __complex__ long double& __z) + { return __builtin_catanl(__z); } + + template + inline std::complex<_Tp> + atan(const std::complex<_Tp>& __z) + { return __complex_atan(__z.__rep()); } +#else + /// atan(__z) [8.1.4]. + // Effects: Behaves the same as C99 function catan, defined + // in subclause 7.3.5.3. + template + inline std::complex<_Tp> + atan(const std::complex<_Tp>& __z) + { return __complex_atan(__z); } +#endif + + template + std::complex<_Tp> + __complex_acosh(const std::complex<_Tp>& __z) + { + // Kahan's formula. + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_acosh(__complex__ float __z) + { return __builtin_cacoshf(__z); } + + inline __complex__ double + __complex_acosh(__complex__ double __z) + { return __builtin_cacosh(__z); } + + inline __complex__ long double + __complex_acosh(const __complex__ long double& __z) + { return __builtin_cacoshl(__z); } + + template + inline std::complex<_Tp> + acosh(const std::complex<_Tp>& __z) + { return __complex_acosh(__z.__rep()); } +#else + /// acosh(__z) [8.1.5]. + // Effects: Behaves the same as C99 function cacosh, defined + // in subclause 7.3.6.1. + template + inline std::complex<_Tp> + acosh(const std::complex<_Tp>& __z) + { return __complex_acosh(__z); } +#endif + + template + std::complex<_Tp> + __complex_asinh(const std::complex<_Tp>& __z) + { + std::complex<_Tp> __t((__z.real() - __z.imag()) + * (__z.real() + __z.imag()) + _Tp(1.0), + _Tp(2.0) * __z.real() * __z.imag()); + __t = std::sqrt(__t); + + return std::log(__t + __z); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_asinh(__complex__ float __z) + { return __builtin_casinhf(__z); } + + inline __complex__ double + __complex_asinh(__complex__ double __z) + { return __builtin_casinh(__z); } + + inline __complex__ long double + __complex_asinh(const __complex__ long double& __z) + { return __builtin_casinhl(__z); } + + template + inline std::complex<_Tp> + asinh(const std::complex<_Tp>& __z) + { return __complex_asinh(__z.__rep()); } +#else + /// asinh(__z) [8.1.6]. + // Effects: Behaves the same as C99 function casin, defined + // in subclause 7.3.6.2. + template + inline std::complex<_Tp> + asinh(const std::complex<_Tp>& __z) + { return __complex_asinh(__z); } +#endif + + template + std::complex<_Tp> + __complex_atanh(const std::complex<_Tp>& __z) + { + const _Tp __i2 = __z.imag() * __z.imag(); + const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real(); + + _Tp __num = _Tp(1.0) + __z.real(); + _Tp __den = _Tp(1.0) - __z.real(); + + __num = __i2 + __num * __num; + __den = __i2 + __den * __den; + + return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)), + _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x)); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_atanh(__complex__ float __z) + { return __builtin_catanhf(__z); } + + inline __complex__ double + __complex_atanh(__complex__ double __z) + { return __builtin_catanh(__z); } + + inline __complex__ long double + __complex_atanh(const __complex__ long double& __z) + { return __builtin_catanhl(__z); } + + template + inline std::complex<_Tp> + atanh(const std::complex<_Tp>& __z) + { return __complex_atanh(__z.__rep()); } +#else + /// atanh(__z) [8.1.7]. + // Effects: Behaves the same as C99 function catanh, defined + // in subclause 7.3.6.3. + template + inline std::complex<_Tp> + atanh(const std::complex<_Tp>& __z) + { return __complex_atanh(__z); } +#endif + + template + inline _Tp + /// fabs(__z) [8.1.8]. + // Effects: Behaves the same as C99 function cabs, defined + // in subclause 7.3.8.1. + fabs(const std::complex<_Tp>& __z) + { return std::abs(__z); } + + /// Additional overloads [8.1.9]. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + arg(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +#if (_GLIBCXX11_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) + return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) + : __type(); +#else + return std::arg(std::complex<__type>(__x)); +#endif + } + + template + _GLIBCXX_CONSTEXPR inline typename __gnu_cxx::__promote<_Tp>::__type + imag(_Tp) + { return _Tp(); } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + norm(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __type(__x) * __type(__x); + } + + template + _GLIBCXX_CONSTEXPR inline typename __gnu_cxx::__promote<_Tp>::__type + real(_Tp __x) + { return __x; } + + template + inline std::complex::__type> + pow(const std::complex<_Tp>& __x, const _Up& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(std::complex<__type>(__x), __type(__y)); + } + + template + inline std::complex::__type> + pow(const _Tp& __x, const std::complex<_Up>& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(__type(__x), std::complex<__type>(__y)); + } + + template + inline std::complex::__type> + pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(std::complex<__type>(__x), + std::complex<__type>(__y)); + } + + // Forward declarations. + // DR 781. + template std::complex<_Tp> proj(const std::complex<_Tp>&); + + template + std::complex<_Tp> + __complex_proj(const std::complex<_Tp>& __z) + { + const _Tp __den = (__z.real() * __z.real() + + __z.imag() * __z.imag() + _Tp(1.0)); + + return std::complex<_Tp>((_Tp(2.0) * __z.real()) / __den, + (_Tp(2.0) * __z.imag()) / __den); + } + +#if _GLIBCXX_USE_C99_COMPLEX + inline __complex__ float + __complex_proj(__complex__ float __z) + { return __builtin_cprojf(__z); } + + inline __complex__ double + __complex_proj(__complex__ double __z) + { return __builtin_cproj(__z); } + + inline __complex__ long double + __complex_proj(const __complex__ long double& __z) + { return __builtin_cprojl(__z); } + + template + inline std::complex<_Tp> + proj(const std::complex<_Tp>& __z) + { return __complex_proj(__z.__rep()); } +#else + template + inline std::complex<_Tp> + proj(const std::complex<_Tp>& __z) + { return __complex_proj(__z); } +#endif + + template + inline std::complex::__type> + proj(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return std::proj(std::complex<__type>(__x)); + } + + template + inline std::complex::__type> + conj(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return std::complex<__type>(__x, -__type()); + } + +#if __cplusplus > 201103L + +inline namespace literals { +inline namespace complex_literals { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wliteral-suffix" +#define __cpp_lib_complex_udls 201309 + + constexpr std::complex + operator""if(long double __num) + { return std::complex{0.0F, static_cast(__num)}; } + + constexpr std::complex + operator""if(unsigned long long __num) + { return std::complex{0.0F, static_cast(__num)}; } + + constexpr std::complex + operator""i(long double __num) + { return std::complex{0.0, static_cast(__num)}; } + + constexpr std::complex + operator""i(unsigned long long __num) + { return std::complex{0.0, static_cast(__num)}; } + + constexpr std::complex + operator""il(long double __num) + { return std::complex{0.0L, __num}; } + + constexpr std::complex + operator""il(unsigned long long __num) + { return std::complex{0.0L, static_cast(__num)}; } + +#pragma GCC diagnostic pop +} // inline namespace complex_literals +} // inline namespace literals + +#endif // C++14 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#endif /* _GLIBCXX_COMPLEX */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/complex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/complex.h new file mode 100644 index 000000000..b0d3b02de --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/complex.h @@ -0,0 +1,48 @@ +// -*- C++ -*- compatibility header. + +// Copyright (C) 2007-2018 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 +// . + +/** @file complex.h + * This is a Standard C++ Library header. + */ + +#include + +#if __cplusplus >= 201103L +# include +#endif + +#if __cplusplus >= 201103L && defined(__STRICT_ANSI__) +// For strict modes do not include the C library's , see PR 82417. +#elif _GLIBCXX_HAVE_COMPLEX_H +# include_next +# ifdef _GLIBCXX_COMPLEX +// See PR56111, keep the macro in C++03 if possible. +# undef complex +# endif +#endif + +#ifndef _GLIBCXX_COMPLEX_H +#define _GLIBCXX_COMPLEX_H 1 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/condition_variable b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/condition_variable similarity index 94% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/condition_variable rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/condition_variable index 1d8f057ce..84863a162 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/condition_variable +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/condition_variable @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 @@ -135,14 +135,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION cv_status wait_for(unique_lock& __lock, const chrono::duration<_Rep, _Period>& __rtime) - { return wait_until(__lock, __clock_t::now() + __rtime); } + { + using __dur = typename __clock_t::duration; + auto __reltime = chrono::duration_cast<__dur>(__rtime); + if (__reltime < __rtime) + ++__reltime; + return wait_until(__lock, __clock_t::now() + __reltime); + } template bool wait_for(unique_lock& __lock, const chrono::duration<_Rep, _Period>& __rtime, _Predicate __p) - { return wait_until(__lock, __clock_t::now() + __rtime, std::move(__p)); } + { + using __dur = typename __clock_t::duration; + auto __reltime = chrono::duration_cast<__dur>(__rtime); + if (__reltime < __rtime) + ++__reltime; + return wait_until(__lock, __clock_t::now() + __reltime, std::move(__p)); + } native_handle_type native_handle() diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/csetjmp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/csetjmp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/csetjmp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/csetjmp index 48b89ae0e..33a7a32f3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/csetjmp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/csetjmp @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/csignal b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/csignal similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/csignal rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/csignal index ab5de6b4c..3b252f2bf 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/csignal +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/csignal @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdalign b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdalign similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdalign rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdalign index 3fbc3412e..490c12c31 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstdalign +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdalign @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdarg b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdarg new file mode 100644 index 000000000..9056c9433 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdarg @@ -0,0 +1,58 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cstdarg + * 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 stdarg.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: 20.4.6 C library +// + +#pragma GCC system_header + +#undef __need___va_list +#include +#include + +#ifndef _GLIBCXX_CSTDARG +#define _GLIBCXX_CSTDARG 1 + +// Adhere to section 17.4.1.2 clause 5 of ISO 14882:1998 +#ifndef va_end +#define va_end(ap) va_end (ap) +#endif + +namespace std +{ + using ::va_list; +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdbool b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdbool new file mode 100644 index 000000000..7f9257762 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdbool @@ -0,0 +1,44 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/cstdbool + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CSTDBOOL +#define _GLIBCXX_CSTDBOOL 1 + +#if __cplusplus < 201103L +# include +#else +# include +# if _GLIBCXX_HAVE_STDBOOL_H +# include +# endif +#endif + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstddef b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstddef similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstddef rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstddef index 815d52c07..36d7d716c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstddef +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstddef @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdint b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdint new file mode 100644 index 000000000..9c0ca701c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdint @@ -0,0 +1,89 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/cstdint + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_CSTDINT +#define _GLIBCXX_CSTDINT 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +#if _GLIBCXX_HAVE_STDINT_H +# include +#endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +namespace std +{ + using ::int8_t; + using ::int16_t; + using ::int32_t; + using ::int64_t; + + using ::int_fast8_t; + using ::int_fast16_t; + using ::int_fast32_t; + using ::int_fast64_t; + + using ::int_least8_t; + using ::int_least16_t; + using ::int_least32_t; + using ::int_least64_t; + + using ::intmax_t; + using ::intptr_t; + + using ::uint8_t; + using ::uint16_t; + using ::uint32_t; + using ::uint64_t; + + using ::uint_fast8_t; + using ::uint_fast16_t; + using ::uint_fast32_t; + using ::uint_fast64_t; + + using ::uint_least8_t; + using ::uint_least16_t; + using ::uint_least32_t; + using ::uint_least64_t; + + using ::uintmax_t; + using ::uintptr_t; +} // namespace std + +#endif // _GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_CSTDINT diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdio new file mode 100644 index 000000000..f9472d7ca --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdio @@ -0,0 +1,194 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @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 +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CSTDIO +#define _GLIBCXX_CSTDIO 1 + +#if __cplusplus <= 201103L && !defined(_GLIBCXX_HAVE_GETS) +extern "C" char* gets (char* __s) __attribute__((__deprecated__)); +#endif + +// Get rid of those macros defined in 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 __cplusplus <= 201103L +# undef gets +#endif +#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 __cplusplus <= 201103L + // LWG 2249 + using ::gets; +#endif + 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 _GLIBCXX_USE_TMPNAM + using ::tmpnam; +#endif + using ::ungetc; + using ::vfprintf; + using ::vprintf; + using ::vsprintf; +} // namespace + +#if _GLIBCXX_USE_C99_STDIO + +#undef snprintf +#undef vfscanf +#undef vscanf +#undef vsnprintf +#undef vsscanf + +namespace __gnu_cxx +{ +#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC + 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 + +#if !_GLIBCXX_USE_C99_DYNAMIC + using ::snprintf; + using ::vfscanf; + using ::vscanf; + using ::vsnprintf; + using ::vsscanf; +#endif +} // 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 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdlib b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdlib new file mode 100644 index 000000000..10335017f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstdlib @@ -0,0 +1,261 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cstdlib + * 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 stdlib.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: 20.4.6 C library +// + +#pragma GCC system_header + +#include + +#ifndef _GLIBCXX_CSTDLIB +#define _GLIBCXX_CSTDLIB 1 + +#if !_GLIBCXX_HOSTED +// The C standard does not require a freestanding implementation to +// provide . However, the C++ standard does still require +// -- but only the functionality mentioned in +// [lib.support.start.term]. + +#define EXIT_SUCCESS 0 +#define EXIT_FAILURE 1 + +namespace std +{ + extern "C" void abort(void) throw () _GLIBCXX_NORETURN; + extern "C" int atexit(void (*)(void)) throw (); + extern "C" void exit(int) throw () _GLIBCXX_NORETURN; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT + extern "C" int at_quick_exit(void (*)(void)) throw (); +# endif +# ifdef _GLIBCXX_HAVE_QUICK_EXIT + extern "C" void quick_exit(int) throw() _GLIBCXX_NORETURN; +# endif +#endif +} // namespace std + +#else + +// Need to ensure this finds the C library's not a libstdc++ +// wrapper that might already be installed later in the include search path. +#define _GLIBCXX_INCLUDE_NEXT_C_HEADERS +#include_next +#undef _GLIBCXX_INCLUDE_NEXT_C_HEADERS +#include + +// Get rid of those macros defined in in lieu of real functions. +#undef abort +#if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) +# undef aligned_alloc +#endif +#undef atexit +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT +# undef at_quick_exit +# endif +#endif +#undef atof +#undef atoi +#undef atol +#undef bsearch +#undef calloc +#undef div +#undef exit +#undef free +#undef getenv +#undef labs +#undef ldiv +#undef malloc +#undef mblen +#undef mbstowcs +#undef mbtowc +#undef qsort +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_QUICK_EXIT +# undef quick_exit +# endif +#endif +#undef rand +#undef realloc +#undef srand +#undef strtod +#undef strtol +#undef strtoul +#undef system +#undef wcstombs +#undef wctomb + +extern "C++" +{ +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using ::div_t; + using ::ldiv_t; + + using ::abort; +#if __cplusplus >= 201703L && defined(_GLIBCXX_HAVE_ALIGNED_ALLOC) + using ::aligned_alloc; +#endif + using ::atexit; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT + using ::at_quick_exit; +# endif +#endif + using ::atof; + using ::atoi; + using ::atol; + using ::bsearch; + using ::calloc; + using ::div; + using ::exit; + using ::free; + using ::getenv; + using ::labs; + using ::ldiv; + using ::malloc; +#ifdef _GLIBCXX_HAVE_MBSTATE_T + using ::mblen; + using ::mbstowcs; + using ::mbtowc; +#endif // _GLIBCXX_HAVE_MBSTATE_T + using ::qsort; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_QUICK_EXIT + using ::quick_exit; +# endif +#endif + using ::rand; + using ::realloc; + using ::srand; + using ::strtod; + using ::strtol; + using ::strtoul; + using ::system; +#ifdef _GLIBCXX_USE_WCHAR_T + using ::wcstombs; + using ::wctomb; +#endif // _GLIBCXX_USE_WCHAR_T + +#ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO + inline ldiv_t + div(long __i, long __j) { return ldiv(__i, __j); } +#endif + + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if _GLIBCXX_USE_C99_STDLIB + +#undef _Exit +#undef llabs +#undef lldiv +#undef atoll +#undef strtoll +#undef strtoull +#undef strtof +#undef strtold + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::lldiv_t; +#endif +#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC + extern "C" void (_Exit)(int) throw () _GLIBCXX_NORETURN; +#endif +#if !_GLIBCXX_USE_C99_DYNAMIC + using ::_Exit; +#endif + +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::llabs; + + inline lldiv_t + div(long long __n, long long __d) + { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; } + + using ::lldiv; +#endif + +#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + extern "C" long long int (atoll)(const char *) throw (); + extern "C" long long int + (strtoll)(const char * __restrict, char ** __restrict, int) throw (); + extern "C" unsigned long long int + (strtoull)(const char * __restrict, char ** __restrict, int) throw (); +#endif +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::atoll; + using ::strtoll; + using ::strtoull; +#endif + using ::strtof; + using ::strtold; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +namespace std +{ +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::__gnu_cxx::lldiv_t; +#endif + using ::__gnu_cxx::_Exit; +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::__gnu_cxx::llabs; + using ::__gnu_cxx::div; + using ::__gnu_cxx::lldiv; +#endif + using ::__gnu_cxx::atoll; + using ::__gnu_cxx::strtof; + using ::__gnu_cxx::strtoll; + using ::__gnu_cxx::strtoull; + using ::__gnu_cxx::strtold; +} // namespace std + +#endif // _GLIBCXX_USE_C99_STDLIB + +} // extern "C++" + +#endif // !_GLIBCXX_HOSTED + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstring b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstring similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstring rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstring index 173b537e8..399f41fb1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cstring +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cstring @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ctgmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ctgmath new file mode 100644 index 000000000..20aa92e54 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ctgmath @@ -0,0 +1,44 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/ctgmath + * This is a Standard C++ Library header. + */ + +#pragma GCC system_header + +#ifndef _GLIBCXX_CTGMATH +#define _GLIBCXX_CTGMATH 1 + +#if __cplusplus < 201103L +# include +#else +# include +extern "C++" { +# include +} +#endif + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ctime b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ctime new file mode 100644 index 000000000..ade08775e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ctime @@ -0,0 +1,75 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/ctime + * 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 time.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: 20.5 Date and time +// + +#pragma GCC system_header + +#include +#include + +#ifndef _GLIBCXX_CTIME +#define _GLIBCXX_CTIME 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef clock +#undef difftime +#undef mktime +#undef time +#undef asctime +#undef ctime +#undef gmtime +#undef localtime +#undef strftime + +namespace std +{ + using ::clock_t; + using ::time_t; + using ::tm; + + using ::clock; + using ::difftime; + using ::mktime; + using ::time; + using ::asctime; + using ::ctime; + using ::gmtime; + using ::localtime; + using ::strftime; +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cuchar b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cuchar similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cuchar rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cuchar index a752c99f8..420250237 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cuchar +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cuchar @@ -1,6 +1,6 @@ // -*- C++ -*- forwarding header. -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cwchar b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cwchar new file mode 100644 index 000000000..475322ee8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cwchar @@ -0,0 +1,303 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cwchar + * This is a Standard C++ Library file. You should @c \#include this file + * in your programs, rather than any of the @a *.h implementation files. + * + * This is the C++ version of the Standard C Library header @c wchar.h, + * and its contents are (mostly) the same as that header, but are all + * contained in the namespace @c std (except for names which are defined + * as macros in C). + */ + +// +// ISO C++ 14882: 21.4 +// + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HAVE_WCHAR_H +#include +#endif + +#ifndef _GLIBCXX_CWCHAR +#define _GLIBCXX_CWCHAR 1 + +// Need to do a bit of trickery here with mbstate_t as char_traits +// assumes it is in wchar.h, regardless of wchar_t specializations. +#ifndef _GLIBCXX_HAVE_MBSTATE_T +extern "C" +{ + typedef struct + { + int __fill[6]; + } mbstate_t; +} +#endif + +namespace std +{ + using ::mbstate_t; +} // namespace std + +// Get rid of those macros defined in in lieu of real functions. +#undef btowc +#undef fgetwc +#undef fgetws +#undef fputwc +#undef fputws +#undef fwide +#undef fwprintf +#undef fwscanf +#undef getwc +#undef getwchar +#undef mbrlen +#undef mbrtowc +#undef mbsinit +#undef mbsrtowcs +#undef putwc +#undef putwchar +#undef swprintf +#undef swscanf +#undef ungetwc +#undef vfwprintf +#if _GLIBCXX_HAVE_VFWSCANF +# undef vfwscanf +#endif +#undef vswprintf +#if _GLIBCXX_HAVE_VSWSCANF +# undef vswscanf +#endif +#undef vwprintf +#if _GLIBCXX_HAVE_VWSCANF +# undef vwscanf +#endif +#undef wcrtomb +#undef wcscat +#undef wcschr +#undef wcscmp +#undef wcscoll +#undef wcscpy +#undef wcscspn +#undef wcsftime +#undef wcslen +#undef wcsncat +#undef wcsncmp +#undef wcsncpy +#undef wcspbrk +#undef wcsrchr +#undef wcsrtombs +#undef wcsspn +#undef wcsstr +#undef wcstod +#if _GLIBCXX_HAVE_WCSTOF +# undef wcstof +#endif +#undef wcstok +#undef wcstol +#undef wcstoul +#undef wcsxfrm +#undef wctob +#undef wmemchr +#undef wmemcmp +#undef wmemcpy +#undef wmemmove +#undef wmemset +#undef wprintf +#undef wscanf + +#if _GLIBCXX_USE_WCHAR_T + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using ::wint_t; + + using ::btowc; + using ::fgetwc; + using ::fgetws; + using ::fputwc; + using ::fputws; + using ::fwide; + using ::fwprintf; + using ::fwscanf; + using ::getwc; + using ::getwchar; + using ::mbrlen; + using ::mbrtowc; + using ::mbsinit; + using ::mbsrtowcs; + using ::putwc; + using ::putwchar; +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF + using ::swprintf; +#endif + using ::swscanf; + using ::ungetwc; + using ::vfwprintf; +#if _GLIBCXX_HAVE_VFWSCANF + using ::vfwscanf; +#endif +#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF + using ::vswprintf; +#endif +#if _GLIBCXX_HAVE_VSWSCANF + using ::vswscanf; +#endif + using ::vwprintf; +#if _GLIBCXX_HAVE_VWSCANF + using ::vwscanf; +#endif + using ::wcrtomb; + using ::wcscat; + using ::wcscmp; + using ::wcscoll; + using ::wcscpy; + using ::wcscspn; + using ::wcsftime; + using ::wcslen; + using ::wcsncat; + using ::wcsncmp; + using ::wcsncpy; + using ::wcsrtombs; + using ::wcsspn; + using ::wcstod; +#if _GLIBCXX_HAVE_WCSTOF + using ::wcstof; +#endif + using ::wcstok; + using ::wcstol; + using ::wcstoul; + using ::wcsxfrm; + using ::wctob; + using ::wmemcmp; + using ::wmemcpy; + using ::wmemmove; + using ::wmemset; + using ::wprintf; + using ::wscanf; + using ::wcschr; + using ::wcspbrk; + using ::wcsrchr; + using ::wcsstr; + using ::wmemchr; + +#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO + inline wchar_t* + wcschr(wchar_t* __p, wchar_t __c) + { return wcschr(const_cast(__p), __c); } + + inline wchar_t* + wcspbrk(wchar_t* __s1, const wchar_t* __s2) + { return wcspbrk(const_cast(__s1), __s2); } + + inline wchar_t* + wcsrchr(wchar_t* __p, wchar_t __c) + { return wcsrchr(const_cast(__p), __c); } + + inline wchar_t* + wcsstr(wchar_t* __s1, const wchar_t* __s2) + { return wcsstr(const_cast(__s1), __s2); } + + inline wchar_t* + wmemchr(wchar_t* __p, wchar_t __c, size_t __n) + { return wmemchr(const_cast(__p), __c, __n); } +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#if _GLIBCXX_USE_C99_WCHAR + +#undef wcstold +#undef wcstoll +#undef wcstoull + +namespace __gnu_cxx +{ +#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC + extern "C" long double + (wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw (); +#endif +#if !_GLIBCXX_USE_C99_DYNAMIC + using ::wcstold; +#endif +#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + extern "C" long long int + (wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); + extern "C" unsigned long long int + (wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); +#endif +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using ::wcstoll; + using ::wcstoull; +#endif +} // namespace __gnu_cxx + +namespace std +{ + using ::__gnu_cxx::wcstold; + using ::__gnu_cxx::wcstoll; + using ::__gnu_cxx::wcstoull; +} // namespace + +#endif + +#endif //_GLIBCXX_USE_WCHAR_T + +#if __cplusplus >= 201103L + +#ifdef _GLIBCXX_USE_WCHAR_T + +namespace std +{ +#if _GLIBCXX_HAVE_WCSTOF + using std::wcstof; +#endif +#if _GLIBCXX_HAVE_VFWSCANF + using std::vfwscanf; +#endif +#if _GLIBCXX_HAVE_VSWSCANF + using std::vswscanf; +#endif +#if _GLIBCXX_HAVE_VWSCANF + using std::vwscanf; +#endif + +#if _GLIBCXX_USE_C99_WCHAR + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +#endif +} // namespace + +#endif // _GLIBCXX_USE_WCHAR_T + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cwctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cwctype new file mode 100644 index 000000000..c248c3f3d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cwctype @@ -0,0 +1,110 @@ +// -*- C++ -*- forwarding header. + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/cwctype + * 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 wctype.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: +// + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HAVE_WCTYPE_H + +#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 10 +// Work around glibc BZ 9694 +#include +#endif + +#include +#endif // _GLIBCXX_HAVE_WCTYPE_H + +#ifndef _GLIBCXX_CWCTYPE +#define _GLIBCXX_CWCTYPE 1 + +// Get rid of those macros defined in in lieu of real functions. +#undef iswalnum +#undef iswalpha +#if _GLIBCXX_HAVE_ISWBLANK +# undef iswblank +#endif +#undef iswcntrl +#undef iswctype +#undef iswdigit +#undef iswgraph +#undef iswlower +#undef iswprint +#undef iswpunct +#undef iswspace +#undef iswupper +#undef iswxdigit +#undef towctrans +#undef towlower +#undef towupper +#undef wctrans +#undef wctype + +#if _GLIBCXX_USE_WCHAR_T + +namespace std +{ + using ::wctrans_t; + using ::wctype_t; + using ::wint_t; + + using ::iswalnum; + using ::iswalpha; +#if _GLIBCXX_HAVE_ISWBLANK + using ::iswblank; +#endif + using ::iswcntrl; + using ::iswctype; + using ::iswdigit; + using ::iswgraph; + using ::iswlower; + using ::iswprint; + using ::iswpunct; + using ::iswspace; + using ::iswupper; + using ::iswxdigit; + using ::towctrans; + using ::towlower; + using ::towupper; + using ::wctrans; + using ::wctype; +} // namespace + +#endif //_GLIBCXX_USE_WCHAR_T + +#endif // _GLIBCXX_CWCTYPE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cxxabi.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cxxabi.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cxxabi.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cxxabi.h index 6e6b21ddb..1bcf12829 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/cxxabi.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/cxxabi.h @@ -1,6 +1,6 @@ // ABI Support -*- C++ -*- -// Copyright (C) 2000-2017 Free Software Foundation, Inc. +// Copyright (C) 2000-2018 Free Software Foundation, Inc. // // This file is part of GCC. // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/array new file mode 100644 index 000000000..9c634f374 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/array @@ -0,0 +1,342 @@ +// Debugging array implementation -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file debug/array + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_DEBUG_ARRAY +#define _GLIBCXX_DEBUG_ARRAY 1 + +#pragma GCC system_header + +#include + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + template + struct array + { + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // Support for zero-sized arrays mandatory. + typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; + typename _AT_Type::_Type _M_elems; + + template + struct _Array_check_subscript + { + std::size_t size() { return _Size; } + + _Array_check_subscript(std::size_t __index) + { __glibcxx_check_subscript(__index); } + }; + + template + struct _Array_check_nonempty + { + bool empty() { return _Size == 0; } + + _Array_check_nonempty() + { __glibcxx_check_nonempty(); } + }; + + // No explicit construct/copy/destroy for aggregate type. + + // DR 776. + void + fill(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + noexcept(_AT_Type::_Is_nothrow_swappable::value) + { std::swap_ranges(begin(), end(), __other.begin()); } + + // Iterators. + _GLIBCXX17_CONSTEXPR iterator + begin() noexcept + { return iterator(data()); } + + _GLIBCXX17_CONSTEXPR const_iterator + begin() const noexcept + { return const_iterator(data()); } + + _GLIBCXX17_CONSTEXPR iterator + end() noexcept + { return iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR const_iterator + end() const noexcept + { return const_iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + _GLIBCXX17_CONSTEXPR const_iterator + cbegin() const noexcept + { return const_iterator(data()); } + + _GLIBCXX17_CONSTEXPR const_iterator + cend() const noexcept + { return const_iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } + + // Capacity. + constexpr size_type + size() const noexcept { return _Nm; } + + constexpr size_type + max_size() const noexcept { return _Nm; } + + constexpr bool + empty() const noexcept { return size() == 0; } + + // Element access. + _GLIBCXX17_CONSTEXPR reference + operator[](size_type __n) noexcept + { + __glibcxx_check_subscript(__n); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + operator[](size_type __n) const noexcept + { + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (_GLIBCXX_THROW_OR_ABORT(_Array_check_subscript<_Nm>(__n)), + _AT_Type::_S_ref(_M_elems, 0)); + } + + _GLIBCXX17_CONSTEXPR reference + at(size_type __n) + { + if (__n >= _Nm) + std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " + ">= _Nm (which is %zu)"), + __n, _Nm); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + at(size_type __n) const + { + // Result of conditional expression must be an lvalue so use + // boolean ? lvalue : (throw-expr, lvalue) + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " + ">= _Nm (which is %zu)"), + __n, _Nm), + _AT_Type::_S_ref(_M_elems, 0)); + } + + _GLIBCXX17_CONSTEXPR reference + front() noexcept + { + __glibcxx_check_nonempty(); + return *begin(); + } + + constexpr const_reference + front() const noexcept + { + return _Nm ? _AT_Type::_S_ref(_M_elems, 0) + : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()), + _AT_Type::_S_ref(_M_elems, 0)); + } + + _GLIBCXX17_CONSTEXPR reference + back() noexcept + { + __glibcxx_check_nonempty(); + return _Nm ? *(end() - 1) : *end(); + } + + constexpr const_reference + back() const noexcept + { + return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) + : (_GLIBCXX_THROW_OR_ABORT(_Array_check_nonempty<_Nm>()), + _AT_Type::_S_ref(_M_elems, 0)); + } + + _GLIBCXX17_CONSTEXPR pointer + data() noexcept + { return _AT_Type::_S_ptr(_M_elems); } + + _GLIBCXX17_CONSTEXPR const_pointer + data() const noexcept + { return _AT_Type::_S_ptr(_M_elems); } + }; + +#if __cpp_deduction_guides >= 201606 + template + array(_Tp, _Up...) + -> array && ...), _Tp>, + 1 + sizeof...(_Up)>; +#endif + + // Array comparisons. + template + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template + inline bool + operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) + { + return std::lexicographical_compare(__a.begin(), __a.end(), + __b.begin(), __b.end()); + } + + template + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + // Specialized algorithms. + +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 + template + typename enable_if< + !_GLIBCXX_STD_C::__array_traits<_Tp, _Nm>::_Is_swappable::value>::type + swap(array<_Tp, _Nm>&, array<_Tp, _Nm>&) = delete; +#endif + + template + inline void + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + noexcept(noexcept(__one.swap(__two))) + { __one.swap(__two); } + + template + constexpr _Tp& + get(array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr _Tp&& + get(array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::move(__debug::get<_Int>(__arr)); + } + + template + constexpr const _Tp& + get(const array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr const _Tp&& + get(const array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::move(__debug::get<_Int>(__arr)); + } +} // namespace __debug + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + // Tuple interface to class template array. + + /// tuple_size + template + struct tuple_size> + : public integral_constant { }; + + /// tuple_element + template + struct tuple_element<_Int, std::__debug::array<_Tp, _Nm>> + { + static_assert(_Int < _Nm, "index is out of bounds"); + typedef _Tp type; + }; + + template + struct __is_tuple_like_impl> : true_type + { }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _GLIBCXX_DEBUG_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/assertions.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/assertions.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/assertions.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/assertions.h index 6b37d4bc7..b2803df39 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/assertions.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/assertions.h @@ -1,6 +1,6 @@ // Debugging support implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/bitset new file mode 100644 index 000000000..b08e64d77 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/bitset @@ -0,0 +1,427 @@ +// Debugging bitset implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/bitset + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_BITSET +#define _GLIBCXX_DEBUG_BITSET + +#pragma GCC system_header + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::bitset with additional safety/checking/debug instrumentation. + template + class bitset + : public _GLIBCXX_STD_C::bitset<_Nb> +#if __cplusplus < 201103L + , public __gnu_debug::_Safe_sequence_base +#endif + { + typedef _GLIBCXX_STD_C::bitset<_Nb> _Base; + + public: + // In C++11 we rely on normal reference type to preserve the property + // of bitset to be use as a literal. + // TODO: Find another solution. +#if __cplusplus >= 201103L + typedef typename _Base::reference reference; +#else + // bit reference: + class reference + : private _Base::reference + , public __gnu_debug::_Safe_iterator_base + { + typedef typename _Base::reference _Base_ref; + + friend class bitset; + reference(); + + reference(const _Base_ref& __base, bitset* __seq) _GLIBCXX_NOEXCEPT + : _Base_ref(__base) + , _Safe_iterator_base(__seq, false) + { } + + public: + reference(const reference& __x) _GLIBCXX_NOEXCEPT + : _Base_ref(__x) + , _Safe_iterator_base(__x, false) + { } + + reference& + operator=(bool __x) _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_write) + ._M_iterator(*this)); + *static_cast<_Base_ref*>(this) = __x; + return *this; + } + + reference& + operator=(const reference& __x) _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(!__x._M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_read) + ._M_iterator(__x)); + _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_write) + ._M_iterator(*this)); + *static_cast<_Base_ref*>(this) = __x; + return *this; + } + + bool + operator~() const _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_read) + ._M_iterator(*this)); + return ~(*static_cast(this)); + } + + operator bool() const _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_read) + ._M_iterator(*this)); + return *static_cast(this); + } + + reference& + flip() _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(!this->_M_singular(), + _M_message(__gnu_debug::__msg_bad_bitset_flip) + ._M_iterator(*this)); + _Base_ref::flip(); + return *this; + } + }; +#endif + + // 23.3.5.1 constructors: + _GLIBCXX_CONSTEXPR bitset() _GLIBCXX_NOEXCEPT + : _Base() { } + +#if __cplusplus >= 201103L + constexpr bitset(unsigned long long __val) noexcept +#else + bitset(unsigned long __val) +#endif + : _Base(__val) { } + + template + explicit + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __pos = 0, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos)) + : _Base(__str, __pos, __n) { } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __pos, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __n, + _CharT __zero, _CharT __one = _CharT('1')) + : _Base(__str, __pos, __n, __zero, __one) { } + + bitset(const _Base& __x) : _Base(__x) { } + +#if __cplusplus >= 201103L + template + explicit + bitset(const _CharT* __str, + typename std::basic_string<_CharT>::size_type __n + = std::basic_string<_CharT>::npos, + _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) + : _Base(__str, __n, __zero, __one) { } +#endif + + // 23.3.5.2 bitset operations: + bitset<_Nb>& + operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() &= __rhs; + return *this; + } + + bitset<_Nb>& + operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() |= __rhs; + return *this; + } + + bitset<_Nb>& + operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() ^= __rhs; + return *this; + } + + bitset<_Nb>& + operator<<=(size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_base() <<= __pos; + return *this; + } + + bitset<_Nb>& + operator>>=(size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_base() >>= __pos; + return *this; + } + + bitset<_Nb>& + set() _GLIBCXX_NOEXCEPT + { + _Base::set(); + return *this; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 186. bitset::set() second parameter should be bool + bitset<_Nb>& + set(size_t __pos, bool __val = true) + { + _Base::set(__pos, __val); + return *this; + } + + bitset<_Nb>& + reset() _GLIBCXX_NOEXCEPT + { + _Base::reset(); + return *this; + } + + bitset<_Nb>& + reset(size_t __pos) + { + _Base::reset(__pos); + return *this; + } + + bitset<_Nb> + operator~() const _GLIBCXX_NOEXCEPT + { return bitset(~_M_base()); } + + bitset<_Nb>& + flip() _GLIBCXX_NOEXCEPT + { + _Base::flip(); + return *this; + } + + bitset<_Nb>& + flip(size_t __pos) + { + _Base::flip(__pos); + return *this; + } + + // element access: + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 11. Bitset minor problems + reference + operator[](size_t __pos) + { + __glibcxx_check_subscript(__pos); +#if __cplusplus >= 201103L + return _M_base()[__pos]; +#else + return reference(_M_base()[__pos], this); +#endif + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 11. Bitset minor problems + _GLIBCXX_CONSTEXPR bool + operator[](size_t __pos) const + { +#if __cplusplus < 201103L + // TODO: Check in debug-mode too. + __glibcxx_check_subscript(__pos); +#endif + return _Base::operator[](__pos); + } + + using _Base::to_ulong; +#if __cplusplus >= 201103L + using _Base::to_ullong; +#endif + + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string() const + { return _M_base().template to_string<_CharT, _Traits, _Alloc>(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + std::basic_string<_CharT, _Traits, _Alloc> + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + return _M_base().template + to_string<_CharT, _Traits, _Alloc>(__zero, __one); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 434. bitset::to_string() hard to use. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string() const + { return to_string<_CharT, _Traits, std::allocator<_CharT> >(); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 853. to_string needs updating with zero and one. + template + std::basic_string<_CharT, _Traits, std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { return to_string<_CharT, _Traits, + std::allocator<_CharT> >(__zero, __one); } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string() const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(); + } + + template + std::basic_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> > + to_string(_CharT __zero, _CharT __one = _CharT('1')) const + { + return to_string<_CharT, std::char_traits<_CharT>, + std::allocator<_CharT> >(__zero, __one); + } + + std::basic_string, std::allocator > + to_string() const + { + return to_string,std::allocator >(); + } + + std::basic_string, std::allocator > + to_string(char __zero, char __one = '1') const + { + return to_string, + std::allocator >(__zero, __one); + } + + using _Base::count; + using _Base::size; + + bool + operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return _M_base() == __rhs; } + + bool + operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return _M_base() != __rhs; } + + using _Base::test; + using _Base::all; + using _Base::any; + using _Base::none; + + bitset<_Nb> + operator<<(size_t __pos) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(_M_base() << __pos); } + + bitset<_Nb> + operator>>(size_t __pos) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(_M_base() >> __pos); } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT + { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT + { return *this; } + }; + + template + bitset<_Nb> + operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) &= __y; } + + template + bitset<_Nb> + operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) |= __y; } + + template + bitset<_Nb> + operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) ^= __y; } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) + { return __is >> __x._M_base(); } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bitset<_Nb>& __x) + { return __os << __x._M_base(); } + +} // namespace __debug + +#if __cplusplus >= 201103L + // DR 1182. + /// std::hash specialization for bitset. + template + struct hash<__debug::bitset<_Nb>> + : public __hash_base> + { + size_t + operator()(const __debug::bitset<_Nb>& __b) const noexcept + { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); } + }; +#endif + +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/debug.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/debug.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/debug.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/debug.h index d59d3c653..9ff5e3a97 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/debug.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/debug.h @@ -1,6 +1,6 @@ // Debugging support implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/deque new file mode 100644 index 000000000..90110e7d7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/deque @@ -0,0 +1,682 @@ +// Debugging deque implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/deque + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_DEQUE +#define _GLIBCXX_DEBUG_DEQUE 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::deque with safety/checking/debug instrumentation. + template > + class deque + : public __gnu_debug::_Safe_container< + deque<_Tp, _Allocator>, _Allocator, + __gnu_debug::_Safe_sequence>, + public _GLIBCXX_STD_C::deque<_Tp, _Allocator> + { + typedef _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + deque, _Allocator, __gnu_debug::_Safe_sequence> _Safe; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, deque> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, deque> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.1.1 construct/copy/destroy: + +#if __cplusplus < 201103L + deque() + : _Base() { } + + deque(const deque& __x) + : _Base(__x) { } + + ~deque() { } +#else + deque() = default; + deque(const deque&) = default; + deque(deque&&) = default; + + deque(const deque& __d, const _Allocator& __a) + : _Base(__d, __a) { } + + deque(deque&& __d, const _Allocator& __a) + : _Safe(std::move(__d)), _Base(std::move(__d), __a) { } + + deque(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } + + ~deque() = default; +#endif + + explicit + deque(const _Allocator& __a) + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + deque(size_type __n, const _Allocator& __a = _Allocator()) + : _Base(__n, __a) { } + + deque(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + deque(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + deque(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) + { } + + deque(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + deque& + operator=(const deque& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + return *this; + } +#else + deque& + operator=(const deque&) = default; + + deque& + operator=(deque&&) = default; + + deque& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + assign(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::assign(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::assign(__first, __last); + + this->_M_invalidate_all(); + } + + void + assign(size_type __n, const _Tp& __t) + { + _Base::assign(__n, __t); + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + void + assign(initializer_list __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + private: + void + _M_invalidate_after_nth(difference_type __n) + { + typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; + this->_M_invalidate_if(_After_nth(__n, _Base::begin())); + } + + public: + // 23.2.1.2 capacity: + using _Base::size; + using _Base::max_size; + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + bool __invalidate_all = __sz > this->size(); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + + _Base::resize(__sz); + + if (__invalidate_all) + this->_M_invalidate_all(); + } + + void + resize(size_type __sz, const _Tp& __c) + { + bool __invalidate_all = __sz > this->size(); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + + _Base::resize(__sz, __c); + + if (__invalidate_all) + this->_M_invalidate_all(); + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + bool __invalidate_all = __sz > this->size(); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + + _Base::resize(__sz, __c); + + if (__invalidate_all) + this->_M_invalidate_all(); + } +#endif + +#if __cplusplus >= 201103L + void + shrink_to_fit() noexcept + { + if (_Base::_M_shrink_to_fit()) + this->_M_invalidate_all(); + } +#endif + + using _Base::empty; + + // element access: + reference + operator[](size_type __n) _GLIBCXX_NOEXCEPT + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + const_reference + operator[](size_type __n) const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + using _Base::at; + + reference + front() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + reference + back() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + const_reference + back() const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + // 23.2.1.3 modifiers: + void + push_front(const _Tp& __x) + { + _Base::push_front(__x); + this->_M_invalidate_all(); + } + + void + push_back(const _Tp& __x) + { + _Base::push_back(__x); + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + void + push_front(_Tp&& __x) + { emplace_front(std::move(__x)); } + + void + push_back(_Tp&& __x) + { emplace_back(std::move(__x)); } + + template +#if __cplusplus > 201402L + reference +#else + void +#endif + emplace_front(_Args&&... __args) + { + _Base::emplace_front(std::forward<_Args>(__args)...); + this->_M_invalidate_all(); +#if __cplusplus > 201402L + return front(); +#endif + } + + template +#if __cplusplus > 201402L + reference +#else + void +#endif + emplace_back(_Args&&... __args) + { + _Base::emplace_back(std::forward<_Args>(__args)...); + this->_M_invalidate_all(); +#if __cplusplus > 201402L + return back(); +#endif + } + + template + iterator + emplace(const_iterator __position, _Args&&... __args) + { + __glibcxx_check_insert(__position); + _Base_iterator __res = _Base::emplace(__position.base(), + std::forward<_Args>(__args)...); + this->_M_invalidate_all(); + return iterator(__res, this); + } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else + insert(iterator __position, const _Tp& __x) +#endif + { + __glibcxx_check_insert(__position); + _Base_iterator __res = _Base::insert(__position.base(), __x); + this->_M_invalidate_all(); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, _Tp&& __x) + { return emplace(__position, std::move(__x)); } + + iterator + insert(const_iterator __position, initializer_list __l) + { + __glibcxx_check_insert(__position); + _Base_iterator __res = _Base::insert(__position.base(), __l); + this->_M_invalidate_all(); + return iterator(__res, this); + } +#endif + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + _Base_iterator __res = _Base::insert(__position.base(), __n, __x); + this->_M_invalidate_all(); + return iterator(__res, this); + } +#else + void + insert(iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + _Base::insert(__position.base(), __n, __x); + this->_M_invalidate_all(); + } +#endif + +#if __cplusplus >= 201103L + template> + iterator + insert(const_iterator __position, + _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__position, __first, __last, __dist); + _Base_iterator __res; + if (__dist.second >= __gnu_debug::__dp_sign) + __res = _Base::insert(__position.base(), + __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + __res = _Base::insert(__position.base(), __first, __last); + + this->_M_invalidate_all(); + return iterator(__res, this); + } +#else + template + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__position, __first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__position.base(), + __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__position.base(), __first, __last); + + this->_M_invalidate_all(); + } +#endif + + void + pop_front() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(_Base::begin())); + _Base::pop_front(); + } + + void + pop_back() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(--_Base::end())); + _Base::pop_back(); + } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __position) +#else + erase(iterator __position) +#endif + { + __glibcxx_check_erase(__position); +#if __cplusplus >= 201103L + _Base_const_iterator __victim = __position.base(); +#else + _Base_iterator __victim = __position.base(); +#endif + if (__victim == _Base::begin() || __victim == _Base::end() - 1) + { + this->_M_invalidate_if(_Equal(__victim)); + return iterator(_Base::erase(__victim), this); + } + else + { + _Base_iterator __res = _Base::erase(__victim); + this->_M_invalidate_all(); + return iterator(__res, this); + } + } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __first, const_iterator __last) +#else + erase(iterator __first, iterator __last) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + + if (__first.base() == __last.base()) +#if __cplusplus >= 201103L + return iterator(__first.base()._M_const_cast(), this); +#else + return __first; +#endif + else if (__first.base() == _Base::begin() + || __last.base() == _Base::end()) + { + this->_M_detach_singular(); + for (_Base_const_iterator __position = __first.base(); + __position != __last.base(); ++__position) + { + this->_M_invalidate_if(_Equal(__position)); + } + __try + { + return iterator(_Base::erase(__first.base(), __last.base()), + this); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + else + { + _Base_iterator __res = _Base::erase(__first.base(), + __last.base()); + this->_M_invalidate_all(); + return iterator(__res, this); + } + } + + void + swap(deque& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + deque(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> deque<_ValT, _Allocator>; +#endif + + template + inline bool + operator==(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/formatter.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/formatter.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/formatter.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/formatter.h index 985e3597d..52a8762e7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/formatter.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/formatter.h @@ -1,6 +1,6 @@ // Debug-mode error formatting implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 @@ -373,6 +373,7 @@ namespace __gnu_debug _M_variant._M_instance._M_type = _GLIBCXX_TYPEID(_Type); } +#if !_GLIBCXX_INLINE_VERSION void _M_print_field(const _Error_formatter* __formatter, const char* __name) const _GLIBCXX_DEPRECATED; @@ -380,6 +381,7 @@ namespace __gnu_debug void _M_print_description(const _Error_formatter* __formatter) const _GLIBCXX_DEPRECATED; +#endif }; template @@ -451,6 +453,7 @@ namespace __gnu_debug _GLIBCXX_NORETURN void _M_error() const; +#if !_GLIBCXX_INLINE_VERSION template void _M_format_word(char*, int, const char*, _Tp) @@ -461,14 +464,17 @@ namespace __gnu_debug void _M_print_string(const char* __string) const _GLIBCXX_DEPRECATED; +#endif private: _Error_formatter(const char* __file, unsigned int __line) : _M_file(__file), _M_line(__line), _M_num_parameters(0), _M_text(0) { } +#if !_GLIBCXX_INLINE_VERSION void _M_get_max_length() const throw () _GLIBCXX_DEPRECATED; +#endif enum { __max_parameters = 9 }; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/forward_list new file mode 100644 index 000000000..d45494851 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/forward_list @@ -0,0 +1,876 @@ +// -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file debug/forward_list + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_FORWARD_LIST +#define _GLIBCXX_DEBUG_FORWARD_LIST 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +// Special validity check for forward_list ranges. +#define __glibcxx_check_valid_fl_range(_First,_Last,_Dist) \ +_GLIBCXX_DEBUG_VERIFY(_First._M_valid_range(_Last, _Dist, false), \ + _M_message(__gnu_debug::__msg_valid_range) \ + ._M_iterator(_First, #_First) \ + ._M_iterator(_Last, #_Last)) + +namespace __gnu_debug +{ + /// Special iterators swap and invalidation for forward_list because of the + /// before_begin iterator. + template + class _Safe_forward_list + : public _Safe_sequence<_SafeSequence> + { + _SafeSequence& + _M_this() noexcept + { return *static_cast<_SafeSequence*>(this); } + + static void + _M_swap_aux(_Safe_sequence_base& __lhs, + _Safe_iterator_base*& __lhs_iterators, + _Safe_sequence_base& __rhs, + _Safe_iterator_base*& __rhs_iterators); + + void _M_swap_single(_Safe_sequence_base&) noexcept; + + protected: + void + _M_invalidate_all() + { + using _Base_const_iterator = __decltype(_M_this()._M_base().cend()); + this->_M_invalidate_if([this](_Base_const_iterator __it) + { + return __it != _M_this()._M_base().cbefore_begin() + && __it != _M_this()._M_base().cend(); }); + } + + void _M_swap(_Safe_sequence_base&) noexcept; + }; + + template + void + _Safe_forward_list<_SafeSequence>:: + _M_swap_aux(_Safe_sequence_base& __lhs, + _Safe_iterator_base*& __lhs_iterators, + _Safe_sequence_base& __rhs, + _Safe_iterator_base*& __rhs_iterators) + { + using const_iterator = typename _SafeSequence::const_iterator; + _Safe_iterator_base* __bbegin_its = 0; + _Safe_iterator_base* __last_bbegin = 0; + _SafeSequence& __rseq = static_cast<_SafeSequence&>(__rhs); + + for (_Safe_iterator_base* __iter = __lhs_iterators; __iter;) + { + // Even iterator is cast to const_iterator, not a problem. + _Safe_iterator_base* __victim_base = __iter; + const_iterator* __victim = + static_cast(__victim_base); + __iter = __iter->_M_next; + if (__victim->base() == __rseq._M_base().cbefore_begin()) + { + __victim->_M_unlink(); + if (__lhs_iterators == __victim_base) + __lhs_iterators = __victim_base->_M_next; + if (__bbegin_its) + { + __victim_base->_M_next = __bbegin_its; + __bbegin_its->_M_prior = __victim_base; + } + else + __last_bbegin = __victim_base; + __bbegin_its = __victim_base; + } + else + __victim_base->_M_sequence = std::__addressof(__lhs); + } + + if (__bbegin_its) + { + if (__rhs_iterators) + { + __rhs_iterators->_M_prior = __last_bbegin; + __last_bbegin->_M_next = __rhs_iterators; + } + __rhs_iterators = __bbegin_its; + } + } + + template + void + _Safe_forward_list<_SafeSequence>:: + _M_swap_single(_Safe_sequence_base& __other) noexcept + { + std::swap(_M_this()._M_iterators, __other._M_iterators); + std::swap(_M_this()._M_const_iterators, __other._M_const_iterators); + // Useless, always 1 on forward_list + //std::swap(_M_this()_M_version, __other._M_version); + _Safe_iterator_base* __this_its = _M_this()._M_iterators; + _M_swap_aux(__other, __other._M_iterators, + _M_this(), _M_this()._M_iterators); + _Safe_iterator_base* __this_const_its = _M_this()._M_const_iterators; + _M_swap_aux(__other, __other._M_const_iterators, + _M_this(), _M_this()._M_const_iterators); + _M_swap_aux(_M_this(), __this_its, + __other, __other._M_iterators); + _M_swap_aux(_M_this(), __this_const_its, + __other, __other._M_const_iterators); + } + + /* Special forward_list _M_swap version that does not swap the + * before-begin ownership.*/ + template + void + _Safe_forward_list<_SafeSequence>:: + _M_swap(_Safe_sequence_base& __other) noexcept + { + // We need to lock both sequences to swap + using namespace __gnu_cxx; + __mutex *__this_mutex = &_M_this()._M_get_mutex(); + __mutex *__other_mutex = + &static_cast<_SafeSequence&>(__other)._M_get_mutex(); + if (__this_mutex == __other_mutex) + { + __scoped_lock __lock(*__this_mutex); + _M_swap_single(__other); + } + else + { + __scoped_lock __l1(__this_mutex < __other_mutex + ? *__this_mutex : *__other_mutex); + __scoped_lock __l2(__this_mutex < __other_mutex + ? *__other_mutex : *__this_mutex); + _M_swap_single(__other); + } + } +} + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::forward_list with safety/checking/debug instrumentation. + template > + class forward_list + : public __gnu_debug::_Safe_container< + forward_list<_Tp, _Alloc>, _Alloc, __gnu_debug::_Safe_forward_list>, + public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> + { + typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base; + typedef __gnu_debug::_Safe_container< + forward_list, _Alloc, __gnu_debug::_Safe_forward_list> _Safe; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator< + _Base_iterator, forward_list> iterator; + typedef __gnu_debug::_Safe_iterator< + _Base_const_iterator, forward_list> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef typename _Base::allocator_type allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + + // 23.2.3.1 construct/copy/destroy: + + forward_list() = default; + + explicit + forward_list(const allocator_type& __al) noexcept + : _Base(__al) { } + + forward_list(const forward_list& __list, const allocator_type& __al) + : _Base(__list, __al) + { } + + forward_list(forward_list&& __list, const allocator_type& __al) + : _Safe(std::move(__list._M_safe()), __al), + _Base(std::move(__list._M_base()), __al) + { } + + explicit + forward_list(size_type __n, const allocator_type& __al = allocator_type()) + : _Base(__n, __al) + { } + + forward_list(size_type __n, const _Tp& __value, + const allocator_type& __al = allocator_type()) + : _Base(__n, __value, __al) + { } + + template> + forward_list(_InputIterator __first, _InputIterator __last, + const allocator_type& __al = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __al) + { } + + forward_list(const forward_list&) = default; + + forward_list(forward_list&&) = default; + + forward_list(std::initializer_list<_Tp> __il, + const allocator_type& __al = allocator_type()) + : _Base(__il, __al) + { } + + ~forward_list() = default; + + forward_list& + operator=(const forward_list&) = default; + + forward_list& + operator=(forward_list&&) = default; + + forward_list& + operator=(std::initializer_list<_Tp> __il) + { + _M_base() = __il; + this->_M_invalidate_all(); + return *this; + } + + template> + void + assign(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::assign(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::assign(__first, __last); + + this->_M_invalidate_all(); + } + + void + assign(size_type __n, const _Tp& __val) + { + _Base::assign(__n, __val); + this->_M_invalidate_all(); + } + + void + assign(std::initializer_list<_Tp> __il) + { + _Base::assign(__il); + this->_M_invalidate_all(); + } + + using _Base::get_allocator; + + // iterators: + + iterator + before_begin() noexcept + { return iterator(_Base::before_begin(), this); } + + const_iterator + before_begin() const noexcept + { return const_iterator(_Base::before_begin(), this); } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cbefore_begin() const noexcept + { return const_iterator(_Base::cbefore_begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } + + using _Base::empty; + using _Base::max_size; + + // element access: + + reference + front() + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + // modifiers: + + using _Base::emplace_front; + using _Base::push_front; + + void + pop_front() + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if([this](_Base_const_iterator __it) + { return __it == this->_M_base().cbegin(); }); + _Base::pop_front(); + } + + template + iterator + emplace_after(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::emplace_after(__pos.base(), + std::forward<_Args>(__args)...), + this); + } + + iterator + insert_after(const_iterator __pos, const _Tp& __val) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), __val), this); + } + + iterator + insert_after(const_iterator __pos, _Tp&& __val) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), std::move(__val)), + this); + } + + iterator + insert_after(const_iterator __pos, size_type __n, const _Tp& __val) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), __n, __val), + this); + } + + template> + iterator + insert_after(const_iterator __pos, + _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range_after(__pos, __first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + return + { + _Base::insert_after(__pos.base(), + __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)), + this + }; + else + return { _Base::insert_after(__pos.base(), __first, __last), this }; + } + + iterator + insert_after(const_iterator __pos, std::initializer_list<_Tp> __il) + { + __glibcxx_check_insert_after(__pos); + return iterator(_Base::insert_after(__pos.base(), __il), this); + } + + private: + _Base_iterator + _M_erase_after(_Base_const_iterator __pos) + { + _Base_const_iterator __next = std::next(__pos); + this->_M_invalidate_if([__next](_Base_const_iterator __it) + { return __it == __next; }); + return _Base::erase_after(__pos); + } + public: + iterator + erase_after(const_iterator __pos) + { + __glibcxx_check_erase_after(__pos); + return iterator(_M_erase_after(__pos.base()), this); + } + + iterator + erase_after(const_iterator __pos, const_iterator __last) + { + __glibcxx_check_erase_range_after(__pos, __last); + for (_Base_const_iterator __victim = std::next(__pos.base()); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(*this, "this") + ._M_iterator(__pos, "pos") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + } + return iterator(_Base::erase_after(__pos.base(), __last.base()), this); + } + + void + swap(forward_list& __list) + noexcept( noexcept(declval<_Base&>().swap(__list)) ) + { + _Safe::_M_swap(__list); + _Base::swap(__list); + } + + void + resize(size_type __sz) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end() + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + } + + __try + { + _Base::resize(__sz); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + + void + resize(size_type __sz, const value_type& __val) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin+__sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + } + + __try + { + _Base::resize(__sz, __val); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + // 23.2.3.5 forward_list operations: + void + splice_after(const_iterator __pos, forward_list&& __list) + { + __glibcxx_check_insert_after(__pos); + _GLIBCXX_DEBUG_VERIFY(std::__addressof(__list) != this, + _M_message(__gnu_debug::__msg_self_splice) + ._M_sequence(*this, "this")); + _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), + _M_message(__gnu_debug::__msg_splice_alloc) + ._M_sequence(*this) + ._M_sequence(__list, "__list")); + this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it) + { + return __it != __list._M_base().cbefore_begin() + && __it != __list._M_base().end(); + }); + _Base::splice_after(__pos.base(), std::move(__list._M_base())); + } + + void + splice_after(const_iterator __pos, forward_list& __list) + { splice_after(__pos, std::move(__list)); } + + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __i) + { + __glibcxx_check_insert_after(__pos); + _GLIBCXX_DEBUG_VERIFY(__i._M_before_dereferenceable(), + _M_message(__gnu_debug::__msg_splice_bad) + ._M_iterator(__i, "__i")); + _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(std::__addressof(__list)), + _M_message(__gnu_debug::__msg_splice_other) + ._M_iterator(__i, "__i") + ._M_sequence(__list, "__list")); + _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), + _M_message(__gnu_debug::__msg_splice_alloc) + ._M_sequence(*this) + ._M_sequence(__list, "__list")); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + _Base_const_iterator __next = std::next(__i.base()); + this->_M_transfer_from_if(__list, [__next](_Base_const_iterator __it) + { return __it == __next; }); + _Base::splice_after(__pos.base(), std::move(__list._M_base()), + __i.base()); + } + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __i) + { splice_after(__pos, std::move(__list), __i); } + + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __before, const_iterator __last) + { + typename __gnu_debug::_Distance_traits::__type __dist; + auto __listptr = std::__addressof(__list); + __glibcxx_check_insert_after(__pos); + __glibcxx_check_valid_fl_range(__before, __last, __dist); + _GLIBCXX_DEBUG_VERIFY(__before._M_attached_to(__listptr), + _M_message(__gnu_debug::__msg_splice_other) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before")); + _GLIBCXX_DEBUG_VERIFY(__before._M_dereferenceable() + || __before._M_is_before_begin(), + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(__before != __last, + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(__list.get_allocator() == this->get_allocator(), + _M_message(__gnu_debug::__msg_splice_alloc) + ._M_sequence(*this) + ._M_sequence(__list, "__list")); + + for (_Base_const_iterator __tmp = std::next(__before.base()); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != __list._M_base().end(), + _M_message(__gnu_debug::__msg_valid_range2) + ._M_sequence(__list, "list") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(__listptr != this || __tmp != __pos.base(), + _M_message(__gnu_debug::__msg_splice_overlap) + ._M_iterator(__tmp, "position") + ._M_iterator(__before, "before") + ._M_iterator(__last, "last")); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + this->_M_transfer_from_if(__list, [__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + } + + _Base::splice_after(__pos.base(), std::move(__list._M_base()), + __before.base(), __last.base()); + } + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __before, const_iterator __last) + { splice_after(__pos, std::move(__list), __before, __last); } + + void + remove(const _Tp& __val) + { + _Base_iterator __x = _Base::before_begin(); + _Base_iterator __old = __x++; + while (__x != _Base::end()) + { + if (*__x == __val) + __x = _M_erase_after(__old); + else + __old = __x++; + } + } + + template + void + remove_if(_Pred __pred) + { + _Base_iterator __x = _Base::before_begin(); + _Base_iterator __old = __x++; + while (__x != _Base::end()) + { + if (__pred(*__x)) + __x = _M_erase_after(__old); + else + __old = __x++; + } + } + + void + unique() + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = std::next(__first); + while (__next != __last) + { + if (*__first == *__next) + __next = _M_erase_after(__first); + else + __first = __next++; + } + } + + template + void + unique(_BinPred __binary_pred) + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = std::next(__first); + while (__next != __last) + { + if (__binary_pred(*__first, *__next)) + __next = _M_erase_after(__first); + else + __first = __next++; + } + } + + void + merge(forward_list&& __list) + { + if (this != std::__addressof(__list)) + { + __glibcxx_check_sorted(_Base::begin(), _Base::end()); + __glibcxx_check_sorted(__list._M_base().begin(), + __list._M_base().end()); + this->_M_transfer_from_if(__list, [&__list](_Base_const_iterator __it) + { + return __it != __list._M_base().cbefore_begin() + && __it != __list._M_base().cend(); + }); + _Base::merge(std::move(__list._M_base())); + } + } + + void + merge(forward_list& __list) + { merge(std::move(__list)); } + + template + void + merge(forward_list&& __list, _Comp __comp) + { + if (this != std::__addressof(__list)) + { + __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), __comp); + __glibcxx_check_sorted_pred(__list._M_base().begin(), + __list._M_base().end(), __comp); + this->_M_transfer_from_if(__list, + [&__list](_Base_const_iterator __it) + { + return __it != __list._M_base().cbefore_begin() + && __it != __list._M_base().cend(); + }); + _Base::merge(std::move(__list._M_base()), __comp); + } + } + + template + void + merge(forward_list& __list, _Comp __comp) + { merge(std::move(__list), __comp); } + + using _Base::sort; + using _Base::reverse; + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + forward_list(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> forward_list<_ValT, _Allocator>; +#endif + + template + bool + operator==(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return __lx._M_base() == __ly._M_base(); } + + template + inline bool + operator<(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return __lx._M_base() < __ly._M_base(); } + + template + inline bool + operator!=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx == __ly); } + + /// Based on operator< + template + inline bool + operator>(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return (__ly < __lx); } + + /// Based on operator< + template + inline bool + operator>=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx < __ly); } + + /// Based on operator< + template + inline bool + operator<=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__ly < __lx); } + + /// See std::forward_list::swap(). + template + inline void + swap(forward_list<_Tp, _Alloc>& __lx, forward_list<_Tp, _Alloc>& __ly) + noexcept(noexcept(__lx.swap(__ly))) + { __lx.swap(__ly); } + +} // namespace __debug +} // namespace std + +namespace __gnu_debug +{ + template + struct _BeforeBeginHelper > + { + typedef std::__debug::forward_list<_Tp, _Alloc> _Sequence; + + template + static bool + _S_Is(const _Safe_iterator<_Iterator, _Sequence>& __it) + { + return + __it.base() == __it._M_get_sequence()->_M_base().before_begin(); + } + + template + static bool + _S_Is_Beginnest(const _Safe_iterator<_Iterator, _Sequence>& __it) + { return _S_Is(__it); } + }; + + template + struct _Sequence_traits > + { + typedef typename std::__debug::forward_list<_Tp, _Alloc>::iterator _It; + + static typename _Distance_traits<_It>::__type + _S_size(const std::__debug::forward_list<_Tp, _Alloc>& __seq) + { + return __seq.empty() + ? std::make_pair(0, __dp_exact) : std::make_pair(1, __dp_equality); + } + }; + +#ifndef _GLIBCXX_DEBUG_PEDANTIC + template + struct _Insert_range_from_self_is_safe< + std::__debug::forward_list<_Tp, _Alloc> > + { enum { __value = 1 }; }; +#endif +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/functions.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/functions.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/functions.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/functions.h index be8b5a56f..57cc6826c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/functions.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/functions.h @@ -1,6 +1,6 @@ // Debugging support implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/helper_functions.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/helper_functions.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/helper_functions.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/helper_functions.h index 80e0e80c6..94d50163a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/helper_functions.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/helper_functions.h @@ -1,6 +1,6 @@ // Debugging support implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/list new file mode 100644 index 000000000..13a7486ff --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/list @@ -0,0 +1,852 @@ +// Debugging list implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/list + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_LIST +#define _GLIBCXX_DEBUG_LIST 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::list with safety/checking/debug instrumentation. + template > + class list + : public __gnu_debug::_Safe_container< + list<_Tp, _Allocator>, _Allocator, + __gnu_debug::_Safe_node_sequence>, + public _GLIBCXX_STD_C::list<_Tp, _Allocator> + { + typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + list, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + typedef __gnu_debug::_Not_equal_to<_Base_const_iterator> _Not_equal; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, list> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, list> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.2.1 construct/copy/destroy: + +#if __cplusplus < 201103L + list() + : _Base() { } + + list(const list& __x) + : _Base(__x) { } + + ~list() { } +#else + list() = default; + list(const list&) = default; + list(list&&) = default; + + list(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } + + ~list() = default; + + list(const list& __x, const allocator_type& __a) + : _Base(__x, __a) { } + + list(list&& __x, const allocator_type& __a) + : _Base(std::move(__x), __a) { } +#endif + + explicit + list(const _Allocator& __a) _GLIBCXX_NOEXCEPT + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + list(size_type __n, const allocator_type& __a = allocator_type()) + : _Base(__n, __a) { } + + list(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + list(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + list(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) + { } + + list(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + list& + operator=(const list& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + return *this; + } +#else + list& + operator=(const list&) = default; + + list& + operator=(list&&) = default; + + list& + operator=(initializer_list __l) + { + this->_M_invalidate_all(); + _M_base() = __l; + return *this; + } + + void + assign(initializer_list __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + assign(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::assign(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::assign(__first, __last); + + this->_M_invalidate_all(); + } + + void + assign(size_type __n, const _Tp& __t) + { + _Base::assign(__n, __t); + this->_M_invalidate_all(); + } + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 23.2.2.2 capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin + __sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + this->_M_invalidate_if(_Equal(__victim)); + + __try + { + _Base::resize(__sz); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } + + void + resize(size_type __sz, const _Tp& __c) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin + __sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + this->_M_invalidate_if(_Equal(__victim)); + + __try + { + _Base::resize(__sz, __c); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + this->_M_detach_singular(); + + // if __sz < size(), invalidate all iterators in [begin + __sz, end()) + _Base_iterator __victim = _Base::begin(); + _Base_iterator __end = _Base::end(); + for (size_type __i = __sz; __victim != __end && __i > 0; --__i) + ++__victim; + + for (; __victim != __end; ++__victim) + this->_M_invalidate_if(_Equal(__victim)); + + __try + { + _Base::resize(__sz, __c); + } + __catch(...) + { + this->_M_revalidate_singular(); + __throw_exception_again; + } + } +#endif + + // element access: + reference + front() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + reference + back() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + const_reference + back() const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + // 23.2.2.3 modifiers: + using _Base::push_front; + +#if __cplusplus >= 201103L + using _Base::emplace_front; +#endif + + void + pop_front() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(_Base::begin())); + _Base::pop_front(); + } + + using _Base::push_back; + +#if __cplusplus >= 201103L + using _Base::emplace_back; +#endif + + void + pop_back() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(--_Base::end())); + _Base::pop_back(); + } + +#if __cplusplus >= 201103L + template + iterator + emplace(const_iterator __position, _Args&&... __args) + { + __glibcxx_check_insert(__position); + return iterator(_Base::emplace(__position.base(), + std::forward<_Args>(__args)...), this); + } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else + insert(iterator __position, const _Tp& __x) +#endif + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, _Tp&& __x) + { return emplace(__position, std::move(__x)); } + + iterator + insert(const_iterator __p, initializer_list __l) + { + __glibcxx_check_insert(__p); + return iterator(_Base::insert(__p.base(), __l), this); + } +#endif + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __n, __x), this); + } +#else + void + insert(iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + _Base::insert(__position.base(), __n, __x); + } +#endif + +#if __cplusplus >= 201103L + template> + iterator + insert(const_iterator __position, _InputIterator __first, + _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__position, __first, __last, __dist); + if (__dist.second >= __gnu_debug::__dp_sign) + return + { + _Base::insert(__position.base(), + __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)), + this + }; + else + return { _Base::insert(__position.base(), __first, __last), this }; + } +#else + template + void + insert(iterator __position, _InputIterator __first, + _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__position, __first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__position.base(), __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__position.base(), __first, __last); + } +#endif + + private: + _Base_iterator +#if __cplusplus >= 201103L + _M_erase(_Base_const_iterator __position) noexcept +#else + _M_erase(_Base_iterator __position) +#endif + { + this->_M_invalidate_if(_Equal(__position)); + return _Base::erase(__position); + } + + public: + iterator +#if __cplusplus >= 201103L + erase(const_iterator __position) noexcept +#else + erase(iterator __position) +#endif + { + __glibcxx_check_erase(__position); + return iterator(_M_erase(__position.base()), this); + } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __first, const_iterator __last) noexcept +#else + erase(iterator __first, iterator __last) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "position") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } + + void + swap(list& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + // 23.2.2.4 list operations: + void +#if __cplusplus >= 201103L + splice(const_iterator __position, list&& __x) noexcept +#else + splice(iterator __position, list& __x) +#endif + { + _GLIBCXX_DEBUG_VERIFY(std::__addressof(__x) != this, + _M_message(__gnu_debug::__msg_self_splice) + ._M_sequence(*this, "this")); + this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); + _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base())); + } + +#if __cplusplus >= 201103L + void + splice(const_iterator __position, list& __x) noexcept + { splice(__position, std::move(__x)); } +#endif + + void +#if __cplusplus >= 201103L + splice(const_iterator __position, list&& __x, const_iterator __i) noexcept +#else + splice(iterator __position, list& __x, iterator __i) +#endif + { + __glibcxx_check_insert(__position); + + // We used to perform the splice_alloc check: not anymore, redundant + // after implementing the relevant bits of N1599. + + _GLIBCXX_DEBUG_VERIFY(__i._M_dereferenceable(), + _M_message(__gnu_debug::__msg_splice_bad) + ._M_iterator(__i, "__i")); + _GLIBCXX_DEBUG_VERIFY(__i._M_attached_to(std::__addressof(__x)), + _M_message(__gnu_debug::__msg_splice_other) + ._M_iterator(__i, "__i")._M_sequence(__x, "__x")); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + this->_M_transfer_from_if(__x, _Equal(__i.base())); + _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()), + __i.base()); + } + +#if __cplusplus >= 201103L + void + splice(const_iterator __position, list& __x, const_iterator __i) noexcept + { splice(__position, std::move(__x), __i); } +#endif + + void +#if __cplusplus >= 201103L + splice(const_iterator __position, list&& __x, const_iterator __first, + const_iterator __last) noexcept +#else + splice(iterator __position, list& __x, iterator __first, + iterator __last) +#endif + { + __glibcxx_check_insert(__position); + __glibcxx_check_valid_range(__first, __last); + _GLIBCXX_DEBUG_VERIFY(__first._M_attached_to(std::__addressof(__x)), + _M_message(__gnu_debug::__msg_splice_other) + ._M_sequence(__x, "x") + ._M_iterator(__first, "first")); + + // We used to perform the splice_alloc check: not anymore, redundant + // after implementing the relevant bits of N1599. + + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + _GLIBCXX_DEBUG_VERIFY(std::__addressof(__x) != this + || __tmp != __position.base(), + _M_message(__gnu_debug::__msg_splice_overlap) + ._M_iterator(__tmp, "position") + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 250. splicing invalidates iterators + this->_M_transfer_from_if(__x, _Equal(__tmp)); + } + + _Base::splice(__position.base(), _GLIBCXX_MOVE(__x._M_base()), + __first.base(), __last.base()); + } + +#if __cplusplus >= 201103L + void + splice(const_iterator __position, list& __x, + const_iterator __first, const_iterator __last) noexcept + { splice(__position, std::move(__x), __first, __last); } +#endif + + void + remove(const _Tp& __value) + { + for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); ) + { + if (*__x == __value) + __x = _M_erase(__x); + else + ++__x; + } + } + + template + void + remove_if(_Predicate __pred) + { + for (_Base_iterator __x = _Base::begin(); __x != _Base::end(); ) + { + if (__pred(*__x)) + __x = _M_erase(__x); + else + ++__x; + } + } + + void + unique() + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = __first; ++__next; + while (__next != __last) + { + if (*__first == *__next) + __next = _M_erase(__next); + else + __first = __next++; + } + } + + template + void + unique(_BinaryPredicate __binary_pred) + { + _Base_iterator __first = _Base::begin(); + _Base_iterator __last = _Base::end(); + if (__first == __last) + return; + _Base_iterator __next = __first; ++__next; + while (__next != __last) + { + if (__binary_pred(*__first, *__next)) + __next = _M_erase(__next); + else + __first = __next++; + } + } + + void +#if __cplusplus >= 201103L + merge(list&& __x) +#else + merge(list& __x) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 300. list::merge() specification incomplete + if (this != std::__addressof(__x)) + { + __glibcxx_check_sorted(_Base::begin(), _Base::end()); + __glibcxx_check_sorted(__x.begin().base(), __x.end().base()); + this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); + _Base::merge(_GLIBCXX_MOVE(__x._M_base())); + } + } + +#if __cplusplus >= 201103L + void + merge(list& __x) + { merge(std::move(__x)); } +#endif + + template + void +#if __cplusplus >= 201103L + merge(list&& __x, _Compare __comp) +#else + merge(list& __x, _Compare __comp) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 300. list::merge() specification incomplete + if (this != std::__addressof(__x)) + { + __glibcxx_check_sorted_pred(_Base::begin(), _Base::end(), + __comp); + __glibcxx_check_sorted_pred(__x.begin().base(), __x.end().base(), + __comp); + this->_M_transfer_from_if(__x, _Not_equal(__x._M_base().end())); + _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp); + } + } + +#if __cplusplus >= 201103L + template + void + merge(list& __x, _Compare __comp) + { merge(std::move(__x), __comp); } +#endif + + void + sort() { _Base::sort(); } + + template + void + sort(_StrictWeakOrdering __pred) { _Base::sort(__pred); } + + using _Base::reverse; + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + list(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> list<_ValT, _Allocator>; +#endif + + template + inline bool + operator==(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +namespace __gnu_debug +{ +#ifndef _GLIBCXX_USE_CXX11_ABI + // If not using C++11 list::size() is not in O(1) so we do not use it. + template + struct _Sequence_traits > + { + typedef typename std::__debug::list<_Tp, _Alloc>::iterator _It; + + static typename _Distance_traits<_It>::__type + _S_size(const std::__debug::list<_Tp, _Alloc>& __seq) + { + return __seq.empty() + ? std::make_pair(0, __dp_exact) : std::make_pair(1, __dp_equality); + } + }; +#endif + +#ifndef _GLIBCXX_DEBUG_PEDANTIC + template + struct _Insert_range_from_self_is_safe > + { enum { __value = 1 }; }; +#endif +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/macros.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/macros.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/macros.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/macros.h index 2ecba5534..12eac2edb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/macros.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/macros.h @@ -1,6 +1,6 @@ // Debugging support implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/map new file mode 100644 index 000000000..8bd513b13 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/map @@ -0,0 +1,38 @@ +// Debugging map/multimap implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/map + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MAP +#define _GLIBCXX_DEBUG_MAP 1 + +#pragma GCC system_header + +#include +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/map.h new file mode 100644 index 000000000..7a4e2bff0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/map.h @@ -0,0 +1,769 @@ +// Debugging map implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/map.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MAP_H +#define _GLIBCXX_DEBUG_MAP_H 1 + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::map with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator > > + class map + : public __gnu_debug::_Safe_container< + map<_Key, _Tp, _Compare, _Allocator>, _Allocator, + __gnu_debug::_Safe_node_sequence>, + public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> + { + typedef _GLIBCXX_STD_C::map< + _Key, _Tp, _Compare, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + map, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + + public: + // types: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair value_type; + typedef _Compare key_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, map> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, map> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.1.1 construct/copy/destroy: + +#if __cplusplus < 201103L + map() : _Base() { } + + map(const map& __x) + : _Base(__x) { } + + ~map() { } +#else + map() = default; + map(const map&) = default; + map(map&&) = default; + + map(initializer_list __l, + const _Compare& __c = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __c, __a) { } + + explicit + map(const allocator_type& __a) + : _Base(__a) { } + + map(const map& __m, const allocator_type& __a) + : _Base(__m, __a) { } + + map(map&& __m, const allocator_type& __a) + noexcept( noexcept(_Base(std::move(__m._M_base()), __a)) ) + : _Safe(std::move(__m._M_safe()), __a), + _Base(std::move(__m._M_base()), __a) { } + + map(initializer_list __l, const allocator_type& __a) + : _Base(__l, __a) { } + + template + map(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) + { } + + ~map() = default; +#endif + + map(const _Base& __x) + : _Base(__x) { } + + explicit map(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + map(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + +#if __cplusplus < 201103L + map& + operator=(const map& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + return *this; + } +#else + map& + operator=(const map&) = default; + + map& + operator=(map&&) = default; + + map& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } +#endif + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 133. map missing get_allocator() + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // 23.3.1.2 element access: + using _Base::operator[]; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + using _Base::at; + + // modifiers: +#if __cplusplus >= 201103L + template + std::pair + emplace(_Args&&... __args) + { + auto __res = _Base::emplace(std::forward<_Args>(__args)...); + return std::pair(iterator(__res.first, this), + __res.second); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + std::pair + insert(const value_type& __x) + { + std::pair<_Base_iterator, bool> __res = _Base::insert(__x); + return std::pair(iterator(__res.first, this), + __res.second); + } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + std::pair + insert(value_type&& __x) + { + auto __res = _Base::insert(std::move(__x)); + return { iterator(__res.first, this), __res.second }; + } + + template::value>::type> + std::pair + insert(_Pair&& __x) + { + std::pair<_Base_iterator, bool> __res + = _Base::insert(std::forward<_Pair>(__x)); + return std::pair(iterator(__res.first, this), + __res.second); + } +#endif + +#if __cplusplus >= 201103L + void + insert(std::initializer_list __list) + { _Base::insert(__list); } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(const_iterator __position, value_type&& __x) + { + __glibcxx_check_insert(__position); + return { _Base::insert(__position.base(), std::move(__x)), this }; + } + + template::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), + std::forward<_Pair>(__x)), this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + } + + +#if __cplusplus > 201402L + template + pair + try_emplace(const key_type& __k, _Args&&... __args) + { + auto __res = _Base::try_emplace(__k, + std::forward<_Args>(__args)...); + return { iterator(__res.first, this), __res.second }; + } + + template + pair + try_emplace(key_type&& __k, _Args&&... __args) + { + auto __res = _Base::try_emplace(std::move(__k), + std::forward<_Args>(__args)...); + return { iterator(__res.first, this), __res.second }; + } + + template + iterator + try_emplace(const_iterator __hint, const key_type& __k, + _Args&&... __args) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::try_emplace(__hint.base(), __k, + std::forward<_Args>(__args)...), + this); + } + + template + iterator + try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::try_emplace(__hint.base(), std::move(__k), + std::forward<_Args>(__args)...), + this); + } + + template + std::pair + insert_or_assign(const key_type& __k, _Obj&& __obj) + { + auto __res = _Base::insert_or_assign(__k, + std::forward<_Obj>(__obj)); + return { iterator(__res.first, this), __res.second }; + } + + template + std::pair + insert_or_assign(key_type&& __k, _Obj&& __obj) + { + auto __res = _Base::insert_or_assign(std::move(__k), + std::forward<_Obj>(__obj)); + return { iterator(__res.first, this), __res.second }; + } + + template + iterator + insert_or_assign(const_iterator __hint, + const key_type& __k, _Obj&& __obj) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert_or_assign(__hint.base(), __k, + std::forward<_Obj>(__obj)), + this); + } + + template + iterator + insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert_or_assign(__hint.base(), + std::move(__k), + std::forward<_Obj>(__obj)), + this); + } +#endif // C++17 + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + using insert_return_type = _Node_insert_return; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + insert_return_type + insert(node_type&& __nh) + { + auto __ret = _Base::insert(std::move(__nh)); + iterator __pos = iterator(__ret.position, this); + return { __pos, __ret.inserted, std::move(__ret.node) }; + } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } + + iterator + erase(iterator __position) + { return erase(const_iterator(__position)); } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + _Base_iterator __victim = _Base::find(__x); + if (__victim == _Base::end()) + return 0; + else + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim); + return 1; + } + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(map& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // 23.3.1.3 map operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { return { _Base::find(__x), this }; } +#endif + + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + +#if __cplusplus > 201103L + template::type> + const_iterator + find(const _Kt& __x) const + { return { _Base::find(__x), this }; } +#endif + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { return { _Base::lower_bound(__x), this }; } +#endif + + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { return { _Base::lower_bound(__x), this }; } +#endif + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { return { _Base::upper_bound(__x), this }; } +#endif + + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { return { _Base::upper_bound(__x), this }; } +#endif + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) const + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + map(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + map(initializer_list>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> map<_Key, _Tp, _Compare, _Allocator>; + + template , + typename = _RequireAllocator<_Allocator>> + map(_InputIterator, _InputIterator, _Allocator) + -> map<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + less<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + map(initializer_list>, _Allocator) + -> map<_Key, _Tp, less<_Key>, _Allocator>; + +#endif + + template + inline bool + operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs, + map<_Key, _Tp, _Compare, _Allocator>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/multimap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/multimap.h new file mode 100644 index 000000000..9ee3809a5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/multimap.h @@ -0,0 +1,660 @@ +// Debugging multimap implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/multimap.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MULTIMAP_H +#define _GLIBCXX_DEBUG_MULTIMAP_H 1 + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::multimap with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator > > + class multimap + : public __gnu_debug::_Safe_container< + multimap<_Key, _Tp, _Compare, _Allocator>, _Allocator, + __gnu_debug::_Safe_node_sequence>, + public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> + { + typedef _GLIBCXX_STD_C::multimap< + _Key, _Tp, _Compare, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + multimap, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + + public: + // types: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair value_type; + typedef _Compare key_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, multimap> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + multimap> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.1.1 construct/copy/destroy: + +#if __cplusplus < 201103L + multimap() : _Base() { } + + multimap(const multimap& __x) + : _Base(__x) { } + + ~multimap() { } +#else + multimap() = default; + multimap(const multimap&) = default; + multimap(multimap&&) = default; + + multimap(initializer_list __l, + const _Compare& __c = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __c, __a) { } + + explicit + multimap(const allocator_type& __a) + : _Base(__a) { } + + multimap(const multimap& __m, const allocator_type& __a) + : _Base(__m, __a) { } + + multimap(multimap&& __m, const allocator_type& __a) + noexcept( noexcept(_Base(std::move(__m._M_base()), __a)) ) + : _Safe(std::move(__m._M_safe()), __a), + _Base(std::move(__m._M_base()), __a) { } + + multimap(initializer_list __l, const allocator_type& __a) + : _Base(__l, __a) { } + + template + multimap(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) { } + + ~multimap() = default; +#endif + + explicit multimap(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + multimap(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + multimap(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + multimap& + operator=(const multimap& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + return *this; + } +#else + multimap& + operator=(const multimap&) = default; + + multimap& + operator=(multimap&&) = default; + + multimap& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // modifiers: +#if __cplusplus >= 201103L + template + iterator + emplace(_Args&&... __args) + { + return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + iterator + insert(const value_type& __x) + { return iterator(_Base::insert(__x), this); } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(value_type&& __x) + { return { _Base::insert(std::move(__x)), this }; } + + template::value>::type> + iterator + insert(_Pair&& __x) + { return iterator(_Base::insert(std::forward<_Pair>(__x)), this); } +#endif + +#if __cplusplus >= 201103L + void + insert(std::initializer_list __list) + { _Base::insert(__list); } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const value_type& __x) +#else + insert(iterator __position, const value_type& __x) +#endif + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(const_iterator __position, value_type&& __x) + { + __glibcxx_check_insert(__position); + return { _Base::insert(__position.base(), std::move(__x)), this }; + } + + template::value>::type> + iterator + insert(const_iterator __position, _Pair&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), + std::forward<_Pair>(__x)), this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + } + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + iterator + insert(node_type&& __nh) + { return iterator(_Base::insert(std::move(__nh)), this); } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } + + iterator + erase(iterator __position) + { return erase(const_iterator(__position)); } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __victims = + _Base::equal_range(__x); + size_type __count = 0; + _Base_iterator __victim = __victims.first; + while (__victim != __victims.second) + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim++); + ++__count; + } + return __count; + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(multimap& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // 23.3.1.3 multimap operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { return { _Base::find(__x), this }; } +#endif + + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + +#if __cplusplus > 201103L + template::type> + const_iterator + find(const _Kt& __x) const + { return { _Base::find(__x), this }; } +#endif + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { return { _Base::lower_bound(__x), this }; } +#endif + + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { return { _Base::lower_bound(__x), this }; } +#endif + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { return { _Base::upper_bound(__x), this }; } +#endif + + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { return { _Base::upper_bound(__x), this }; } +#endif + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) const + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + multimap(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + multimap(initializer_list>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multimap<_Key, _Tp, _Compare, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + multimap(_InputIterator, _InputIterator, _Allocator) + -> multimap<__iter_key_t<_InputIterator>, __iter_val_t<_InputIterator>, + less<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + multimap(initializer_list>, _Allocator) + -> multimap<_Key, _Tp, less<_Key>, _Allocator>; + +#endif + + template + inline bool + operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/multiset.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/multiset.h new file mode 100644 index 000000000..0be14d7fc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/multiset.h @@ -0,0 +1,629 @@ +// Debugging multiset implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/multiset.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_MULTISET_H +#define _GLIBCXX_DEBUG_MULTISET_H 1 + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::multiset with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator<_Key> > + class multiset + : public __gnu_debug::_Safe_container< + multiset<_Key, _Compare, _Allocator>, _Allocator, + __gnu_debug::_Safe_node_sequence>, + public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> + { + typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + multiset, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + + public: + // types: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, multiset> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, + multiset> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.3.1 construct/copy/destroy: + +#if __cplusplus < 201103L + multiset() : _Base() { } + + multiset(const multiset& __x) + : _Base(__x) { } + + ~multiset() { } +#else + multiset() = default; + multiset(const multiset&) = default; + multiset(multiset&&) = default; + + multiset(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __comp, __a) { } + + explicit + multiset(const allocator_type& __a) + : _Base(__a) { } + + multiset(const multiset& __m, const allocator_type& __a) + : _Base(__m, __a) { } + + multiset(multiset&& __m, const allocator_type& __a) + noexcept( noexcept(_Base(std::move(__m._M_base()), __a)) ) + : _Safe(std::move(__m._M_safe()), __a), + _Base(std::move(__m._M_base()), __a) { } + + multiset(initializer_list __l, const allocator_type& __a) + : _Base(__l, __a) + { } + + template + multiset(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) { } + + ~multiset() = default; +#endif + + explicit multiset(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + multiset(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + multiset(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + multiset& + operator=(const multiset& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + return *this; + } +#else + multiset& + operator=(const multiset&) = default; + + multiset& + operator=(multiset&&) = default; + + multiset& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // modifiers: +#if __cplusplus >= 201103L + template + iterator + emplace(_Args&&... __args) + { + return iterator(_Base::emplace(std::forward<_Args>(__args)...), + this); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + iterator + insert(const value_type& __x) + { return iterator(_Base::insert(__x), this); } + +#if __cplusplus >= 201103L + iterator + insert(value_type&& __x) + { return iterator(_Base::insert(std::move(__x)), this); } +#endif + + iterator + insert(const_iterator __position, const value_type& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, value_type&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), std::move(__x)), + this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + } + +#if __cplusplus >= 201103L + void + insert(initializer_list __l) + { _Base::insert(__l); } +#endif + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + iterator + insert(node_type&& __nh) + { return iterator(_Base::insert(std::move(__nh)), this); } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __victims = + _Base::equal_range(__x); + size_type __count = 0; + _Base_iterator __victim = __victims.first; + while (__victim != __victims.second) + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim++); + ++__count; + } + return __count; + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(multiset& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // multiset operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { return { _Base::find(__x), this }; } + + template::type> + const_iterator + find(const _Kt& __x) const + { return { _Base::find(__x), this }; } +#endif + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { return { _Base::lower_bound(__x), this }; } + + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { return { _Base::lower_bound(__x), this }; } +#endif + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { return { _Base::upper_bound(__x), this }; } + + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { return { _Base::upper_bound(__x), this }; } +#endif + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } + + template::type> + std::pair + equal_range(const _Kt& __x) const + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + multiset(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multiset::value_type, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator<_Key>, + typename = _RequireAllocator<_Allocator>> + multiset(initializer_list<_Key>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> multiset<_Key, _Compare, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + multiset(_InputIterator, _InputIterator, _Allocator) + -> multiset::value_type, + less::value_type>, + _Allocator>; + + template> + multiset(initializer_list<_Key>, _Allocator) + -> multiset<_Key, less<_Key>, _Allocator>; + +#endif + + template + inline bool + operator==(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + void + swap(multiset<_Key, _Compare, _Allocator>& __x, + multiset<_Key, _Compare, _Allocator>& __y) + _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) + { return __x.swap(__y); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_base.h index 3c86e5615..f58a78f78 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_base.h @@ -1,6 +1,6 @@ // Safe sequence/iterator base implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_container.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_container.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_container.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_container.h index 3d44c15cd..e9bc6fc22 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_container.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_container.h @@ -1,6 +1,6 @@ // Safe container implementation -*- C++ -*- -// Copyright (C) 2014-2017 Free Software Foundation, Inc. +// Copyright (C) 2014-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_iterator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_iterator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_iterator.h index 055675793..169a64162 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_iterator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_iterator.h @@ -1,6 +1,6 @@ // Safe iterator implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_iterator.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_iterator.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_iterator.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_iterator.tcc index 43d7e992c..bdd95bbd8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_iterator.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_iterator.tcc @@ -1,6 +1,6 @@ // Debugging iterator implementation (out of line) -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_local_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_local_iterator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_local_iterator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_local_iterator.h index c46aa1392..bb89aed6f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_local_iterator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_local_iterator.h @@ -1,6 +1,6 @@ // Safe iterator implementation -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_local_iterator.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_local_iterator.tcc similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_local_iterator.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_local_iterator.tcc index 55157ed16..24d8e1768 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_local_iterator.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_local_iterator.tcc @@ -1,6 +1,6 @@ // Debugging iterator implementation (out of line) -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_sequence.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_sequence.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_sequence.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_sequence.h index 907b1c8d8..9299e27c3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_sequence.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_sequence.h @@ -1,6 +1,6 @@ // Safe sequence implementation -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_sequence.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_sequence.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_sequence.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_sequence.tcc index 3b792abba..12de48cf3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_sequence.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_sequence.tcc @@ -1,6 +1,6 @@ // Safe sequence implementation -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_base.h index ca5ef3b8c..5dd0e0ee3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_base.h @@ -1,6 +1,6 @@ // Safe container/iterator base implementation -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_container.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_container.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_container.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_container.h index 3f7629012..8ee7dd661 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_container.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_container.h @@ -1,6 +1,6 @@ // Safe container implementation -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_container.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_container.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_container.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_container.tcc index 862c54dc4..5820b6a9e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/debug/safe_unordered_container.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/safe_unordered_container.tcc @@ -1,6 +1,6 @@ // Safe container implementation -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/set new file mode 100644 index 000000000..08806ca54 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/set @@ -0,0 +1,38 @@ +// Debugging set/multiset implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/set + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SET +#define _GLIBCXX_DEBUG_SET 1 + +#pragma GCC system_header + +#include +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/set.h new file mode 100644 index 000000000..7f24a8323 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/set.h @@ -0,0 +1,640 @@ +// Debugging set implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/set.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_SET_H +#define _GLIBCXX_DEBUG_SET_H 1 + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::set with safety/checking/debug instrumentation. + template, + typename _Allocator = std::allocator<_Key> > + class set + : public __gnu_debug::_Safe_container< + set<_Key, _Compare, _Allocator>, _Allocator, + __gnu_debug::_Safe_node_sequence>, + public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator> + { + typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + set, _Allocator, __gnu_debug::_Safe_node_sequence> _Safe; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + + public: + // types: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator<_Base_iterator, set> + iterator; + typedef __gnu_debug::_Safe_iterator<_Base_const_iterator, set> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.3.3.1 construct/copy/destroy: + +#if __cplusplus < 201103L + set() : _Base() { } + + set(const set& __x) + : _Base(__x) { } + + ~set() { } +#else + set() = default; + set(const set&) = default; + set(set&&) = default; + + set(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __comp, __a) { } + + explicit + set(const allocator_type& __a) + : _Base(__a) { } + + set(const set& __x, const allocator_type& __a) + : _Base(__x, __a) { } + + set(set&& __x, const allocator_type& __a) + noexcept( noexcept(_Base(std::move(__x._M_base()), __a)) ) + : _Safe(std::move(__x._M_safe()), __a), + _Base(std::move(__x._M_base()), __a) { } + + set(initializer_list __l, const allocator_type& __a) + : _Base(__l, __a) { } + + template + set(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) { } + + ~set() = default; +#endif + + explicit set(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + + template + set(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), + __comp, __a) { } + + set(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + set& + operator=(const set& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + return *this; + } +#else + set& + operator=(const set&) = default; + + set& + operator=(set&&) = default; + + set& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // capacity: + using _Base::empty; + using _Base::size; + using _Base::max_size; + + // modifiers: +#if __cplusplus >= 201103L + template + std::pair + emplace(_Args&&... __args) + { + auto __res = _Base::emplace(std::forward<_Args>(__args)...); + return std::pair(iterator(__res.first, this), + __res.second); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + __glibcxx_check_insert(__pos); + return iterator(_Base::emplace_hint(__pos.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + std::pair + insert(const value_type& __x) + { + std::pair<_Base_iterator, bool> __res = _Base::insert(__x); + return std::pair(iterator(__res.first, this), + __res.second); + } + +#if __cplusplus >= 201103L + std::pair + insert(value_type&& __x) + { + std::pair<_Base_iterator, bool> __res + = _Base::insert(std::move(__x)); + return std::pair(iterator(__res.first, this), + __res.second); + } +#endif + + iterator + insert(const_iterator __position, const value_type& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, value_type&& __x) + { + __glibcxx_check_insert(__position); + return iterator(_Base::insert(__position.base(), std::move(__x)), + this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + } + +#if __cplusplus >= 201103L + void + insert(initializer_list __l) + { _Base::insert(__l); } +#endif + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + using insert_return_type = _Node_insert_return; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + insert_return_type + insert(node_type&& __nh) + { + auto __ret = _Base::insert(std::move(__nh)); + iterator __pos = iterator(__ret.position, this); + return { __pos, __ret.inserted, std::move(__ret.node) }; + } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + return iterator(_Base::erase(__position.base()), this); + } +#else + void + erase(iterator __position) + { + __glibcxx_check_erase(__position); + this->_M_invalidate_if(_Equal(__position.base())); + _Base::erase(__position.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + _Base_iterator __victim = _Base::find(__x); + if (__victim == _Base::end()) + return 0; + else + { + this->_M_invalidate_if(_Equal(__victim)); + _Base::erase(__victim); + return 1; + } + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + for (_Base_iterator __victim = __first.base(); + __victim != __last.base(); ++__victim) + { + _GLIBCXX_DEBUG_VERIFY(__victim != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if(_Equal(__victim)); + } + _Base::erase(__first.base(), __last.base()); + } +#endif + + void + swap(set& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_invalidate_all(); + _Base::clear(); + } + + // observers: + using _Base::key_comp; + using _Base::value_comp; + + // set operations: + iterator + find(const key_type& __x) + { return iterator(_Base::find(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + find(const key_type& __x) const + { return const_iterator(_Base::find(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { return { _Base::find(__x), this }; } + + template::type> + const_iterator + find(const _Kt& __x) const + { return { _Base::find(__x), this }; } +#endif + + using _Base::count; + + iterator + lower_bound(const key_type& __x) + { return iterator(_Base::lower_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + lower_bound(const key_type& __x) const + { return const_iterator(_Base::lower_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { return { _Base::lower_bound(__x), this }; } + + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { return { _Base::lower_bound(__x), this }; } +#endif + + iterator + upper_bound(const key_type& __x) + { return iterator(_Base::upper_bound(__x), this); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + upper_bound(const key_type& __x) const + { return const_iterator(_Base::upper_bound(__x), this); } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { return { _Base::upper_bound(__x), this }; } + + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { return { _Base::upper_bound(__x), this }; } +#endif + + std::pair + equal_range(const key_type& __x) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + std::pair + equal_range(const key_type& __x) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__x); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } + + template::type> + std::pair + equal_range(const _Kt& __x) const + { + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + set(_InputIterator, _InputIterator, + _Compare = _Compare(), _Allocator = _Allocator()) + -> set::value_type, + _Compare, _Allocator>; + + template, + typename _Allocator = allocator<_Key>, + typename = _RequireAllocator<_Allocator>> + set(initializer_list<_Key>, + _Compare = _Compare(), _Allocator = _Allocator()) + -> set<_Key, _Compare, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + set(_InputIterator, _InputIterator, _Allocator) + -> set::value_type, + less::value_type>, + _Allocator>; + + template> + set(initializer_list<_Key>, _Allocator) + -> set<_Key, less<_Key>, _Allocator>; + +#endif + + template + inline bool + operator==(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + void + swap(set<_Key, _Compare, _Allocator>& __x, + set<_Key, _Compare, _Allocator>& __y) + _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) + { return __x.swap(__y); } + +} // namespace __debug +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/stl_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/stl_iterator.h new file mode 100644 index 000000000..21eac76d6 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/stl_iterator.h @@ -0,0 +1,113 @@ +// Debugging support implementation -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file debug/stl_iterator.h + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_STL_ITERATOR_H +#define _GLIBCXX_DEBUG_STL_ITERATOR_H 1 + +#include + +namespace __gnu_debug +{ + // Help Debug mode to see through reverse_iterator. + template + inline bool + __valid_range(const std::reverse_iterator<_Iterator>& __first, + const std::reverse_iterator<_Iterator>& __last, + typename _Distance_traits<_Iterator>::__type& __dist) + { return __valid_range(__last.base(), __first.base(), __dist); } + + template + inline typename _Distance_traits<_Iterator>::__type + __get_distance(const std::reverse_iterator<_Iterator>& __first, + const std::reverse_iterator<_Iterator>& __last) + { return __get_distance(__last.base(), __first.base()); } + +#if __cplusplus < 201103L + template + struct __is_safe_random_iterator > + : __is_safe_random_iterator<_Iterator> + { }; + + template + struct _Unsafe_type > + { + typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType; + typedef std::reverse_iterator<_UnsafeType> _Type; + }; + + template + inline std::reverse_iterator::_Type> + __unsafe(const std::reverse_iterator<_Iterator>& __it) + { + typedef typename _Unsafe_type<_Iterator>::_Type _UnsafeType; + return std::reverse_iterator<_UnsafeType>(__unsafe(__it.base())); + } +#else + template + inline auto + __base(const std::reverse_iterator<_Iterator>& __it) + -> decltype(std::__make_reverse_iterator(__base(__it.base()))) + { return std::__make_reverse_iterator(__base(__it.base())); } + + template + inline auto + __unsafe(const std::reverse_iterator<_Iterator>& __it) + -> decltype(std::__make_reverse_iterator(__unsafe(__it.base()))) + { return std::__make_reverse_iterator(__unsafe(__it.base())); } +#endif + +#if __cplusplus >= 201103L + // Help Debug mode to see through move_iterator. + template + inline bool + __valid_range(const std::move_iterator<_Iterator>& __first, + const std::move_iterator<_Iterator>& __last, + typename _Distance_traits<_Iterator>::__type& __dist) + { return __valid_range(__first.base(), __last.base(), __dist); } + + template + inline typename _Distance_traits<_Iterator>::__type + __get_distance(const std::move_iterator<_Iterator>& __first, + const std::move_iterator<_Iterator>& __last) + { return __get_distance(__first.base(), __last.base()); } + + template + inline auto + __unsafe(const std::move_iterator<_Iterator>& __it) + -> decltype(std::make_move_iterator(__unsafe(__it.base()))) + { return std::make_move_iterator(__unsafe(__it.base())); } + + template + inline auto + __base(const std::move_iterator<_Iterator>& __it) + -> decltype(std::make_move_iterator(__base(__it.base()))) + { return std::make_move_iterator(__base(__it.base())); } +#endif +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/string b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/string new file mode 100644 index 000000000..b1b374b9b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/string @@ -0,0 +1,1209 @@ +// Debugging string implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/string + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_STRING +#define _GLIBCXX_DEBUG_STRING 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +namespace __gnu_debug +{ +/// Class std::basic_string with safety/checking/debug instrumentation. +template, + typename _Allocator = std::allocator<_CharT> > + class basic_string + : public __gnu_debug::_Safe_container< + basic_string<_CharT, _Traits, _Allocator>, + _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)>, + public std::basic_string<_CharT, _Traits, _Allocator> + { + typedef std::basic_string<_CharT, _Traits, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + basic_string, _Allocator, _Safe_sequence, bool(_GLIBCXX_USE_CXX11_ABI)> + _Safe; + + public: + // types: + typedef _Traits traits_type; + typedef typename _Traits::char_type value_type; + typedef _Allocator allocator_type; + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + + typedef __gnu_debug::_Safe_iterator< + typename _Base::iterator, basic_string> iterator; + typedef __gnu_debug::_Safe_iterator< + typename _Base::const_iterator, basic_string> const_iterator; + + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + using _Base::npos; + + basic_string() + _GLIBCXX_NOEXCEPT_IF(std::is_nothrow_default_constructible<_Base>::value) + : _Base() { } + + // 21.3.1 construct/copy/destroy: + explicit + basic_string(const _Allocator& __a) _GLIBCXX_NOEXCEPT + : _Base(__a) { } + +#if __cplusplus < 201103L + basic_string(const basic_string& __str) + : _Base(__str) { } + + ~basic_string() { } +#else + basic_string(const basic_string&) = default; + basic_string(basic_string&&) = default; + + basic_string(std::initializer_list<_CharT> __l, + const _Allocator& __a = _Allocator()) + : _Base(__l, __a) + { } + +#if _GLIBCXX_USE_CXX11_ABI + basic_string(const basic_string& __s, const _Allocator& __a) + : _Base(__s, __a) { } + + basic_string(basic_string&& __s, const _Allocator& __a) + : _Base(std::move(__s), __a) { } +#endif + + ~basic_string() = default; + + // Provides conversion from a normal-mode string to a debug-mode string + basic_string(_Base&& __base) noexcept + : _Base(std::move(__base)) { } +#endif // C++11 + + // Provides conversion from a normal-mode string to a debug-mode string + basic_string(const _Base& __base) + : _Base(__base) { } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 42. string ctors specify wrong default allocator + basic_string(const basic_string& __str, size_type __pos, + size_type __n = _Base::npos, + const _Allocator& __a = _Allocator()) + : _Base(__str, __pos, __n, __a) { } + + basic_string(const _CharT* __s, size_type __n, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__check_string(__s, __n), __n, __a) { } + + basic_string(const _CharT* __s, const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__check_string(__s), __a) + { this->assign(__s); } + + basic_string(size_type __n, _CharT __c, + const _Allocator& __a = _Allocator()) + : _Base(__n, __c, __a) { } + + template + basic_string(_InputIterator __begin, _InputIterator __end, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__begin, + __end)), + __gnu_debug::__base(__end), __a) { } + +#if __cplusplus < 201103L + basic_string& + operator=(const basic_string& __str) + { + this->_M_safe() = __str; + _M_base() = __str; + return *this; + } +#else + basic_string& + operator=(const basic_string&) = default; + + basic_string& + operator=(basic_string&&) = default; +#endif + + basic_string& + operator=(const _CharT* __s) + { + __glibcxx_check_string(__s); + _M_base() = __s; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator=(_CharT __c) + { + _M_base() = __c; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + operator=(std::initializer_list<_CharT> __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + // 21.3.2 iterators: + iterator + begin() // _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() // _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() // _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() // _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 21.3.3 capacity: + using _Base::size; + using _Base::length; + using _Base::max_size; + + void + resize(size_type __n, _CharT __c) + { + _Base::resize(__n, __c); + this->_M_invalidate_all(); + } + + void + resize(size_type __n) + { this->resize(__n, _CharT()); } + +#if __cplusplus >= 201103L + void + shrink_to_fit() noexcept + { + if (capacity() > size()) + { + __try + { + reserve(0); + this->_M_invalidate_all(); + } + __catch(...) + { } + } + } +#endif + + using _Base::capacity; + using _Base::reserve; + + void + clear() // _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + using _Base::empty; + + // 21.3.4 element access: + const_reference + operator[](size_type __pos) const _GLIBCXX_NOEXCEPT + { + _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(), + _M_message(__gnu_debug::__msg_subscript_oob) + ._M_sequence(*this, "this") + ._M_integer(__pos, "__pos") + ._M_integer(this->size(), "size")); + return _M_base()[__pos]; + } + + reference + operator[](size_type __pos) // _GLIBCXX_NOEXCEPT + { +#if __cplusplus < 201103L && defined(_GLIBCXX_DEBUG_PEDANTIC) + __glibcxx_check_subscript(__pos); +#else + // as an extension v3 allows s[s.size()] when s is non-const. + _GLIBCXX_DEBUG_VERIFY(__pos <= this->size(), + _M_message(__gnu_debug::__msg_subscript_oob) + ._M_sequence(*this, "this") + ._M_integer(__pos, "__pos") + ._M_integer(this->size(), "size")); +#endif + return _M_base()[__pos]; + } + + using _Base::at; + +#if __cplusplus >= 201103L + using _Base::front; + using _Base::back; +#endif + + // 21.3.5 modifiers: + basic_string& + operator+=(const basic_string& __str) + { + _M_base() += __str; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator+=(const _CharT* __s) + { + __glibcxx_check_string(__s); + _M_base() += __s; + this->_M_invalidate_all(); + return *this; + } + + basic_string& + operator+=(_CharT __c) + { + _M_base() += __c; + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + operator+=(std::initializer_list<_CharT> __l) + { + _M_base() += __l; + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + basic_string& + append(const basic_string& __str) + { + _Base::append(__str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(const basic_string& __str, size_type __pos, size_type __n) + { + _Base::append(__str, __pos, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(const _CharT* __s, size_type __n) + { + __glibcxx_check_string_len(__s, __n); + _Base::append(__s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::append(__s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + append(size_type __n, _CharT __c) + { + _Base::append(__n, __c); + this->_M_invalidate_all(); + return *this; + } + + template + basic_string& + append(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __dp_sign) + _Base::append(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::append(__first, __last); + + this->_M_invalidate_all(); + return *this; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 7. string clause minor problems + void + push_back(_CharT __c) + { + _Base::push_back(__c); + this->_M_invalidate_all(); + } + + basic_string& + assign(const basic_string& __x) + { + _Base::assign(__x); + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + assign(basic_string&& __x) + noexcept(noexcept(std::declval<_Base&>().assign(std::move(__x)))) + { + _Base::assign(std::move(__x)); + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + basic_string& + assign(const basic_string& __str, size_type __pos, size_type __n) + { + _Base::assign(__str, __pos, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + assign(const _CharT* __s, size_type __n) + { + __glibcxx_check_string_len(__s, __n); + _Base::assign(__s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + assign(const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::assign(__s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + assign(size_type __n, _CharT __c) + { + _Base::assign(__n, __c); + this->_M_invalidate_all(); + return *this; + } + + template + basic_string& + assign(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __dp_sign) + _Base::assign(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::assign(__first, __last); + + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& + assign(std::initializer_list<_CharT> __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + basic_string& + insert(size_type __pos1, const basic_string& __str) + { + _Base::insert(__pos1, __str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos1, const basic_string& __str, + size_type __pos2, size_type __n) + { + _Base::insert(__pos1, __str, __pos2, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos, const _CharT* __s, size_type __n) + { + __glibcxx_check_string(__s); + _Base::insert(__pos, __s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos, const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::insert(__pos, __s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + insert(size_type __pos, size_type __n, _CharT __c) + { + _Base::insert(__pos, __n, __c); + this->_M_invalidate_all(); + return *this; + } + + iterator + insert(iterator __p, _CharT __c) + { + __glibcxx_check_insert(__p); + typename _Base::iterator __res = _Base::insert(__p.base(), __c); + this->_M_invalidate_all(); + return iterator(__res, this); + } + + void + insert(iterator __p, size_type __n, _CharT __c) + { + __glibcxx_check_insert(__p); + _Base::insert(__p.base(), __n, __c); + this->_M_invalidate_all(); + } + + template + void + insert(iterator __p, _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__p, __first, __last, __dist); + + if (__dist.second >= __dp_sign) + _Base::insert(__p.base(), __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__p.base(), __first, __last); + + this->_M_invalidate_all(); + } + +#if __cplusplus >= 201103L + void + insert(iterator __p, std::initializer_list<_CharT> __l) + { + __glibcxx_check_insert(__p); + _Base::insert(__p.base(), __l); + this->_M_invalidate_all(); + } +#endif // C++11 + + basic_string& + erase(size_type __pos = 0, size_type __n = _Base::npos) + { + _Base::erase(__pos, __n); + this->_M_invalidate_all(); + return *this; + } + + iterator + erase(iterator __position) + { + __glibcxx_check_erase(__position); + typename _Base::iterator __res = _Base::erase(__position.base()); + this->_M_invalidate_all(); + return iterator(__res, this); + } + + iterator + erase(iterator __first, iterator __last) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + typename _Base::iterator __res = _Base::erase(__first.base(), + __last.base()); + this->_M_invalidate_all(); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + void + pop_back() // noexcept + { + __glibcxx_check_nonempty(); + _Base::pop_back(); + this->_M_invalidate_all(); + } +#endif // C++11 + + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str) + { + _Base::replace(__pos1, __n1, __str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) + { + _Base::replace(__pos1, __n1, __str, __pos2, __n2); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s, + size_type __n2) + { + __glibcxx_check_string_len(__s, __n2); + _Base::replace(__pos, __n1, __s, __n2); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos, size_type __n1, const _CharT* __s) + { + __glibcxx_check_string(__s); + _Base::replace(__pos, __n1, __s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c) + { + _Base::replace(__pos, __n1, __n2, __c); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, const basic_string& __str) + { + __glibcxx_check_erase_range(__i1, __i2); + _Base::replace(__i1.base(), __i2.base(), __str); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n) + { + __glibcxx_check_erase_range(__i1, __i2); + __glibcxx_check_string_len(__s, __n); + _Base::replace(__i1.base(), __i2.base(), __s, __n); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, const _CharT* __s) + { + __glibcxx_check_erase_range(__i1, __i2); + __glibcxx_check_string(__s); + _Base::replace(__i1.base(), __i2.base(), __s); + this->_M_invalidate_all(); + return *this; + } + + basic_string& + replace(iterator __i1, iterator __i2, size_type __n, _CharT __c) + { + __glibcxx_check_erase_range(__i1, __i2); + _Base::replace(__i1.base(), __i2.base(), __n, __c); + this->_M_invalidate_all(); + return *this; + } + + template + basic_string& + replace(iterator __i1, iterator __i2, + _InputIterator __j1, _InputIterator __j2) + { + __glibcxx_check_erase_range(__i1, __i2); + + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__j1, __j2, __dist); + + if (__dist.second >= __dp_sign) + _Base::replace(__i1.base(), __i2.base(), + __gnu_debug::__unsafe(__j1), + __gnu_debug::__unsafe(__j2)); + else + _Base::replace(__i1.base(), __i2.base(), __j1, __j2); + + this->_M_invalidate_all(); + return *this; + } + +#if __cplusplus >= 201103L + basic_string& replace(iterator __i1, iterator __i2, + std::initializer_list<_CharT> __l) + { + __glibcxx_check_erase_range(__i1, __i2); + _Base::replace(__i1.base(), __i2.base(), __l); + this->_M_invalidate_all(); + return *this; + } +#endif // C++11 + + size_type + copy(_CharT* __s, size_type __n, size_type __pos = 0) const + { + __glibcxx_check_string_len(__s, __n); + return _Base::copy(__s, __n, __pos); + } + + void + swap(basic_string& __x) + _GLIBCXX_NOEXCEPT_IF(std::__is_nothrow_swappable<_Base>::value) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + // 21.3.6 string operations: + const _CharT* + c_str() const _GLIBCXX_NOEXCEPT + { + const _CharT* __res = _Base::c_str(); + this->_M_invalidate_all(); + return __res; + } + + const _CharT* + data() const _GLIBCXX_NOEXCEPT + { + const _CharT* __res = _Base::data(); + this->_M_invalidate_all(); + return __res; + } + + using _Base::get_allocator; + + size_type + find(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return _Base::find(__str, __pos); } + + size_type + find(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find(__s, __pos, __n); + } + + size_type + find(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_check_string(__s); + return _Base::find(__s, __pos); + } + + size_type + find(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return _Base::find(__c, __pos); } + + size_type + rfind(const basic_string& __str, size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::rfind(__str, __pos); } + + size_type + rfind(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string_len(__s, __n); + return _Base::rfind(__s, __pos, __n); + } + + size_type + rfind(const _CharT* __s, size_type __pos = _Base::npos) const + { + __glibcxx_check_string(__s); + return _Base::rfind(__s, __pos); + } + + size_type + rfind(_CharT __c, size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT + { return _Base::rfind(__c, __pos); } + + size_type + find_first_of(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return _Base::find_first_of(__str, __pos); } + + size_type + find_first_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find_first_of(__s, __pos, __n); + } + + size_type + find_first_of(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_check_string(__s); + return _Base::find_first_of(__s, __pos); + } + + size_type + find_first_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return _Base::find_first_of(__c, __pos); } + + size_type + find_last_of(const basic_string& __str, + size_type __pos = _Base::npos) const _GLIBCXX_NOEXCEPT + { return _Base::find_last_of(__str, __pos); } + + size_type + find_last_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find_last_of(__s, __pos, __n); + } + + size_type + find_last_of(const _CharT* __s, size_type __pos = _Base::npos) const + { + __glibcxx_check_string(__s); + return _Base::find_last_of(__s, __pos); + } + + size_type + find_last_of(_CharT __c, size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::find_last_of(__c, __pos); } + + size_type + find_first_not_of(const basic_string& __str, size_type __pos = 0) const + _GLIBCXX_NOEXCEPT + { return _Base::find_first_not_of(__str, __pos); } + + size_type + find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string_len(__s, __n); + return _Base::find_first_not_of(__s, __pos, __n); + } + + size_type + find_first_not_of(const _CharT* __s, size_type __pos = 0) const + { + __glibcxx_check_string(__s); + return _Base::find_first_not_of(__s, __pos); + } + + size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const _GLIBCXX_NOEXCEPT + { return _Base::find_first_not_of(__c, __pos); } + + size_type + find_last_not_of(const basic_string& __str, + size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::find_last_not_of(__str, __pos); } + + size_type + find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const + { + __glibcxx_check_string(__s); + return _Base::find_last_not_of(__s, __pos, __n); + } + + size_type + find_last_not_of(const _CharT* __s, size_type __pos = _Base::npos) const + { + __glibcxx_check_string(__s); + return _Base::find_last_not_of(__s, __pos); + } + + size_type + find_last_not_of(_CharT __c, size_type __pos = _Base::npos) const + _GLIBCXX_NOEXCEPT + { return _Base::find_last_not_of(__c, __pos); } + + basic_string + substr(size_type __pos = 0, size_type __n = _Base::npos) const + { return basic_string(_Base::substr(__pos, __n)); } + + int + compare(const basic_string& __str) const + { return _Base::compare(__str); } + + int + compare(size_type __pos1, size_type __n1, + const basic_string& __str) const + { return _Base::compare(__pos1, __n1, __str); } + + int + compare(size_type __pos1, size_type __n1, const basic_string& __str, + size_type __pos2, size_type __n2) const + { return _Base::compare(__pos1, __n1, __str, __pos2, __n2); } + + int + compare(const _CharT* __s) const + { + __glibcxx_check_string(__s); + return _Base::compare(__s); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 5. string::compare specification questionable + int + compare(size_type __pos1, size_type __n1, const _CharT* __s) const + { + __glibcxx_check_string(__s); + return _Base::compare(__pos1, __n1, __s); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 5. string::compare specification questionable + int + compare(size_type __pos1, size_type __n1,const _CharT* __s, + size_type __n2) const + { + __glibcxx_check_string_len(__s, __n2); + return _Base::compare(__pos1, __n1, __s, __n2); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + using _Safe::_M_invalidate_all; + }; + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; + } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(_CharT __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return basic_string<_CharT,_Traits,_Allocator>(1, __lhs) += __rhs; } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; + } + + template + inline basic_string<_CharT,_Traits,_Allocator> + operator+(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + _CharT __rhs) + { return basic_string<_CharT,_Traits,_Allocator>(__lhs) += __rhs; } + + template + inline bool + operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator==(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs == __rhs._M_base(); + } + + template + inline bool + operator==(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() == __rhs; + } + + template + inline bool + operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator!=(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs != __rhs._M_base(); + } + + template + inline bool + operator!=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() != __rhs; + } + + template + inline bool + operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs < __rhs._M_base(); + } + + template + inline bool + operator<(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() < __rhs; + } + + template + inline bool + operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator<=(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs <= __rhs._M_base(); + } + + template + inline bool + operator<=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() <= __rhs; + } + + template + inline bool + operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>=(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs >= __rhs._M_base(); + } + + template + inline bool + operator>=(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() >= __rhs; + } + + template + inline bool + operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline bool + operator>(const _CharT* __lhs, + const basic_string<_CharT,_Traits,_Allocator>& __rhs) + { + __glibcxx_check_string(__lhs); + return __lhs > __rhs._M_base(); + } + + template + inline bool + operator>(const basic_string<_CharT,_Traits,_Allocator>& __lhs, + const _CharT* __rhs) + { + __glibcxx_check_string(__rhs); + return __lhs._M_base() > __rhs; + } + + // 21.3.7.8: + template + inline void + swap(basic_string<_CharT,_Traits,_Allocator>& __lhs, + basic_string<_CharT,_Traits,_Allocator>& __rhs) + { __lhs.swap(__rhs); } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const basic_string<_CharT, _Traits, _Allocator>& __str) + { return __os << __str._M_base(); } + + template + std::basic_istream<_CharT,_Traits>& + operator>>(std::basic_istream<_CharT,_Traits>& __is, + basic_string<_CharT,_Traits,_Allocator>& __str) + { + std::basic_istream<_CharT,_Traits>& __res = __is >> __str._M_base(); + __str._M_invalidate_all(); + return __res; + } + + template + std::basic_istream<_CharT,_Traits>& + getline(std::basic_istream<_CharT,_Traits>& __is, + basic_string<_CharT,_Traits,_Allocator>& __str, _CharT __delim) + { + std::basic_istream<_CharT,_Traits>& __res = getline(__is, + __str._M_base(), + __delim); + __str._M_invalidate_all(); + return __res; + } + + template + std::basic_istream<_CharT,_Traits>& + getline(std::basic_istream<_CharT,_Traits>& __is, + basic_string<_CharT,_Traits,_Allocator>& __str) + { + std::basic_istream<_CharT,_Traits>& __res = getline(__is, + __str._M_base()); + __str._M_invalidate_all(); + return __res; + } + + typedef basic_string string; + +#ifdef _GLIBCXX_USE_WCHAR_T + typedef basic_string wstring; +#endif + + template + struct _Insert_range_from_self_is_safe< + __gnu_debug::basic_string<_CharT, _Traits, _Allocator> > + { enum { __value = 1 }; }; + +} // namespace __gnu_debug + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/unordered_map new file mode 100644 index 000000000..687a46ca5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/unordered_map @@ -0,0 +1,1332 @@ +// Debugging unordered_map/unordered_multimap implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/unordered_map + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_UNORDERED_MAP +#define _GLIBCXX_DEBUG_UNORDERED_MAP 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else +# include + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::unordered_map with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator > > + class unordered_map + : public __gnu_debug::_Safe_container< + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>, _Alloc, + __gnu_debug::_Safe_unordered_container>, + public _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> + { + typedef _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, + _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_container _Safe; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator + _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator< + _Base_iterator, unordered_map> iterator; + typedef __gnu_debug::_Safe_iterator< + _Base_const_iterator, unordered_map> const_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_local_iterator, unordered_map> local_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_const_local_iterator, unordered_map> const_local_iterator; + + unordered_map() = default; + + explicit + unordered_map(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_map(const unordered_map&) = default; + + unordered_map(const _Base& __x) + : _Base(__x) { } + + unordered_map(unordered_map&&) = default; + + explicit + unordered_map(const allocator_type& __a) + : _Base(__a) { } + + unordered_map(const unordered_map& __umap, + const allocator_type& __a) + : _Base(__umap, __a) { } + + unordered_map(unordered_map&& __umap, + const allocator_type& __a) + : _Safe(std::move(__umap._M_safe()), __a), + _Base(std::move(__umap._M_base()), __a) { } + + unordered_map(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + unordered_map(size_type __n, const allocator_type& __a) + : unordered_map(__n, hasher(), key_equal(), __a) + { } + + unordered_map(size_type __n, + const hasher& __hf, + const allocator_type& __a) + : unordered_map(__n, __hf, key_equal(), __a) + { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n, + const hasher& __hf, + const allocator_type& __a) + : unordered_map(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_map(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_map(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_map(initializer_list __l, + size_type __n, + const hasher& __hf, + const allocator_type& __a) + : unordered_map(__l, __n, __hf, key_equal(), __a) + { } + + ~unordered_map() = default; + + unordered_map& + operator=(const unordered_map&) = default; + + unordered_map& + operator=(unordered_map&&) = default; + + unordered_map& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } + + void + swap(unordered_map& __x) + noexcept( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + std::pair + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + std::pair + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + auto __res = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return { iterator(__res.first, this), __res.second }; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + std::pair + insert(value_type&& __x) + { + size_type __bucket_count = this->bucket_count(); + auto __res = _Base::insert(std::move(__x)); + _M_check_rehashed(__bucket_count); + return { iterator(__res.first, this), __res.second }; + } + + template::value>::type> + std::pair + insert(_Pair&& __obj) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res = + _Base::insert(std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(const_iterator __hint, value_type&& __x) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + auto __it = _Base::insert(__hint.base(), std::move(__x)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template::value>::type> + iterator + insert(const_iterator __hint, _Pair&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = + _Base::insert(__hint.base(), std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { + size_type __bucket_count = this->bucket_count(); + _Base::insert(__l); + _M_check_rehashed(__bucket_count); + } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + size_type __bucket_count = this->bucket_count(); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + + _M_check_rehashed(__bucket_count); + } + +#if __cplusplus > 201402L + template + pair + try_emplace(const key_type& __k, _Args&&... __args) + { + auto __res = _Base::try_emplace(__k, + std::forward<_Args>(__args)...); + return { iterator(__res.first, this), __res.second }; + } + + template + pair + try_emplace(key_type&& __k, _Args&&... __args) + { + auto __res = _Base::try_emplace(std::move(__k), + std::forward<_Args>(__args)...); + return { iterator(__res.first, this), __res.second }; + } + + template + iterator + try_emplace(const_iterator __hint, const key_type& __k, + _Args&&... __args) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::try_emplace(__hint.base(), __k, + std::forward<_Args>(__args)...), + this); + } + + template + iterator + try_emplace(const_iterator __hint, key_type&& __k, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::try_emplace(__hint.base(), std::move(__k), + std::forward<_Args>(__args)...), + this); + } + + template + pair + insert_or_assign(const key_type& __k, _Obj&& __obj) + { + auto __res = _Base::insert_or_assign(__k, + std::forward<_Obj>(__obj)); + return { iterator(__res.first, this), __res.second }; + } + + template + pair + insert_or_assign(key_type&& __k, _Obj&& __obj) + { + auto __res = _Base::insert_or_assign(std::move(__k), + std::forward<_Obj>(__obj)); + return { iterator(__res.first, this), __res.second }; + } + + template + iterator + insert_or_assign(const_iterator __hint, const key_type& __k, + _Obj&& __obj) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert_or_assign(__hint.base(), __k, + std::forward<_Obj>(__obj)), + this); + } + + template + iterator + insert_or_assign(const_iterator __hint, key_type&& __k, _Obj&& __obj) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert_or_assign(__hint.base(), + std::move(__k), + std::forward<_Obj>(__obj)), + this); + } +#endif // C++17 + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + using insert_return_type = _Node_insert_return; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + _Base_const_iterator __victim = __position.base(); + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) { return __it == __victim; } + ); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) { + return __it._M_curr() == __victim._M_cur; + }); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + insert_return_type + insert(node_type&& __nh) + { + auto __ret = _Base::insert(std::move(__nh)); + iterator __pos = iterator(__ret.position, this); + return { __pos, __ret.inserted, std::move(__ret.node) }; + } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + _Base_iterator __victim(_Base::find(__key)); + if (__victim != _Base::end()) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base::erase(__victim); + _M_check_rehashed(__bucket_count); + __ret = 1; + } + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__it.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_curr() == __tmp._M_cur; }); + } + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__first.base(), __last.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + this->_M_invalidate_locals(); + } + }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Pred = equal_to<__iter_key_t<_InputIterator>>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, + typename unordered_map::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + _Hash, _Pred, _Allocator>; + + template, + typename _Pred = equal_to<_Key>, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + unordered_map(initializer_list>, + typename unordered_map::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_map<_Key, _Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, + typename unordered_map::size_type, _Allocator) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, _Allocator) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_map(_InputIterator, _InputIterator, + typename unordered_map::size_type, + _Hash, _Allocator) + -> unordered_map<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, _Hash, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + unordered_map(initializer_list>, + typename unordered_map::size_type, + _Allocator) + -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_map(initializer_list>, _Allocator) + -> unordered_map<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_map(initializer_list>, + typename unordered_map::size_type, + _Hash, _Allocator) + -> unordered_map<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; + +#endif + + template + inline void + swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + + /// Class std::unordered_multimap with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator > > + class unordered_multimap + : public __gnu_debug::_Safe_container< + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>, _Alloc, + __gnu_debug::_Safe_unordered_container>, + public _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> + { + typedef _GLIBCXX_STD_C::unordered_multimap<_Key, _Tp, _Hash, + _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_container _Safe; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator< + _Base_iterator, unordered_multimap> iterator; + typedef __gnu_debug::_Safe_iterator< + _Base_const_iterator, unordered_multimap> const_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_local_iterator, unordered_multimap> local_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_const_local_iterator, unordered_multimap> const_local_iterator; + + unordered_multimap() = default; + + explicit + unordered_multimap(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_multimap(const unordered_multimap&) = default; + + unordered_multimap(const _Base& __x) + : _Base(__x) { } + + unordered_multimap(unordered_multimap&&) = default; + + explicit + unordered_multimap(const allocator_type& __a) + : _Base(__a) { } + + unordered_multimap(const unordered_multimap& __umap, + const allocator_type& __a) + : _Base(__umap, __a) { } + + unordered_multimap(unordered_multimap&& __umap, + const allocator_type& __a) + : _Safe(std::move(__umap._M_safe()), __a), + _Base(std::move(__umap._M_base()), __a) { } + + unordered_multimap(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + unordered_multimap(size_type __n, const allocator_type& __a) + : unordered_multimap(__n, hasher(), key_equal(), __a) + { } + + unordered_multimap(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__n, __hf, key_equal(), __a) + { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_multimap(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_multimap(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_multimap(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__l, __n, __hf, key_equal(), __a) + { } + + ~unordered_multimap() = default; + + unordered_multimap& + operator=(const unordered_multimap&) = default; + + unordered_multimap& + operator=(unordered_multimap&&) = default; + + unordered_multimap& + operator=(initializer_list __l) + { + this->_M_base() = __l; + this->_M_invalidate_all(); + return *this; + } + + void + swap(unordered_multimap& __x) + noexcept( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + iterator + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(value_type&& __x) + { + size_type __bucket_count = this->bucket_count(); + auto __it = _Base::insert(std::move(__x)); + _M_check_rehashed(__bucket_count); + return { __it, this }; + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2354. Unnecessary copying when inserting into maps with braced-init + iterator + insert(const_iterator __hint, value_type&& __x) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + auto __it = _Base::insert(__hint.base(), std::move(__x)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template::value>::type> + iterator + insert(_Pair&& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template::value>::type> + iterator + insert(const_iterator __hint, _Pair&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = + _Base::insert(__hint.base(), std::forward<_Pair>(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { _Base::insert(__l); } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + size_type __bucket_count = this->bucket_count(); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + + _M_check_rehashed(__bucket_count); + } + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + _Base_const_iterator __victim = __position.base(); + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) { return __it == __victim; } + ); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) { + return __it._M_curr() == __victim._M_cur; + }); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + iterator + insert(node_type&& __nh) + { return iterator(_Base::insert(std::move(__nh)), this); } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + std::pair<_Base_iterator, _Base_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> __res = + _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, _Base_iterator> __pair = + _Base::equal_range(__key); + for (_Base_iterator __victim = __pair.first; __victim != __pair.second;) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + _Base::erase(__victim++); + ++__ret; + } + _M_check_rehashed(__bucket_count); + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__it.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_curr() == __tmp._M_cur; }); + } + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__first.base(), __last.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + this->_M_invalidate_locals(); + } + }; + +#if __cpp_deduction_guides >= 201606 + + template>, + typename _Pred = equal_to<__iter_key_t<_InputIterator>>, + typename _Allocator = allocator<__iter_to_alloc_t<_InputIterator>>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, + unordered_multimap::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, _Hash, _Pred, + _Allocator>; + + template, + typename _Pred = equal_to<_Key>, + typename _Allocator = allocator>, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(initializer_list>, + unordered_multimap::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multimap<_Key, _Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, + unordered_multimap::size_type, _Allocator) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, _Allocator) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, + hash<__iter_key_t<_InputIterator>>, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multimap(_InputIterator, _InputIterator, + unordered_multimap::size_type, _Hash, + _Allocator) + -> unordered_multimap<__iter_key_t<_InputIterator>, + __iter_val_t<_InputIterator>, _Hash, + equal_to<__iter_key_t<_InputIterator>>, _Allocator>; + + template> + unordered_multimap(initializer_list>, + unordered_multimap::size_type, + _Allocator) + -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_multimap(initializer_list>, _Allocator) + -> unordered_multimap<_Key, _Tp, hash<_Key>, equal_to<_Key>, _Allocator>; + + template> + unordered_multimap(initializer_list>, + unordered_multimap::size_type, + _Hash, _Allocator) + -> unordered_multimap<_Key, _Tp, _Hash, equal_to<_Key>, _Allocator>; + +#endif + + template + inline void + swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +} // namespace __debug +} // namespace std + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/unordered_set new file mode 100644 index 000000000..9b2ac9d69 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/unordered_set @@ -0,0 +1,1165 @@ +// Debugging unordered_set/unordered_multiset implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/unordered_set + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_UNORDERED_SET +#define _GLIBCXX_DEBUG_UNORDERED_SET 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else +# include + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::unordered_set with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value> > + class unordered_set + : public __gnu_debug::_Safe_container< + unordered_set<_Value, _Hash, _Pred, _Alloc>, _Alloc, + __gnu_debug::_Safe_unordered_container>, + public _GLIBCXX_STD_C::unordered_set<_Value, _Hash, _Pred, _Alloc> + { + typedef _GLIBCXX_STD_C::unordered_set< + _Value, _Hash, _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_container< + unordered_set, _Alloc, __gnu_debug::_Safe_unordered_container> _Safe; + + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator< + _Base_iterator, unordered_set> iterator; + typedef __gnu_debug::_Safe_iterator< + _Base_const_iterator, unordered_set> const_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_local_iterator, unordered_set> local_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_const_local_iterator, unordered_set> const_local_iterator; + + unordered_set() = default; + + explicit + unordered_set(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_set(const unordered_set&) = default; + + unordered_set(const _Base& __x) + : _Base(__x) { } + + unordered_set(unordered_set&&) = default; + + explicit + unordered_set(const allocator_type& __a) + : _Base(__a) { } + + unordered_set(const unordered_set& __uset, + const allocator_type& __a) + : _Base(__uset, __a) { } + + unordered_set(unordered_set&& __uset, + const allocator_type& __a) + : _Safe(std::move(__uset._M_safe()), __a), + _Base(std::move(__uset._M_base()), __a) { } + + unordered_set(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + unordered_set(size_type __n, const allocator_type& __a) + : unordered_set(__n, hasher(), key_equal(), __a) + { } + + unordered_set(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__n, __hf, key_equal(), __a) + { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_set(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_set(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_set(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__l, __n, __hf, key_equal(), __a) + { } + + ~unordered_set() = default; + + unordered_set& + operator=(const unordered_set&) = default; + + unordered_set& + operator=(unordered_set&&) = default; + + unordered_set& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + return *this; + } + + void + swap(unordered_set& __x) + noexcept( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + std::pair + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + std::pair + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res + = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + std::pair + insert(value_type&& __obj) + { + size_type __bucket_count = this->bucket_count(); + std::pair<_Base_iterator, bool> __res + = _Base::insert(std::move(__obj)); + _M_check_rehashed(__bucket_count); + return std::make_pair(iterator(__res.first, this), __res.second); + } + + iterator + insert(const_iterator __hint, value_type&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { + size_type __bucket_count = this->bucket_count(); + _Base::insert(__l); + _M_check_rehashed(__bucket_count); + } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + size_type __bucket_count = this->bucket_count(); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + + _M_check_rehashed(__bucket_count); + } + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + using insert_return_type = _Node_insert_return; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + _Base_const_iterator __victim = __position.base(); + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) { return __it == __victim; } + ); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) { + return __it._M_curr() == __victim._M_cur; + }); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + insert_return_type + insert(node_type&& __nh) + { + auto __ret = _Base::insert(std::move(__nh)); + iterator __pos = iterator(__ret.position, this); + return { __pos, __ret.inserted, std::move(__ret.node) }; + } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + std::pair<_Base_iterator, _Base_iterator> __res + = _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> + __res = _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + _Base_iterator __victim(_Base::find(__key)); + if (__victim != _Base::end()) + { + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base::erase(__victim); + _M_check_rehashed(__bucket_count); + __ret = 1; + } + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__it.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if( + [__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_curr() == __tmp._M_cur; }); + } + size_type __bucket_count = this->bucket_count(); + _Base_iterator __next = _Base::erase(__first.base(), + __last.base()); + _M_check_rehashed(__bucket_count); + return iterator(__next, this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + this->_M_invalidate_locals(); + } + }; + +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Pred = + equal_to::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_set(_InputIterator, _InputIterator, + unordered_set::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_set::value_type, + _Hash, _Pred, _Allocator>; + + template, + typename _Pred = equal_to<_Tp>, + typename _Allocator = allocator<_Tp>, + typename = _RequireAllocator<_Allocator>> + unordered_set(initializer_list<_Tp>, + unordered_set::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), _Allocator = _Allocator()) + -> unordered_set<_Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_set(_InputIterator, _InputIterator, + unordered_set::size_type, _Allocator) + -> unordered_set::value_type, + hash< + typename iterator_traits<_InputIterator>::value_type>, + equal_to< + typename iterator_traits<_InputIterator>::value_type>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_set(_InputIterator, _InputIterator, + unordered_set::size_type, + _Hash, _Allocator) + -> unordered_set::value_type, + _Hash, + equal_to< + typename iterator_traits<_InputIterator>::value_type>, + _Allocator>; + + template> + unordered_set(initializer_list<_Tp>, + unordered_set::size_type, _Allocator) + -> unordered_set<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; + + template> + unordered_set(initializer_list<_Tp>, + unordered_set::size_type, _Hash, _Allocator) + -> unordered_set<_Tp, _Hash, equal_to<_Tp>, _Allocator>; + +#endif + + template + inline void + swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + + + /// Class std::unordered_multiset with safety/checking/debug instrumentation. + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value> > + class unordered_multiset + : public __gnu_debug::_Safe_container< + unordered_multiset<_Value, _Hash, _Pred, _Alloc>, _Alloc, + __gnu_debug::_Safe_unordered_container>, + public _GLIBCXX_STD_C::unordered_multiset<_Value, _Hash, _Pred, _Alloc> + { + typedef _GLIBCXX_STD_C::unordered_multiset< + _Value, _Hash, _Pred, _Alloc> _Base; + typedef __gnu_debug::_Safe_container _Safe; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_local_iterator + _Base_const_local_iterator; + typedef typename _Base::local_iterator _Base_local_iterator; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + + typedef __gnu_debug::_Safe_iterator< + _Base_iterator, unordered_multiset> iterator; + typedef __gnu_debug::_Safe_iterator< + _Base_const_iterator, unordered_multiset> const_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_local_iterator, unordered_multiset> local_iterator; + typedef __gnu_debug::_Safe_local_iterator< + _Base_const_local_iterator, unordered_multiset> const_local_iterator; + + unordered_multiset() = default; + + explicit + unordered_multiset(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __n, + __hf, __eql, __a) { } + + unordered_multiset(const unordered_multiset&) = default; + + unordered_multiset(const _Base& __x) + : _Base(__x) { } + + unordered_multiset(unordered_multiset&&) = default; + + explicit + unordered_multiset(const allocator_type& __a) + : _Base(__a) { } + + unordered_multiset(const unordered_multiset& __uset, + const allocator_type& __a) + : _Base(__uset, __a) { } + + unordered_multiset(unordered_multiset&& __uset, + const allocator_type& __a) + : _Safe(std::move(__uset._M_safe()), __a), + _Base(std::move(__uset._M_base()), __a) { } + + unordered_multiset(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + unordered_multiset(size_type __n, const allocator_type& __a) + : unordered_multiset(__n, hasher(), key_equal(), __a) + { } + + unordered_multiset(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__n, __hf, key_equal(), __a) + { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_multiset(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__l, __n, __hf, key_equal(), __a) + { } + + ~unordered_multiset() = default; + + unordered_multiset& + operator=(const unordered_multiset&) = default; + + unordered_multiset& + operator=(unordered_multiset&&) = default; + + unordered_multiset& + operator=(initializer_list __l) + { + this->_M_base() = __l; + this->_M_invalidate_all(); + return *this; + } + + void + swap(unordered_multiset& __x) + noexcept( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + } + + void + clear() noexcept + { + _Base::clear(); + this->_M_invalidate_all(); + } + + iterator + begin() noexcept + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const noexcept + { return const_iterator(_Base::begin(), this); } + + iterator + end() noexcept + { return iterator(_Base::end(), this); } + + const_iterator + end() const noexcept + { return const_iterator(_Base::end(), this); } + + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + // local versions + local_iterator + begin(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::begin(__b), this); + } + + local_iterator + end(size_type __b) + { + __glibcxx_check_bucket_index(__b); + return local_iterator(_Base::end(__b), this); + } + + const_local_iterator + begin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::begin(__b), this); + } + + const_local_iterator + end(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::end(__b), this); + } + + const_local_iterator + cbegin(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cbegin(__b), this); + } + + const_local_iterator + cend(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return const_local_iterator(_Base::cend(__b), this); + } + + size_type + bucket_size(size_type __b) const + { + __glibcxx_check_bucket_index(__b); + return _Base::bucket_size(__b); + } + + float + max_load_factor() const noexcept + { return _Base::max_load_factor(); } + + void + max_load_factor(float __f) + { + __glibcxx_check_max_load_factor(__f); + _Base::max_load_factor(__f); + } + + template + iterator + emplace(_Args&&... __args) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it + = _Base::emplace(std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + template + iterator + emplace_hint(const_iterator __hint, _Args&&... __args) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::emplace_hint(__hint.base(), + std::forward<_Args>(__args)...); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const value_type& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const_iterator __hint, const value_type& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), __obj); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(value_type&& __obj) + { + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(std::move(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + iterator + insert(const_iterator __hint, value_type&& __obj) + { + __glibcxx_check_insert(__hint); + size_type __bucket_count = this->bucket_count(); + _Base_iterator __it = _Base::insert(__hint.base(), std::move(__obj)); + _M_check_rehashed(__bucket_count); + return iterator(__it, this); + } + + void + insert(std::initializer_list __l) + { + size_type __bucket_count = this->bucket_count(); + _Base::insert(__l); + _M_check_rehashed(__bucket_count); + } + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + size_type __bucket_count = this->bucket_count(); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__first, __last); + + _M_check_rehashed(__bucket_count); + } + +#if __cplusplus > 201402L + using node_type = typename _Base::node_type; + + node_type + extract(const_iterator __position) + { + __glibcxx_check_erase(__position); + _Base_const_iterator __victim = __position.base(); + this->_M_invalidate_if( + [__victim](_Base_const_iterator __it) { return __it == __victim; } + ); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) { + return __it._M_curr() == __victim._M_cur; + }); + return _Base::extract(__position.base()); + } + + node_type + extract(const key_type& __key) + { + const auto __position = find(__key); + if (__position != end()) + return extract(__position); + return {}; + } + + iterator + insert(node_type&& __nh) + { return iterator(_Base::insert(std::move(__nh)), this); } + + iterator + insert(const_iterator __hint, node_type&& __nh) + { + __glibcxx_check_insert(__hint); + return iterator(_Base::insert(__hint.base(), std::move(__nh)), this); + } + + using _Base::merge; +#endif // C++17 + + iterator + find(const key_type& __key) + { return iterator(_Base::find(__key), this); } + + const_iterator + find(const key_type& __key) const + { return const_iterator(_Base::find(__key), this); } + + std::pair + equal_range(const key_type& __key) + { + std::pair<_Base_iterator, _Base_iterator> __res + = _Base::equal_range(__key); + return std::make_pair(iterator(__res.first, this), + iterator(__res.second, this)); + } + + std::pair + equal_range(const key_type& __key) const + { + std::pair<_Base_const_iterator, _Base_const_iterator> + __res = _Base::equal_range(__key); + return std::make_pair(const_iterator(__res.first, this), + const_iterator(__res.second, this)); + } + + size_type + erase(const key_type& __key) + { + size_type __ret(0); + std::pair<_Base_iterator, _Base_iterator> __pair = + _Base::equal_range(__key); + for (_Base_iterator __victim = __pair.first; __victim != __pair.second;) + { + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + _Base::erase(__victim++); + ++__ret; + } + return __ret; + } + + iterator + erase(const_iterator __it) + { + __glibcxx_check_erase(__it); + _Base_const_iterator __victim = __it.base(); + this->_M_invalidate_if([__victim](_Base_const_iterator __it) + { return __it == __victim; }); + this->_M_invalidate_local_if( + [__victim](_Base_const_local_iterator __it) + { return __it._M_curr() == __victim._M_cur; }); + return iterator(_Base::erase(__it.base()), this); + } + + iterator + erase(iterator __it) + { return erase(const_iterator(__it)); } + + iterator + erase(const_iterator __first, const_iterator __last) + { + __glibcxx_check_erase_range(__first, __last); + for (_Base_const_iterator __tmp = __first.base(); + __tmp != __last.base(); ++__tmp) + { + _GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(), + _M_message(__gnu_debug::__msg_valid_range) + ._M_iterator(__first, "first") + ._M_iterator(__last, "last")); + this->_M_invalidate_if([__tmp](_Base_const_iterator __it) + { return __it == __tmp; }); + this->_M_invalidate_local_if( + [__tmp](_Base_const_local_iterator __it) + { return __it._M_curr() == __tmp._M_cur; }); + } + return iterator(_Base::erase(__first.base(), + __last.base()), this); + } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + private: + void + _M_check_rehashed(size_type __prev_count) + { + if (__prev_count != this->bucket_count()) + this->_M_invalidate_locals(); + } + }; + +#if __cpp_deduction_guides >= 201606 + + template::value_type>, + typename _Pred = + equal_to::value_type>, + typename _Allocator = + allocator::value_type>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(_InputIterator, _InputIterator, + unordered_multiset::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multiset::value_type, + _Hash, _Pred, _Allocator>; + + template, + typename _Pred = equal_to<_Tp>, + typename _Allocator = allocator<_Tp>, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(initializer_list<_Tp>, + unordered_multiset::size_type = {}, + _Hash = _Hash(), _Pred = _Pred(), + _Allocator = _Allocator()) + -> unordered_multiset<_Tp, _Hash, _Pred, _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(_InputIterator, _InputIterator, + unordered_multiset::size_type, _Allocator) + -> unordered_multiset::value_type, + hash::value_type>, + equal_to::value_type>, + _Allocator>; + + template, + typename = _RequireAllocator<_Allocator>> + unordered_multiset(_InputIterator, _InputIterator, + unordered_multiset::size_type, + _Hash, _Allocator) + -> unordered_multiset::value_type, + _Hash, + equal_to< + typename + iterator_traits<_InputIterator>::value_type>, + _Allocator>; + + template> + unordered_multiset(initializer_list<_Tp>, + unordered_multiset::size_type, _Allocator) + -> unordered_multiset<_Tp, hash<_Tp>, equal_to<_Tp>, _Allocator>; + + template> + unordered_multiset(initializer_list<_Tp>, + unordered_multiset::size_type, _Hash, _Allocator) + -> unordered_multiset<_Tp, _Hash, equal_to<_Tp>, _Allocator>; + +#endif + + template + inline void + swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return __x._M_base() == __y._M_base(); } + + template + inline bool + operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +} // namespace __debug +} // namespace std + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/vector new file mode 100644 index 000000000..528926537 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/debug/vector @@ -0,0 +1,804 @@ +// Debugging vector implementation -*- C++ -*- + +// Copyright (C) 2003-2018 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 +// . + +/** @file debug/vector + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_DEBUG_VECTOR +#define _GLIBCXX_DEBUG_VECTOR 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include + +namespace __gnu_debug +{ + /** @brief Base class for Debug Mode vector. + * + * Adds information about the guaranteed capacity, which is useful for + * detecting code which relies on non-portable implementation details of + * the libstdc++ reallocation policy. + */ + template + class _Safe_vector + { + typedef typename _BaseSequence::size_type size_type; + + const _SafeSequence& + _M_seq() const { return *static_cast(this); } + + protected: + _Safe_vector() _GLIBCXX_NOEXCEPT + : _M_guaranteed_capacity(0) + { _M_update_guaranteed_capacity(); } + + _Safe_vector(const _Safe_vector&) _GLIBCXX_NOEXCEPT + : _M_guaranteed_capacity(0) + { _M_update_guaranteed_capacity(); } + + _Safe_vector(size_type __n) _GLIBCXX_NOEXCEPT + : _M_guaranteed_capacity(__n) + { } + +#if __cplusplus >= 201103L + _Safe_vector(_Safe_vector&& __x) noexcept + : _Safe_vector() + { __x._M_guaranteed_capacity = 0; } + + _Safe_vector& + operator=(const _Safe_vector&) noexcept + { + _M_update_guaranteed_capacity(); + return *this; + } + + _Safe_vector& + operator=(_Safe_vector&& __x) noexcept + { + _M_update_guaranteed_capacity(); + __x._M_guaranteed_capacity = 0; + return *this; + } +#endif + + size_type _M_guaranteed_capacity; + + bool + _M_requires_reallocation(size_type __elements) const _GLIBCXX_NOEXCEPT + { return __elements > _M_seq().capacity(); } + + void + _M_update_guaranteed_capacity() _GLIBCXX_NOEXCEPT + { + if (_M_seq().size() > _M_guaranteed_capacity) + _M_guaranteed_capacity = _M_seq().size(); + } + }; +} + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __debug +{ + /// Class std::vector with safety/checking/debug instrumentation. + template > + class vector + : public __gnu_debug::_Safe_container< + vector<_Tp, _Allocator>, _Allocator, __gnu_debug::_Safe_sequence>, + public _GLIBCXX_STD_C::vector<_Tp, _Allocator>, + public __gnu_debug::_Safe_vector< + vector<_Tp, _Allocator>, + _GLIBCXX_STD_C::vector<_Tp, _Allocator> > + { + typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base; + typedef __gnu_debug::_Safe_container< + vector, _Allocator, __gnu_debug::_Safe_sequence> _Safe; + typedef __gnu_debug::_Safe_vector _Safe_vector; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + typedef __gnu_debug::_Equal_to<_Base_const_iterator> _Equal; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __gnu_debug::_Safe_iterator< + _Base_iterator, vector> iterator; + typedef __gnu_debug::_Safe_iterator< + _Base_const_iterator, vector> const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.4.1 construct/copy/destroy: + +#if __cplusplus < 201103L + vector() _GLIBCXX_NOEXCEPT + : _Base() { } +#else + vector() = default; +#endif + + explicit + vector(const _Allocator& __a) _GLIBCXX_NOEXCEPT + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + vector(size_type __n, const _Allocator& __a = _Allocator()) + : _Base(__n, __a), _Safe_vector(__n) { } + + vector(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + vector(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + vector(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__gnu_debug::__base(__gnu_debug::__check_valid_range(__first, + __last)), + __gnu_debug::__base(__last), __a) { } + +#if __cplusplus < 201103L + vector(const vector& __x) + : _Base(__x) { } + + ~vector() _GLIBCXX_NOEXCEPT { } +#else + vector(const vector&) = default; + vector(vector&&) = default; + + vector(const vector& __x, const allocator_type& __a) + : _Base(__x, __a) { } + + vector(vector&& __x, const allocator_type& __a) + : _Safe(std::move(__x._M_safe()), __a), + _Base(std::move(__x._M_base()), __a), + _Safe_vector(std::move(__x)) { } + + vector(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } + + ~vector() = default; +#endif + + /// Construction from a normal-mode vector + vector(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + vector& + operator=(const vector& __x) + { + this->_M_safe() = __x; + _M_base() = __x; + this->_M_update_guaranteed_capacity(); + return *this; + } +#else + vector& + operator=(const vector&) = default; + + vector& + operator=(vector&&) = default; + + vector& + operator=(initializer_list __l) + { + _M_base() = __l; + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + return *this; + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + assign(_InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_valid_range2(__first, __last, __dist); + + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::assign(__gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::assign(__first, __last); + + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } + + void + assign(size_type __n, const _Tp& __u) + { + _Base::assign(__n, __u); + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } + +#if __cplusplus >= 201103L + void + assign(initializer_list __l) + { + _Base::assign(__l); + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } +#endif + + using _Base::get_allocator; + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 23.2.4.2 capacity: + using _Base::size; + using _Base::max_size; + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + bool __realloc = this->_M_requires_reallocation(__sz); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + _Base::resize(__sz); + if (__realloc) + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } + + void + resize(size_type __sz, const _Tp& __c) + { + bool __realloc = this->_M_requires_reallocation(__sz); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + _Base::resize(__sz, __c); + if (__realloc) + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + bool __realloc = this->_M_requires_reallocation(__sz); + if (__sz < this->size()) + this->_M_invalidate_after_nth(__sz); + _Base::resize(__sz, __c); + if (__realloc) + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } +#endif + +#if __cplusplus >= 201103L + void + shrink_to_fit() + { + if (_Base::_M_shrink_to_fit()) + { + this->_M_guaranteed_capacity = _Base::capacity(); + this->_M_invalidate_all(); + } + } +#endif + + size_type + capacity() const _GLIBCXX_NOEXCEPT + { +#ifdef _GLIBCXX_DEBUG_PEDANTIC + return this->_M_guaranteed_capacity; +#else + return _Base::capacity(); +#endif + } + + using _Base::empty; + + void + reserve(size_type __n) + { + bool __realloc = this->_M_requires_reallocation(__n); + _Base::reserve(__n); + if (__n > this->_M_guaranteed_capacity) + this->_M_guaranteed_capacity = __n; + if (__realloc) + this->_M_invalidate_all(); + } + + // element access: + reference + operator[](size_type __n) _GLIBCXX_NOEXCEPT + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + const_reference + operator[](size_type __n) const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_subscript(__n); + return _M_base()[__n]; + } + + using _Base::at; + + reference + front() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + const_reference + front() const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::front(); + } + + reference + back() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + const_reference + back() const _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + return _Base::back(); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // DR 464. Suggestion for new member functions in standard containers. + using _Base::data; + + // 23.2.4.3 modifiers: + void + push_back(const _Tp& __x) + { + bool __realloc = this->_M_requires_reallocation(this->size() + 1); + _Base::push_back(__x); + if (__realloc) + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); + } + +#if __cplusplus >= 201103L + template + typename __gnu_cxx::__enable_if::__value, + void>::__type + push_back(_Tp&& __x) + { emplace_back(std::move(__x)); } + + template +#if __cplusplus > 201402L + reference +#else + void +#endif + emplace_back(_Args&&... __args) + { + bool __realloc = this->_M_requires_reallocation(this->size() + 1); + _Base::emplace_back(std::forward<_Args>(__args)...); + if (__realloc) + this->_M_invalidate_all(); + this->_M_update_guaranteed_capacity(); +#if __cplusplus > 201402L + return back(); +#endif + } +#endif + + void + pop_back() _GLIBCXX_NOEXCEPT + { + __glibcxx_check_nonempty(); + this->_M_invalidate_if(_Equal(--_Base::end())); + _Base::pop_back(); + } + +#if __cplusplus >= 201103L + template + iterator + emplace(const_iterator __position, _Args&&... __args) + { + __glibcxx_check_insert(__position); + bool __realloc = this->_M_requires_reallocation(this->size() + 1); + difference_type __offset = __position.base() - _Base::begin(); + _Base_iterator __res = _Base::emplace(__position.base(), + std::forward<_Args>(__args)...); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + this->_M_update_guaranteed_capacity(); + return iterator(__res, this); + } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __position, const _Tp& __x) +#else + insert(iterator __position, const _Tp& __x) +#endif + { + __glibcxx_check_insert(__position); + bool __realloc = this->_M_requires_reallocation(this->size() + 1); + difference_type __offset = __position.base() - _Base::begin(); + _Base_iterator __res = _Base::insert(__position.base(), __x); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + this->_M_update_guaranteed_capacity(); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + template + typename __gnu_cxx::__enable_if::__value, + iterator>::__type + insert(const_iterator __position, _Tp&& __x) + { return emplace(__position, std::move(__x)); } + + iterator + insert(const_iterator __position, initializer_list __l) + { return this->insert(__position, __l.begin(), __l.end()); } +#endif + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + bool __realloc = this->_M_requires_reallocation(this->size() + __n); + difference_type __offset = __position.base() - _Base::cbegin(); + _Base_iterator __res = _Base::insert(__position.base(), __n, __x); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + this->_M_update_guaranteed_capacity(); + return iterator(__res, this); + } +#else + void + insert(iterator __position, size_type __n, const _Tp& __x) + { + __glibcxx_check_insert(__position); + bool __realloc = this->_M_requires_reallocation(this->size() + __n); + difference_type __offset = __position.base() - _Base::begin(); + _Base::insert(__position.base(), __n, __x); + if (__realloc) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + this->_M_update_guaranteed_capacity(); + } +#endif + +#if __cplusplus >= 201103L + template> + iterator + insert(const_iterator __position, + _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__position, __first, __last, __dist); + + /* Hard to guess if invalidation will occur, because __last + - __first can't be calculated in all cases, so we just + punt here by checking if it did occur. */ + _Base_iterator __old_begin = _M_base().begin(); + difference_type __offset = __position.base() - _Base::cbegin(); + _Base_iterator __res; + if (__dist.second >= __gnu_debug::__dp_sign) + __res = _Base::insert(__position.base(), + __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + __res = _Base::insert(__position.base(), __first, __last); + + if (_M_base().begin() != __old_begin) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + this->_M_update_guaranteed_capacity(); + return iterator(__res, this); + } +#else + template + void + insert(iterator __position, + _InputIterator __first, _InputIterator __last) + { + typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist; + __glibcxx_check_insert_range(__position, __first, __last, __dist); + + /* Hard to guess if invalidation will occur, because __last + - __first can't be calculated in all cases, so we just + punt here by checking if it did occur. */ + _Base_iterator __old_begin = _M_base().begin(); + difference_type __offset = __position.base() - _Base::begin(); + if (__dist.second >= __gnu_debug::__dp_sign) + _Base::insert(__position.base(), __gnu_debug::__unsafe(__first), + __gnu_debug::__unsafe(__last)); + else + _Base::insert(__position.base(), __first, __last); + + if (_M_base().begin() != __old_begin) + this->_M_invalidate_all(); + else + this->_M_invalidate_after_nth(__offset); + this->_M_update_guaranteed_capacity(); + } +#endif + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __position) +#else + erase(iterator __position) +#endif + { + __glibcxx_check_erase(__position); + difference_type __offset = __position.base() - _Base::begin(); + _Base_iterator __res = _Base::erase(__position.base()); + this->_M_invalidate_after_nth(__offset); + return iterator(__res, this); + } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __first, const_iterator __last) +#else + erase(iterator __first, iterator __last) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + __glibcxx_check_erase_range(__first, __last); + + if (__first.base() != __last.base()) + { + difference_type __offset = __first.base() - _Base::begin(); + _Base_iterator __res = _Base::erase(__first.base(), + __last.base()); + this->_M_invalidate_after_nth(__offset); + return iterator(__res, this); + } + else +#if __cplusplus >= 201103L + return begin() + (__first.base() - cbegin().base()); +#else + return __first; +#endif + } + + void + swap(vector& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Safe::_M_swap(__x); + _Base::swap(__x); + std::swap(this->_M_guaranteed_capacity, __x._M_guaranteed_capacity); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + _Base::clear(); + this->_M_invalidate_all(); + } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + void + _M_invalidate_after_nth(difference_type __n) _GLIBCXX_NOEXCEPT + { + typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth; + this->_M_invalidate_if(_After_nth(__n, _Base::begin())); + } + }; + + template + inline bool + operator==(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +#if __cpp_deduction_guides >= 201606 + template::value_type, + typename _Allocator = allocator<_ValT>, + typename = _RequireInputIter<_InputIterator>, + typename = _RequireAllocator<_Allocator>> + vector(_InputIterator, _InputIterator, _Allocator = _Allocator()) + -> vector<_ValT, _Allocator>; +#endif + +} // namespace __debug + +#if __cplusplus >= 201103L +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // DR 1182. + /// std::hash specialization for vector. + template + struct hash<__debug::vector> + : public __hash_base> + { + size_t + operator()(const __debug::vector& __b) const noexcept + { return std::hash<_GLIBCXX_STD_C::vector>()(__b); } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +#endif + +} // namespace std + +namespace __gnu_debug +{ + template + struct _Is_contiguous_sequence > + : std::__true_type + { }; + + template + struct _Is_contiguous_sequence > + : std::__false_type + { }; +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/decimal/decimal b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/decimal/decimal similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/decimal/decimal rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/decimal/decimal index b167a7ac7..21a00d054 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/decimal/decimal +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/decimal/decimal @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -42,6 +42,8 @@ that is currently not available. namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + /** * @defgroup decimal Decimal Floating-Point Arithmetic * @ingroup numerics @@ -55,8 +57,6 @@ namespace std _GLIBCXX_VISIBILITY(default) */ namespace decimal { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - class decimal32; class decimal64; class decimal128; @@ -483,10 +483,10 @@ namespace decimal }; #define _GLIBCXX_USE_DECIMAL_ 1 - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace decimal // @} group decimal + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/decimal/decimal.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/decimal/decimal.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/decimal/decimal.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/decimal/decimal.h index ede6e57c9..2af6eb507 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/decimal/decimal.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/decimal/decimal.h @@ -1,6 +1,6 @@ // decimal classes -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -37,10 +37,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace decimal { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - // ISO/IEC TR 24733 3.2.[234].1 Construct/copy/destroy. inline decimal32::decimal32(decimal64 __r) : __val(__r.__getval()) {} @@ -461,8 +461,9 @@ namespace decimal #undef _DEFINE_DECIMAL_COMPARISON_LHS #undef _DEFINE_DECIMAL_COMPARISON_RHS #undef _DEFINE_DECIMAL_COMPARISONS - _GLIBCXX_END_NAMESPACE_VERSION } // namespace decimal + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif /* _GLIBCXX_DECIMAL_IMPL */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/deque new file mode 100644 index 000000000..896ec8aad --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/deque @@ -0,0 +1,76 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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) 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/deque + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_DEQUE +#define _GLIBCXX_DEQUE 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_DEQUE */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/exception b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/exception similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/exception rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/exception index e51d31c93..d81e52634 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/exception +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/exception @@ -1,6 +1,6 @@ // Exception Handling support header for -*- C++ -*- -// Copyright (C) 1995-2017 Free Software Foundation, Inc. +// Copyright (C) 1995-2018 Free Software Foundation, Inc. // // This file is part of GCC. // @@ -98,10 +98,11 @@ namespace std * %exception can result in a call of @c terminate() * (15.5.1).' */ + _GLIBCXX17_DEPRECATED bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); -#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++98 -#define __cpp_lib_uncaught_exceptions 201411 +#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++98 +#define __cpp_lib_uncaught_exceptions 201411L /// The number of uncaught exceptions. int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/algorithm new file mode 100644 index 000000000..4c51efb1c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/algorithm @@ -0,0 +1,107 @@ +// -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/algorithm + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_ALGORITHM +#define _GLIBCXX_EXPERIMENTAL_ALGORITHM 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline _ForwardIterator + search(_ForwardIterator __first, _ForwardIterator __last, + const _Searcher& __searcher) + { return __searcher(__first, __last); } + +#define __cpp_lib_experimental_sample 201402 + + /// Take a random sample from a population. + template + _SampleIterator + sample(_PopulationIterator __first, _PopulationIterator __last, + _SampleIterator __out, _Distance __n, + _UniformRandomNumberGenerator&& __g) + { + using __pop_cat = typename + std::iterator_traits<_PopulationIterator>::iterator_category; + using __samp_cat = typename + std::iterator_traits<_SampleIterator>::iterator_category; + + static_assert( + __or_, + is_convertible<__samp_cat, random_access_iterator_tag>>::value, + "output range must use a RandomAccessIterator when input range" + " does not meet the ForwardIterator requirements"); + + static_assert(is_integral<_Distance>::value, + "sample size must be an integer type"); + + typename iterator_traits<_PopulationIterator>::difference_type __d = __n; + return std::__sample(__first, __last, __pop_cat{}, __out, __samp_cat{}, + __d, + std::forward<_UniformRandomNumberGenerator>(__g)); + } + + template + inline _SampleIterator + sample(_PopulationIterator __first, _PopulationIterator __last, + _SampleIterator __out, _Distance __n) + { + return experimental::sample(__first, __last, __out, __n, + _S_randint_engine()); + } + + template + inline void + shuffle(_RandomAccessIterator __first, _RandomAccessIterator __last) + { return std::shuffle(__first, __last, _S_randint_engine()); } + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_ALGORITHM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/any b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/any new file mode 100644 index 000000000..fe5c822dd --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/any @@ -0,0 +1,564 @@ +// -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/any + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_ANY +#define _GLIBCXX_EXPERIMENTAL_ANY 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ + /** + * @defgroup any Type-safe container of any type + * @ingroup experimental + * + * A type-safe container for single values of value types, as + * described in n3804 "Any Library Proposal (Revision 3)". + * + * @{ + */ + +#define __cpp_lib_experimental_any 201411 + + /** + * @brief Exception class thrown by a failed @c any_cast + * @ingroup exceptions + */ + class bad_any_cast : public bad_cast + { + public: + virtual const char* what() const noexcept { return "bad any_cast"; } + }; + + [[gnu::noreturn]] inline void __throw_bad_any_cast() + { +#if __cpp_exceptions + throw bad_any_cast{}; +#else + __builtin_abort(); +#endif + } + + /** + * @brief A type-safe container of any type. + * + * An @c any object's state is either empty or it stores a contained object + * of CopyConstructible type. + */ + class any + { + // Holds either pointer to a heap object or the contained object itself. + union _Storage + { + // This constructor intentionally doesn't initialize anything. + _Storage() = default; + + // Prevent trivial copies of this type, buffer might hold a non-POD. + _Storage(const _Storage&) = delete; + _Storage& operator=(const _Storage&) = delete; + + void* _M_ptr; + aligned_storage::type _M_buffer; + }; + + template, + bool _Fits = (sizeof(_Tp) <= sizeof(_Storage)) + && (alignof(_Tp) <= alignof(_Storage))> + using _Internal = std::integral_constant; + + template + struct _Manager_internal; // uses small-object optimization + + template + struct _Manager_external; // creates contained object on the heap + + template + using _Manager = conditional_t<_Internal<_Tp>::value, + _Manager_internal<_Tp>, + _Manager_external<_Tp>>; + + template> + using _Decay = enable_if_t::value, _Decayed>; + + public: + // construct/destruct + + /// Default constructor, creates an empty object. + any() noexcept : _M_manager(nullptr) { } + + /// Copy constructor, copies the state of @p __other + any(const any& __other) + { + if (__other.empty()) + _M_manager = nullptr; + else + { + _Arg __arg; + __arg._M_any = this; + __other._M_manager(_Op_clone, &__other, &__arg); + } + } + + /** + * @brief Move constructor, transfer the state from @p __other + * + * @post @c __other.empty() (this postcondition is a GNU extension) + */ + any(any&& __other) noexcept + { + if (__other.empty()) + _M_manager = nullptr; + else + { + _Arg __arg; + __arg._M_any = this; + __other._M_manager(_Op_xfer, &__other, &__arg); + } + } + + /// Construct with a copy of @p __value as the contained object. + template , + typename _Mgr = _Manager<_Tp>, + typename enable_if::value, + bool>::type = true> + any(_ValueType&& __value) + : _M_manager(&_Mgr::_S_manage) + { + _Mgr::_S_create(_M_storage, std::forward<_ValueType>(__value)); + static_assert(is_copy_constructible<_Tp>::value, + "The contained object must be CopyConstructible"); + } + + /// Construct with a copy of @p __value as the contained object. + template , + typename _Mgr = _Manager<_Tp>, + typename enable_if::value, + bool>::type = false> + any(_ValueType&& __value) + : _M_manager(&_Mgr::_S_manage) + { + _Mgr::_S_create(_M_storage, __value); + static_assert(is_copy_constructible<_Tp>::value, + "The contained object must be CopyConstructible"); + } + + /// Destructor, calls @c clear() + ~any() { clear(); } + + // assignments + + /// Copy the state of another object. + any& operator=(const any& __rhs) + { + *this = any(__rhs); + return *this; + } + + /** + * @brief Move assignment operator + * + * @post @c __rhs.empty() (not guaranteed for other implementations) + */ + any& operator=(any&& __rhs) noexcept + { + if (__rhs.empty()) + clear(); + else if (this != &__rhs) + { + clear(); + _Arg __arg; + __arg._M_any = this; + __rhs._M_manager(_Op_xfer, &__rhs, &__arg); + } + return *this; + } + + /// Store a copy of @p __rhs as the contained object. + template + enable_if_t>::value, any&> + operator=(_ValueType&& __rhs) + { + *this = any(std::forward<_ValueType>(__rhs)); + return *this; + } + + // modifiers + + /// If not empty, destroy the contained object. + void clear() noexcept + { + if (!empty()) + { + _M_manager(_Op_destroy, this, nullptr); + _M_manager = nullptr; + } + } + + /// Exchange state with another object. + void swap(any& __rhs) noexcept + { + if (empty() && __rhs.empty()) + return; + + if (!empty() && !__rhs.empty()) + { + if (this == &__rhs) + return; + + any __tmp; + _Arg __arg; + __arg._M_any = &__tmp; + __rhs._M_manager(_Op_xfer, &__rhs, &__arg); + __arg._M_any = &__rhs; + _M_manager(_Op_xfer, this, &__arg); + __arg._M_any = this; + __tmp._M_manager(_Op_xfer, &__tmp, &__arg); + } + else + { + any* __empty = empty() ? this : &__rhs; + any* __full = empty() ? &__rhs : this; + _Arg __arg; + __arg._M_any = __empty; + __full->_M_manager(_Op_xfer, __full, &__arg); + } + } + + // observers + + /// Reports whether there is a contained object or not. + bool empty() const noexcept { return _M_manager == nullptr; } + +#if __cpp_rtti + /// The @c typeid of the contained object, or @c typeid(void) if empty. + const type_info& type() const noexcept + { + if (empty()) + return typeid(void); + _Arg __arg; + _M_manager(_Op_get_type_info, this, &__arg); + return *__arg._M_typeinfo; + } +#endif + + template + static constexpr bool __is_valid_cast() + { return __or_, is_copy_constructible<_Tp>>::value; } + + private: + enum _Op { + _Op_access, _Op_get_type_info, _Op_clone, _Op_destroy, _Op_xfer + }; + + union _Arg + { + void* _M_obj; + const std::type_info* _M_typeinfo; + any* _M_any; + }; + + void (*_M_manager)(_Op, const any*, _Arg*); + _Storage _M_storage; + + template + friend enable_if_t::value, void*> + __any_caster(const any* __any); + + // Manage in-place contained object. + template + struct _Manager_internal + { + static void + _S_manage(_Op __which, const any* __anyp, _Arg* __arg); + + template + static void + _S_create(_Storage& __storage, _Up&& __value) + { + void* __addr = &__storage._M_buffer; + ::new (__addr) _Tp(std::forward<_Up>(__value)); + } + }; + + // Manage external contained object. + template + struct _Manager_external + { + static void + _S_manage(_Op __which, const any* __anyp, _Arg* __arg); + + template + static void + _S_create(_Storage& __storage, _Up&& __value) + { + __storage._M_ptr = new _Tp(std::forward<_Up>(__value)); + } + }; + }; + + /// Exchange the states of two @c any objects. + inline void swap(any& __x, any& __y) noexcept { __x.swap(__y); } + + /** + * @brief Access the contained object. + * + * @tparam _ValueType A const-reference or CopyConstructible type. + * @param __any The object to access. + * @return The contained object. + * @throw bad_any_cast If + * __any.type() != typeid(remove_reference_t<_ValueType>) + * + */ + template + inline _ValueType any_cast(const any& __any) + { + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + auto __p = any_cast>>(&__any); + if (__p) + return *__p; + __throw_bad_any_cast(); + } + + /** + * @brief Access the contained object. + * + * @tparam _ValueType A reference or CopyConstructible type. + * @param __any The object to access. + * @return The contained object. + * @throw bad_any_cast If + * __any.type() != typeid(remove_reference_t<_ValueType>) + * + * + * @{ + */ + template + inline _ValueType any_cast(any& __any) + { + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + auto __p = any_cast>(&__any); + if (__p) + return *__p; + __throw_bad_any_cast(); + } + + template::value + || is_lvalue_reference<_ValueType>::value, + bool>::type = true> + inline _ValueType any_cast(any&& __any) + { + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + auto __p = any_cast>(&__any); + if (__p) + return *__p; + __throw_bad_any_cast(); + } + + template::value + && !is_lvalue_reference<_ValueType>::value, + bool>::type = false> + inline _ValueType any_cast(any&& __any) + { + static_assert(any::__is_valid_cast<_ValueType>(), + "Template argument must be a reference or CopyConstructible type"); + auto __p = any_cast>(&__any); + if (__p) + return std::move(*__p); + __throw_bad_any_cast(); + } + // @} + + /// @cond undocumented + template + enable_if_t::value, void*> + __any_caster(const any* __any) + { + // any_cast returns non-null if __any->type() == typeid(T) and + // typeid(T) ignores cv-qualifiers so remove them: + using _Up = remove_cv_t<_Tp>; + // The contained value has a decayed type, so if decay_t is not U, + // then it's not possible to have a contained value of type U. + using __does_not_decay = is_same, _Up>; + // Only copy constructible types can be used for contained values. + using __is_copyable = is_copy_constructible<_Up>; + // If the type _Tp could never be stored in an any we don't want to + // instantiate _Manager<_Tp>, so use _Manager instead, which + // is explicitly specialized and has a no-op _S_manage function. + using _Vp = conditional_t<__and_<__does_not_decay, __is_copyable>::value, + _Up, any::_Op>; + // First try comparing function addresses, which works without RTTI + if (__any->_M_manager == &any::_Manager<_Vp>::_S_manage +#if __cpp_rtti + || __any->type() == typeid(_Tp) +#endif + ) + { + any::_Arg __arg; + __any->_M_manager(any::_Op_access, __any, &__arg); + return __arg._M_obj; + } + return nullptr; + } + + // This overload exists so that std::any_cast(a) is well-formed. + template + enable_if_t::value, _Tp*> + __any_caster(const any*) noexcept + { return nullptr; } + /// @endcond + + /** + * @brief Access the contained object. + * + * @tparam _ValueType The type of the contained object. + * @param __any A pointer to the object to access. + * @return The address of the contained object if + * __any != nullptr && __any.type() == typeid(_ValueType) + * , otherwise a null pointer. + * + * @{ + */ + template + inline const _ValueType* any_cast(const any* __any) noexcept + { + if (__any) + return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); + return nullptr; + } + + template + inline _ValueType* any_cast(any* __any) noexcept + { + if (__any) + return static_cast<_ValueType*>(__any_caster<_ValueType>(__any)); + return nullptr; + } + // @} + + template + void + any::_Manager_internal<_Tp>:: + _S_manage(_Op __which, const any* __any, _Arg* __arg) + { + // The contained object is in _M_storage._M_buffer + auto __ptr = reinterpret_cast(&__any->_M_storage._M_buffer); + switch (__which) + { + case _Op_access: + __arg->_M_obj = const_cast<_Tp*>(__ptr); + break; + case _Op_get_type_info: +#if __cpp_rtti + __arg->_M_typeinfo = &typeid(_Tp); +#endif + break; + case _Op_clone: + ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp(*__ptr); + __arg->_M_any->_M_manager = __any->_M_manager; + break; + case _Op_destroy: + __ptr->~_Tp(); + break; + case _Op_xfer: + ::new(&__arg->_M_any->_M_storage._M_buffer) _Tp + (std::move(*const_cast<_Tp*>(__ptr))); + __ptr->~_Tp(); + __arg->_M_any->_M_manager = __any->_M_manager; + const_cast(__any)->_M_manager = nullptr; + break; + } + } + + template + void + any::_Manager_external<_Tp>:: + _S_manage(_Op __which, const any* __any, _Arg* __arg) + { + // The contained object is *_M_storage._M_ptr + auto __ptr = static_cast(__any->_M_storage._M_ptr); + switch (__which) + { + case _Op_access: + __arg->_M_obj = const_cast<_Tp*>(__ptr); + break; + case _Op_get_type_info: +#if __cpp_rtti + __arg->_M_typeinfo = &typeid(_Tp); +#endif + break; + case _Op_clone: + __arg->_M_any->_M_storage._M_ptr = new _Tp(*__ptr); + __arg->_M_any->_M_manager = __any->_M_manager; + break; + case _Op_destroy: + delete __ptr; + break; + case _Op_xfer: + __arg->_M_any->_M_storage._M_ptr = __any->_M_storage._M_ptr; + __arg->_M_any->_M_manager = __any->_M_manager; + const_cast(__any)->_M_manager = nullptr; + break; + } + } + + // Dummy specialization used by __any_caster. + template<> + struct any::_Manager_internal + { + static void + _S_manage(_Op, const any*, _Arg*) { } + }; + + // @} group any +} // namespace fundamentals_v1 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_ANY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/array new file mode 100644 index 000000000..d93bd985d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/array @@ -0,0 +1,113 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/array + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_ARRAY +#define _GLIBCXX_EXPERIMENTAL_ARRAY 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_make_array 201505 + /** + * @defgroup make_array Array creation functions + * @ingroup experimental + * + * Array creation functions as described in N4529, + * Working Draft, C++ Extensions for Library Fundamentals, Version 2 + * + * @{ + */ + +template + struct __make_array_elem + { + using type = _Dest; + }; + +template + struct __make_array_elem + : common_type<_Types...> + { + template + struct __is_reference_wrapper : false_type + {}; + + template + struct __is_reference_wrapper> : true_type + {}; + + static_assert(!__or_<__is_reference_wrapper>...>::value, + "make_array must be used with an explicit target type when" + "any of the arguments is a reference_wrapper"); + }; + +template + constexpr + array::type, sizeof...(_Types)> + make_array(_Types&&... __t) + { + return {{ std::forward<_Types>(__t)... }}; + } + +template + constexpr array, _Nm> + __to_array(_Tp (&__a)[_Nm], index_sequence<_Idx...>) + { + return {{__a[_Idx]...}}; + } + +template + constexpr array, _Nm> + to_array(_Tp (&__a)[_Nm]) + noexcept(is_nothrow_constructible, _Tp&>::value) + { + return __to_array(__a, make_index_sequence<_Nm>{}); + } + + // @} group make_array +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/erase_if.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/erase_if.h similarity index 94% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/erase_if.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/erase_if.h index 7dc47dbb3..62ffbc130 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/bits/erase_if.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/erase_if.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 @@ -32,20 +32,19 @@ #pragma GCC system_header -#if __cplusplus <= 201103L -# include -#else +#if __cplusplus >= 201402L #include namespace std { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace experimental { inline namespace fundamentals_v2 { namespace __detail { -_GLIBCXX_BEGIN_NAMESPACE_VERSION template void __erase_nodes_if(_Container& __cont, _Predicate __pred) @@ -59,10 +58,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ++__iter; } } -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail } // inline namespace fundamentals_v2 } // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // C++14 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/lfts_config.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/lfts_config.h new file mode 100644 index 000000000..a93d93029 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/lfts_config.h @@ -0,0 +1,57 @@ +// Namespace declarations for Library Fundamentals TS -*- C++ -*- + +// Copyright (C) 2016-2018 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 +// . + +/** @file experimental/bits/lfts_config.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. + */ + +#if __cplusplus >= 201402L +#include + +#if _GLIBCXX_INLINE_VERSION +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace chrono +{ +namespace experimental +{ +inline namespace fundamentals_v1 { } +inline namespace fundamentals_v2 { } +} // namespace experimental +} // namespace chrono + +namespace experimental +{ +inline namespace fundamentals_v1 { } +inline namespace fundamentals_v2 { } +inline namespace literals { inline namespace string_view_literals { } } +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std +#endif +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/shared_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/shared_ptr.h new file mode 100644 index 000000000..6f006f401 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/shared_ptr.h @@ -0,0 +1,678 @@ +// Experimental shared_ptr with array support -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/bits/shared_ptr.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{experimental/memory} + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H +#define _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + // 8.2.1 + + template class shared_ptr; + template class weak_ptr; + template class enable_shared_from_this; + + template + constexpr bool __sp_compatible_v + = std::__sp_compatible_with<_Yp*, _Tp*>::value; + + template + constexpr bool __sp_is_constructible_v + = std::__sp_is_constructible<_Tp, _Yp>::value; + + template + class shared_ptr : public __shared_ptr<_Tp> + { + using _Base_type = __shared_ptr<_Tp>; + + public: + using element_type = typename _Base_type::element_type; + + private: + // Constraint for construction from a pointer of type _Yp*: + template + using _SafeConv = enable_if_t<__sp_is_constructible_v<_Tp, _Yp>>; + + template + using _Compatible + = enable_if_t<__sp_compatible_v<_Tp1, _Tp>, _Res>; + + template::pointer, + typename _Res = void> + using _UniqCompatible = enable_if_t< + __sp_compatible_v<_Tp1, _Tp> + && experimental::is_convertible_v<_Ptr, element_type*>, + _Res>; + + public: + + // 8.2.1.1, shared_ptr constructors + constexpr shared_ptr() noexcept = default; + + template> + explicit + shared_ptr(_Tp1* __p) : _Base_type(__p) + { _M_enable_shared_from_this_with(__p); } + + template> + shared_ptr(_Tp1* __p, _Deleter __d) + : _Base_type(__p, __d) + { _M_enable_shared_from_this_with(__p); } + + template> + shared_ptr(_Tp1* __p, _Deleter __d, _Alloc __a) + : _Base_type(__p, __d, __a) + { _M_enable_shared_from_this_with(__p); } + + template + shared_ptr(nullptr_t __p, _Deleter __d) + : _Base_type(__p, __d) { } + + template + shared_ptr(nullptr_t __p, _Deleter __d, _Alloc __a) + : _Base_type(__p, __d, __a) { } + + template + shared_ptr(const shared_ptr<_Tp1>& __r, element_type* __p) noexcept + : _Base_type(__r, __p) { } + + shared_ptr(const shared_ptr& __r) noexcept + : _Base_type(__r) { } + + template> + shared_ptr(const shared_ptr<_Tp1>& __r) noexcept + : _Base_type(__r) { } + + shared_ptr(shared_ptr&& __r) noexcept + : _Base_type(std::move(__r)) { } + + template> + shared_ptr(shared_ptr<_Tp1>&& __r) noexcept + : _Base_type(std::move(__r)) { } + + template> + explicit + shared_ptr(const weak_ptr<_Tp1>& __r) + : _Base_type(__r) { } + +#if _GLIBCXX_USE_DEPRECATED + template> + shared_ptr(std::auto_ptr<_Tp1>&& __r) + : _Base_type(std::move(__r)) + { _M_enable_shared_from_this_with(static_cast<_Tp1*>(this->get())); } +#endif + + template> + shared_ptr(unique_ptr<_Tp1, _Del>&& __r) + : _Base_type(std::move(__r)) + { + // XXX assume conversion from __r.get() to this->get() to __elem_t* + // is a round trip, which might not be true in all cases. + using __elem_t = typename unique_ptr<_Tp1, _Del>::element_type; + _M_enable_shared_from_this_with(static_cast<__elem_t*>(this->get())); + } + + constexpr shared_ptr(nullptr_t __p) + : _Base_type(__p) { } + + // C++14 §20.8.2.2 + ~shared_ptr() = default; + + // C++14 §20.8.2.3 + shared_ptr& operator=(const shared_ptr&) noexcept = default; + + template + _Compatible<_Tp1, shared_ptr&> + operator=(const shared_ptr<_Tp1>& __r) noexcept + { + _Base_type::operator=(__r); + return *this; + } + + shared_ptr& + operator=(shared_ptr&& __r) noexcept + { + _Base_type::operator=(std::move(__r)); + return *this; + } + + template + _Compatible<_Tp1, shared_ptr&> + operator=(shared_ptr<_Tp1>&& __r) noexcept + { + _Base_type::operator=(std::move(__r)); + return *this; + } + +#if _GLIBCXX_USE_DEPRECATED + template + _Compatible<_Tp1, shared_ptr&> + operator=(std::auto_ptr<_Tp1>&& __r) + { + __shared_ptr<_Tp>::operator=(std::move(__r)); + return *this; + } +#endif + + template + _UniqCompatible<_Tp1, _Del, shared_ptr&> + operator=(unique_ptr<_Tp1, _Del>&& __r) + { + _Base_type::operator=(std::move(__r)); + return *this; + } + + // C++14 §20.8.2.2.4 + // swap & reset + // 8.2.1.2 shared_ptr observers + // in __shared_ptr + + private: + template + shared_ptr(_Sp_make_shared_tag __tag, const _Alloc& __a, + _Args&&... __args) + : _Base_type(__tag, __a, std::forward<_Args>(__args)...) + { _M_enable_shared_from_this_with(this->get()); } + + template + friend shared_ptr<_Tp1> + allocate_shared(const _Alloc& __a, _Args&&... __args); + + shared_ptr(const weak_ptr<_Tp>& __r, std::nothrow_t) + : _Base_type(__r, std::nothrow) { } + + friend class weak_ptr<_Tp>; + + template + using __esft_base_t = + decltype(__expt_enable_shared_from_this_base(std::declval<_Yp*>())); + + // Detect an accessible and unambiguous enable_shared_from_this base. + template + struct __has_esft_base + : false_type { }; + + template + struct __has_esft_base<_Yp, __void_t<__esft_base_t<_Yp>>> + : __bool_constant> { }; // ignore base for arrays + + template + typename enable_if<__has_esft_base<_Yp>::value>::type + _M_enable_shared_from_this_with(const _Yp* __p) noexcept + { + if (auto __base = __expt_enable_shared_from_this_base(__p)) + { + __base->_M_weak_this + = shared_ptr<_Yp>(*this, const_cast<_Yp*>(__p)); + } + } + + template + typename enable_if::value>::type + _M_enable_shared_from_this_with(const _Yp*) noexcept + { } + }; + + // C++14 §20.8.2.2.7 //DOING + template + bool operator==(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return __a.get() == __b.get(); } + + template + inline bool + operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !__a; } + + template + inline bool + operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !__a; } + + template + inline bool + operator!=(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return __a.get() != __b.get(); } + + template + inline bool + operator!=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return (bool)__a; } + + template + inline bool + operator!=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return (bool)__a; } + + template + inline bool + operator<(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { + using __elem_t1 = typename shared_ptr<_Tp1>::element_type; + using __elem_t2 = typename shared_ptr<_Tp2>::element_type; + using _CT = common_type_t<__elem_t1*, __elem_t2*>; + return std::less<_CT>()(__a.get(), __b.get()); + } + + template + inline bool + operator<(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return std::less<__elem_t*>()(__a.get(), nullptr); + } + + template + inline bool + operator<(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return std::less<__elem_t*>()(nullptr, __a.get()); + } + + template + inline bool + operator<=(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return !(__b < __a); } + + template + inline bool + operator<=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !(nullptr < __a); } + + template + inline bool + operator<=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return (__b < __a); } + + template + inline bool + operator>(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return std::less<__elem_t*>()(nullptr, __a.get()); + } + + template + inline bool + operator>(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return std::less<__elem_t*>()(__a.get(), nullptr); + } + + template + inline bool + operator>=(const shared_ptr<_Tp1>& __a, + const shared_ptr<_Tp2>& __b) noexcept + { return !(__a < __b); } + + template + inline bool + operator>=(const shared_ptr<_Tp>& __a, nullptr_t) noexcept + { return !(__a < nullptr); } + + template + inline bool + operator>=(nullptr_t, const shared_ptr<_Tp>& __a) noexcept + { return !(nullptr < __a); } + + // C++14 §20.8.2.2.8 + template + inline void + swap(shared_ptr<_Tp>& __a, shared_ptr<_Tp>& __b) noexcept + { __a.swap(__b); } + + // 8.2.1.3, shared_ptr casts + template + inline shared_ptr<_Tp> + static_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return shared_ptr<_Tp>(__r, static_cast<__elem_t*>(__r.get())); + } + + template + inline shared_ptr<_Tp> + dynamic_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + if (_Tp* __p = dynamic_cast<__elem_t*>(__r.get())) + return shared_ptr<_Tp>(__r, __p); + return shared_ptr<_Tp>(); + } + + template + inline shared_ptr<_Tp> + const_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return shared_ptr<_Tp>(__r, const_cast<__elem_t*>(__r.get())); + } + + template + inline shared_ptr<_Tp> + reinterpret_pointer_cast(const shared_ptr<_Tp1>& __r) noexcept + { + using __elem_t = typename shared_ptr<_Tp>::element_type; + return shared_ptr<_Tp>(__r, reinterpret_cast<__elem_t*>(__r.get())); + } + + // C++14 §20.8.2.3 + template + class weak_ptr : public __weak_ptr<_Tp> + { + template + using _Compatible = enable_if_t<__sp_compatible_v<_Tp1, _Tp>, _Res>; + + using _Base_type = __weak_ptr<_Tp>; + + public: + constexpr weak_ptr() noexcept = default; + + template> + weak_ptr(const shared_ptr<_Tp1>& __r) noexcept + : _Base_type(__r) { } + + weak_ptr(const weak_ptr&) noexcept = default; + + template> + weak_ptr(const weak_ptr<_Tp1>& __r) noexcept + : _Base_type(__r) { } + + weak_ptr(weak_ptr&&) noexcept = default; + + template> + weak_ptr(weak_ptr<_Tp1>&& __r) noexcept + : _Base_type(std::move(__r)) { } + + weak_ptr& + operator=(const weak_ptr& __r) noexcept = default; + + template + _Compatible<_Tp1, weak_ptr&> + operator=(const weak_ptr<_Tp1>& __r) noexcept + { + this->_Base_type::operator=(__r); + return *this; + } + + template + _Compatible<_Tp1, weak_ptr&> + operator=(const shared_ptr<_Tp1>& __r) noexcept + { + this->_Base_type::operator=(__r); + return *this; + } + + weak_ptr& + operator=(weak_ptr&& __r) noexcept = default; + + template + _Compatible<_Tp1, weak_ptr&> + operator=(weak_ptr<_Tp1>&& __r) noexcept + { + this->_Base_type::operator=(std::move(__r)); + return *this; + } + + shared_ptr<_Tp> + lock() const noexcept + { return shared_ptr<_Tp>(*this, std::nothrow); } + + friend class enable_shared_from_this<_Tp>; + }; + + // C++14 §20.8.2.3.6 + template + inline void + swap(weak_ptr<_Tp>& __a, weak_ptr<_Tp>& __b) noexcept + { __a.swap(__b); } + + /// C++14 §20.8.2.2.10 + template + inline _Del* + get_deleter(const shared_ptr<_Tp>& __p) noexcept + { return std::get_deleter<_Del>(__p); } + + // C++14 §20.8.2.2.11 + template + inline std::basic_ostream<_Ch, _Tr>& + operator<<(std::basic_ostream<_Ch, _Tr>& __os, const shared_ptr<_Tp>& __p) + { + __os << __p.get(); + return __os; + } + + // C++14 §20.8.2.4 + template class owner_less; + + /// Partial specialization of owner_less for shared_ptr. + template + struct owner_less> + : public _Sp_owner_less, weak_ptr<_Tp>> + { }; + + /// Partial specialization of owner_less for weak_ptr. + template + struct owner_less> + : public _Sp_owner_less, shared_ptr<_Tp>> + { }; + + template<> + class owner_less + { + template + bool + operator()(shared_ptr<_Tp> const& __lhs, + shared_ptr<_Up> const& __rhs) const + { return __lhs.owner_before(__rhs); } + + template + bool + operator()(shared_ptr<_Tp> const& __lhs, + weak_ptr<_Up> const& __rhs) const + { return __lhs.owner_before(__rhs); } + + template + bool + operator()(weak_ptr<_Tp> const& __lhs, + shared_ptr<_Up> const& __rhs) const + { return __lhs.owner_before(__rhs); } + + template + bool + operator()(weak_ptr<_Tp> const& __lhs, + weak_ptr<_Up> const& __rhs) const + { return __lhs.owner_before(__rhs); } + + typedef void is_transparent; + }; + + // C++14 §20.8.2.6 + template + inline bool + atomic_is_lock_free(const shared_ptr<_Tp>* __p) + { return std::atomic_is_lock_free<_Tp, __default_lock_policy>(__p); } + + template + shared_ptr<_Tp> atomic_load(const shared_ptr<_Tp>* __p) + { return std::atomic_load<_Tp>(__p); } + + template + shared_ptr<_Tp> + atomic_load_explicit(const shared_ptr<_Tp>* __p, memory_order __mo) + { return std::atomic_load_explicit<_Tp>(__p, __mo); } + + template + void atomic_store(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) + { return std::atomic_store<_Tp>(__p, __r); } + + template + shared_ptr<_Tp> + atomic_store_explicit(const shared_ptr<_Tp>* __p, + shared_ptr<_Tp> __r, + memory_order __mo) + { return std::atomic_store_explicit<_Tp>(__p, __r, __mo); } + + template + void atomic_exchange(shared_ptr<_Tp>* __p, shared_ptr<_Tp> __r) + { return std::atomic_exchange<_Tp>(__p, __r); } + + template + shared_ptr<_Tp> + atomic_exchange_explicit(const shared_ptr<_Tp>* __p, + shared_ptr<_Tp> __r, + memory_order __mo) + { return std::atomic_exchange_explicit<_Tp>(__p, __r, __mo); } + + template + bool atomic_compare_exchange_weak(shared_ptr<_Tp>* __p, + shared_ptr<_Tp>* __v, + shared_ptr<_Tp> __w) + { return std::atomic_compare_exchange_weak<_Tp>(__p, __v, __w); } + + template + bool atomic_compare_exchange_strong(shared_ptr<_Tp>* __p, + shared_ptr<_Tp>* __v, + shared_ptr<_Tp> __w) + { return std::atomic_compare_exchange_strong<_Tp>(__p, __v, __w); } + + template + bool atomic_compare_exchange_weak_explicit(shared_ptr<_Tp>* __p, + shared_ptr<_Tp>* __v, + shared_ptr<_Tp> __w, + memory_order __success, + memory_order __failure) + { return std::atomic_compare_exchange_weak_explicit<_Tp>(__p, __v, __w, + __success, + __failure); } + + template + bool atomic_compare_exchange_strong_explicit(shared_ptr<_Tp>* __p, + shared_ptr<_Tp>* __v, + shared_ptr<_Tp> __w, + memory_order __success, + memory_order __failure) + { return std::atomic_compare_exchange_strong_explicit<_Tp>(__p, __v, __w, + __success, + __failure); } + + //enable_shared_from_this + template + class enable_shared_from_this + { + protected: + constexpr enable_shared_from_this() noexcept { } + + enable_shared_from_this(const enable_shared_from_this&) noexcept { } + + enable_shared_from_this& + operator=(const enable_shared_from_this&) noexcept + { return *this; } + + ~enable_shared_from_this() { } + + public: + shared_ptr<_Tp> + shared_from_this() + { return shared_ptr<_Tp>(this->_M_weak_this); } + + shared_ptr + shared_from_this() const + { return shared_ptr(this->_M_weak_this); } + + weak_ptr<_Tp> + weak_from_this() noexcept + { return _M_weak_this; } + + weak_ptr + weak_from_this() const noexcept + { return _M_weak_this; } + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const noexcept + { _M_weak_this._M_assign(__p, __n); } + + // Found by ADL when this is an associated class. + friend const enable_shared_from_this* + __expt_enable_shared_from_this_base(const enable_shared_from_this* __p) + { return __p; } + + template + friend class shared_ptr; + + mutable weak_ptr<_Tp> _M_weak_this; + }; +} // namespace fundamentals_v2 +} // namespace experimental + + /// std::hash specialization for shared_ptr. + template + struct hash> + : public __hash_base> + { + size_t + operator()(const experimental::shared_ptr<_Tp>& __s) const noexcept + { return std::hash<_Tp*>()(__s.get()); } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_SHARED_PTR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/string_view.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/string_view.tcc new file mode 100644 index 000000000..579ececd8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/bits/string_view.tcc @@ -0,0 +1,231 @@ +// Components for manipulating non-owning sequences of characters -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file experimental/bits/string_view.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{experimental/string_view} + */ + +// +// N3762 basic_string_view library +// + +#ifndef _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC +#define _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find(const _CharT* __str, size_type __pos, size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + + if (__n == 0) + return __pos <= this->_M_len ? __pos : npos; + + if (__n <= this->_M_len) + { + for (; __pos <= this->_M_len - __n; ++__pos) + if (traits_type::eq(this->_M_str[__pos], __str[0]) + && traits_type::compare(this->_M_str + __pos + 1, + __str + 1, __n - 1) == 0) + return __pos; + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find(_CharT __c, size_type __pos) const noexcept + { + size_type __ret = npos; + if (__pos < this->_M_len) + { + const size_type __n = this->_M_len - __pos; + const _CharT* __p = traits_type::find(this->_M_str + __pos, __n, __c); + if (__p) + __ret = __p - this->_M_str; + } + return __ret; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept + { + __glibcxx_requires_string_len(__str, __n); + + if (__n <= this->_M_len) + { + __pos = std::min(size_type(this->_M_len - __n), __pos); + do + { + if (traits_type::compare(this->_M_str + __pos, __str, __n) == 0) + return __pos; + } + while (__pos-- > 0); + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + rfind(_CharT __c, size_type __pos) const noexcept + { + size_type __size = this->_M_len; + if (__size > 0) + { + if (--__size > __pos) + __size = __pos; + for (++__size; __size-- > 0; ) + if (traits_type::eq(this->_M_str[__size], __c)) + return __size; + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_first_of(const _CharT* __str, size_type __pos, size_type __n) const + { + __glibcxx_requires_string_len(__str, __n); + for (; __n && __pos < this->_M_len; ++__pos) + { + const _CharT* __p = traits_type::find(__str, __n, + this->_M_str[__pos]); + if (__p) + return __pos; + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_last_of(const _CharT* __str, size_type __pos, size_type __n) const + { + __glibcxx_requires_string_len(__str, __n); + size_type __size = this->size(); + if (__size && __n) + { + if (--__size > __pos) + __size = __pos; + do + { + if (traits_type::find(__str, __n, this->_M_str[__size])) + return __size; + } + while (__size-- != 0); + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_first_not_of(const _CharT* __str, size_type __pos, size_type __n) const + { + __glibcxx_requires_string_len(__str, __n); + for (; __pos < this->_M_len; ++__pos) + if (!traits_type::find(__str, __n, this->_M_str[__pos])) + return __pos; + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_first_not_of(_CharT __c, size_type __pos) const noexcept + { + for (; __pos < this->_M_len; ++__pos) + if (!traits_type::eq(this->_M_str[__pos], __c)) + return __pos; + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_last_not_of(const _CharT* __str, size_type __pos, size_type __n) const + { + __glibcxx_requires_string_len(__str, __n); + size_type __size = this->_M_len; + if (__size) + { + if (--__size > __pos) + __size = __pos; + do + { + if (!traits_type::find(__str, __n, this->_M_str[__size])) + return __size; + } + while (__size--); + } + return npos; + } + + template + constexpr typename basic_string_view<_CharT, _Traits>::size_type + basic_string_view<_CharT, _Traits>:: + find_last_not_of(_CharT __c, size_type __pos) const noexcept + { + size_type __size = this->_M_len; + if (__size) + { + if (--__size > __pos) + __size = __pos; + do + { + if (!traits_type::eq(this->_M_str[__size], __c)) + return __size; + } + while (__size--); + } + return npos; + } +} // namespace fundamentals_v1 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/chrono b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/chrono new file mode 100644 index 000000000..a4b1f496c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/chrono @@ -0,0 +1,64 @@ +// Variable Templates For chrono -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/chrono + * This is a TS C++ Library header. + */ + +// +// N3932 Variable Templates For Type Traits (Revision 1) +// + +#ifndef _GLIBCXX_EXPERIMENTAL_CHRONO +#define _GLIBCXX_EXPERIMENTAL_CHRONO 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace chrono { +namespace experimental +{ +inline namespace fundamentals_v1 +{ +// See C++14 §20.12.4, customization traits +template + constexpr bool treat_as_floating_point_v = + treat_as_floating_point<_Rep>::value; +} // namespace fundamentals_v1 +} // namespace experimental +} // namespace chrono +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_CHRONO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/deque new file mode 100644 index 000000000..88790b109 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/deque @@ -0,0 +1,76 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/deque + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_DEQUE +#define _GLIBCXX_EXPERIMENTAL_DEQUE 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + void + erase_if(deque<_Tp, _Alloc>& __cont, _Predicate __pred) + { + __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), + __cont.end()); + } + + template + void + erase(deque<_Tp, _Alloc>& __cont, const _Up& __value) + { + __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), + __cont.end()); + } + + namespace pmr { + template + using deque = std::deque<_Tp, polymorphic_allocator<_Tp>>; + + } // namespace pmr +} // namespace fundamentals_v2 +} // namespace experimental +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_DEQUE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/forward_list new file mode 100644 index 000000000..33c7f3762 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/forward_list @@ -0,0 +1,73 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/forward_list + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_FORWARD_LIST +#define _GLIBCXX_EXPERIMENTAL_FORWARD_LIST 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(forward_list<_Tp, _Alloc>& __cont, _Predicate __pred) + { __cont.remove_if(__pred); } + + template + inline void + erase(forward_list<_Tp, _Alloc>& __cont, const _Up& __value) + { + using __elem_type = typename forward_list<_Tp, _Alloc>::value_type; + erase_if(__cont, [&](__elem_type& __elem) { return __elem == __value; }); + } + + namespace pmr { + template + using forward_list = std::forward_list<_Tp, polymorphic_allocator<_Tp>>; + } // namespace pmr + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_FORWARD_LIST diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/functional new file mode 100644 index 000000000..de68c8026 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/functional @@ -0,0 +1,384 @@ +// -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/functional + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_FUNCTIONAL +#define _GLIBCXX_EXPERIMENTAL_FUNCTIONAL 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include +#include +#include +#include +#include +#ifdef _GLIBCXX_PARALLEL +# include // For std::__parallel::search +#endif +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ + // See C++14 §20.9.9, Function object binders + + /// Variable template for std::is_bind_expression + template + constexpr bool is_bind_expression_v = std::is_bind_expression<_Tp>::value; + + /// Variable template for std::is_placeholder + template + constexpr int is_placeholder_v = std::is_placeholder<_Tp>::value; + +#define __cpp_lib_experimental_boyer_moore_searching 201411 + + // Searchers + + template> + class default_searcher + { + public: + default_searcher(_ForwardIterator1 __pat_first, + _ForwardIterator1 __pat_last, + _BinaryPredicate __pred = _BinaryPredicate()) + : _M_m(__pat_first, __pat_last, std::move(__pred)) + { } + + template + _ForwardIterator2 + operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const + { + return std::search(__first, __last, + std::get<0>(_M_m), std::get<1>(_M_m), + std::get<2>(_M_m)); + } + + private: + std::tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; + }; + + template + struct __boyer_moore_map_base + { + template + __boyer_moore_map_base(_RAIter __pat, size_t __patlen, + _Hash&& __hf, _Pred&& __pred) + : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } + { + if (__patlen > 0) + for (__diff_type __i = 0; __i < __patlen - 1; ++__i) + _M_bad_char[__pat[__i]] = __patlen - 1 - __i; + } + + using __diff_type = _Tp; + + __diff_type + _M_lookup(_Key __key, __diff_type __not_found) const + { + auto __iter = _M_bad_char.find(__key); + if (__iter == _M_bad_char.end()) + return __not_found; + return __iter->second; + } + + _Pred + _M_pred() const { return _M_bad_char.key_eq(); } + + _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; + }; + + template + struct __boyer_moore_array_base + { + template + __boyer_moore_array_base(_RAIter __pat, size_t __patlen, + _Unused&&, _Pred&& __pred) + : _M_bad_char{ _GLIBCXX_STD_C::array<_Tp, _Len>{}, std::move(__pred) } + { + std::get<0>(_M_bad_char).fill(__patlen); + if (__patlen > 0) + for (__diff_type __i = 0; __i < __patlen - 1; ++__i) + { + auto __ch = __pat[__i]; + using _UCh = std::make_unsigned_t; + auto __uch = static_cast<_UCh>(__ch); + std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; + } + } + + using __diff_type = _Tp; + + template + __diff_type + _M_lookup(_Key __key, __diff_type __not_found) const + { + auto __ukey = static_cast>(__key); + if (__ukey >= _Len) + return __not_found; + return std::get<0>(_M_bad_char)[__ukey]; + } + + const _Pred& + _M_pred() const { return std::get<1>(_M_bad_char); } + + std::tuple<_GLIBCXX_STD_C::array<_Tp, _Len>, _Pred> _M_bad_char; + }; + + // Use __boyer_moore_array_base when pattern consists of narrow characters + // (or std::byte) and uses std::equal_to as the predicate. + template::value_type, + typename _Diff = typename iterator_traits<_RAIter>::difference_type> + using __boyer_moore_base_t + = std::conditional_t::value, + __boyer_moore_array_base<_Diff, 256, _Pred>, + __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; + + template::value_type>, + typename _BinaryPredicate = std::equal_to<>> + class boyer_moore_searcher + : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> + { + using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; + using typename _Base::__diff_type; + + public: + boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, + _Hash __hf = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()); + + template + _RandomAccessIterator2 + operator()(_RandomAccessIterator2 __first, + _RandomAccessIterator2 __last) const; + + private: + bool + _M_is_prefix(_RAIter __word, __diff_type __len, + __diff_type __pos) + { + const auto& __pred = this->_M_pred(); + __diff_type __suffixlen = __len - __pos; + for (__diff_type __i = 0; __i < __suffixlen; ++__i) + if (!__pred(__word[__i], __word[__pos + __i])) + return false; + return true; + } + + __diff_type + _M_suffix_length(_RAIter __word, __diff_type __len, + __diff_type __pos) + { + const auto& __pred = this->_M_pred(); + __diff_type __i = 0; + while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) + && __i < __pos) + { + ++__i; + } + return __i; + } + + template + __diff_type + _M_bad_char_shift(_Tp __c) const + { return this->_M_lookup(__c, _M_pat_end - _M_pat); } + + _RAIter _M_pat; + _RAIter _M_pat_end; + _GLIBCXX_STD_C::vector<__diff_type> _M_good_suffix; + }; + + template::value_type>, + typename _BinaryPredicate = std::equal_to<>> + class boyer_moore_horspool_searcher + : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> + { + using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; + using typename _Base::__diff_type; + + public: + boyer_moore_horspool_searcher(_RAIter __pat, + _RAIter __pat_end, + _Hash __hf = _Hash(), + _BinaryPredicate __pred + = _BinaryPredicate()) + : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), + _M_pat(__pat), _M_pat_end(__pat_end) + { } + + template + _RandomAccessIterator2 + operator()(_RandomAccessIterator2 __first, + _RandomAccessIterator2 __last) const + { + const auto& __pred = this->_M_pred(); + auto __patlen = _M_pat_end - _M_pat; + if (__patlen == 0) + return __first; + auto __len = __last - __first; + while (__len >= __patlen) + { + for (auto __scan = __patlen - 1; + __pred(__first[__scan], _M_pat[__scan]); --__scan) + if (__scan == 0) + return __first; + auto __shift = _M_bad_char_shift(__first[__patlen - 1]); + __len -= __shift; + __first += __shift; + } + return __last; + } + + private: + template + __diff_type + _M_bad_char_shift(_Tp __c) const + { return this->_M_lookup(__c, _M_pat_end - _M_pat); } + + _RAIter _M_pat; + _RAIter _M_pat_end; + }; + + /// Generator function for default_searcher + template> + inline default_searcher<_ForwardIterator, _BinaryPredicate> + make_default_searcher(_ForwardIterator __pat_first, + _ForwardIterator __pat_last, + _BinaryPredicate __pred = _BinaryPredicate()) + { return { __pat_first, __pat_last, __pred }; } + + /// Generator function for boyer_moore_searcher + template::value_type>, + typename _BinaryPredicate = equal_to<>> + inline boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate> + make_boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, + _Hash __hf = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()) + { return { __pat_first, __pat_last, std::move(__hf), std::move(__pred) }; } + + /// Generator function for boyer_moore_horspool_searcher + template::value_type>, + typename _BinaryPredicate = equal_to<>> + inline boyer_moore_horspool_searcher<_RAIter, _Hash, _BinaryPredicate> + make_boyer_moore_horspool_searcher(_RAIter __pat_first, _RAIter __pat_last, + _Hash __hf = _Hash(), + _BinaryPredicate __pred + = _BinaryPredicate()) + { return { __pat_first, __pat_last, std::move(__hf), std::move(__pred) }; } + + template + boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: + boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, + _Hash __hf, _BinaryPredicate __pred) + : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), + _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) + { + auto __patlen = __pat_end - __pat; + if (__patlen == 0) + return; + __diff_type __last_prefix = __patlen - 1; + for (__diff_type __p = __patlen - 1; __p >= 0; --__p) + { + if (_M_is_prefix(__pat, __patlen, __p + 1)) + __last_prefix = __p + 1; + _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); + } + for (__diff_type __p = 0; __p < __patlen - 1; ++__p) + { + auto __slen = _M_suffix_length(__pat, __patlen, __p); + auto __pos = __patlen - 1 - __slen; + if (!__pred(__pat[__p - __slen], __pat[__pos])) + _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; + } + } + + template + template + _RandomAccessIterator2 + boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: + operator()(_RandomAccessIterator2 __first, + _RandomAccessIterator2 __last) const + { + auto __patlen = _M_pat_end - _M_pat; + if (__patlen == 0) + return __first; + const auto& __pred = this->_M_pred(); + __diff_type __i = __patlen - 1; + auto __stringlen = __last - __first; + while (__i < __stringlen) + { + __diff_type __j = __patlen - 1; + while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) + { + --__i; + --__j; + } + if (__j < 0) + return __first + __i + 1; + __i += std::max(_M_bad_char_shift(__first[__i]), + _M_good_suffix[__j]); + } + return __last; + } +} // namespace fundamentals_v1 + +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_not_fn 201406 + + /// [func.not_fn] Function template not_fn + template + inline auto + not_fn(_Fn&& __fn) + noexcept(std::is_nothrow_constructible, _Fn&&>::value) + { + return std::_Not_fn>{std::forward<_Fn>(__fn), 0}; + } +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_FUNCTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/iterator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/iterator new file mode 100644 index 000000000..a8dbf3b75 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/iterator @@ -0,0 +1,114 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/iterator + * This is a TS C++ Library header. + */ + +// +// N4336 Working Draft, C++ Extensions for Library Fundamentals, Version 2 +// + +#ifndef _GLIBCXX_EXPERIMENTAL_ITERATOR +#define _GLIBCXX_EXPERIMENTAL_ITERATOR 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_ostream_joiner 201411 + + /// Output iterator that inserts a delimiter between elements. + template> + class ostream_joiner + { + public: + typedef _CharT char_type; + typedef _Traits traits_type; + typedef basic_ostream<_CharT, _Traits> ostream_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + ostream_joiner(ostream_type& __os, const _DelimT& __delimiter) + noexcept(is_nothrow_copy_constructible_v<_DelimT>) + : _M_out(std::__addressof(__os)), _M_delim(__delimiter) + { } + + ostream_joiner(ostream_type& __os, _DelimT&& __delimiter) + noexcept(is_nothrow_move_constructible_v<_DelimT>) + : _M_out(std::__addressof(__os)), _M_delim(std::move(__delimiter)) + { } + + template + ostream_joiner& + operator=(const _Tp& __value) + { + if (!_M_first) + *_M_out << _M_delim; + _M_first = false; + *_M_out << __value; + return *this; + } + + ostream_joiner& operator*() noexcept { return *this; } + ostream_joiner& operator++() noexcept { return *this; } + ostream_joiner& operator++(int) noexcept { return *this; } + + private: + ostream_type* _M_out; + _DelimT _M_delim; + bool _M_first = true; + }; + + /// Object generator for ostream_joiner. + template + inline ostream_joiner, _CharT, _Traits> + make_ostream_joiner(basic_ostream<_CharT, _Traits>& __os, + _DelimT&& __delimiter) + { return { __os, std::forward<_DelimT>(__delimiter) }; } +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_ITERATOR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/list new file mode 100644 index 000000000..43d8e96d4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/list @@ -0,0 +1,73 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/list + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_LIST +#define _GLIBCXX_EXPERIMENTAL_LIST 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(list<_Tp, _Alloc>& __cont, _Predicate __pred) + { __cont.remove_if(__pred); } + + template + inline void + erase(list<_Tp, _Alloc>& __cont, const _Up& __value) + { + using __elem_type = typename list<_Tp, _Alloc>::value_type; + erase_if(__cont, [&](__elem_type& __elem) { return __elem == __value; }); + } + +namespace pmr { + template + using list = std::list<_Tp, polymorphic_allocator<_Tp>>; +} // namespace pmr + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_LIST diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/map new file mode 100644 index 000000000..5bd19e9be --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/map @@ -0,0 +1,79 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/map + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_MAP +#define _GLIBCXX_EXPERIMENTAL_MAP 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(map<_Key, _Tp, _Compare, _Alloc>& __cont, _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + template + inline void + erase_if(multimap<_Key, _Tp, _Compare, _Alloc>& __cont, _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + namespace pmr { + template> + using map + = std::map<_Key, _Tp, _Compare, + polymorphic_allocator>>; + + template> + using multimap + = std::multimap<_Key, _Tp, _Compare, + polymorphic_allocator>>; + } // namespace pmr +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/memory new file mode 100644 index 000000000..4bd4e34e0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/memory @@ -0,0 +1,255 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/memory + * This is a TS C++ Library header. + */ + +// +// N4336 Working Draft, C++ Extensions for Library Fundamentals, Version 2 +// + +#ifndef _GLIBCXX_EXPERIMENTAL_MEMORY +#define _GLIBCXX_EXPERIMENTAL_MEMORY 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_observer_ptr 201411 + + template + class observer_ptr + { + public: + // publish our template parameter and variations thereof + using element_type = _Tp; + using __pointer = add_pointer_t<_Tp>; // exposition-only + using __reference = add_lvalue_reference_t<_Tp>; // exposition-only + + // 3.2.2, observer_ptr constructors + // default c’tor + constexpr observer_ptr() noexcept + : __t() + { } + + // pointer-accepting c’tors + constexpr observer_ptr(nullptr_t) noexcept + : __t() + { } + + constexpr explicit observer_ptr(__pointer __p) noexcept + : __t(__p) + { } + + // copying c’tors (in addition to compiler-generated copy c’tor) + template ::type, __pointer + >::value + >::type> + constexpr observer_ptr(observer_ptr<_Up> __p) noexcept + : __t(__p.get()) + { + } + + // 3.2.3, observer_ptr observers + constexpr __pointer + get() const noexcept + { + return __t; + } + + constexpr __reference + operator*() const + { + return *get(); + } + + constexpr __pointer + operator->() const noexcept + { + return get(); + } + + constexpr explicit operator bool() const noexcept + { + return get() != nullptr; + } + + // 3.2.4, observer_ptr conversions + constexpr explicit operator __pointer() const noexcept + { + return get(); + } + + // 3.2.5, observer_ptr modifiers + constexpr __pointer + release() noexcept + { + __pointer __tmp = get(); + reset(); + return __tmp; + } + + constexpr void + reset(__pointer __p = nullptr) noexcept + { + __t = __p; + } + + constexpr void + swap(observer_ptr& __p) noexcept + { + std::swap(__t, __p.__t); + } + + private: + __pointer __t; + }; // observer_ptr<> + + template + void + swap(observer_ptr<_Tp>& __p1, observer_ptr<_Tp>& __p2) noexcept + { + __p1.swap(__p2); + } + + template + observer_ptr<_Tp> + make_observer(_Tp* __p) noexcept + { + return observer_ptr<_Tp>(__p); + } + + template + bool + operator==(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) + { + return __p1.get() == __p2.get(); + } + + template + bool + operator!=(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) + { + return !(__p1 == __p2); + } + + template + bool + operator==(observer_ptr<_Tp> __p, nullptr_t) noexcept + { + return !__p; + } + + template + bool + operator==(nullptr_t, observer_ptr<_Tp> __p) noexcept + { + return !__p; + } + + template + bool + operator!=(observer_ptr<_Tp> __p, nullptr_t) noexcept + { + return bool(__p); + } + + template + bool + operator!=(nullptr_t, observer_ptr<_Tp> __p) noexcept + { + return bool(__p); + } + + template + bool + operator<(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) + { + return std::less::type, + typename add_pointer<_Up>::type + >::type + >{}(__p1.get(), __p2.get()); + } + + template + bool + operator>(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) + { + return __p2 < __p1; + } + + template + bool + operator<=(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) + { + return !(__p2 < __p1); + } + + template + bool + operator>=(observer_ptr<_Tp> __p1, observer_ptr<_Up> __p2) + { + return !(__p1 < __p2); + } +} // namespace fundamentals_v2 +} // namespace experimental + +template + struct hash> + { + using result_type = size_t; + using argument_type = experimental::observer_ptr<_Tp>; + + size_t + operator()(const experimental::observer_ptr<_Tp>& __t) const + noexcept(noexcept(hash::type> {}(__t.get()))) + { + return hash::type> {}(__t.get()); + } + }; + + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_MEMORY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/memory_resource b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/memory_resource similarity index 87% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/memory_resource rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/memory_resource index 99ace7a7f..23653ee2f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/memory_resource +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/memory_resource @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 @@ -33,15 +33,14 @@ #include #include #include -#include #include namespace std { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace experimental { inline namespace fundamentals_v2 { namespace pmr { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - #define __cpp_lib_experimental_memory_resources 201402L class memory_resource; @@ -258,6 +257,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template class __resource_adaptor_imp : public memory_resource { + static_assert(is_same::value_type>::value, + "Allocator's value_type is char"); + static_assert(is_same::pointer>::value, + "Allocator's pointer type is value_type*"); + static_assert(is_same::const_pointer>::value, + "Allocator's const_pointer type is value_type const*"); + static_assert(is_same::void_pointer>::value, + "Allocator's void_pointer type is void*"); + static_assert(is_same::const_void_pointer>::value, + "Allocator's const_void_pointer type is void const*"); + public: using allocator_type = _Alloc; @@ -276,7 +291,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __resource_adaptor_imp& operator=(const __resource_adaptor_imp&) = default; - allocator_type get_allocator() const { return _M_alloc; } + allocator_type get_allocator() const noexcept { return _M_alloc; } protected: virtual void* @@ -311,13 +326,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION private: // Calculate Aligned Size // Returns a size that is larger than or equal to __size and divisible - // by __alignment, where __alignment is required to be the power of 2. + // by __alignment, where __alignment is required to be a power of 2. static size_t _S_aligned_size(size_t __size, size_t __alignment) { return ((__size - 1)|(__alignment - 1)) + 1; } // Determine whether alignment meets one of those preconditions: - // 1. Equals to Zero + // 1. Equal to Zero // 2. Is power of two static bool _S_supported (size_t __x) @@ -327,47 +342,50 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; // Global memory resources - inline std::atomic& - __get_default_resource() - { - static atomic _S_default_resource(new_delete_resource()); - return _S_default_resource; - } inline memory_resource* new_delete_resource() noexcept { - static resource_adaptor> __r; - return static_cast(&__r); + using type = resource_adaptor>; + alignas(type) static unsigned char __buf[sizeof(type)]; + static type* __r = new(__buf) type; + return __r; } - template - class __null_memory_resource : private memory_resource - { - protected: - void* - do_allocate(size_t, size_t) - { std::__throw_bad_alloc(); } - - void - do_deallocate(void*, size_t, size_t) noexcept - { } - - bool - do_is_equal(const memory_resource& __other) const noexcept - { return this == &__other; } - - friend memory_resource* null_memory_resource() noexcept; - }; - inline memory_resource* null_memory_resource() noexcept { - static __null_memory_resource __r; - return static_cast(&__r); + class type final : public memory_resource + { + void* + do_allocate(size_t, size_t) override + { std::__throw_bad_alloc(); } + + void + do_deallocate(void*, size_t, size_t) noexcept override + { } + + bool + do_is_equal(const memory_resource& __other) const noexcept override + { return this == &__other; } + }; + + alignas(type) static unsigned char __buf[sizeof(type)]; + static type* __r = new(__buf) type; + return __r; } // The default memory resource + + inline std::atomic& + __get_default_resource() + { + using type = atomic; + alignas(type) static unsigned char __buf[sizeof(type)]; + static type* __r = new(__buf) type(new_delete_resource()); + return *__r; + } + inline memory_resource* get_default_resource() noexcept { return __get_default_resource().load(); } @@ -379,11 +397,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __r = new_delete_resource(); return __get_default_resource().exchange(__r); } - -_GLIBCXX_END_NAMESPACE_VERSION } // namespace pmr } // namespace fundamentals_v2 } // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/numeric new file mode 100644 index 000000000..c80848d2b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/numeric @@ -0,0 +1,88 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/numeric + * This is a TS C++ Library header. + */ + +// +// N4336 Working Draft, C++ Extensions for Library Fundamentals, Version 2 +// + +#ifndef _GLIBCXX_EXPERIMENTAL_NUMERIC +#define _GLIBCXX_EXPERIMENTAL_NUMERIC 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_gcd_lcm 201411 + + /// Greatest common divisor + template + constexpr common_type_t<_Mn, _Nn> + gcd(_Mn __m, _Nn __n) + { + static_assert(is_integral_v<_Mn>, "gcd arguments are integers"); + static_assert(is_integral_v<_Nn>, "gcd arguments are integers"); + static_assert(!is_same_v, bool>, + "gcd arguments are not bools"); + static_assert(!is_same_v, bool>, + "gcd arguments are not bools"); + return std::__detail::__gcd(__m, __n); + } + + /// Least common multiple + template + constexpr common_type_t<_Mn, _Nn> + lcm(_Mn __m, _Nn __n) + { + static_assert(is_integral_v<_Mn>, "lcm arguments are integers"); + static_assert(is_integral_v<_Nn>, "lcm arguments are integers"); + static_assert(!is_same_v, bool>, + "lcm arguments are not bools"); + static_assert(!is_same_v, bool>, + "lcm arguments are not bools"); + return std::__detail::__lcm(__m, __n); + } +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_NUMERIC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/optional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/optional new file mode 100644 index 000000000..804613f95 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/optional @@ -0,0 +1,1007 @@ +// -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file experimental/optional + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_OPTIONAL +#define _GLIBCXX_EXPERIMENTAL_OPTIONAL 1 + +/** + * @defgroup experimental Experimental + * + * Components specified by various Technical Specifications. + * + * As indicated by the std::experimental namespace and the header paths, + * the contents of these Technical Specifications are experimental and not + * part of the C++ standard. As such the interfaces and implementations may + * change in the future, and there is no guarantee of compatibility + * between different GCC releases for these features. + */ + +#if __cplusplus >= 201402L + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ + /** + * @defgroup optional Optional values + * @ingroup experimental + * + * Class template for optional values and surrounding facilities, as + * described in n3793 "A proposal to add a utility class to represent + * optional objects (Revision 5)". + * + * @{ + */ + +#define __cpp_lib_experimental_optional 201411 + + // All subsequent [X.Y.n] references are against n3793. + + // [X.Y.4] + template + class optional; + + // [X.Y.5] + /// Tag type for in-place construction. + struct in_place_t { }; + + /// Tag for in-place construction. + constexpr in_place_t in_place { }; + + // [X.Y.6] + /// Tag type to disengage optional objects. + struct nullopt_t + { + // Do not user-declare default constructor at all for + // optional_value = {} syntax to work. + // nullopt_t() = delete; + + // Used for constructing nullopt. + enum class _Construct { _Token }; + + // Must be constexpr for nullopt_t to be literal. + explicit constexpr nullopt_t(_Construct) { } + }; + + // [X.Y.6] + /// Tag to disengage optional objects. + constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; + + // [X.Y.7] + /** + * @brief Exception class thrown when a disengaged optional object is + * dereferenced. + * @ingroup exceptions + */ + class bad_optional_access : public logic_error + { + public: + bad_optional_access() : logic_error("bad optional access") { } + + // XXX This constructor is non-standard. Should not be inline + explicit bad_optional_access(const char* __arg) : logic_error(__arg) { } + + virtual ~bad_optional_access() noexcept = default; + }; + + void + __throw_bad_optional_access(const char*) + __attribute__((__noreturn__)); + + // XXX Does not belong here. + inline void + __throw_bad_optional_access(const char* __s) + { _GLIBCXX_THROW_OR_ABORT(bad_optional_access(__s)); } + +#ifndef __cpp_lib_addressof_constexpr + template + struct _Has_addressof_mem : std::false_type { }; + + template + struct _Has_addressof_mem<_Tp, + __void_t().operator&() )> + > + : std::true_type { }; + + template + struct _Has_addressof_free : std::false_type { }; + + template + struct _Has_addressof_free<_Tp, + __void_t()) )> + > + : std::true_type { }; + + /** + * @brief Trait that detects the presence of an overloaded unary operator&. + * + * Practically speaking this detects the presence of such an operator when + * called on a const-qualified lvalue (e.g. + * declval().operator&()). + */ + template + struct _Has_addressof + : std::__or_<_Has_addressof_mem<_Tp>, _Has_addressof_free<_Tp>>::type + { }; + + /** + * @brief An overload that attempts to take the address of an lvalue as a + * constant expression. Falls back to __addressof in the presence of an + * overloaded addressof operator (unary operator&), in which case the call + * will not be a constant expression. + */ + template + constexpr + enable_if_t::value, _Tp*> + __constexpr_addressof(_Tp& __t) + { return &__t; } + + /** + * @brief Fallback overload that defers to __addressof. + */ + template + inline + enable_if_t<_Has_addressof<_Tp>::value, _Tp*> + __constexpr_addressof(_Tp& __t) + { return std::__addressof(__t); } +#endif // __cpp_lib_addressof_constexpr + + /** + * @brief Class template that holds the necessary state for @ref optional + * and that has the responsibility for construction and the special members. + * + * Such a separate base class template is necessary in order to + * conditionally enable the special members (e.g. copy/move constructors). + * Note that this means that @ref _Optional_base implements the + * functionality for copy and move assignment, but not for converting + * assignment. + * + * @see optional, _Enable_special_members + */ + template::value> + class _Optional_base + { + private: + // Remove const to avoid prohibition of reusing object storage for + // const-qualified types in [3.8/9]. This is strictly internal + // and even optional itself is oblivious to it. + using _Stored_type = remove_const_t<_Tp>; + + public: + // [X.Y.4.1] Constructors. + + // Constructors for disengaged optionals. + constexpr _Optional_base() noexcept + : _M_empty{} { } + + constexpr _Optional_base(nullopt_t) noexcept + : _Optional_base{} { } + + // Constructors for engaged optionals. + template + constexpr explicit _Optional_base(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) { } + + template&, + _Args&&...>::value, + int>...> + constexpr explicit _Optional_base(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) { } + + // Copy and move constructors. + _Optional_base(const _Optional_base& __other) + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + } + + _Optional_base(_Optional_base&& __other) + noexcept(is_nothrow_move_constructible<_Tp>()) + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + } + + // [X.Y.4.3] (partly) Assignment. + _Optional_base& + operator=(const _Optional_base& __other) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = __other._M_get(); + else + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + else + this->_M_reset(); + } + + return *this; + } + + _Optional_base& + operator=(_Optional_base&& __other) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>()) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = std::move(__other._M_get()); + else + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + else + this->_M_reset(); + } + return *this; + } + + // [X.Y.4.2] Destructor. + ~_Optional_base() + { + if (this->_M_engaged) + this->_M_payload.~_Stored_type(); + } + + // The following functionality is also needed by optional, hence the + // protected accessibility. + protected: + constexpr bool _M_is_engaged() const noexcept + { return this->_M_engaged; } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { return _M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return _M_payload; } + + // The _M_construct operation has !_M_engaged as a precondition + // while _M_destruct has _M_engaged as a precondition. + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new (std::__addressof(this->_M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + this->_M_engaged = true; + } + + void + _M_destruct() + { + this->_M_engaged = false; + this->_M_payload.~_Stored_type(); + } + + // _M_reset is a 'safe' operation with no precondition. + void + _M_reset() + { + if (this->_M_engaged) + this->_M_destruct(); + } + + private: + struct _Empty_byte { }; + union { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged = false; + }; + + /// Partial specialization that is exactly identical to the primary template + /// save for not providing a destructor, to fulfill triviality requirements. + template + class _Optional_base<_Tp, false> + { + private: + using _Stored_type = remove_const_t<_Tp>; + + public: + constexpr _Optional_base() noexcept + : _M_empty{} { } + + constexpr _Optional_base(nullopt_t) noexcept + : _Optional_base{} { } + + template + constexpr explicit _Optional_base(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) { } + + template&, + _Args&&...>::value, + int>...> + constexpr explicit _Optional_base(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) { } + + _Optional_base(const _Optional_base& __other) + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + } + + _Optional_base(_Optional_base&& __other) + noexcept(is_nothrow_move_constructible<_Tp>()) + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + } + + _Optional_base& + operator=(const _Optional_base& __other) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = __other._M_get(); + else + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + else + this->_M_reset(); + } + return *this; + } + + _Optional_base& + operator=(_Optional_base&& __other) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>()) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = std::move(__other._M_get()); + else + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + else + this->_M_reset(); + } + return *this; + } + + // Sole difference + // ~_Optional_base() noexcept = default; + + protected: + constexpr bool _M_is_engaged() const noexcept + { return this->_M_engaged; } + + _Tp& + _M_get() noexcept + { return _M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return _M_payload; } + + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new (std::__addressof(this->_M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + this->_M_engaged = true; + } + + void + _M_destruct() + { + this->_M_engaged = false; + this->_M_payload.~_Stored_type(); + } + + void + _M_reset() + { + if (this->_M_engaged) + this->_M_destruct(); + } + + private: + struct _Empty_byte { }; + union + { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged = false; + }; + + template + class optional; + + template + using __converts_from_optional = + __or_&>, + is_constructible<_Tp, optional<_Up>&>, + is_constructible<_Tp, const optional<_Up>&&>, + is_constructible<_Tp, optional<_Up>&&>, + is_convertible&, _Tp>, + is_convertible&, _Tp>, + is_convertible&&, _Tp>, + is_convertible&&, _Tp>>; + + template + using __assigns_from_optional = + __or_&>, + is_assignable<_Tp&, optional<_Up>&>, + is_assignable<_Tp&, const optional<_Up>&&>, + is_assignable<_Tp&, optional<_Up>&&>>; + + /** + * @brief Class template for optional values. + */ + template + class optional + : private _Optional_base<_Tp>, + private _Enable_copy_move< + // Copy constructor. + is_copy_constructible<_Tp>::value, + // Copy assignment. + __and_, is_copy_assignable<_Tp>>::value, + // Move constructor. + is_move_constructible<_Tp>::value, + // Move assignment. + __and_, is_move_assignable<_Tp>>::value, + // Unique tag type. + optional<_Tp>> + { + static_assert(__and_<__not_, nullopt_t>>, + __not_, in_place_t>>, + __not_>>(), + "Invalid instantiation of optional"); + + private: + using _Base = _Optional_base<_Tp>; + + public: + using value_type = _Tp; + + // _Optional_base has the responsibility for construction. + using _Base::_Base; + + constexpr optional() = default; + // Converting constructors for engaged optionals. + template , decay_t<_Up>>>, + is_constructible<_Tp, _Up&&>, + is_convertible<_Up&&, _Tp> + >::value, bool> = true> + constexpr optional(_Up&& __t) + : _Base(in_place, std::forward<_Up>(__t)) { } + + template , decay_t<_Up>>>, + is_constructible<_Tp, _Up&&>, + __not_> + >::value, bool> = false> + explicit constexpr optional(_Up&& __t) + : _Base(in_place, std::forward<_Up>(__t)) { } + + template >, + is_constructible<_Tp, const _Up&>, + is_convertible, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = true> + constexpr optional(const optional<_Up>& __t) + { + if (__t) + emplace(*__t); + } + + template >, + is_constructible<_Tp, const _Up&>, + __not_>, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = false> + explicit constexpr optional(const optional<_Up>& __t) + { + if (__t) + emplace(*__t); + } + + template >, + is_constructible<_Tp, _Up&&>, + is_convertible<_Up&&, _Tp>, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = true> + constexpr optional(optional<_Up>&& __t) + { + if (__t) + emplace(std::move(*__t)); + } + + template >, + is_constructible<_Tp, _Up&&>, + __not_>, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = false> + explicit constexpr optional(optional<_Up>&& __t) + { + if (__t) + emplace(std::move(*__t)); + } + + // [X.Y.4.3] (partly) Assignment. + optional& + operator=(nullopt_t) noexcept + { + this->_M_reset(); + return *this; + } + + template + enable_if_t<__and_< + __not_, decay_t<_Up>>>, + is_constructible<_Tp, _Up>, + __not_<__and_, + is_same<_Tp, decay_t<_Up>>>>, + is_assignable<_Tp&, _Up>>::value, + optional&> + operator=(_Up&& __u) + { + if (this->_M_is_engaged()) + this->_M_get() = std::forward<_Up>(__u); + else + this->_M_construct(std::forward<_Up>(__u)); + + return *this; + } + + template + enable_if_t<__and_< + __not_>, + is_constructible<_Tp, const _Up&>, + is_assignable<_Tp&, _Up>, + __not_<__converts_from_optional<_Tp, _Up>>, + __not_<__assigns_from_optional<_Tp, _Up>> + >::value, + optional&> + operator=(const optional<_Up>& __u) + { + if (__u) + { + if (this->_M_is_engaged()) + this->_M_get() = *__u; + else + this->_M_construct(*__u); + } + else + { + this->_M_reset(); + } + return *this; + } + + template + enable_if_t<__and_< + __not_>, + is_constructible<_Tp, _Up>, + is_assignable<_Tp&, _Up>, + __not_<__converts_from_optional<_Tp, _Up>>, + __not_<__assigns_from_optional<_Tp, _Up>> + >::value, + optional&> + operator=(optional<_Up>&& __u) + { + if (__u) + { + if (this->_M_is_engaged()) + this->_M_get() = std::move(*__u); + else + this->_M_construct(std::move(*__u)); + } + else + { + this->_M_reset(); + } + + return *this; + } + + template + enable_if_t::value> + emplace(_Args&&... __args) + { + this->_M_reset(); + this->_M_construct(std::forward<_Args>(__args)...); + } + + template + enable_if_t&, + _Args&&...>::value> + emplace(initializer_list<_Up> __il, _Args&&... __args) + { + this->_M_reset(); + this->_M_construct(__il, std::forward<_Args>(__args)...); + } + + // [X.Y.4.2] Destructor is implicit, implemented in _Optional_base. + + // [X.Y.4.4] Swap. + void + swap(optional& __other) + noexcept(is_nothrow_move_constructible<_Tp>() + && __is_nothrow_swappable<_Tp>::value) + { + using std::swap; + + if (this->_M_is_engaged() && __other._M_is_engaged()) + swap(this->_M_get(), __other._M_get()); + else if (this->_M_is_engaged()) + { + __other._M_construct(std::move(this->_M_get())); + this->_M_destruct(); + } + else if (__other._M_is_engaged()) + { + this->_M_construct(std::move(__other._M_get())); + __other._M_destruct(); + } + } + + // [X.Y.4.5] Observers. + constexpr const _Tp* + operator->() const + { +#ifndef __cpp_lib_addressof_constexpr + return __constexpr_addressof(this->_M_get()); +#else + return std::__addressof(this->_M_get()); +#endif + } + + _Tp* + operator->() + { return std::__addressof(this->_M_get()); } + + constexpr const _Tp& + operator*() const& + { return this->_M_get(); } + + constexpr _Tp& + operator*()& + { return this->_M_get(); } + + constexpr _Tp&& + operator*()&& + { return std::move(this->_M_get()); } + + constexpr const _Tp&& + operator*() const&& + { return std::move(this->_M_get()); } + + constexpr explicit operator bool() const noexcept + { return this->_M_is_engaged(); } + + constexpr const _Tp& + value() const& + { + return this->_M_is_engaged() + ? this->_M_get() + : (__throw_bad_optional_access("Attempt to access value of a " + "disengaged optional object"), + this->_M_get()); + } + + constexpr _Tp& + value()& + { + return this->_M_is_engaged() + ? this->_M_get() + : (__throw_bad_optional_access("Attempt to access value of a " + "disengaged optional object"), + this->_M_get()); + } + + constexpr _Tp&& + value()&& + { + return this->_M_is_engaged() + ? std::move(this->_M_get()) + : (__throw_bad_optional_access("Attempt to access value of a " + "disengaged optional object"), + std::move(this->_M_get())); + } + + constexpr const _Tp&& + value() const&& + { + return this->_M_is_engaged() + ? std::move(this->_M_get()) + : (__throw_bad_optional_access("Attempt to access value of a " + "disengaged optional object"), + std::move(this->_M_get())); + } + + template + constexpr _Tp + value_or(_Up&& __u) const& + { + static_assert(__and_, + is_convertible<_Up&&, _Tp>>(), + "Cannot return value"); + + return this->_M_is_engaged() + ? this->_M_get() + : static_cast<_Tp>(std::forward<_Up>(__u)); + } + + template + _Tp + value_or(_Up&& __u) && + { + static_assert(__and_, + is_convertible<_Up&&, _Tp>>(), + "Cannot return value" ); + + return this->_M_is_engaged() + ? std::move(this->_M_get()) + : static_cast<_Tp>(std::forward<_Up>(__u)); + } + }; + + // [X.Y.8] Comparisons between optional values. + template + constexpr bool + operator==(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) + { + return static_cast(__lhs) == static_cast(__rhs) + && (!__lhs || *__lhs == *__rhs); + } + + template + constexpr bool + operator!=(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) + { return !(__lhs == __rhs); } + + template + constexpr bool + operator<(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) + { + return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); + } + + template + constexpr bool + operator>(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) + { return __rhs < __lhs; } + + template + constexpr bool + operator<=(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) + { return !(__rhs < __lhs); } + + template + constexpr bool + operator>=(const optional<_Tp>& __lhs, const optional<_Tp>& __rhs) + { return !(__lhs < __rhs); } + + // [X.Y.9] Comparisons with nullopt. + template + constexpr bool + operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return !__lhs; } + + template + constexpr bool + operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return !__rhs; } + + template + constexpr bool + operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return static_cast(__lhs); } + + template + constexpr bool + operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return static_cast(__rhs); } + + template + constexpr bool + operator<(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept + { return false; } + + template + constexpr bool + operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return static_cast(__rhs); } + + template + constexpr bool + operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return static_cast(__lhs); } + + template + constexpr bool + operator>(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept + { return false; } + + template + constexpr bool + operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return !__lhs; } + + template + constexpr bool + operator<=(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept + { return true; } + + template + constexpr bool + operator>=(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept + { return true; } + + template + constexpr bool + operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return !__rhs; } + + // [X.Y.10] Comparisons with value type. + template + constexpr bool + operator==(const optional<_Tp>& __lhs, const _Tp& __rhs) + { return __lhs && *__lhs == __rhs; } + + template + constexpr bool + operator==(const _Tp& __lhs, const optional<_Tp>& __rhs) + { return __rhs && __lhs == *__rhs; } + + template + constexpr bool + operator!=(const optional<_Tp>& __lhs, _Tp const& __rhs) + { return !__lhs || !(*__lhs == __rhs); } + + template + constexpr bool + operator!=(const _Tp& __lhs, const optional<_Tp>& __rhs) + { return !__rhs || !(__lhs == *__rhs); } + + template + constexpr bool + operator<(const optional<_Tp>& __lhs, const _Tp& __rhs) + { return !__lhs || *__lhs < __rhs; } + + template + constexpr bool + operator<(const _Tp& __lhs, const optional<_Tp>& __rhs) + { return __rhs && __lhs < *__rhs; } + + template + constexpr bool + operator>(const optional<_Tp>& __lhs, const _Tp& __rhs) + { return __lhs && __rhs < *__lhs; } + + template + constexpr bool + operator>(const _Tp& __lhs, const optional<_Tp>& __rhs) + { return !__rhs || *__rhs < __lhs; } + + template + constexpr bool + operator<=(const optional<_Tp>& __lhs, const _Tp& __rhs) + { return !__lhs || !(__rhs < *__lhs); } + + template + constexpr bool + operator<=(const _Tp& __lhs, const optional<_Tp>& __rhs) + { return __rhs && !(*__rhs < __lhs); } + + template + constexpr bool + operator>=(const optional<_Tp>& __lhs, const _Tp& __rhs) + { return __lhs && !(*__lhs < __rhs); } + + template + constexpr bool + operator>=(const _Tp& __lhs, const optional<_Tp>& __rhs) + { return !__rhs || !(__lhs < *__rhs); } + + // [X.Y.11] + template + inline void + swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) + noexcept(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + + template + constexpr optional> + make_optional(_Tp&& __t) + { return optional> { std::forward<_Tp>(__t) }; } + + // @} group optional +} // namespace fundamentals_v1 +} // namespace experimental + + // [X.Y.12] + template + struct hash> + { + using result_type = size_t; + using argument_type = experimental::optional<_Tp>; + + size_t + operator()(const experimental::optional<_Tp>& __t) const + noexcept(noexcept(hash<_Tp> {}(*__t))) + { + // We pick an arbitrary hash for disengaged optionals which hopefully + // usual values of _Tp won't typically hash to. + constexpr size_t __magic_disengaged_hash = static_cast(-3333); + return __t ? hash<_Tp> {}(*__t) : __magic_disengaged_hash; + } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_OPTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/propagate_const b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/propagate_const similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/propagate_const rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/propagate_const index 719e17aa3..004f4e810 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/propagate_const +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/propagate_const @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2015-2017 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 @@ -31,9 +31,7 @@ #pragma GCC system_header -#if __cplusplus <= 201103L -# include -#else +#if __cplusplus >= 201402L #include #include @@ -43,12 +41,12 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace experimental { inline namespace fundamentals_v2 { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @defgroup propagate_const Const-propagating wrapper * @ingroup experimental @@ -424,7 +422,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // @} group propagate_const - _GLIBCXX_END_NAMESPACE_VERSION } // namespace fundamentals_v2 } // namespace experimental @@ -533,6 +530,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef experimental::propagate_const<_Tp> second_argument_type; typedef bool result_type; }; + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // C++14 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/random new file mode 100644 index 000000000..deb7bd6b7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/random @@ -0,0 +1,80 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/random + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_RANDOM +#define _GLIBCXX_EXPERIMENTAL_RANDOM 1 + +#include +#include + +namespace std { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental { +inline namespace fundamentals_v2 { +#define __cpp_lib_experimental_randint 201511 + + inline std::default_random_engine& + _S_randint_engine() + { + static thread_local default_random_engine __eng{random_device{}()}; + return __eng; + } + + // 13.2.2.1, Function template randint + template + inline _IntType + randint(_IntType __a, _IntType __b) + { + static_assert(is_integral<_IntType>::value && sizeof(_IntType) > 1, + "argument must be an integer type"); + using _Dist = std::uniform_int_distribution<_IntType>; + // This relies on the fact our uniform_int_distribution is stateless, + // otherwise we'd need a static thread_local _Dist and pass it + // _Dist::param_type{__a, __b}. + return _Dist(__a, __b)(_S_randint_engine()); + } + + inline void + reseed() + { + _S_randint_engine().seed(random_device{}()); + } + + inline void + reseed(default_random_engine::result_type __value) + { + _S_randint_engine().seed(__value); + } +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/ratio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/ratio new file mode 100644 index 000000000..5a7ebada1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/ratio @@ -0,0 +1,72 @@ +// Variable Templates For ratio -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/ratio + * This is a TS C++ Library header. + */ + +// +// N3932 Variable Templates For Type Traits (Revision 1) +// + +#ifndef _GLIBCXX_EXPERIMENTAL_RATIO +#define _GLIBCXX_EXPERIMENTAL_RATIO 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ +// See C++14 §20.11.5, ratio comparison +template + constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; +template + constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; +template + constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; +template + constexpr bool ratio_less_equal_v = ratio_less_equal<_R1, _R2>::value; +template + constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; +template + constexpr bool ratio_greater_equal_v = ratio_greater_equal<_R1, _R2>::value; +} // namespace fundamentals_v1 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_RATIO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/regex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/regex new file mode 100644 index 000000000..633b396b3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/regex @@ -0,0 +1,69 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/regex + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_REGEX +#define _GLIBCXX_EXPERIMENTAL_REGEX 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ +#if _GLIBCXX_USE_CXX11_ABI +namespace pmr +{ + template + using match_results + = std::match_results<_BidirectionalIterator, polymorphic_allocator< + sub_match<_BidirectionalIterator>>>; + + typedef match_results cmatch; + typedef match_results wcmatch; + typedef match_results smatch; + typedef match_results wsmatch; + +} // namespace pmr +#endif +} // namespace fundamentals_v2 +} // namespace experimental +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_REGEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/set new file mode 100644 index 000000000..7c90ee195 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/set @@ -0,0 +1,77 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/set + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_SET +#define _GLIBCXX_EXPERIMENTAL_SET 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(set<_Key, _Compare, _Alloc>& __cont, _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + template + inline void + erase_if(multiset<_Key, _Compare, _Alloc>& __cont, _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + namespace pmr { + template> + using set = std::set<_Key, _Compare, polymorphic_allocator<_Key>>; + + template> + using multiset = std::multiset<_Key, _Compare, + polymorphic_allocator<_Key>>; + } // namespace pmr + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/source_location b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/source_location similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/source_location rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/source_location index b06d8b651..389eb816b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/experimental/source_location +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/source_location @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2015 Free Software Foundation, Inc. +// Copyright (C) 2015-2018 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 @@ -32,10 +32,10 @@ #include namespace std { -namespace experimental { -inline namespace fundamentals_v2 { _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace experimental { +inline namespace fundamentals_v2 { #define __cpp_lib_experimental_source_location 201505 struct source_location @@ -77,10 +77,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION uint_least32_t _M_line; uint_least32_t _M_col; }; - -_GLIBCXX_END_NAMESPACE_VERSION } // namespace fundamentals_v2 } // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/string b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/string new file mode 100644 index 000000000..5a96bf78d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/string @@ -0,0 +1,90 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/string + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_STRING +#define _GLIBCXX_EXPERIMENTAL_STRING 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(basic_string<_CharT, _Traits, _Alloc>& __cont, _Predicate __pred) + { + __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), + __cont.end()); + } + + template + inline void + erase(basic_string<_CharT, _Traits, _Alloc>& __cont, const _Up& __value) + { + __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), + __cont.end()); + } + +#if _GLIBCXX_USE_CXX11_ABI + namespace pmr + { + // basic_string using polymorphic allocator in namespace pmr + template> + using basic_string = + std::basic_string<_CharT, _Traits, polymorphic_allocator<_CharT>>; + + // basic_string typedef names using polymorphic allocator in namespace + // std::experimental::pmr + typedef basic_string string; + typedef basic_string u16string; + typedef basic_string u32string; + typedef basic_string wstring; + + } // namespace pmr +#endif +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_STRING diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/string_view b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/string_view new file mode 100644 index 000000000..2bbd9aa8a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/string_view @@ -0,0 +1,680 @@ +// Components for manipulating non-owning sequences of characters -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file experimental/string_view + * This is a TS C++ Library header. + */ + +// +// N3762 basic_string_view library +// + +#ifndef _GLIBCXX_EXPERIMENTAL_STRING_VIEW +#define _GLIBCXX_EXPERIMENTAL_STRING_VIEW 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ +#define __cpp_lib_experimental_string_view 201411 + + /** + * @class basic_string_view + * @brief A non-owning reference to a string. + * + * @ingroup strings + * @ingroup sequences + * @ingroup experimental + * + * @tparam _CharT Type of character + * @tparam _Traits Traits for character type, defaults to + * char_traits<_CharT>. + * + * A basic_string_view looks like this: + * + * @code + * _CharT* _M_str + * size_t _M_len + * @endcode + */ + template> + class basic_string_view + { + public: + + // types + using traits_type = _Traits; + using value_type = _CharT; + using pointer = const _CharT*; + using const_pointer = const _CharT*; + using reference = const _CharT&; + using const_reference = const _CharT&; + using const_iterator = const _CharT*; + using iterator = const_iterator; + using const_reverse_iterator = std::reverse_iterator; + using reverse_iterator = const_reverse_iterator; + using size_type = size_t; + using difference_type = ptrdiff_t; + static constexpr size_type npos = size_type(-1); + + // [string.view.cons], construct/copy + + constexpr + basic_string_view() noexcept + : _M_len{0}, _M_str{nullptr} + { } + + constexpr basic_string_view(const basic_string_view&) noexcept = default; + + template + basic_string_view(const basic_string<_CharT, _Traits, + _Allocator>& __str) noexcept + : _M_len{__str.length()}, _M_str{__str.data()} + { } + + constexpr basic_string_view(const _CharT* __str) + : _M_len{__str == nullptr ? 0 : traits_type::length(__str)}, + _M_str{__str} + { } + + constexpr basic_string_view(const _CharT* __str, size_type __len) + : _M_len{__len}, + _M_str{__str} + { } + + basic_string_view& + operator=(const basic_string_view&) noexcept = default; + + // [string.view.iterators], iterators + + constexpr const_iterator + begin() const noexcept + { return this->_M_str; } + + constexpr const_iterator + end() const noexcept + { return this->_M_str + this->_M_len; } + + constexpr const_iterator + cbegin() const noexcept + { return this->_M_str; } + + constexpr const_iterator + cend() const noexcept + { return this->_M_str + this->_M_len; } + + const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(this->begin()); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(this->begin()); } + + // [string.view.capacity], capacity + + constexpr size_type + size() const noexcept + { return this->_M_len; } + + constexpr size_type + length() const noexcept + { return _M_len; } + + constexpr size_type + max_size() const noexcept + { + return (npos - sizeof(size_type) - sizeof(void*)) + / sizeof(value_type) / 4; + } + + constexpr bool + empty() const noexcept + { return this->_M_len == 0; } + + // [string.view.access], element access + + constexpr const _CharT& + operator[](size_type __pos) const + { + // TODO: Assert to restore in a way compatible with the constexpr. + // __glibcxx_assert(__pos < this->_M_len); + return *(this->_M_str + __pos); + } + + constexpr const _CharT& + at(size_type __pos) const + { + return __pos < this->_M_len + ? *(this->_M_str + __pos) + : (__throw_out_of_range_fmt(__N("basic_string_view::at: __pos " + "(which is %zu) >= this->size() " + "(which is %zu)"), + __pos, this->size()), + *this->_M_str); + } + + constexpr const _CharT& + front() const + { + // TODO: Assert to restore in a way compatible with the constexpr. + // __glibcxx_assert(this->_M_len > 0); + return *this->_M_str; + } + + constexpr const _CharT& + back() const + { + // TODO: Assert to restore in a way compatible with the constexpr. + // __glibcxx_assert(this->_M_len > 0); + return *(this->_M_str + this->_M_len - 1); + } + + constexpr const _CharT* + data() const noexcept + { return this->_M_str; } + + // [string.view.modifiers], modifiers: + + constexpr void + remove_prefix(size_type __n) + { + __glibcxx_assert(this->_M_len >= __n); + this->_M_str += __n; + this->_M_len -= __n; + } + + constexpr void + remove_suffix(size_type __n) + { this->_M_len -= __n; } + + constexpr void + swap(basic_string_view& __sv) noexcept + { + auto __tmp = *this; + *this = __sv; + __sv = __tmp; + } + + + // [string.view.ops], string operations: + + template + explicit operator basic_string<_CharT, _Traits, _Allocator>() const + { + return { this->_M_str, this->_M_len }; + } + + template> + basic_string<_CharT, _Traits, _Allocator> + to_string(const _Allocator& __alloc = _Allocator()) const + { + return { this->_M_str, this->_M_len, __alloc }; + } + + size_type + copy(_CharT* __str, size_type __n, size_type __pos = 0) const + { + __glibcxx_requires_string_len(__str, __n); + if (__pos > this->_M_len) + __throw_out_of_range_fmt(__N("basic_string_view::copy: __pos " + "(which is %zu) > this->size() " + "(which is %zu)"), + __pos, this->size()); + size_type __rlen{std::min(__n, size_type{this->_M_len - __pos})}; + for (auto __begin = this->_M_str + __pos, + __end = __begin + __rlen; __begin != __end;) + *__str++ = *__begin++; + return __rlen; + } + + + // [string.view.ops], string operations: + + constexpr basic_string_view + substr(size_type __pos = 0, size_type __n = npos) const + { + return __pos <= this->_M_len + ? basic_string_view{this->_M_str + __pos, + std::min(__n, size_type{this->_M_len - __pos})} + : (__throw_out_of_range_fmt(__N("basic_string_view::substr: __pos " + "(which is %zu) > this->size() " + "(which is %zu)"), + __pos, this->size()), basic_string_view{}); + } + + constexpr int + compare(basic_string_view __str) const noexcept + { + int __ret = traits_type::compare(this->_M_str, __str._M_str, + std::min(this->_M_len, __str._M_len)); + if (__ret == 0) + __ret = _S_compare(this->_M_len, __str._M_len); + return __ret; + } + + constexpr int + compare(size_type __pos1, size_type __n1, basic_string_view __str) const + { return this->substr(__pos1, __n1).compare(__str); } + + constexpr int + compare(size_type __pos1, size_type __n1, + basic_string_view __str, size_type __pos2, size_type __n2) const + { return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); } + + constexpr int + compare(const _CharT* __str) const noexcept + { return this->compare(basic_string_view{__str}); } + + constexpr int + compare(size_type __pos1, size_type __n1, const _CharT* __str) const + { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } + + constexpr int + compare(size_type __pos1, size_type __n1, + const _CharT* __str, size_type __n2) const + { + return this->substr(__pos1, __n1) + .compare(basic_string_view(__str, __n2)); + } + + constexpr size_type + find(basic_string_view __str, size_type __pos = 0) const noexcept + { return this->find(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find(_CharT __c, size_type __pos=0) const noexcept; + + constexpr size_type + find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; + + constexpr size_type + find(const _CharT* __str, size_type __pos=0) const noexcept + { return this->find(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + rfind(basic_string_view __str, size_type __pos = npos) const noexcept + { return this->rfind(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + rfind(_CharT __c, size_type __pos = npos) const noexcept; + + constexpr size_type + rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; + + constexpr size_type + rfind(const _CharT* __str, size_type __pos = npos) const noexcept + { return this->rfind(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept + { return this->find_first_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_first_of(_CharT __c, size_type __pos = 0) const noexcept + { return this->find(__c, __pos); } + + constexpr size_type + find_first_of(const _CharT* __str, size_type __pos, size_type __n) const; + + constexpr size_type + find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept + { return this->find_first_of(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + find_last_of(basic_string_view __str, + size_type __pos = npos) const noexcept + { return this->find_last_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_last_of(_CharT __c, size_type __pos=npos) const noexcept + { return this->rfind(__c, __pos); } + + constexpr size_type + find_last_of(const _CharT* __str, size_type __pos, size_type __n) const; + + constexpr size_type + find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept + { return this->find_last_of(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + find_first_not_of(basic_string_view __str, + size_type __pos = 0) const noexcept + { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; + + constexpr size_type + find_first_not_of(const _CharT* __str, + size_type __pos, size_type __n) const; + + constexpr size_type + find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept + { + return this->find_first_not_of(__str, __pos, + traits_type::length(__str)); + } + + constexpr size_type + find_last_not_of(basic_string_view __str, + size_type __pos = npos) const noexcept + { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; + + constexpr size_type + find_last_not_of(const _CharT* __str, + size_type __pos, size_type __n) const; + + constexpr size_type + find_last_not_of(const _CharT* __str, + size_type __pos = npos) const noexcept + { + return this->find_last_not_of(__str, __pos, + traits_type::length(__str)); + } + + private: + + static constexpr int + _S_compare(size_type __n1, size_type __n2) noexcept + { + return difference_type(__n1 - __n2) > std::numeric_limits::max() + ? std::numeric_limits::max() + : difference_type(__n1 - __n2) < std::numeric_limits::min() + ? std::numeric_limits::min() + : static_cast(difference_type(__n1 - __n2)); + } + + size_t _M_len; + const _CharT* _M_str; + }; + + // [string.view.comparison], non-member basic_string_view comparison functions + + namespace __detail + { + // Identity transform to create a non-deduced context, so that only one + // argument participates in template argument deduction and the other + // argument gets implicitly converted to the deduced type. See n3766.html. + template + using __idt = common_type_t<_Tp>; + } + + template + constexpr bool + operator==(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.size() == __y.size() && __x.compare(__y) == 0; } + + template + constexpr bool + operator==(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.size() == __y.size() && __x.compare(__y) == 0; } + + template + constexpr bool + operator==(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.size() == __y.size() && __x.compare(__y) == 0; } + + template + constexpr bool + operator!=(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return !(__x == __y); } + + template + constexpr bool + operator!=(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return !(__x == __y); } + + template + constexpr bool + operator!=(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return !(__x == __y); } + + template + constexpr bool + operator< (basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) < 0; } + + template + constexpr bool + operator< (basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) < 0; } + + template + constexpr bool + operator< (__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) < 0; } + + template + constexpr bool + operator> (basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) > 0; } + + template + constexpr bool + operator> (basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) > 0; } + + template + constexpr bool + operator> (__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) > 0; } + + template + constexpr bool + operator<=(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) <= 0; } + + template + constexpr bool + operator<=(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) <= 0; } + + template + constexpr bool + operator<=(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) <= 0; } + + template + constexpr bool + operator>=(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) >= 0; } + + template + constexpr bool + operator>=(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) >= 0; } + + template + constexpr bool + operator>=(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) >= 0; } + + // [string.view.io], Inserters and extractors + template + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, + basic_string_view<_CharT,_Traits> __str) + { return __ostream_insert(__os, __str.data(), __str.size()); } + + + // basic_string_view typedef names + + using string_view = basic_string_view; +#ifdef _GLIBCXX_USE_WCHAR_T + using wstring_view = basic_string_view; +#endif +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + using u16string_view = basic_string_view; + using u32string_view = basic_string_view; +#endif +} // namespace fundamentals_v1 +} // namespace experimental + + + // [string.view.hash], hash support: + template + struct hash; + + template<> + struct hash + : public __hash_base + { + size_t + operator()(const experimental::string_view& __str) const noexcept + { return std::_Hash_impl::hash(__str.data(), __str.length()); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + struct hash + : public __hash_base + { + size_t + operator()(const experimental::wstring_view& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(wchar_t)); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; +#endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + template<> + struct hash + : public __hash_base + { + size_t + operator()(const experimental::u16string_view& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(char16_t)); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; + + template<> + struct hash + : public __hash_base + { + size_t + operator()(const experimental::u32string_view& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(char32_t)); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; +#endif + +namespace experimental +{ + // I added these EMSR. + inline namespace literals + { + inline namespace string_view_literals + { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wliteral-suffix" + inline constexpr basic_string_view + operator""sv(const char* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } + +#ifdef _GLIBCXX_USE_WCHAR_T + inline constexpr basic_string_view + operator""sv(const wchar_t* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } +#endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + inline constexpr basic_string_view + operator""sv(const char16_t* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } + + inline constexpr basic_string_view + operator""sv(const char32_t* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } +#endif +#pragma GCC diagnostic pop + } // namespace string_literals + } // namespace literals +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#include + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/system_error b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/system_error new file mode 100644 index 000000000..bce59bf21 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/system_error @@ -0,0 +1,65 @@ +// Variable Templates For system_error -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/system_error + * This is a TS C++ Library header. + */ + +// +// N3932 Variable Templates For Type Traits (Revision 1) +// + +#ifndef _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR +#define _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ +// See C++14 §19.5, System error support +template + constexpr bool is_error_code_enum_v = is_error_code_enum<_Tp>::value; +template + constexpr bool is_error_condition_enum_v = + is_error_condition_enum<_Tp>::value; +} // namespace fundamentals_v1 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_SYSTEM_ERROR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/tuple b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/tuple new file mode 100644 index 000000000..f072c8631 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/tuple @@ -0,0 +1,80 @@ +// -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/tuple + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_TUPLE +#define _GLIBCXX_EXPERIMENTAL_TUPLE 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ + // See C++14 §20.4.2.5, tuple helper classes + template + constexpr size_t tuple_size_v = tuple_size<_Tp>::value; + +#define __cpp_lib_experimental_tuple 201402 + + template + constexpr decltype(auto) + __apply_impl(_Fn&& __f, _Tuple&& __t, std::index_sequence<_Idx...>) + { + return std::__invoke(std::forward<_Fn>(__f), + std::get<_Idx>(std::forward<_Tuple>(__t))...); + } + + template + constexpr decltype(auto) + apply(_Fn&& __f, _Tuple&& __t) + { + using _Indices = + std::make_index_sequence>>; + return experimental::__apply_impl(std::forward<_Fn>(__f), + std::forward<_Tuple>(__t), + _Indices{}); + } +} // namespace fundamentals_v1 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_TUPLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/type_traits new file mode 100644 index 000000000..eb5c3c5a7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/type_traits @@ -0,0 +1,305 @@ +// Variable Templates For Type Traits -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file experimental/type_traits + * This is a TS C++ Library header. + */ + +// +// N3932 Variable Templates For Type Traits (Revision 1) +// + +#ifndef _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS +#define _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v1 +{ +#define __cpp_lib_experimental_type_trait_variable_templates 201402 + +// See C++14 §20.10.4.1, primary type categories +template + constexpr bool is_void_v = is_void<_Tp>::value; +template + constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; +template + constexpr bool is_integral_v = is_integral<_Tp>::value; +template + constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; +template + constexpr bool is_array_v = is_array<_Tp>::value; +template + constexpr bool is_pointer_v = is_pointer<_Tp>::value; +template + constexpr bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value; +template + constexpr bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value; +template + constexpr bool is_member_object_pointer_v = + is_member_object_pointer<_Tp>::value; +template + constexpr bool is_member_function_pointer_v = + is_member_function_pointer<_Tp>::value; +template + constexpr bool is_enum_v = is_enum<_Tp>::value; +template + constexpr bool is_union_v = is_union<_Tp>::value; +template + constexpr bool is_class_v = is_class<_Tp>::value; +template + constexpr bool is_function_v = is_function<_Tp>::value; + +// See C++14 §20.10.4.2, composite type categories +template + constexpr bool is_reference_v = is_reference<_Tp>::value; +template + constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; +template + constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; +template + constexpr bool is_object_v = is_object<_Tp>::value; +template + constexpr bool is_scalar_v = is_scalar<_Tp>::value; +template + constexpr bool is_compound_v = is_compound<_Tp>::value; +template + constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; + +// See C++14 §20.10.4.3, type properties +template + constexpr bool is_const_v = is_const<_Tp>::value; +template + constexpr bool is_volatile_v = is_volatile<_Tp>::value; +template + constexpr bool is_trivial_v = is_trivial<_Tp>::value; +template + constexpr bool is_trivially_copyable_v = is_trivially_copyable<_Tp>::value; +template + constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value; +template + constexpr bool is_pod_v = is_pod<_Tp>::value; +template + constexpr bool is_literal_type_v = is_literal_type<_Tp>::value; +template + constexpr bool is_empty_v = is_empty<_Tp>::value; +template + constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value; +template + constexpr bool is_abstract_v = is_abstract<_Tp>::value; +template + constexpr bool is_final_v = is_final<_Tp>::value; +template + constexpr bool is_signed_v = is_signed<_Tp>::value; +template + constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; +template + constexpr bool is_constructible_v = is_constructible<_Tp, _Args...>::value; +template + constexpr bool is_default_constructible_v = + is_default_constructible<_Tp>::value; +template + constexpr bool is_copy_constructible_v = is_copy_constructible<_Tp>::value; +template + constexpr bool is_move_constructible_v = is_move_constructible<_Tp>::value; +template + constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value; +template + constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; +template + constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; +template + constexpr bool is_destructible_v = is_destructible<_Tp>::value; +template + constexpr bool is_trivially_constructible_v = + is_trivially_constructible<_Tp, _Args...>::value; +template + constexpr bool is_trivially_default_constructible_v = + is_trivially_default_constructible<_Tp>::value; +template + constexpr bool is_trivially_copy_constructible_v = + is_trivially_copy_constructible<_Tp>::value; +template + constexpr bool is_trivially_move_constructible_v = + is_trivially_move_constructible<_Tp>::value; +template + constexpr bool is_trivially_assignable_v = + is_trivially_assignable<_Tp, _Up>::value; +template + constexpr bool is_trivially_copy_assignable_v = + is_trivially_copy_assignable<_Tp>::value; +template + constexpr bool is_trivially_move_assignable_v = + is_trivially_move_assignable<_Tp>::value; +template + constexpr bool is_trivially_destructible_v = + is_trivially_destructible<_Tp>::value; +template + constexpr bool is_nothrow_constructible_v = + is_nothrow_constructible<_Tp, _Args...>::value; +template + constexpr bool is_nothrow_default_constructible_v = + is_nothrow_default_constructible<_Tp>::value; +template + constexpr bool is_nothrow_copy_constructible_v = + is_nothrow_copy_constructible<_Tp>::value; +template + constexpr bool is_nothrow_move_constructible_v = + is_nothrow_move_constructible<_Tp>::value; +template + constexpr bool is_nothrow_assignable_v = + is_nothrow_assignable<_Tp, _Up>::value; +template + constexpr bool is_nothrow_copy_assignable_v = + is_nothrow_copy_assignable<_Tp>::value; +template + constexpr bool is_nothrow_move_assignable_v = + is_nothrow_move_assignable<_Tp>::value; +template + constexpr bool is_nothrow_destructible_v = + is_nothrow_destructible<_Tp>::value; +template + constexpr bool has_virtual_destructor_v = + has_virtual_destructor<_Tp>::value; + +// See C++14 §20.10.5, type property queries +template + constexpr size_t alignment_of_v = alignment_of<_Tp>::value; +template + constexpr size_t rank_v = rank<_Tp>::value; +template + constexpr size_t extent_v = extent<_Tp, _Idx>::value; + +// See C++14 §20.10.6, type relations +template + constexpr bool is_same_v = is_same<_Tp, _Up>::value; +template + constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value; +template + constexpr bool is_convertible_v = is_convertible<_From, _To>::value; + + + // 3.3.2, Other type transformations + // invocation_type (still unimplemented) + // raw_invocation_type (still unimplemented) + // invocation_type_t (still unimplemented) + // raw_invocation_type_t (still unimplemented) +} // namespace fundamentals_v1 + +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_detect 201505 + +// [meta.detect] + +template using void_t = void; + +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + void operator=(nonesuch const&) = delete; +}; + +template class _Op, typename... _Args> + using is_detected + = typename std::__detector::value_t; + +template class _Op, typename... _Args> + constexpr bool is_detected_v = is_detected<_Op, _Args...>::value; + +template class _Op, typename... _Args> + using detected_t + = typename std::__detector::type; + +template class _Op, typename... _Args> + using detected_or = std::__detected_or<_Default, _Op, _Args...>; + +template class _Op, typename... _Args> + using detected_or_t = typename detected_or<_Default, _Op, _Args...>::type; + +template class _Op, typename... _Args> + using is_detected_exact = is_same>; + +template class _Op, typename... _Args> + constexpr bool is_detected_exact_v + = is_detected_exact::value; + +template class _Op, typename... _Args> + using is_detected_convertible + = is_convertible, _To>; + +template class _Op, typename... _Args> + constexpr bool is_detected_convertible_v + = is_detected_convertible<_To, _Op, _Args...>::value; + +#define __cpp_lib_experimental_logical_traits 201511 + +template + struct conjunction + : __and_<_Bn...> + { }; + +template + struct disjunction + : __or_<_Bn...> + { }; + +template + struct negation + : __not_<_Pp> + { }; + +template + constexpr bool conjunction_v + = conjunction<_Bn...>::value; + +template + constexpr bool disjunction_v + = disjunction<_Bn...>::value; + +template + constexpr bool negation_v + = negation<_Pp>::value; +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // __cplusplus <= 201103L + +#endif // _GLIBCXX_EXPERIMENTAL_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/unordered_map new file mode 100644 index 000000000..fdd3bf2f6 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/unordered_map @@ -0,0 +1,84 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/unordered_map + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP +#define _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(unordered_map<_Key, _Tp, _Hash, _CPred, _Alloc>& __cont, + _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + template + inline void + erase_if(unordered_multimap<_Key, _Tp, _Hash, _CPred, _Alloc>& __cont, + _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + namespace pmr { + template, + typename _Pred = equal_to<_Key>> + using unordered_map + = std::unordered_map<_Key, _Tp, _Hash, _Pred, + polymorphic_allocator>>; + + template, + typename _Pred = equal_to<_Key>> + using unordered_multimap + = std::unordered_multimap<_Key, _Tp, _Hash, _Pred, + polymorphic_allocator>>; + } // namespace pmr + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_UNORDERED_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/unordered_set new file mode 100644 index 000000000..8e4fc1b28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/unordered_set @@ -0,0 +1,83 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/unordered_set + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_UNORDERED_SET +#define _GLIBCXX_EXPERIMENTAL_UNORDERED_SET 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ + template + inline void + erase_if(unordered_set<_Key, _Hash, _CPred, _Alloc>& __cont, + _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + template + inline void + erase_if(unordered_multiset<_Key, _Hash, _CPred, _Alloc>& __cont, + _Predicate __pred) + { __detail::__erase_nodes_if(__cont, __pred); } + + namespace pmr { + template, + typename _Pred = equal_to<_Key>> + using unordered_set + = std::unordered_set<_Key, _Hash, _Pred, polymorphic_allocator<_Key>>; + + template, + typename _Pred = equal_to<_Key>> + using unordered_multiset + = std::unordered_multiset<_Key, _Hash, _Pred, + polymorphic_allocator<_Key>>; + } // namespace pmr + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_UNORDERED_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/utility b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/utility new file mode 100644 index 000000000..7e3671967 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/utility @@ -0,0 +1,49 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/utility + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_UTILITY +#define _GLIBCXX_EXPERIMENTAL_UTILITY 1 + +#include +#include +#include + +namespace std { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental { +inline namespace fundamentals_v2 { + // 3.1.2, erased-type placeholder + using erased_type = std::__erased_type; +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/vector new file mode 100644 index 000000000..ee49c19a3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/experimental/vector @@ -0,0 +1,79 @@ +// -*- C++ -*- + +// Copyright (C) 2015-2018 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 +// . + +/** @file experimental/vector + * This is a TS C++ Library header. + */ + +#ifndef _GLIBCXX_EXPERIMENTAL_VECTOR +#define _GLIBCXX_EXPERIMENTAL_VECTOR 1 + +#pragma GCC system_header + +#if __cplusplus >= 201402L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace experimental +{ +inline namespace fundamentals_v2 +{ +#define __cpp_lib_experimental_erase_if 201411 + + template + inline void + erase_if(vector<_Tp, _Alloc>& __cont, _Predicate __pred) + { + __cont.erase(std::remove_if(__cont.begin(), __cont.end(), __pred), + __cont.end()); + } + + template + inline void + erase(vector<_Tp, _Alloc>& __cont, const _Up& __value) + { + __cont.erase(std::remove(__cont.begin(), __cont.end(), __value), + __cont.end()); + } + + namespace pmr { + template + using vector = std::vector<_Tp, polymorphic_allocator<_Tp>>; + } // namespace pmr + +} // namespace fundamentals_v2 +} // namespace experimental + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + +#endif // _GLIBCXX_EXPERIMENTAL_VECTOR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/algorithm new file mode 100644 index 000000000..8e7eb3fdc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/algorithm @@ -0,0 +1,603 @@ +// Algorithm extensions -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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 + * 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 ext/algorithm + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_ALGORITHM +#define _EXT_ALGORITHM 1 + +#pragma GCC system_header + +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::ptrdiff_t; + using std::min; + using std::pair; + using std::input_iterator_tag; + using std::random_access_iterator_tag; + using std::iterator_traits; + + //-------------------------------------------------- + // copy_n (not part of the C++ standard) + + template + pair<_InputIterator, _OutputIterator> + __copy_n(_InputIterator __first, _Size __count, + _OutputIterator __result, + input_iterator_tag) + { + for ( ; __count > 0; --__count) + { + *__result = *__first; + ++__first; + ++__result; + } + return pair<_InputIterator, _OutputIterator>(__first, __result); + } + + template + inline pair<_RAIterator, _OutputIterator> + __copy_n(_RAIterator __first, _Size __count, + _OutputIterator __result, + random_access_iterator_tag) + { + _RAIterator __last = __first + __count; + return pair<_RAIterator, _OutputIterator>(__last, std::copy(__first, + __last, + __result)); + } + + /** + * @brief Copies the range [first,first+count) into [result,result+count). + * @param __first An input iterator. + * @param __count The number of elements to copy. + * @param __result An output iterator. + * @return A std::pair composed of first+count and result+count. + * + * This is an SGI extension. + * This inline function will boil down to a call to @c memmove whenever + * possible. Failing that, if random access iterators are passed, then the + * loop count will be known (and therefore a candidate for compiler + * optimizations such as unrolling). + * @ingroup SGIextensions + */ + template + inline pair<_InputIterator, _OutputIterator> + copy_n(_InputIterator __first, _Size __count, _OutputIterator __result) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_InputIterator>::value_type>) + + return __gnu_cxx::__copy_n(__first, __count, __result, + std::__iterator_category(__first)); + } + + template + int + __lexicographical_compare_3way(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2) + { + while (__first1 != __last1 && __first2 != __last2) + { + if (*__first1 < *__first2) + return -1; + if (*__first2 < *__first1) + return 1; + ++__first1; + ++__first2; + } + if (__first2 == __last2) + return !(__first1 == __last1); + else + return -1; + } + + inline int + __lexicographical_compare_3way(const unsigned char* __first1, + const unsigned char* __last1, + const unsigned char* __first2, + const unsigned char* __last2) + { + const ptrdiff_t __len1 = __last1 - __first1; + const ptrdiff_t __len2 = __last2 - __first2; + const int __result = __builtin_memcmp(__first1, __first2, + min(__len1, __len2)); + return __result != 0 ? __result + : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1)); + } + + inline int + __lexicographical_compare_3way(const char* __first1, const char* __last1, + const char* __first2, const char* __last2) + { +#if CHAR_MAX == SCHAR_MAX + return __lexicographical_compare_3way((const signed char*) __first1, + (const signed char*) __last1, + (const signed char*) __first2, + (const signed char*) __last2); +#else + return __lexicographical_compare_3way((const unsigned char*) __first1, + (const unsigned char*) __last1, + (const unsigned char*) __first2, + (const unsigned char*) __last2); +#endif + } + + /** + * @brief @c memcmp on steroids. + * @param __first1 An input iterator. + * @param __last1 An input iterator. + * @param __first2 An input iterator. + * @param __last2 An input iterator. + * @return An int, as with @c memcmp. + * + * The return value will be less than zero if the first range is + * lexigraphically less than the second, greater than zero + * if the second range is lexigraphically less than the + * first, and zero otherwise. + * This is an SGI extension. + * @ingroup SGIextensions + */ + template + int + lexicographical_compare_3way(_InputIterator1 __first1, + _InputIterator1 __last1, + _InputIterator2 __first2, + _InputIterator2 __last2) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_InputIterator1>::value_type>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_InputIterator2>::value_type>) + __glibcxx_requires_valid_range(__first1, __last1); + __glibcxx_requires_valid_range(__first2, __last2); + + return __lexicographical_compare_3way(__first1, __last1, __first2, + __last2); + } + + // count and count_if: this version, whose return type is void, was present + // in the HP STL, and is retained as an extension for backward compatibility. + template + void + count(_InputIterator __first, _InputIterator __last, + const _Tp& __value, + _Size& __n) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_EqualityComparableConcept< + typename iterator_traits<_InputIterator>::value_type >) + __glibcxx_function_requires(_EqualityComparableConcept<_Tp>) + __glibcxx_requires_valid_range(__first, __last); + + for ( ; __first != __last; ++__first) + if (*__first == __value) + ++__n; + } + + template + void + count_if(_InputIterator __first, _InputIterator __last, + _Predicate __pred, + _Size& __n) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate, + typename iterator_traits<_InputIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + for ( ; __first != __last; ++__first) + if (__pred(*__first)) + ++__n; + } + + // random_sample and random_sample_n (extensions, not part of the standard). + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + _OutputIterator + random_sample_n(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __out, const _Distance __n) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + _Distance __remaining = std::distance(__first, __last); + _Distance __m = min(__n, __remaining); + + while (__m > 0) + { + if ((std::rand() % __remaining) < __m) + { + *__out = *__first; + ++__out; + --__m; + } + --__remaining; + ++__first; + } + return __out; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + _OutputIterator + random_sample_n(_ForwardIterator __first, _ForwardIterator __last, + _OutputIterator __out, const _Distance __n, + _RandomNumberGenerator& __rand) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_function_requires(_UnaryFunctionConcept< + _RandomNumberGenerator, _Distance, _Distance>) + __glibcxx_requires_valid_range(__first, __last); + + _Distance __remaining = std::distance(__first, __last); + _Distance __m = min(__n, __remaining); + + while (__m > 0) + { + if (__rand(__remaining) < __m) + { + *__out = *__first; + ++__out; + --__m; + } + --__remaining; + ++__first; + } + return __out; + } + + template + _RandomAccessIterator + __random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out, + const _Distance __n) + { + _Distance __m = 0; + _Distance __t = __n; + for ( ; __first != __last && __m < __n; ++__m, ++__first) + __out[__m] = *__first; + + while (__first != __last) + { + ++__t; + _Distance __M = std::rand() % (__t); + if (__M < __n) + __out[__M] = *__first; + ++__first; + } + return __out + __m; + } + + template + _RandomAccessIterator + __random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out, + _RandomNumberGenerator& __rand, + const _Distance __n) + { + // concept requirements + __glibcxx_function_requires(_UnaryFunctionConcept< + _RandomNumberGenerator, _Distance, _Distance>) + + _Distance __m = 0; + _Distance __t = __n; + for ( ; __first != __last && __m < __n; ++__m, ++__first) + __out[__m] = *__first; + + while (__first != __last) + { + ++__t; + _Distance __M = __rand(__t); + if (__M < __n) + __out[__M] = *__first; + ++__first; + } + return __out + __m; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline _RandomAccessIterator + random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out_first, + _RandomAccessIterator __out_last) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_valid_range(__out_first, __out_last); + + return __random_sample(__first, __last, + __out_first, __out_last - __out_first); + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline _RandomAccessIterator + random_sample(_InputIterator __first, _InputIterator __last, + _RandomAccessIterator __out_first, + _RandomAccessIterator __out_last, + _RandomNumberGenerator& __rand) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_requires_valid_range(__first, __last); + __glibcxx_requires_valid_range(__out_first, __out_last); + + return __random_sample(__first, __last, + __out_first, __rand, + __out_last - __out_first); + } + +#if __cplusplus >= 201103L + using std::is_heap; +#else + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_RandomAccessIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__is_heap(__first, __last - __first); + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline bool + is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last, + _StrictWeakOrdering __comp) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering, + typename iterator_traits<_RandomAccessIterator>::value_type, + typename iterator_traits<_RandomAccessIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + return std::__is_heap(__first, __comp, __last - __first); + } +#endif + +#if __cplusplus >= 201103L + using std::is_sorted; +#else + // is_sorted, a predicated testing whether a range is sorted in + // nondescending order. This is an extension, not part of the C++ + // standard. + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_LessThanComparableConcept< + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return true; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (*__next < *__first) + return false; + return true; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + bool + is_sorted(_ForwardIterator __first, _ForwardIterator __last, + _StrictWeakOrdering __comp) + { + // concept requirements + __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) + __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering, + typename iterator_traits<_ForwardIterator>::value_type, + typename iterator_traits<_ForwardIterator>::value_type>) + __glibcxx_requires_valid_range(__first, __last); + + if (__first == __last) + return true; + + _ForwardIterator __next = __first; + for (++__next; __next != __last; __first = __next, ++__next) + if (__comp(*__next, *__first)) + return false; + return true; + } +#endif // C++11 + + /** + * @brief Find the median of three values. + * @param __a A value. + * @param __b A value. + * @param __c A value. + * @return One of @p a, @p b or @p c. + * + * If @c {l,m,n} is some convolution of @p {a,b,c} such that @c l<=m<=n + * then the value returned will be @c m. + * This is an SGI extension. + * @ingroup SGIextensions + */ + template + const _Tp& + __median(const _Tp& __a, const _Tp& __b, const _Tp& __c) + { + // concept requirements + __glibcxx_function_requires(_LessThanComparableConcept<_Tp>) + if (__a < __b) + if (__b < __c) + return __b; + else if (__a < __c) + return __c; + else + return __a; + else if (__a < __c) + return __a; + else if (__b < __c) + return __c; + else + return __b; + } + + /** + * @brief Find the median of three values using a predicate for comparison. + * @param __a A value. + * @param __b A value. + * @param __c A value. + * @param __comp A binary predicate. + * @return One of @p a, @p b or @p c. + * + * If @c {l,m,n} is some convolution of @p {a,b,c} such that @p comp(l,m) + * and @p comp(m,n) are both true then the value returned will be @c m. + * This is an SGI extension. + * @ingroup SGIextensions + */ + template + const _Tp& + __median(const _Tp& __a, const _Tp& __b, const _Tp& __c, _Compare __comp) + { + // concept requirements + __glibcxx_function_requires(_BinaryFunctionConcept<_Compare, bool, + _Tp, _Tp>) + if (__comp(__a, __b)) + if (__comp(__b, __c)) + return __b; + else if (__comp(__a, __c)) + return __c; + else + return __a; + else if (__comp(__a, __c)) + return __a; + else if (__comp(__b, __c)) + return __c; + else + return __b; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif /* _EXT_ALGORITHM */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/aligned_buffer.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/aligned_buffer.h similarity index 88% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/aligned_buffer.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/aligned_buffer.h index 789a0c8a1..2fc8f12e6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/aligned_buffer.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/aligned_buffer.h @@ -1,6 +1,6 @@ // Aligned memory buffer -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 @@ -49,6 +49,8 @@ namespace __gnu_cxx // Target macro ADJUST_FIELD_ALIGN can produce different alignment for // types when used as class members. __aligned_membuf is intended // for use as a class member, so align the buffer as for a class member. + // Since GCC 8 we could just use alignof(_Tp) instead, but older + // versions of non-GNU compilers might still need this trick. struct _Tp2 { _Tp _M_t; }; alignas(__alignof__(_Tp2::_M_t)) unsigned char _M_storage[sizeof(_Tp)]; @@ -75,6 +77,10 @@ namespace __gnu_cxx { return static_cast(_M_addr()); } }; +#if _GLIBCXX_INLINE_VERSION + template + using __aligned_buffer = __aligned_membuf<_Tp>; +#else // Similar to __aligned_membuf but aligned for complete objects, not members. // This type is used in , , // and , but ideally they would use __aligned_membuf @@ -82,11 +88,10 @@ namespace __gnu_cxx // This type is still used to avoid an ABI change. template struct __aligned_buffer - : std::aligned_storage::value> + : std::aligned_storage { typename - std::aligned_storage::value>::type - _M_storage; + std::aligned_storage::type _M_storage; __aligned_buffer() = default; @@ -113,6 +118,7 @@ namespace __gnu_cxx _M_ptr() const noexcept { return static_cast(_M_addr()); } }; +#endif } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/alloc_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/alloc_traits.h new file mode 100644 index 000000000..2570c59d8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/alloc_traits.h @@ -0,0 +1,163 @@ +// Allocator traits -*- C++ -*- + +// Copyright (C) 2011-2018 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 +// . + +/** @file ext/alloc_traits.h + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_ALLOC_TRAITS_H +#define _EXT_ALLOC_TRAITS_H 1 + +#pragma GCC system_header + +#if __cplusplus >= 201103L +# include +# include +#else +# include // for __alloc_swap +#endif + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +/** + * @brief Uniform interface to C++98 and C++11 allocators. + * @ingroup allocators +*/ +template + struct __alloc_traits +#if __cplusplus >= 201103L + : std::allocator_traits<_Alloc> +#endif + { + typedef _Alloc allocator_type; +#if __cplusplus >= 201103L + typedef std::allocator_traits<_Alloc> _Base_type; + typedef typename _Base_type::value_type value_type; + typedef typename _Base_type::pointer pointer; + typedef typename _Base_type::const_pointer const_pointer; + typedef typename _Base_type::size_type size_type; + typedef typename _Base_type::difference_type difference_type; + // C++11 allocators do not define reference or const_reference + typedef value_type& reference; + typedef const value_type& const_reference; + using _Base_type::allocate; + using _Base_type::deallocate; + using _Base_type::construct; + using _Base_type::destroy; + using _Base_type::max_size; + + private: + template + using __is_custom_pointer + = std::__and_, + std::__not_>>; + + public: + // overload construct for non-standard pointer types + template + static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type + construct(_Alloc& __a, _Ptr __p, _Args&&... __args) + { + _Base_type::construct(__a, std::__to_address(__p), + std::forward<_Args>(__args)...); + } + + // overload destroy for non-standard pointer types + template + static typename std::enable_if<__is_custom_pointer<_Ptr>::value>::type + destroy(_Alloc& __a, _Ptr __p) + { _Base_type::destroy(__a, std::__to_address(__p)); } + + static _Alloc _S_select_on_copy(const _Alloc& __a) + { return _Base_type::select_on_container_copy_construction(__a); } + + static void _S_on_swap(_Alloc& __a, _Alloc& __b) + { std::__alloc_on_swap(__a, __b); } + + static constexpr bool _S_propagate_on_copy_assign() + { return _Base_type::propagate_on_container_copy_assignment::value; } + + static constexpr bool _S_propagate_on_move_assign() + { return _Base_type::propagate_on_container_move_assignment::value; } + + static constexpr bool _S_propagate_on_swap() + { return _Base_type::propagate_on_container_swap::value; } + + static constexpr bool _S_always_equal() + { return _Base_type::is_always_equal::value; } + + static constexpr bool _S_nothrow_move() + { return _S_propagate_on_move_assign() || _S_always_equal(); } + + template + struct rebind + { typedef typename _Base_type::template rebind_alloc<_Tp> other; }; +#else + + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::value_type value_type; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + typedef typename _Alloc::size_type size_type; + typedef typename _Alloc::difference_type difference_type; + + static pointer + allocate(_Alloc& __a, size_type __n) + { return __a.allocate(__n); } + + static void deallocate(_Alloc& __a, pointer __p, size_type __n) + { __a.deallocate(__p, __n); } + + template + static void construct(_Alloc& __a, pointer __p, const _Tp& __arg) + { __a.construct(__p, __arg); } + + static void destroy(_Alloc& __a, pointer __p) + { __a.destroy(__p); } + + static size_type max_size(const _Alloc& __a) + { return __a.max_size(); } + + static const _Alloc& _S_select_on_copy(const _Alloc& __a) { return __a; } + + static void _S_on_swap(_Alloc& __a, _Alloc& __b) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap<_Alloc>::_S_do_it(__a, __b); + } + + template + struct rebind + { typedef typename _Alloc::template rebind<_Tp>::other other; }; +#endif + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/array_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/array_allocator.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/array_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/array_allocator.h index a2948e4c9..6279d6f2f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/array_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/array_allocator.h @@ -1,6 +1,6 @@ // array allocator -*- C++ -*- -// Copyright (C) 2004-2017 Free Software Foundation, Inc. +// Copyright (C) 2004-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/atomicity.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/atomicity.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/atomicity.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/atomicity.h index e6043fd65..d54060721 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/atomicity.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/atomicity.h @@ -1,6 +1,6 @@ // Support for atomic operations -*- C++ -*- -// Copyright (C) 2004-2017 Free Software Foundation, Inc. +// Copyright (C) 2004-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/bitmap_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/bitmap_allocator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/bitmap_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/bitmap_allocator.h index 3e3126985..67dd3b08b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/bitmap_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/bitmap_allocator.h @@ -1,6 +1,6 @@ // Bitmap Allocator. -*- C++ -*- -// Copyright (C) 2004-2017 Free Software Foundation, Inc. +// Copyright (C) 2004-2018 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 @@ -44,12 +44,13 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + using std::size_t; using std::ptrdiff_t; namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION /** @class __mini_vector bitmap_allocator.h bitmap_allocator.h * * @brief __mini_vector<> is a stripped down version of the @@ -501,12 +502,8 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) size_t __mask = 1 << __pos; *__pbmap |= __mask; } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail -_GLIBCXX_BEGIN_NAMESPACE_VERSION - /** @brief Generic Version of the bsf instruction. */ inline size_t @@ -1134,4 +1131,3 @@ _GLIBCXX_END_NAMESPACE_VERSION } // namespace __gnu_cxx #endif - diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/cast.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/cast.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/cast.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/cast.h index 95b011312..db86ac0bc 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/cast.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/cast.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/cmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/cmath new file mode 100644 index 000000000..c6a30b380 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/cmath @@ -0,0 +1,152 @@ +// Math extensions -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file ext/cmath + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_CMATH +#define _EXT_CMATH 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // A class for math constants. + template + struct __math_constants + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + // Constant @f$ \pi @f$. + static constexpr _RealType __pi = 3.1415926535897932384626433832795029L; + // Constant @f$ \pi / 2 @f$. + static constexpr _RealType __pi_half = 1.5707963267948966192313216916397514L; + // Constant @f$ \pi / 3 @f$. + static constexpr _RealType __pi_third = 1.0471975511965977461542144610931676L; + // Constant @f$ \pi / 4 @f$. + static constexpr _RealType __pi_quarter = 0.7853981633974483096156608458198757L; + // Constant @f$ \sqrt(\pi / 2) @f$. + static constexpr _RealType __root_pi_div_2 = 1.2533141373155002512078826424055226L; + // Constant @f$ 1 / \pi @f$. + static constexpr _RealType __one_div_pi = 0.3183098861837906715377675267450287L; + // Constant @f$ 2 / \pi @f$. + static constexpr _RealType __two_div_pi = 0.6366197723675813430755350534900574L; + // Constant @f$ 2 / \sqrt(\pi) @f$. + static constexpr _RealType __two_div_root_pi = 1.1283791670955125738961589031215452L; + + // Constant Euler's number @f$ e @f$. + static constexpr _RealType __e = 2.7182818284590452353602874713526625L; + // Constant @f$ 1 / e @f$. + static constexpr _RealType __one_div_e = 0.36787944117144232159552377016146087L; + // Constant @f$ \log_2(e) @f$. + static constexpr _RealType __log2_e = 1.4426950408889634073599246810018921L; + // Constant @f$ \log_10(e) @f$. + static constexpr _RealType __log10_e = 0.4342944819032518276511289189166051L; + // Constant @f$ \ln(2) @f$. + static constexpr _RealType __ln_2 = 0.6931471805599453094172321214581766L; + // Constant @f$ \ln(3) @f$. + static constexpr _RealType __ln_3 = 1.0986122886681096913952452369225257L; + // Constant @f$ \ln(10) @f$. + static constexpr _RealType __ln_10 = 2.3025850929940456840179914546843642L; + + // Constant Euler-Mascheroni @f$ \gamma_E @f$. + static constexpr _RealType __gamma_e = 0.5772156649015328606065120900824024L; + // Constant Golden Ratio @f$ \phi @f$. + static constexpr _RealType __phi = 1.6180339887498948482045868343656381L; + + // Constant @f$ \sqrt(2) @f$. + static constexpr _RealType __root_2 = 1.4142135623730950488016887242096981L; + // Constant @f$ \sqrt(3) @f$. + static constexpr _RealType __root_3 = 1.7320508075688772935274463415058724L; + // Constant @f$ \sqrt(5) @f$. + static constexpr _RealType __root_5 = 2.2360679774997896964091736687312762L; + // Constant @f$ \sqrt(7) @f$. + static constexpr _RealType __root_7 = 2.6457513110645905905016157536392604L; + // Constant @f$ 1 / \sqrt(2) @f$. + static constexpr _RealType __one_div_root_2 = 0.7071067811865475244008443621048490L; + }; + + // And the template definitions for the constants. + template + constexpr _RealType __math_constants<_RealType>::__pi; + template + constexpr _RealType __math_constants<_RealType>::__pi_half; + template + constexpr _RealType __math_constants<_RealType>::__pi_third; + template + constexpr _RealType __math_constants<_RealType>::__pi_quarter; + template + constexpr _RealType __math_constants<_RealType>::__root_pi_div_2; + template + constexpr _RealType __math_constants<_RealType>::__one_div_pi; + template + constexpr _RealType __math_constants<_RealType>::__two_div_pi; + template + constexpr _RealType __math_constants<_RealType>::__two_div_root_pi; + template + constexpr _RealType __math_constants<_RealType>::__e; + template + constexpr _RealType __math_constants<_RealType>::__one_div_e; + template + constexpr _RealType __math_constants<_RealType>::__log2_e; + template + constexpr _RealType __math_constants<_RealType>::__log10_e; + template + constexpr _RealType __math_constants<_RealType>::__ln_2; + template + constexpr _RealType __math_constants<_RealType>::__ln_3; + template + constexpr _RealType __math_constants<_RealType>::__ln_10; + template + constexpr _RealType __math_constants<_RealType>::__gamma_e; + template + constexpr _RealType __math_constants<_RealType>::__phi; + template + constexpr _RealType __math_constants<_RealType>::__root_2; + template + constexpr _RealType __math_constants<_RealType>::__root_3; + template + constexpr _RealType __math_constants<_RealType>::__root_5; + template + constexpr _RealType __math_constants<_RealType>::__root_7; + template + constexpr _RealType __math_constants<_RealType>::__one_div_root_2; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +#endif // C++11 + +#endif // _EXT_CMATH diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/codecvt_specializations.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/codecvt_specializations.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/codecvt_specializations.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/codecvt_specializations.h index 1f0452f4f..023741f66 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/codecvt_specializations.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/codecvt_specializations.h @@ -1,6 +1,6 @@ // Locale support (codecvt) -*- C++ -*- -// Copyright (C) 2000-2017 Free Software Foundation, Inc. +// Copyright (C) 2000-2018 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 @@ -41,8 +41,8 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { -_GLIBCXX_BEGIN_NAMESPACE_CXX11 _GLIBCXX_BEGIN_NAMESPACE_VERSION +_GLIBCXX_BEGIN_NAMESPACE_CXX11 /// Extension to use iconv for dealing with character encodings. // This includes conversions and comparisons between various character @@ -215,8 +215,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION typedef typename std::fpos pos_type; }; -_GLIBCXX_END_NAMESPACE_VERSION _GLIBCXX_END_NAMESPACE_CXX11 +_GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/concurrence.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/concurrence.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/concurrence.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/concurrence.h index 3b017da04..302cddfa4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/concurrence.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/concurrence.h @@ -1,6 +1,6 @@ // Support for concurrent programing -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/debug_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/debug_allocator.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/debug_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/debug_allocator.h index f3f2d7b73..dce224f05 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/debug_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/debug_allocator.h @@ -1,6 +1,6 @@ // Allocators -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/enc_filebuf.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/enc_filebuf.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/enc_filebuf.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/enc_filebuf.h index acc5ed2f8..b2d27e21e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/enc_filebuf.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/enc_filebuf.h @@ -1,6 +1,6 @@ // filebuf with encoding state type -*- C++ -*- -// Copyright (C) 2002-2017 Free Software Foundation, Inc. +// Copyright (C) 2002-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/extptr_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/extptr_allocator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/extptr_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/extptr_allocator.h index 2004992ad..20ecdf1d4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/extptr_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/extptr_allocator.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/functional new file mode 100644 index 000000000..e42272fe5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/functional @@ -0,0 +1,430 @@ +// Functional extensions -*- C++ -*- + +// Copyright (C) 2002-2018 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 +// . + +/* + * + * 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 + * 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 ext/functional + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_FUNCTIONAL +#define _EXT_FUNCTIONAL 1 + +#pragma GCC system_header + +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::size_t; + using std::unary_function; + using std::binary_function; + using std::mem_fun1_t; + using std::const_mem_fun1_t; + using std::mem_fun1_ref_t; + using std::const_mem_fun1_ref_t; + + /** The @c identity_element functions are not part of the C++ + * standard; SGI provided them as an extension. Its argument is an + * operation, and its return value is the identity element for that + * operation. It is overloaded for addition and multiplication, + * and you can overload it for your own nefarious operations. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + inline _Tp + identity_element(std::plus<_Tp>) + { return _Tp(0); } + + /// An \link SGIextensions SGI extension \endlink. + template + inline _Tp + identity_element(std::multiplies<_Tp>) + { return _Tp(1); } + /** @} */ + + /** As an extension to the binders, SGI provided composition functors and + * wrapper functions to aid in their creation. The @c unary_compose + * functor is constructed from two functions/functors, @c f and @c g. + * Calling @c operator() with a single argument @c x returns @c f(g(x)). + * The function @c compose1 takes the two functions and constructs a + * @c unary_compose variable for you. + * + * @c binary_compose is constructed from three functors, @c f, @c g1, + * and @c g2. Its @c operator() returns @c f(g1(x),g2(x)). The function + * compose2 takes f, g1, and g2, and constructs the @c binary_compose + * instance for you. For example, if @c f returns an int, then + * \code + * int answer = (compose2(f,g1,g2))(x); + * \endcode + * is equivalent to + * \code + * int temp1 = g1(x); + * int temp2 = g2(x); + * int answer = f(temp1,temp2); + * \endcode + * But the first form is more compact, and can be passed around as a + * functor to other algorithms. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + class unary_compose + : public unary_function + { + protected: + _Operation1 _M_fn1; + _Operation2 _M_fn2; + + public: + unary_compose(const _Operation1& __x, const _Operation2& __y) + : _M_fn1(__x), _M_fn2(__y) {} + + typename _Operation1::result_type + operator()(const typename _Operation2::argument_type& __x) const + { return _M_fn1(_M_fn2(__x)); } + }; + + /// An \link SGIextensions SGI extension \endlink. + template + inline unary_compose<_Operation1, _Operation2> + compose1(const _Operation1& __fn1, const _Operation2& __fn2) + { return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); } + + /// An \link SGIextensions SGI extension \endlink. + template + class binary_compose + : public unary_function + { + protected: + _Operation1 _M_fn1; + _Operation2 _M_fn2; + _Operation3 _M_fn3; + + public: + binary_compose(const _Operation1& __x, const _Operation2& __y, + const _Operation3& __z) + : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { } + + typename _Operation1::result_type + operator()(const typename _Operation2::argument_type& __x) const + { return _M_fn1(_M_fn2(__x), _M_fn3(__x)); } + }; + + /// An \link SGIextensions SGI extension \endlink. + template + inline binary_compose<_Operation1, _Operation2, _Operation3> + compose2(const _Operation1& __fn1, const _Operation2& __fn2, + const _Operation3& __fn3) + { return binary_compose<_Operation1, _Operation2, _Operation3> + (__fn1, __fn2, __fn3); } + /** @} */ + + /** As an extension, SGI provided a functor called @c identity. When a + * functor is required but no operations are desired, this can be used as a + * pass-through. Its @c operator() returns its argument unchanged. + * + * @addtogroup SGIextensions + */ + template + struct identity + : public std::_Identity<_Tp> {}; + + /** @c select1st and @c select2nd are extensions provided by SGI. Their + * @c operator()s + * take a @c std::pair as an argument, and return either the first member + * or the second member, respectively. They can be used (especially with + * the composition functors) to @a strip data from a sequence before + * performing the remainder of an algorithm. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + struct select1st + : public std::_Select1st<_Pair> {}; + + /// An \link SGIextensions SGI extension \endlink. + template + struct select2nd + : public std::_Select2nd<_Pair> {}; + + /** @} */ + + // extension documented next + template + struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1> + { + _Arg1 + operator()(const _Arg1& __x, const _Arg2&) const + { return __x; } + }; + + template + struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2> + { + _Arg2 + operator()(const _Arg1&, const _Arg2& __y) const + { return __y; } + }; + + /** The @c operator() of the @c project1st functor takes two arbitrary + * arguments and returns the first one, while @c project2nd returns the + * second one. They are extensions provided by SGI. + * + * @addtogroup SGIextensions + * @{ + */ + + /// An \link SGIextensions SGI extension \endlink. + template + struct project1st : public _Project1st<_Arg1, _Arg2> {}; + + /// An \link SGIextensions SGI extension \endlink. + template + struct project2nd : public _Project2nd<_Arg1, _Arg2> {}; + /** @} */ + + // extension documented next + template + struct _Constant_void_fun + { + typedef _Result result_type; + result_type _M_val; + + _Constant_void_fun(const result_type& __v) : _M_val(__v) {} + + const result_type& + operator()() const + { return _M_val; } + }; + + template + struct _Constant_unary_fun + { + typedef _Argument argument_type; + typedef _Result result_type; + result_type _M_val; + + _Constant_unary_fun(const result_type& __v) : _M_val(__v) {} + + const result_type& + operator()(const _Argument&) const + { return _M_val; } + }; + + template + struct _Constant_binary_fun + { + typedef _Arg1 first_argument_type; + typedef _Arg2 second_argument_type; + typedef _Result result_type; + _Result _M_val; + + _Constant_binary_fun(const _Result& __v) : _M_val(__v) {} + + const result_type& + operator()(const _Arg1&, const _Arg2&) const + { return _M_val; } + }; + + /** These three functors are each constructed from a single arbitrary + * variable/value. Later, their @c operator()s completely ignore any + * arguments passed, and return the stored value. + * - @c constant_void_fun's @c operator() takes no arguments + * - @c constant_unary_fun's @c operator() takes one argument (ignored) + * - @c constant_binary_fun's @c operator() takes two arguments (ignored) + * + * The helper creator functions @c constant0, @c constant1, and + * @c constant2 each take a @a result argument and construct variables of + * the appropriate functor type. + * + * @addtogroup SGIextensions + * @{ + */ + /// An \link SGIextensions SGI extension \endlink. + template + struct constant_void_fun + : public _Constant_void_fun<_Result> + { + constant_void_fun(const _Result& __v) + : _Constant_void_fun<_Result>(__v) {} + }; + + /// An \link SGIextensions SGI extension \endlink. + template + struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument> + { + constant_unary_fun(const _Result& __v) + : _Constant_unary_fun<_Result, _Argument>(__v) {} + }; + + /// An \link SGIextensions SGI extension \endlink. + template + struct constant_binary_fun + : public _Constant_binary_fun<_Result, _Arg1, _Arg2> + { + constant_binary_fun(const _Result& __v) + : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {} + }; + + /// An \link SGIextensions SGI extension \endlink. + template + inline constant_void_fun<_Result> + constant0(const _Result& __val) + { return constant_void_fun<_Result>(__val); } + + /// An \link SGIextensions SGI extension \endlink. + template + inline constant_unary_fun<_Result, _Result> + constant1(const _Result& __val) + { return constant_unary_fun<_Result, _Result>(__val); } + + /// An \link SGIextensions SGI extension \endlink. + template + inline constant_binary_fun<_Result,_Result,_Result> + constant2(const _Result& __val) + { return constant_binary_fun<_Result, _Result, _Result>(__val); } + /** @} */ + + /** The @c subtractive_rng class is documented on + * SGI's site. + * Note that this code assumes that @c int is 32 bits. + * + * @ingroup SGIextensions + */ + class subtractive_rng + : public unary_function + { + private: + unsigned int _M_table[55]; + size_t _M_index1; + size_t _M_index2; + + public: + /// Returns a number less than the argument. + unsigned int + operator()(unsigned int __limit) + { + _M_index1 = (_M_index1 + 1) % 55; + _M_index2 = (_M_index2 + 1) % 55; + _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2]; + return _M_table[_M_index1] % __limit; + } + + void + _M_initialize(unsigned int __seed) + { + unsigned int __k = 1; + _M_table[54] = __seed; + size_t __i; + for (__i = 0; __i < 54; __i++) + { + size_t __ii = (21 * (__i + 1) % 55) - 1; + _M_table[__ii] = __k; + __k = __seed - __k; + __seed = _M_table[__ii]; + } + for (int __loop = 0; __loop < 4; __loop++) + { + for (__i = 0; __i < 55; __i++) + _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55]; + } + _M_index1 = 0; + _M_index2 = 31; + } + + /// Ctor allowing you to initialize the seed. + subtractive_rng(unsigned int __seed) + { _M_initialize(__seed); } + + /// Default ctor; initializes its state with some number you don't see. + subtractive_rng() + { _M_initialize(161803398u); } + }; + + // Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref, + // provided for backward compatibility, they are no longer part of + // the C++ standard. + + template + inline mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun1(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template + inline const_mem_fun1_t<_Ret, _Tp, _Arg> + mem_fun1(_Ret (_Tp::*__f)(_Arg) const) + { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } + + template + inline mem_fun1_ref_t<_Ret, _Tp, _Arg> + mem_fun1_ref(_Ret (_Tp::*__f)(_Arg)) + { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } + + template + inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> + mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const) + { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/hash_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/hash_map new file mode 100644 index 000000000..33baf3eab --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/hash_map @@ -0,0 +1,599 @@ +// Hashing map implementation -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 1996 + * 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. + * + * + * 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. + * + */ + +/** @file backward/hash_map + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_MAP +#define _BACKWARD_HASH_MAP 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Select1st; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, class _Alloc = allocator<_Tp> > + class hash_map + { + private: + typedef hashtable,_Key, _HashFn, + _Select1st >, + _EqualKey, _Alloc> _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_map() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_map(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_map(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_map(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_map(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_map& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator== (const hash_map<_K1, _T1, _HF, _EqK, _Al>&, + const hash_map<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { return _M_ht.insert_unique(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { return _M_ht.insert_unique_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + _Tp& + operator[](const key_type& __key) + { return _M_ht.find_or_insert(value_type(__key, _Tp())).second; } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + const hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_map<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Key>, + class _Alloc = allocator<_Tp> > + class hash_multimap + { + // concept requirements + __glibcxx_class_requires(_Key, _SGIAssignableConcept) + __glibcxx_class_requires(_Tp, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFn, size_t, _Key, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Key, _Key, _BinaryPredicateConcept) + + private: + typedef hashtable, _Key, _HashFn, + _Select1st >, _EqualKey, _Alloc> + _Ht; + + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef _Tp data_type; + typedef _Tp mapped_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Ht::pointer pointer; + typedef typename _Ht::const_pointer const_pointer; + typedef typename _Ht::reference reference; + typedef typename _Ht::const_reference const_reference; + + typedef typename _Ht::iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multimap() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multimap(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multimap(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multimap(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multimap(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multimap& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&, + const hash_multimap<_K1, _T1, _HF, _EqK, _Al>&); + + iterator + begin() + { return _M_ht.begin(); } + + iterator + end() + { return _M_ht.end(); } + + const_iterator + begin() const + { return _M_ht.begin(); } + + const_iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) + { return _M_ht.find(__key); } + + const_iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) + { return _M_ht.equal_range(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return __hm1._M_ht == __hm2._M_ht; } + + template + inline bool + operator!=(const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm1, + const hash_multimap<_Key, _Tp, _HF, _EqKey, _Alloc>& __hm2) + { return !(__hm1 == __hm2); } + + template + inline void + swap(hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm1, + hash_multimap<_Key, _Tp, _HashFn, _EqlKey, _Alloc>& __hm2) + { __hm1.swap(__hm2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_map + // and hash_multimap. + template + class insert_iterator<__gnu_cxx::hash_map<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_map<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, + _EqKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multimap<_Key, _Tp, _HashFn, _EqKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/hash_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/hash_set new file mode 100644 index 000000000..8c7acd80b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/hash_set @@ -0,0 +1,567 @@ +// Hashing set implementation -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 1996 + * 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. + * + * + * 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. + * + */ + +/** @file backward/hash_set + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _BACKWARD_HASH_SET +#define _BACKWARD_HASH_SET 1 + +#ifndef _GLIBCXX_PERMIT_BACKWARD_HASH +#include "backward_warning.h" +#endif + +#include +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::equal_to; + using std::allocator; + using std::pair; + using std::_Identity; + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_set + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_set() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_set(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_set(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_set(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_unique(__f, __l); } + + template + hash_set(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_unique(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_set& __hs) + { _M_ht.swap(__hs._M_ht); } + + template + friend bool + operator==(const hash_set<_Val, _HF, _EqK, _Al>&, + const hash_set<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + pair + insert(const value_type& __obj) + { + pair __p = _M_ht.insert_unique(__obj); + return pair(__p.first, __p.second); + } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_unique(__f, __l); } + + pair + insert_noresize(const value_type& __obj) + { + pair __p + = _M_ht.insert_unique_noresize(__obj); + return pair(__p.first, __p.second); + } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + {return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_set<_Value, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_set<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template, + class _EqualKey = equal_to<_Value>, + class _Alloc = allocator<_Value> > + class hash_multiset + { + // concept requirements + __glibcxx_class_requires(_Value, _SGIAssignableConcept) + __glibcxx_class_requires3(_HashFcn, size_t, _Value, _UnaryFunctionConcept) + __glibcxx_class_requires3(_EqualKey, _Value, _Value, _BinaryPredicateConcept) + + private: + typedef hashtable<_Value, _Value, _HashFcn, _Identity<_Value>, + _EqualKey, _Alloc> _Ht; + _Ht _M_ht; + + public: + typedef typename _Ht::key_type key_type; + typedef typename _Ht::value_type value_type; + typedef typename _Ht::hasher hasher; + typedef typename _Ht::key_equal key_equal; + + typedef typename _Ht::size_type size_type; + typedef typename _Ht::difference_type difference_type; + typedef typename _Alloc::pointer pointer; + typedef typename _Alloc::const_pointer const_pointer; + typedef typename _Alloc::reference reference; + typedef typename _Alloc::const_reference const_reference; + + typedef typename _Ht::const_iterator iterator; + typedef typename _Ht::const_iterator const_iterator; + + typedef typename _Ht::allocator_type allocator_type; + + hasher + hash_funct() const + { return _M_ht.hash_funct(); } + + key_equal + key_eq() const + { return _M_ht.key_eq(); } + + allocator_type + get_allocator() const + { return _M_ht.get_allocator(); } + + hash_multiset() + : _M_ht(100, hasher(), key_equal(), allocator_type()) {} + + explicit + hash_multiset(size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) {} + + hash_multiset(size_type __n, const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) {} + + template + hash_multiset(_InputIterator __f, _InputIterator __l) + : _M_ht(100, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n) + : _M_ht(__n, hasher(), key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf) + : _M_ht(__n, __hf, key_equal(), allocator_type()) + { _M_ht.insert_equal(__f, __l); } + + template + hash_multiset(_InputIterator __f, _InputIterator __l, size_type __n, + const hasher& __hf, const key_equal& __eql, + const allocator_type& __a = allocator_type()) + : _M_ht(__n, __hf, __eql, __a) + { _M_ht.insert_equal(__f, __l); } + + size_type + size() const + { return _M_ht.size(); } + + size_type + max_size() const + { return _M_ht.max_size(); } + + bool + empty() const + { return _M_ht.empty(); } + + void + swap(hash_multiset& hs) + { _M_ht.swap(hs._M_ht); } + + template + friend bool + operator==(const hash_multiset<_Val, _HF, _EqK, _Al>&, + const hash_multiset<_Val, _HF, _EqK, _Al>&); + + iterator + begin() const + { return _M_ht.begin(); } + + iterator + end() const + { return _M_ht.end(); } + + iterator + insert(const value_type& __obj) + { return _M_ht.insert_equal(__obj); } + + template + void + insert(_InputIterator __f, _InputIterator __l) + { _M_ht.insert_equal(__f,__l); } + + iterator + insert_noresize(const value_type& __obj) + { return _M_ht.insert_equal_noresize(__obj); } + + iterator + find(const key_type& __key) const + { return _M_ht.find(__key); } + + size_type + count(const key_type& __key) const + { return _M_ht.count(__key); } + + pair + equal_range(const key_type& __key) const + { return _M_ht.equal_range(__key); } + + size_type + erase(const key_type& __key) + { return _M_ht.erase(__key); } + + void + erase(iterator __it) + { _M_ht.erase(__it); } + + void + erase(iterator __f, iterator __l) + { _M_ht.erase(__f, __l); } + + void + clear() + { _M_ht.clear(); } + + void + resize(size_type __hint) + { _M_ht.resize(__hint); } + + size_type + bucket_count() const + { return _M_ht.bucket_count(); } + + size_type + max_bucket_count() const + { return _M_ht.max_bucket_count(); } + + size_type + elems_in_bucket(size_type __n) const + { return _M_ht.elems_in_bucket(__n); } + }; + + template + inline bool + operator==(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return __hs1._M_ht == __hs2._M_ht; } + + template + inline bool + operator!=(const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + const hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { return !(__hs1 == __hs2); } + + template + inline void + swap(hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs1, + hash_multiset<_Val, _HashFcn, _EqualKey, _Alloc>& __hs2) + { __hs1.swap(__hs2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Specialization of insert_iterator so that it will work for hash_set + // and hash_multiset. + template + class insert_iterator<__gnu_cxx::hash_set<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_set<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) + { return *this; } + }; + + template + class insert_iterator<__gnu_cxx::hash_multiset<_Value, _HashFcn, + _EqualKey, _Alloc> > + { + protected: + typedef __gnu_cxx::hash_multiset<_Value, _HashFcn, _EqualKey, _Alloc> + _Container; + _Container* container; + typename _Container::iterator iter; + + public: + typedef _Container container_type; + typedef output_iterator_tag iterator_category; + typedef void value_type; + typedef void difference_type; + typedef void pointer; + typedef void reference; + + insert_iterator(_Container& __x) + : container(&__x) {} + + insert_iterator(_Container& __x, typename _Container::iterator) + : container(&__x) {} + + insert_iterator<_Container>& + operator=(const typename _Container::value_type& __value) + { + container->insert(__value); + return *this; + } + + insert_iterator<_Container>& + operator*() + { return *this; } + + insert_iterator<_Container>& + operator++() + { return *this; } + + insert_iterator<_Container>& + operator++(int) { return *this; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/iterator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/iterator new file mode 100644 index 000000000..83a463e74 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/iterator @@ -0,0 +1,116 @@ +// HP/SGI iterator extensions -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * Copyright (c) 1994 + * Hewlett-Packard Company + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Hewlett-Packard Company makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + * + * + * Copyright (c) 1996-1998 + * Silicon Graphics Computer Systems, Inc. + * + * Permission to use, copy, modify, distribute and sell this software + * and its documentation for any purpose is hereby granted without fee, + * provided that the above copyright notice appear in all copies and + * that both that copyright notice and this permission notice appear + * in supporting documentation. Silicon Graphics makes no + * representations about the suitability of this software for any + * purpose. It is provided "as is" without express or implied warranty. + */ + +/** @file ext/iterator + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_ITERATOR +#define _EXT_ITERATOR 1 + +#pragma GCC system_header + +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // There are two signatures for distance. In addition to the one + // taking two iterators and returning a result, there is another + // taking two iterators and a reference-to-result variable, and + // returning nothing. The latter seems to be an SGI extension. + // -- pedwards + template + inline void + __distance(_InputIterator __first, _InputIterator __last, + _Distance& __n, std::input_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) + while (__first != __last) + { + ++__first; + ++__n; + } + } + + template + inline void + __distance(_RandomAccessIterator __first, _RandomAccessIterator __last, + _Distance& __n, std::random_access_iterator_tag) + { + // concept requirements + __glibcxx_function_requires(_RandomAccessIteratorConcept< + _RandomAccessIterator>) + __n += __last - __first; + } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline void + distance(_InputIterator __first, _InputIterator __last, + _Distance& __n) + { + // concept requirements -- taken care of in __distance + __distance(__first, __last, __n, std::__iterator_category(__first)); + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/malloc_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/malloc_allocator.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/malloc_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/malloc_allocator.h index 88e0c7b58..75a74a39c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/malloc_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/malloc_allocator.h @@ -1,6 +1,6 @@ // Allocator that wraps "C" malloc -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/memory new file mode 100644 index 000000000..c5d526e7e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/memory @@ -0,0 +1,197 @@ +// Memory extensions -*- C++ -*- + +// Copyright (C) 2002-2018 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 +// . + +/* + * + * 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 + * 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 ext/memory + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_MEMORY +#define _EXT_MEMORY 1 + +#pragma GCC system_header + +#include +#include + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + using std::ptrdiff_t; + using std::pair; + using std::__iterator_category; + using std::_Temporary_buffer; + + template + pair<_InputIter, _ForwardIter> + __uninitialized_copy_n(_InputIter __first, _Size __count, + _ForwardIter __result, std::input_iterator_tag) + { + _ForwardIter __cur = __result; + __try + { + for (; __count > 0 ; --__count, ++__first, ++__cur) + std::_Construct(&*__cur, *__first); + return pair<_InputIter, _ForwardIter>(__first, __cur); + } + __catch(...) + { + std::_Destroy(__result, __cur); + __throw_exception_again; + } + } + + template + inline pair<_RandomAccessIter, _ForwardIter> + __uninitialized_copy_n(_RandomAccessIter __first, _Size __count, + _ForwardIter __result, + std::random_access_iterator_tag) + { + _RandomAccessIter __last = __first + __count; + return (pair<_RandomAccessIter, _ForwardIter> + (__last, std::uninitialized_copy(__first, __last, __result))); + } + + template + inline pair<_InputIter, _ForwardIter> + __uninitialized_copy_n(_InputIter __first, _Size __count, + _ForwardIter __result) + { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, + __iterator_category(__first)); } + + /** + * @brief Copies the range [first,last) into result. + * @param __first An input iterator. + * @param __count Length + * @param __result An output iterator. + * @return __result + (__first + __count) + * @ingroup SGIextensions + * + * Like copy(), but does not require an initialized output range. + */ + template + inline pair<_InputIter, _ForwardIter> + uninitialized_copy_n(_InputIter __first, _Size __count, + _ForwardIter __result) + { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result, + __iterator_category(__first)); } + + + // An alternative version of uninitialized_copy_n that constructs + // and destroys objects with a user-provided allocator. + template + pair<_InputIter, _ForwardIter> + __uninitialized_copy_n_a(_InputIter __first, _Size __count, + _ForwardIter __result, + _Allocator __alloc) + { + _ForwardIter __cur = __result; + __try + { + for (; __count > 0 ; --__count, ++__first, ++__cur) + __alloc.construct(&*__cur, *__first); + return pair<_InputIter, _ForwardIter>(__first, __cur); + } + __catch(...) + { + std::_Destroy(__result, __cur, __alloc); + __throw_exception_again; + } + } + + template + inline pair<_InputIter, _ForwardIter> + __uninitialized_copy_n_a(_InputIter __first, _Size __count, + _ForwardIter __result, + std::allocator<_Tp>) + { + return __gnu_cxx::uninitialized_copy_n(__first, __count, __result); + } + + /** + * This class provides similar behavior and semantics of the standard + * functions get_temporary_buffer() and return_temporary_buffer(), but + * encapsulated in a type vaguely resembling a standard container. + * + * By default, a temporary_buffer stores space for objects of + * whatever type the Iter iterator points to. It is constructed from a + * typical [first,last) range, and provides the begin(), end(), size() + * functions, as well as requested_size(). For non-trivial types, copies + * of *first will be used to initialize the storage. + * + * @c malloc is used to obtain underlying storage. + * + * Like get_temporary_buffer(), not all the requested memory may be + * available. Ideally, the created buffer will be large enough to hold a + * copy of [first,last), but if size() is less than requested_size(), + * then this didn't happen. + * + * @ingroup SGIextensions + */ + template ::value_type > + struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp> + { + /// Requests storage large enough to hold a copy of [first,last). + temporary_buffer(_ForwardIterator __first, _ForwardIterator __last) + : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) { } + + /// Destroys objects and frees storage. + ~temporary_buffer() { } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/mt_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/mt_allocator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/mt_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/mt_allocator.h index effb13b7d..bfa94a019 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/mt_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/mt_allocator.h @@ -1,6 +1,6 @@ // MT-optimized allocator -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 @@ -355,7 +355,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } // XXX GLIBCXX_ABI Deprecated - _GLIBCXX_CONST void + void _M_destroy_thread_key(void*) throw (); size_t diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/new_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/new_allocator.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/new_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/new_allocator.h index e1e152c4b..78e2019a0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/new_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/new_allocator.h @@ -1,6 +1,6 @@ // Allocator that wraps operator new -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/numeric new file mode 100644 index 000000000..2464bb59e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/numeric @@ -0,0 +1,152 @@ +// Numeric extensions -*- C++ -*- + +// Copyright (C) 2002-2018 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 +// . + +/* + * + * 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 + * 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 ext/numeric + * This file is a GNU extension to the Standard C++ Library (possibly + * containing extensions from the HP/SGI STL subset). + */ + +#ifndef _EXT_NUMERIC +#define _EXT_NUMERIC 1 + +#pragma GCC system_header + +#include +#include + +#include // For identity_element + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + // Returns __x ** __n, where __n >= 0. _Note that "multiplication" + // is required to be associative, but not necessarily commutative. + template + _Tp + __power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op) + { + if (__n == 0) + return identity_element(__monoid_op); + else + { + while ((__n & 1) == 0) + { + __n >>= 1; + __x = __monoid_op(__x, __x); + } + + _Tp __result = __x; + __n >>= 1; + while (__n != 0) + { + __x = __monoid_op(__x, __x); + if ((__n & 1) != 0) + __result = __monoid_op(__result, __x); + __n >>= 1; + } + return __result; + } + } + + template + inline _Tp + __power(_Tp __x, _Integer __n) + { return __power(__x, __n, std::multiplies<_Tp>()); } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + // Alias for the internal name __power. Note that power is an extension, + // not part of the C++ standard. + template + inline _Tp + power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op) + { return __power(__x, __n, __monoid_op); } + + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + template + inline _Tp + power(_Tp __x, _Integer __n) + { return __power(__x, __n); } + +#if __cplusplus >= 201103L + using std::iota; +#else + /** + * This is an SGI extension. + * @ingroup SGIextensions + * @doctodo + */ + // iota is not part of the C++ standard. It is an extension. + template + void + iota(_ForwardIter __first, _ForwardIter __last, _Tp __value) + { + // concept requirements + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>) + __glibcxx_function_requires(_ConvertibleConcept<_Tp, + typename std::iterator_traits<_ForwardIter>::value_type>) + + while (__first != __last) + *__first++ = __value++; + } +#endif // C++11 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/numeric_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/numeric_traits.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/numeric_traits.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/numeric_traits.h index 805f17138..0a217cfb6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/numeric_traits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/numeric_traits.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/assoc_container.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/assoc_container.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/assoc_container.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/assoc_container.hpp index a1ec57c57..6106308ef 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/assoc_container.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/assoc_container.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp index 058f1fe99..14c528618 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..302e84152 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,218 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_allocator +PB_DS_CLASS_C_DEC::s_node_allocator; + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_BIN_TREE_NAME() : m_p_head(s_node_allocator.allocate(1)), m_size(0) +{ + initialize(); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_BIN_TREE_NAME(const Cmp_Fn& r_cmp_fn) : + Cmp_Fn(r_cmp_fn), m_p_head(s_node_allocator.allocate(1)), m_size(0) +{ + initialize(); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_BIN_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : + Cmp_Fn(r_cmp_fn), + node_update(r_node_update), + m_p_head(s_node_allocator.allocate(1)), + m_size(0) +{ + initialize(); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_BIN_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : +#ifdef _GLIBCXX_DEBUG + debug_base(other), +#endif +#ifdef PB_DS_TREE_TRACE + PB_DS_TREE_TRACE_BASE_C_DEC(other), +#endif + Cmp_Fn(other), + node_update(other), + m_p_head(s_node_allocator.allocate(1)), + m_size(0) +{ + initialize(); + m_size = other.m_size; + PB_DS_STRUCT_ONLY_ASSERT_VALID(other) + + __try + { + m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent); + if (m_p_head->m_p_parent != 0) + m_p_head->m_p_parent->m_p_parent = m_p_head; + m_size = other.m_size; + initialize_min_max(); + } + __catch(...) + { + _GLIBCXX_DEBUG_ONLY(debug_base::clear();) + s_node_allocator.deallocate(m_p_head, 1); + __throw_exception_again; + } + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + PB_DS_STRUCT_ONLY_ASSERT_VALID(other) + value_swap(other); + std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + PB_DS_STRUCT_ONLY_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +value_swap(PB_DS_CLASS_C_DEC& other) +{ + _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) + std::swap(m_p_head, other.m_p_head); + std::swap(m_size, other.m_size); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~PB_DS_BIN_TREE_NAME() +{ + clear(); + s_node_allocator.deallocate(m_p_head, 1); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ + m_p_head->m_p_parent = 0; + m_p_head->m_p_left = m_p_head; + m_p_head->m_p_right = m_p_head; + m_size = 0; +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +recursive_copy_node(const node_pointer p_nd) +{ + if (p_nd == 0) + return (0); + + node_pointer p_ret = s_node_allocator.allocate(1); + __try + { + new (p_ret) node(*p_nd); + } + __catch(...) + { + s_node_allocator.deallocate(p_ret, 1); + __throw_exception_again; + } + + p_ret->m_p_left = p_ret->m_p_right = 0; + + __try + { + p_ret->m_p_left = recursive_copy_node(p_nd->m_p_left); + p_ret->m_p_right = recursive_copy_node(p_nd->m_p_right); + } + __catch(...) + { + clear_imp(p_ret); + __throw_exception_again; + } + + if (p_ret->m_p_left != 0) + p_ret->m_p_left->m_p_parent = p_ret; + + if (p_ret->m_p_right != 0) + p_ret->m_p_right->m_p_parent = p_ret; + + PB_DS_ASSERT_NODE_CONSISTENT(p_ret) + return p_ret; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize_min_max() +{ + if (m_p_head->m_p_parent == 0) + { + m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; + return; + } + + { + node_pointer p_min = m_p_head->m_p_parent; + while (p_min->m_p_left != 0) + p_min = p_min->m_p_left; + m_p_head->m_p_left = p_min; + } + + { + node_pointer p_max = m_p_head->m_p_parent; + while (p_max->m_p_right != 0) + p_max = p_max->m_p_right; + m_p_head->m_p_right = p_max; + } +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp new file mode 100644 index 000000000..ccbfb4df5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp @@ -0,0 +1,277 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/debug_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + structure_only_assert_valid(__file, __line); + assert_consistent_with_debug_base(__file, __line); + assert_size(__file, __line); + assert_iterators(__file, __line); + if (m_p_head->m_p_parent == 0) + { + PB_DS_DEBUG_VERIFY(m_size == 0); + } + else + { + PB_DS_DEBUG_VERIFY(m_size > 0); + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +structure_only_assert_valid(const char* __file, int __line) const +{ + PB_DS_DEBUG_VERIFY(m_p_head != 0); + if (m_p_head->m_p_parent == 0) + { + PB_DS_DEBUG_VERIFY(m_p_head->m_p_left == m_p_head); + PB_DS_DEBUG_VERIFY(m_p_head->m_p_right == m_p_head); + } + else + { + PB_DS_DEBUG_VERIFY(m_p_head->m_p_parent->m_p_parent == m_p_head); + PB_DS_DEBUG_VERIFY(m_p_head->m_p_left != m_p_head); + PB_DS_DEBUG_VERIFY(m_p_head->m_p_right != m_p_head); + } + + if (m_p_head->m_p_parent != 0) + assert_node_consistent(m_p_head->m_p_parent, __file, __line); + assert_min(__file, __line); + assert_max(__file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_node_consistent(const node_pointer p_nd, + const char* __file, int __line) const +{ + assert_node_consistent_(p_nd, __file, __line); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_consistent_t +PB_DS_CLASS_C_DEC:: +assert_node_consistent_(const node_pointer p_nd, + const char* __file, int __line) const +{ + if (p_nd == 0) + return (std::make_pair((const_pointer)0,(const_pointer)0)); + + assert_node_consistent_with_left(p_nd, __file, __line); + assert_node_consistent_with_right(p_nd, __file, __line); + + const std::pair + l_range = assert_node_consistent_(p_nd->m_p_left, __file, __line); + + if (l_range.second != 0) + PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(*l_range.second), + PB_DS_V2F(p_nd->m_value))); + + const std::pair + r_range = assert_node_consistent_(p_nd->m_p_right, __file, __line); + + if (r_range.first != 0) + PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), + PB_DS_V2F(*r_range.first))); + + return std::make_pair((l_range.first != 0) ? l_range.first : &p_nd->m_value, + (r_range.second != 0)? r_range.second : &p_nd->m_value); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_node_consistent_with_left(const node_pointer p_nd, + const char* __file, int __line) const +{ + if (p_nd->m_p_left == 0) + return; + PB_DS_DEBUG_VERIFY(p_nd->m_p_left->m_p_parent == p_nd); + PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), + PB_DS_V2F(p_nd->m_p_left->m_value))); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_node_consistent_with_right(const node_pointer p_nd, + const char* __file, int __line) const +{ + if (p_nd->m_p_right == 0) + return; + PB_DS_DEBUG_VERIFY(p_nd->m_p_right->m_p_parent == p_nd); + PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_p_right->m_value), + PB_DS_V2F(p_nd->m_value))); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_min(const char* __file, int __line) const +{ + assert_min_imp(m_p_head->m_p_parent, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_min_imp(const node_pointer p_nd, const char* __file, int __line) const +{ + if (p_nd == 0) + { + PB_DS_DEBUG_VERIFY(m_p_head->m_p_left == m_p_head); + return; + } + + if (p_nd->m_p_left == 0) + { + PB_DS_DEBUG_VERIFY(p_nd == m_p_head->m_p_left); + return; + } + assert_min_imp(p_nd->m_p_left, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_max(const char* __file, int __line) const +{ + assert_max_imp(m_p_head->m_p_parent, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_max_imp(const node_pointer p_nd, + const char* __file, int __line) const +{ + if (p_nd == 0) + { + PB_DS_DEBUG_VERIFY(m_p_head->m_p_right == m_p_head); + return; + } + + if (p_nd->m_p_right == 0) + { + PB_DS_DEBUG_VERIFY(p_nd == m_p_head->m_p_right); + return; + } + + assert_max_imp(p_nd->m_p_right, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_iterators(const char* __file, int __line) const +{ + size_type iterated_num = 0; + const_iterator prev_it = end(); + for (const_iterator it = begin(); it != end(); ++it) + { + ++iterated_num; + PB_DS_DEBUG_VERIFY(lower_bound(PB_DS_V2F(*it)).m_p_nd == it.m_p_nd); + const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it)); + --upper_bound_it; + PB_DS_DEBUG_VERIFY(upper_bound_it.m_p_nd == it.m_p_nd); + + if (prev_it != end()) + PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(*prev_it), + PB_DS_V2F(*it))); + prev_it = it; + } + + PB_DS_DEBUG_VERIFY(iterated_num == m_size); + size_type reverse_iterated_num = 0; + const_reverse_iterator reverse_prev_it = rend(); + for (const_reverse_iterator reverse_it = rbegin(); reverse_it != rend(); + ++reverse_it) + { + ++reverse_iterated_num; + PB_DS_DEBUG_VERIFY(lower_bound( + PB_DS_V2F(*reverse_it)).m_p_nd == reverse_it.m_p_nd); + + const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*reverse_it)); + --upper_bound_it; + PB_DS_DEBUG_VERIFY(upper_bound_it.m_p_nd == reverse_it.m_p_nd); + if (reverse_prev_it != rend()) + PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(PB_DS_V2F(*reverse_prev_it), + PB_DS_V2F(*reverse_it))); + reverse_prev_it = reverse_it; + } + PB_DS_DEBUG_VERIFY(reverse_iterated_num == m_size); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_consistent_with_debug_base(const char* __file, int __line) const +{ + debug_base::check_size(m_size, __file, __line); + assert_consistent_with_debug_base(m_p_head->m_p_parent, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_consistent_with_debug_base(const node_pointer p_nd, + const char* __file, int __line) const +{ + if (p_nd == 0) + return; + debug_base::check_key_exists(PB_DS_V2F(p_nd->m_value), __file, __line); + assert_consistent_with_debug_base(p_nd->m_p_left, __file, __line); + assert_consistent_with_debug_base(p_nd->m_p_right, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_size(const char* __file, int __line) const +{ PB_DS_DEBUG_VERIFY(recursive_count(m_p_head->m_p_parent) == m_size); } + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp new file mode 100644 index 000000000..5ec2c6715 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/erase_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +actual_erase_node(node_pointer p_z) +{ + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_z->m_value));) + p_z->~node(); + s_node_allocator.deallocate(p_z, 1); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update_min_max_for_erased_node(node_pointer p_z) +{ + if (m_size == 1) + { + m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; + return; + } + + if (m_p_head->m_p_left == p_z) + { + iterator it(p_z); + ++it; + m_p_head->m_p_left = it.m_p_nd; + } + else if (m_p_head->m_p_right == p_z) + { + iterator it(p_z); + --it; + m_p_head->m_p_right = it.m_p_nd; + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + clear_imp(m_p_head->m_p_parent); + m_size = 0; + initialize(); + _GLIBCXX_DEBUG_ONLY(debug_base::clear();) + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear_imp(node_pointer p_nd) +{ + if (p_nd == 0) + return; + + clear_imp(p_nd->m_p_left); + clear_imp(p_nd->m_p_right); + p_nd->~node(); + s_node_allocator.deallocate(p_nd, 1); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp new file mode 100644 index 000000000..cc41992d7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp @@ -0,0 +1,171 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/find_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +lower_bound(key_const_reference r_key) const +{ + node_pointer p_pot = m_p_head; + node_pointer p_nd = m_p_head->m_p_parent; + + while (p_nd != 0) + if (Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) + p_nd = p_nd->m_p_right; + else + { + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + return iterator(p_pot); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +lower_bound(key_const_reference r_key) +{ + node_pointer p_pot = m_p_head; + node_pointer p_nd = m_p_head->m_p_parent; + + while (p_nd != 0) + if (Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) + p_nd = p_nd->m_p_right; + else + { + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + return iterator(p_pot); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +upper_bound(key_const_reference r_key) const +{ + node_pointer p_pot = m_p_head; + node_pointer p_nd = m_p_head->m_p_parent; + + while (p_nd != 0) + if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) + { + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + return const_iterator(p_pot); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +upper_bound(key_const_reference r_key) +{ + node_pointer p_pot = m_p_head; + node_pointer p_nd = m_p_head->m_p_parent; + + while (p_nd != 0) + if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) + { + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + return point_iterator(p_pot); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) +{ + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + node_pointer p_pot = m_p_head; + node_pointer p_nd = m_p_head->m_p_parent; + + while (p_nd != 0) + if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) + { + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + + node_pointer ret = p_pot; + if (p_pot != m_p_head) + { + const bool __cmp = Cmp_Fn::operator()(r_key, PB_DS_V2F(p_pot->m_value)); + if (__cmp) + ret = m_p_head; + } + return point_iterator(ret); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) const +{ + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + node_pointer p_pot = m_p_head; + node_pointer p_nd = m_p_head->m_p_parent; + + while (p_nd != 0) + if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) + { + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + + node_pointer ret = p_pot; + if (p_pot != m_p_head) + { + const bool __cmp = Cmp_Fn::operator()(r_key, PB_DS_V2F(p_pot->m_value)); + if (__cmp) + ret = m_p_head; + } + return point_const_iterator(ret); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp new file mode 100644 index 000000000..9b5365284 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp @@ -0,0 +1,64 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/info_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ + return (m_size == 0); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ + return (m_size); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ + return (s_node_allocator.max_size()); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp new file mode 100644 index 000000000..a89244471 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp @@ -0,0 +1,180 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/insert_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert_leaf(const_reference r_value) +{ + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + + if (m_size == 0) + return std::make_pair(insert_imp_empty(r_value), + true); + + node_pointer p_nd = m_p_head->m_p_parent; + node_pointer p_pot = m_p_head; + + while (p_nd != 0) + if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), + PB_DS_V2F(r_value))) + { + p_pot = p_nd; + + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + + if (p_pot == m_p_head) + return std::make_pair(insert_leaf_new(r_value, m_p_head->m_p_right, false), + true); + + if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), + PB_DS_V2F(p_pot->m_value))) + { + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(r_value)) + return std::make_pair(p_pot, false); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(PB_DS_V2F(r_value)) + + p_nd = p_pot->m_p_left; + if (p_nd == 0) + return std::make_pair(insert_leaf_new(r_value, p_pot, true), + true); + + while (p_nd->m_p_right != 0) + p_nd = p_nd->m_p_right; + + return std::make_pair(insert_leaf_new(r_value, p_nd, false), + true); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd) +{ + node_pointer p_new_nd = + get_new_node_for_leaf_insert(r_value, + traits_base::m_no_throw_copies_indicator); + + if (left_nd) + { + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == 0); + _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(r_value), + PB_DS_V2F(p_nd->m_value))); + + p_nd->m_p_left = p_new_nd; + if (m_p_head->m_p_left == p_nd) + m_p_head->m_p_left = p_new_nd; + } + else + { + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right == 0); + _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), + PB_DS_V2F(r_value))); + + p_nd->m_p_right = p_new_nd; + if (m_p_head->m_p_right == p_nd) + m_p_head->m_p_right = p_new_nd; + } + + p_new_nd->m_p_parent = p_nd; + p_new_nd->m_p_left = p_new_nd->m_p_right = 0; + PB_DS_ASSERT_NODE_CONSISTENT(p_nd) + + update_to_top(p_new_nd, (node_update* )this); + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value));) + return iterator(p_new_nd); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +insert_imp_empty(const_reference r_value) +{ + node_pointer p_new_node = + get_new_node_for_leaf_insert(r_value, traits_base::m_no_throw_copies_indicator); + + m_p_head->m_p_left = m_p_head->m_p_right = + m_p_head->m_p_parent = p_new_node; + + p_new_node->m_p_parent = m_p_head; + p_new_node->m_p_left = p_new_node->m_p_right = 0; + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value));) + + update_to_top(m_p_head->m_p_parent, (node_update*)this); + return iterator(p_new_node); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +get_new_node_for_leaf_insert(const_reference r_val, false_type) +{ + node_pointer p_new_nd = s_node_allocator.allocate(1); + cond_dealtor_t cond(p_new_nd); + + new (const_cast(static_cast(&p_new_nd->m_value))) + typename node::value_type(r_val); + + cond.set_no_action(); + p_new_nd->m_p_left = p_new_nd->m_p_right = 0; + ++m_size; + return p_new_nd; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +get_new_node_for_leaf_insert(const_reference r_val, true_type) +{ + node_pointer p_new_nd = s_node_allocator.allocate(1); + + new (const_cast(static_cast(&p_new_nd->m_value))) + typename node::value_type(r_val); + + p_new_nd->m_p_left = p_new_nd->m_p_right = 0; + ++m_size; + return p_new_nd; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp new file mode 100644 index 000000000..1b14c3d1b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp @@ -0,0 +1,136 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/iterators_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +begin() +{ + return (iterator(m_p_head->m_p_left)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +begin() const +{ + return (const_iterator(m_p_head->m_p_left)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +end() +{ + return (iterator(m_p_head)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +end() const +{ + return (const_iterator(m_p_head)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator +PB_DS_CLASS_C_DEC:: +rbegin() const +{ + return (const_reverse_iterator(m_p_head->m_p_right)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +rbegin() +{ + return (reverse_iterator(m_p_head->m_p_right)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +rend() +{ + return (reverse_iterator(m_p_head)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator +PB_DS_CLASS_C_DEC:: +rend() const +{ + return (const_reverse_iterator(m_p_head)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +node_begin() const +{ + return (node_const_iterator(m_p_head->m_p_parent)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +node_begin() +{ + return (node_iterator(m_p_head->m_p_parent)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +node_end() const +{ + return (node_const_iterator(0)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +node_end() +{ + return (node_iterator(0)); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp new file mode 100644 index 000000000..18f5cd2ed --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp @@ -0,0 +1,189 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/node_iterators.hpp + * Contains an implementation class for bin_search_tree_. + */ + +#ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP +#define PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP + +#include + +namespace __gnu_pbds +{ + namespace detail + { +#define PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC \ + bin_search_tree_const_node_it_ + + /// Const node iterator. + template + class bin_search_tree_const_node_it_ + { + private: + typedef + typename _Alloc::template rebind< + Node>::other::pointer + node_pointer; + + public: + /// Category. + typedef trivial_iterator_tag iterator_category; + + /// Difference type. + typedef trivial_iterator_difference_type difference_type; + + /// Iterator's value type. + typedef Const_Iterator value_type; + + /// Iterator's reference type. + typedef Const_Iterator reference; + + /// Iterator's __const reference type. + typedef Const_Iterator const_reference; + + /// Metadata type. + typedef typename Node::metadata_type metadata_type; + + /// Const metadata reference type. + typedef + typename _Alloc::template rebind::other::const_reference + metadata_const_reference; + + + bin_search_tree_const_node_it_(const node_pointer p_nd = 0) + : m_p_nd(const_cast(p_nd)) + { } + + /// Access. + const_reference + operator*() const + { return Const_Iterator(m_p_nd); } + + /// Metadata access. + metadata_const_reference + get_metadata() const + { return m_p_nd->get_metadata(); } + + /// Returns the __const node iterator associated with the left node. + PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC + get_l_child() const + { return PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_left); } + + /// Returns the __const node iterator associated with the right node. + PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC + get_r_child() const + { return PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_right); } + + /// Compares to a different iterator object. + bool + operator==(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const + { return m_p_nd == other.m_p_nd; } + + /// Compares (negatively) to a different iterator object. + bool + operator!=(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const + { return m_p_nd != other.m_p_nd; } + + node_pointer m_p_nd; + }; + +#define PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC \ + bin_search_tree_node_it_ + + /// Node iterator. + template + class bin_search_tree_node_it_ + : public PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC + { + private: + typedef + typename _Alloc::template rebind< + Node>::other::pointer + node_pointer; + + public: + /// Iterator's value type. + typedef Iterator value_type; + + /// Iterator's reference type. + typedef Iterator reference; + + /// Iterator's __const reference type. + typedef Iterator const_reference; + + inline + bin_search_tree_node_it_(const node_pointer p_nd = 0) + : PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(const_cast(p_nd)) + { } + + /// Access. + Iterator + operator*() const + { return Iterator(PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd); } + + /// Returns the node iterator associated with the left node. + PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC + get_l_child() const + { + return PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC( + PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_left); + } + + /// Returns the node iterator associated with the right node. + PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC + get_r_child() const + { + return PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC( + PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_right); + } + + }; + +#undef PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC +#undef PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC + + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp index 6a2142369..270a00d2a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..fb35ebac7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp @@ -0,0 +1,52 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/policy_access_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() +{ return (*this); } + +PB_DS_CLASS_T_DEC +const Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() const +{ return (*this); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp new file mode 100644 index 000000000..b332a5a4c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/r_erase_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +actual_erase_node(node_pointer p_z) +{ + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value));) + p_z->~node(); + s_node_allocator.deallocate(p_z, 1); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update_min_max_for_erased_node(node_pointer p_z) +{ + if (m_size == 1) + { + m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; + return; + } + + if (m_p_head->m_p_left == p_z) + { + iterator it(p_z); + ++it; + m_p_head->m_p_left = it.m_p_nd; + } + else if (m_p_head->m_p_right == p_z) + { + iterator it(p_z); + --it; + m_p_head->m_p_right = it.m_p_nd; + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + clear_imp(m_p_head->m_p_parent); + m_size = 0; + initialize(); + _GLIBCXX_DEBUG_ONLY(debug_base::clear();) + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear_imp(node_pointer p_nd) +{ + if (p_nd == 0) + return; + + clear_imp(p_nd->m_p_left); + clear_imp(p_nd->m_p_right); + p_nd->~Node(); + s_node_allocator.deallocate(p_nd, 1); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp new file mode 100644 index 000000000..df23e6491 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp @@ -0,0 +1,155 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/rotate_fn_imps.hpp + * Contains imps for rotating nodes. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +rotate_left(node_pointer p_x) +{ + node_pointer p_y = p_x->m_p_right; + + p_x->m_p_right = p_y->m_p_left; + + if (p_y->m_p_left != 0) + p_y->m_p_left->m_p_parent = p_x; + + p_y->m_p_parent = p_x->m_p_parent; + + if (p_x == m_p_head->m_p_parent) + m_p_head->m_p_parent = p_y; + else if (p_x == p_x->m_p_parent->m_p_left) + p_x->m_p_parent->m_p_left = p_y; + else + p_x->m_p_parent->m_p_right = p_y; + + p_y->m_p_left = p_x; + p_x->m_p_parent = p_y; + + PB_DS_ASSERT_NODE_CONSISTENT(p_x) + PB_DS_ASSERT_NODE_CONSISTENT(p_y) + + apply_update(p_x, (node_update* )this); + apply_update(p_x->m_p_parent, (node_update* )this); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +rotate_right(node_pointer p_x) +{ + node_pointer p_y = p_x->m_p_left; + + p_x->m_p_left = p_y->m_p_right; + + if (p_y->m_p_right != 0) + p_y->m_p_right->m_p_parent = p_x; + + p_y->m_p_parent = p_x->m_p_parent; + + if (p_x == m_p_head->m_p_parent) + m_p_head->m_p_parent = p_y; + else if (p_x == p_x->m_p_parent->m_p_right) + p_x->m_p_parent->m_p_right = p_y; + else + p_x->m_p_parent->m_p_left = p_y; + + p_y->m_p_right = p_x; + p_x->m_p_parent = p_y; + + PB_DS_ASSERT_NODE_CONSISTENT(p_x) + PB_DS_ASSERT_NODE_CONSISTENT(p_y) + + apply_update(p_x, (node_update* )this); + apply_update(p_x->m_p_parent, (node_update* )this); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +rotate_parent(node_pointer p_nd) +{ + node_pointer p_parent = p_nd->m_p_parent; + + if (p_nd == p_parent->m_p_left) + rotate_right(p_parent); + else + rotate_left(p_parent); + + _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd); + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || + p_nd->m_p_right == p_parent); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +apply_update(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/) +{ } + +PB_DS_CLASS_T_DEC +template +inline void +PB_DS_CLASS_C_DEC:: +apply_update(node_pointer p_nd, Node_Update_* /*p_update*/) +{ + node_update::operator()(node_iterator(p_nd), + node_const_iterator(static_cast(0))); +} + +PB_DS_CLASS_T_DEC +template +inline void +PB_DS_CLASS_C_DEC:: +update_to_top(node_pointer p_nd, Node_Update_* p_update) +{ + while (p_nd != m_p_head) + { + apply_update(p_nd, p_update); + + p_nd = p_nd->m_p_parent; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update_to_top(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/) +{ } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp new file mode 100644 index 000000000..657bc8a73 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp @@ -0,0 +1,150 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/split_join_fn_imps.hpp + * Contains an implementation class for bin_search_tree_. + */ + +PB_DS_CLASS_T_DEC +bool +PB_DS_CLASS_C_DEC:: +join_prep(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + if (other.m_size == 0) + return false; + + if (m_size == 0) + { + value_swap(other); + return false; + } + + const bool greater = + Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value), + PB_DS_V2F(other.m_p_head->m_p_left->m_value)); + + const bool lesser = + Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value), + PB_DS_V2F(m_p_head->m_p_left->m_value)); + + if (!greater && !lesser) + __throw_join_error(); + + if (lesser) + value_swap(other); + + m_size += other.m_size; + _GLIBCXX_DEBUG_ONLY(debug_base::join(other);) + return true; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +join_finish(PB_DS_CLASS_C_DEC& other) +{ + initialize_min_max(); + other.initialize(); +} + +PB_DS_CLASS_T_DEC +bool +PB_DS_CLASS_C_DEC:: +split_prep(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + other.clear(); + + if (m_size == 0) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return false; + } + + if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value))) + { + value_swap(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return false; + } + + if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value))) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return false; + } + + if (m_size == 1) + { + value_swap(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return false; + } + + _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);) + return true; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +split_finish(PB_DS_CLASS_C_DEC& other) +{ + other.initialize_min_max(); + other.m_size = std::distance(other.begin(), other.end()); + m_size -= other.m_size; + initialize_min_max(); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +recursive_count(node_pointer p) const +{ + if (p == 0) + return 0; + return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/traits.hpp new file mode 100644 index 000000000..49777d5a6 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/bin_search_tree_/traits.hpp @@ -0,0 +1,236 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file bin_search_tree_/traits.hpp + * Contains an implementation for bin_search_tree_. + */ + +#ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP +#define PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Binary search tree traits, primary template + /// @ingroup traits + template + class Node_Update, + class Node, + typename _Alloc> + struct bin_search_tree_traits + { + private: + typedef types_traits type_traits; + + public: + typedef Node node; + + typedef + bin_search_tree_const_it_< + typename _Alloc::template rebind< + node>::other::pointer, + typename type_traits::value_type, + typename type_traits::pointer, + typename type_traits::const_pointer, + typename type_traits::reference, + typename type_traits::const_reference, + true, + _Alloc> + point_const_iterator; + + typedef + bin_search_tree_it_< + typename _Alloc::template rebind< + node>::other::pointer, + typename type_traits::value_type, + typename type_traits::pointer, + typename type_traits::const_pointer, + typename type_traits::reference, + typename type_traits::const_reference, + true, + _Alloc> + point_iterator; + + typedef + bin_search_tree_const_it_< + typename _Alloc::template rebind< + node>::other::pointer, + typename type_traits::value_type, + typename type_traits::pointer, + typename type_traits::const_pointer, + typename type_traits::reference, + typename type_traits::const_reference, + false, + _Alloc> + const_reverse_iterator; + + typedef + bin_search_tree_it_< + typename _Alloc::template rebind< + node>::other::pointer, + typename type_traits::value_type, + typename type_traits::pointer, + typename type_traits::const_pointer, + typename type_traits::reference, + typename type_traits::const_reference, + false, + _Alloc> + reverse_iterator; + + /// This is an iterator to an iterator: it iterates over nodes, + /// and de-referencing it returns one of the tree's iterators. + typedef + bin_search_tree_const_node_it_< + Node, + point_const_iterator, + point_iterator, + _Alloc> + node_const_iterator; + + typedef + bin_search_tree_node_it_< + Node, + point_const_iterator, + point_iterator, + _Alloc> + node_iterator; + + typedef + Node_Update< + node_const_iterator, + node_iterator, + Cmp_Fn, + _Alloc> + node_update; + + typedef + __gnu_pbds::null_node_update< + node_const_iterator, + node_iterator, + Cmp_Fn, + _Alloc>* + null_node_update_pointer; + }; + + /// Specialization. + /// @ingroup traits + template + class Node_Update, + class Node, + typename _Alloc> + struct + bin_search_tree_traits + { + private: + typedef types_traits type_traits; + + public: + typedef Node node; + + typedef + bin_search_tree_const_it_< + typename _Alloc::template rebind< + node>::other::pointer, + typename type_traits::value_type, + typename type_traits::pointer, + typename type_traits::const_pointer, + typename type_traits::reference, + typename type_traits::const_reference, + true, + _Alloc> + point_const_iterator; + + typedef point_const_iterator point_iterator; + + typedef + bin_search_tree_const_it_< + typename _Alloc::template rebind< + node>::other::pointer, + typename type_traits::value_type, + typename type_traits::pointer, + typename type_traits::const_pointer, + typename type_traits::reference, + typename type_traits::const_reference, + false, + _Alloc> + const_reverse_iterator; + + typedef const_reverse_iterator reverse_iterator; + + /// This is an iterator to an iterator: it iterates over nodes, + /// and de-referencing it returns one of the tree's iterators. + typedef + bin_search_tree_const_node_it_< + Node, + point_const_iterator, + point_iterator, + _Alloc> + node_const_iterator; + + typedef node_const_iterator node_iterator; + + typedef + Node_Update + node_update; + + typedef + __gnu_pbds::null_node_update< + node_const_iterator, + node_iterator, + Cmp_Fn, + _Alloc>* + null_node_update_pointer; + }; + + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp index f653a1e4b..3693b54d6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/const_iterator.hpp new file mode 100644 index 000000000..8bf1e5d7d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/const_iterator.hpp @@ -0,0 +1,139 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/const_iterator.hpp + * Contains an iterator class returned by the table's const find and insert + * methods. + */ + +#ifndef PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP +#define PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { +#define PB_DS_BIN_HEAP_CIT_BASE \ + binary_heap_point_const_iterator_ + + /// Const point-type iterator. + template + class binary_heap_const_iterator_ : public PB_DS_BIN_HEAP_CIT_BASE + { + private: + typedef PB_DS_BIN_HEAP_CIT_BASE base_type; + typedef typename base_type::entry_pointer entry_pointer; + + public: + /// Category. + typedef std::forward_iterator_tag iterator_category; + + /// Difference type. + typedef typename _Alloc::difference_type difference_type; + + /// Iterator's value type. + typedef typename base_type::value_type value_type; + + /// Iterator's pointer type. + typedef typename base_type::pointer pointer; + + /// Iterator's const pointer type. + typedef typename base_type::const_pointer const_pointer; + + /// Iterator's reference type. + typedef typename base_type::reference reference; + + /// Iterator's const reference type. + typedef typename base_type::const_reference const_reference; + + inline + binary_heap_const_iterator_(entry_pointer p_e) : base_type(p_e) + { } + + /// Default constructor. + inline + binary_heap_const_iterator_() + { } + + /// Copy constructor. + inline + binary_heap_const_iterator_(const binary_heap_const_iterator_& other) + : base_type(other) + { } + + /// Compares content to a different iterator object. + inline bool + operator==(const binary_heap_const_iterator_& other) const + { return base_type::m_p_e == other.m_p_e; } + + /// Compares content (negatively) to a different iterator object. + inline bool + operator!=(const binary_heap_const_iterator_& other) const + { return base_type::m_p_e != other.m_p_e; } + + inline binary_heap_const_iterator_& + operator++() + { + _GLIBCXX_DEBUG_ASSERT(base_type::m_p_e != 0); + inc(); + return *this; + } + + inline binary_heap_const_iterator_ + operator++(int) + { + binary_heap_const_iterator_ ret_it(base_type::m_p_e); + operator++(); + return ret_it; + } + + private: + void + inc() + { ++base_type::m_p_e; } + }; + +#undef PB_DS_BIN_HEAP_CIT_BASE + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..c26a74c67 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,139 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for binary_heap_. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::entry_allocator +PB_DS_CLASS_C_DEC::s_entry_allocator; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::value_allocator +PB_DS_CLASS_C_DEC::s_value_allocator; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::no_throw_copies_t +PB_DS_CLASS_C_DEC::s_no_throw_copies_ind; + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + { + insert_value(*first_it, s_no_throw_copies_ind); + ++first_it; + } + make_heap(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binary_heap() +: m_size(0), m_actual_size(resize_policy::min_size), + m_a_entries(s_entry_allocator.allocate(m_actual_size)) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binary_heap(const Cmp_Fn& r_cmp_fn) +: entry_cmp(r_cmp_fn), m_size(0), m_actual_size(resize_policy::min_size), + m_a_entries(s_entry_allocator.allocate(m_actual_size)) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binary_heap(const PB_DS_CLASS_C_DEC& other) +: entry_cmp(other), resize_policy(other), m_size(0), + m_actual_size(other.m_actual_size), + m_a_entries(s_entry_allocator.allocate(m_actual_size)) +{ + PB_DS_ASSERT_VALID(other) + _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries); + + __try + { + copy_from_range(other.begin(), other.end()); + } + __catch(...) + { + for (size_type i = 0; i < m_size; ++i) + erase_at(m_a_entries, i, s_no_throw_copies_ind); + + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + __throw_exception_again; + } + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries); + value_swap(other); + std::swap((entry_cmp&)(*this), (entry_cmp&)other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +value_swap(PB_DS_CLASS_C_DEC& other) +{ + std::swap(m_a_entries, other.m_a_entries); + std::swap(m_size, other.m_size); + std::swap(m_actual_size, other.m_actual_size); + static_cast(this)->swap(other); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~binary_heap() +{ + for (size_type i = 0; i < m_size; ++i) + erase_at(m_a_entries, i, s_no_throw_copies_ind); + s_entry_allocator.deallocate(m_a_entries, m_actual_size); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp new file mode 100644 index 000000000..5630f6e5f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp @@ -0,0 +1,72 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/debug_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ +#ifdef PB_DS_REGRESSION + s_entry_allocator.check_allocated(m_a_entries, m_actual_size); +#endif + + resize_policy::assert_valid(__file, __line); + PB_DS_DEBUG_VERIFY(m_size <= m_actual_size); + for (size_type i = 0; i < m_size; ++i) + { +#ifdef PB_DS_REGRESSION + s_value_allocator.check_allocated(m_a_entries[i], 1); +#endif + + if (left_child(i) < m_size) + PB_DS_DEBUG_VERIFY(!entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child(i)])); + + PB_DS_DEBUG_VERIFY(parent(left_child(i)) == i); + + if (right_child(i) < m_size) + PB_DS_DEBUG_VERIFY(!entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child(i)])); + + PB_DS_DEBUG_VERIFY(parent(right_child(i)) == i); + } +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp index 84e995df0..f63fac5ec 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/entry_pred.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/entry_pred.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/entry_pred.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/entry_pred.hpp index 367fb32fd..e5a48d343 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/entry_pred.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/entry_pred.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp new file mode 100644 index 000000000..601dbd87c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp @@ -0,0 +1,208 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/erase_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + for (size_type i = 0; i < m_size; ++i) + erase_at(m_a_entries, i, s_no_throw_copies_ind); + + __try + { + const size_type new_size = resize_policy::get_new_size_for_arbitrary(0); + entry_pointer new_entries = s_entry_allocator.allocate(new_size); + resize_policy::notify_arbitrary(new_size); + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + m_actual_size = new_size; + m_a_entries = new_entries; + } + __catch(...) + { } + + m_size = 0; + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_at(entry_pointer a_entries, size_type i, false_type) +{ + a_entries[i]->~value_type(); + s_value_allocator.deallocate(a_entries[i], 1); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_at(entry_pointer, size_type, true_type) +{ } + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +pop() +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!empty()); + + pop_heap(); + erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind); + resize_for_erase_if_needed(); + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + + typedef typename entry_pred::type + pred_t; + + const size_type left = partition(pred_t(pred)); + _GLIBCXX_DEBUG_ASSERT(m_size >= left); + const size_type ersd = m_size - left; + for (size_type i = left; i < m_size; ++i) + erase_at(m_a_entries, i, s_no_throw_copies_ind); + + __try + { + const size_type new_size = + resize_policy::get_new_size_for_arbitrary(left); + + entry_pointer new_entries = s_entry_allocator.allocate(new_size); + std::copy(m_a_entries, m_a_entries + left, new_entries); + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + m_actual_size = new_size; + resize_policy::notify_arbitrary(m_actual_size); + } + __catch(...) + { }; + + m_size = left; + make_heap(); + PB_DS_ASSERT_VALID((*this)) + return ersd; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +erase(point_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!empty()); + + const size_type fix_pos = it.m_p_e - m_a_entries; + std::swap(*it.m_p_e, m_a_entries[m_size - 1]); + erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind); + resize_for_erase_if_needed(); + + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + _GLIBCXX_DEBUG_ASSERT(fix_pos <= m_size); + + if (fix_pos != m_size) + fix(m_a_entries + fix_pos); + + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +resize_for_erase_if_needed() +{ + if (!resize_policy::resize_needed_for_shrink(m_size)) + return; + + __try + { + const size_type new_size = resize_policy::get_new_size_for_shrink(); + entry_pointer new_entries = s_entry_allocator.allocate(new_size); + resize_policy::notify_shrink_resize(); + + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + std::copy(m_a_entries, m_a_entries + m_size - 1, new_entries); + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + m_actual_size = new_size; + m_a_entries = new_entries; + } + __catch(...) + { } +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +partition(Pred pred) +{ + size_type left = 0; + size_type right = m_size - 1; + + while (right + 1 != left) + { + _GLIBCXX_DEBUG_ASSERT(left <= m_size); + + if (!pred(m_a_entries[left])) + ++left; + else if (pred(m_a_entries[right])) + --right; + else + { + _GLIBCXX_DEBUG_ASSERT(left < right); + std::swap(m_a_entries[left], m_a_entries[right]); + ++left; + --right; + } + } + + return left; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp new file mode 100644 index 000000000..39f0fb7ba --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp @@ -0,0 +1,79 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/find_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reference +PB_DS_CLASS_C_DEC:: +top() const +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!empty()); + return top_imp(s_no_throw_copies_ind); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reference +PB_DS_CLASS_C_DEC:: +top_imp(true_type) const +{ return *m_a_entries; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reference +PB_DS_CLASS_C_DEC:: +top_imp(false_type) const +{ return **m_a_entries; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +left_child(size_type i) +{ return i * 2 + 1; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +right_child(size_type i) +{ return i * 2 + 2; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +parent(size_type i) +{ return (i - 1) / 2; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp new file mode 100644 index 000000000..618528872 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp @@ -0,0 +1,58 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/info_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ return m_size == 0; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ return m_size; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ return s_entry_allocator.max_size(); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp new file mode 100644 index 000000000..5413f6884 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp @@ -0,0 +1,173 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/insert_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +push(const_reference r_val) +{ + PB_DS_ASSERT_VALID((*this)) + insert_value(r_val, s_no_throw_copies_ind); + push_heap(); + PB_DS_ASSERT_VALID((*this)) + return point_iterator(m_a_entries); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +insert_value(value_type val, true_type) +{ + resize_for_insert_if_needed(); + m_a_entries[m_size++] = val; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +insert_value(const_reference r_val, false_type) +{ + resize_for_insert_if_needed(); + pointer p_new = s_value_allocator.allocate(1); + cond_dealtor_t cond(p_new); + new (p_new) value_type(r_val); + cond.set_no_action(); + m_a_entries[m_size++] = p_new; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +resize_for_insert_if_needed() +{ + if (!resize_policy::resize_needed_for_grow(m_size)) + { + _GLIBCXX_DEBUG_ASSERT(m_size < m_actual_size); + return; + } + + const size_type new_size = resize_policy::get_new_size_for_grow(); + entry_pointer new_entries = s_entry_allocator.allocate(new_size); + resize_policy::notify_grow_resize(); + + std::copy(m_a_entries, m_a_entries + m_size, new_entries); + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + m_actual_size = new_size; + m_a_entries = new_entries; + make_heap(); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +modify(point_iterator it, const_reference r_new_val) +{ + PB_DS_ASSERT_VALID((*this)) + swap_value_imp(it.m_p_e, r_new_val, s_no_throw_copies_ind); + fix(it.m_p_e); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +fix(entry_pointer p_e) +{ + size_type i = p_e - m_a_entries; + if (i > 0 && entry_cmp::operator()(m_a_entries[parent(i)], m_a_entries[i])) + { + size_type parent_i = parent(i); + while (i > 0 + && entry_cmp::operator()(m_a_entries[parent_i], m_a_entries[i])) + { + std::swap(m_a_entries[i], m_a_entries[parent_i]); + i = parent_i; + parent_i = parent(i); + } + + PB_DS_ASSERT_VALID((*this)) + return; + } + + while (i < m_size) + { + const size_type lchild_i = left_child(i); + const size_type rchild_i = right_child(i); + _GLIBCXX_DEBUG_ASSERT(rchild_i > lchild_i); + + const bool smaller_than_lchild = lchild_i < m_size && + entry_cmp::operator()(m_a_entries[i], m_a_entries[lchild_i]); + + const bool smaller_than_rchild = rchild_i < m_size && + entry_cmp::operator()(m_a_entries[i], m_a_entries[rchild_i]); + + const bool swap_with_rchild = smaller_than_rchild && (!smaller_than_lchild || entry_cmp::operator()(m_a_entries[lchild_i], m_a_entries[rchild_i])); + + const bool swap_with_lchild = !swap_with_rchild && smaller_than_lchild; + + if (swap_with_lchild) + { + std::swap(m_a_entries[i], m_a_entries[lchild_i]); + i = lchild_i; + } + else if (swap_with_rchild) + { + std::swap(m_a_entries[i], m_a_entries[rchild_i]); + i = rchild_i; + } + else + i = m_size; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +swap_value_imp(entry_pointer p_e, value_type new_val, true_type) +{ *p_e = new_val; } + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type) +{ + value_type tmp(r_new_val); + (*p_e)->swap(tmp); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp new file mode 100644 index 000000000..43ef87d48 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp @@ -0,0 +1,64 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/iterators_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +begin() +{ return iterator(m_a_entries); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +begin() const +{ return const_iterator(m_a_entries); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +end() +{ return iterator(m_a_entries + m_size); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +end() const +{ return const_iterator(m_a_entries + m_size); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp new file mode 100644 index 000000000..8a10c21f0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp @@ -0,0 +1,144 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/point_const_iterator.hpp + * Contains an iterator class returned by the table's const find and insert + * methods. + */ + +#ifndef PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP +#define PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Const point-type iterator. + template + class binary_heap_point_const_iterator_ + { + protected: + typedef typename _Alloc::template rebind::other::pointer entry_pointer; + + public: + /// Category. + typedef trivial_iterator_tag iterator_category; + + /// Difference type. + typedef trivial_iterator_difference_type difference_type; + + /// Iterator's value type. + typedef Value_Type value_type; + + /// Iterator's pointer type. + typedef typename _Alloc::template rebind::other::pointer + pointer; + + /// Iterator's const pointer type. + typedef + typename _Alloc::template rebind::other::const_pointer + const_pointer; + + /// Iterator's reference type. + typedef + typename _Alloc::template rebind::other::reference + reference; + + /// Iterator's const reference type. + typedef + typename _Alloc::template rebind::other::const_reference + const_reference; + + inline + binary_heap_point_const_iterator_(entry_pointer p_e) : m_p_e(p_e) + { } + + /// Default constructor. + inline + binary_heap_point_const_iterator_() : m_p_e(0) { } + + /// Copy constructor. + inline + binary_heap_point_const_iterator_(const binary_heap_point_const_iterator_& other) + : m_p_e(other.m_p_e) + { } + + /// Access. + inline const_pointer + operator->() const + { + _GLIBCXX_DEBUG_ASSERT(m_p_e != 0); + return to_ptr(integral_constant()); + } + + /// Access. + inline const_reference + operator*() const + { + _GLIBCXX_DEBUG_ASSERT(m_p_e != 0); + return *to_ptr(integral_constant()); + } + + /// Compares content to a different iterator object. + inline bool + operator==(const binary_heap_point_const_iterator_& other) const + { return m_p_e == other.m_p_e; } + + /// Compares content (negatively) to a different iterator object. + inline bool + operator!=(const binary_heap_point_const_iterator_& other) const + { return m_p_e != other.m_p_e; } + + private: + inline const_pointer + to_ptr(true_type) const + { return m_p_e; } + + inline const_pointer + to_ptr(false_type) const + { return *m_p_e; } + + public: + entry_pointer m_p_e; + }; + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..101060969 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp @@ -0,0 +1,56 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/policy_access_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() +{ + return (*this); +} + +PB_DS_CLASS_T_DEC +const Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() const +{ + return (*this); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/resize_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/resize_policy.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/resize_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/resize_policy.hpp index b8299a33b..a5ee9305b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binary_heap_/resize_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/resize_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp new file mode 100644 index 000000000..98c0b554a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp @@ -0,0 +1,160 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/split_join_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +split(Pred pred, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + + typedef + typename entry_pred::type + pred_t; + + const size_type left = partition(pred_t(pred)); + _GLIBCXX_DEBUG_ASSERT(m_size >= left); + + const size_type ersd = m_size - left; + _GLIBCXX_DEBUG_ASSERT(m_size >= ersd); + + const size_type new_size = resize_policy::get_new_size_for_arbitrary(left); + const size_type other_actual_size = other.get_new_size_for_arbitrary(ersd); + + entry_pointer a_entries = 0; + entry_pointer a_other_entries = 0; + + __try + { + a_entries = s_entry_allocator.allocate(new_size); + a_other_entries = s_entry_allocator.allocate(other_actual_size); + } + __catch(...) + { + if (a_entries != 0) + s_entry_allocator.deallocate(a_entries, new_size); + + if (a_other_entries != 0) + s_entry_allocator.deallocate(a_other_entries, other_actual_size); + + __throw_exception_again; + }; + + for (size_type i = 0; i < other.m_size; ++i) + erase_at(other.m_a_entries, i, s_no_throw_copies_ind); + + _GLIBCXX_DEBUG_ASSERT(new_size >= left); + std::copy(m_a_entries, m_a_entries + left, a_entries); + std::copy(m_a_entries + left, m_a_entries + m_size, a_other_entries); + + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size); + + m_actual_size = new_size; + other.m_actual_size = other_actual_size; + + m_size = left; + other.m_size = ersd; + + m_a_entries = a_entries; + other.m_a_entries = a_other_entries; + + make_heap(); + other.make_heap(); + + resize_policy::notify_arbitrary(m_actual_size); + other.notify_arbitrary(other.m_actual_size); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + const size_type len = m_size + other.m_size; + const size_type new_size = resize_policy::get_new_size_for_arbitrary(len); + + entry_pointer a_entries = 0; + entry_pointer a_other_entries = 0; + + __try + { + a_entries = s_entry_allocator.allocate(new_size); + a_other_entries = s_entry_allocator.allocate(resize_policy::min_size); + } + __catch(...) + { + if (a_entries != 0) + s_entry_allocator.deallocate(a_entries, new_size); + + if (a_other_entries != 0) + s_entry_allocator.deallocate(a_other_entries, resize_policy::min_size); + + __throw_exception_again; + } + + std::copy(m_a_entries, m_a_entries + m_size, a_entries); + std::copy(other.m_a_entries, other.m_a_entries + other.m_size, + a_entries + m_size); + + s_entry_allocator.deallocate(m_a_entries, m_actual_size); + m_a_entries = a_entries; + m_size = len; + m_actual_size = new_size; + resize_policy::notify_arbitrary(new_size); + make_heap(); + + s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size); + other.m_a_entries = a_other_entries; + other.m_size = 0; + other.m_actual_size = resize_policy::min_size; + other.notify_arbitrary(resize_policy::min_size); + other.make_heap(); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp new file mode 100644 index 000000000..beda0be61 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp @@ -0,0 +1,78 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binary_heap_/trace_fn_imps.hpp + * Contains an implementation class for a binary_heap. + */ + +#ifdef PB_DS_BINARY_HEAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << this << std::endl; + + std::cerr << m_a_entries << std::endl; + + for (size_type i = 0; i < m_size; ++i) + trace_entry(m_a_entries[i], s_no_throw_copies_ind); + + std::cerr << std::endl; + + std::cerr << "size = " << m_size << " " << "actual_size = " << m_actual_size << std::endl; + + resize_policy::trace(); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_entry(const entry& r_e, false_type) const +{ + std::cout << r_e << " " <<* r_e << std::endl; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_entry(const entry& r_e, true_type) const +{ + std::cout << r_e << std::endl; +} + +#endif // #ifdef PB_DS_BINARY_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp index bfa350b93..876ef17c5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..739ab1b96 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,60 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file detail/binomial_heap_/constructors_destructor_fn_imps.hpp + * Contains an implementation for binomial_heap_. + */ + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binomial_heap() +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binomial_heap(const Cmp_Fn& r_cmp_fn) +: base_type(r_cmp_fn) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binomial_heap(const PB_DS_CLASS_C_DEC& other) +: base_type(other) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~binomial_heap() { } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp new file mode 100644 index 000000000..f582d911c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp @@ -0,0 +1,49 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file detail/binomial_heap_/debug_fn_imps.hpp + * Contains an implementation for binomial_heap_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ base_type::assert_valid(true, __file, __line); } + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp index f249c5c6f..b419dc866 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..0ba98ee65 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,85 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binomial_heap_base_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for a base of binomial heaps. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + push(*(first_it++)); + PB_DS_ASSERT_VALID_COND((*this),false) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binomial_heap_base() : m_p_max(0) +{ + PB_DS_ASSERT_VALID_COND((*this),false) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binomial_heap_base(const Cmp_Fn& r_cmp_fn) +: base_type(r_cmp_fn), m_p_max(0) +{ PB_DS_ASSERT_VALID_COND((*this),false) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +binomial_heap_base(const PB_DS_CLASS_C_DEC& other) +: base_type(other), m_p_max(0) +{ PB_DS_ASSERT_VALID_COND((*this),false) } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID_COND((*this),false) + base_type::swap(other); + std::swap(m_p_max, other.m_p_max); + PB_DS_ASSERT_VALID_COND((*this),false) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~binomial_heap_base() +{ } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp new file mode 100644 index 000000000..a85c2834c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binomial_heap_base_/debug_fn_imps.hpp + * Contains an implementation class for a base of binomial heaps. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(bool strictly_binomial, const char* __file, int __line) const +{ + base_type::assert_valid(__file, __line); + assert_node_consistent(base_type::m_p_root, strictly_binomial, true, + __file, __line); + assert_max(__file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_max(const char* __file, int __line) const +{ + if (m_p_max == 0) + return; + PB_DS_DEBUG_VERIFY(base_type::parent(m_p_max) == 0); + for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) + PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(m_p_max->m_value, + it.m_p_nd->m_value)); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_node_consistent(node_const_pointer p_nd, bool strictly_binomial, + bool increasing, const char* __file, int __line) const +{ + PB_DS_DEBUG_VERIFY(increasing || strictly_binomial); + base_type::assert_node_consistent(p_nd, false, __file, __line); + if (p_nd == 0) + return; + PB_DS_DEBUG_VERIFY(p_nd->m_metadata == base_type::degree(p_nd)); + PB_DS_DEBUG_VERIFY(base_type::size_under_node(p_nd) == + static_cast(1 << p_nd->m_metadata)); + assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing, + __file, __line); + assert_node_consistent(p_nd->m_p_l_child, true, false, __file, __line); + if (p_nd->m_p_next_sibling != 0) + { + if (increasing) + { + if (strictly_binomial) + PB_DS_DEBUG_VERIFY(p_nd->m_metadata + < p_nd->m_p_next_sibling->m_metadata); + else + PB_DS_DEBUG_VERIFY(p_nd->m_metadata + <= p_nd->m_p_next_sibling->m_metadata); + } + else + PB_DS_DEBUG_VERIFY(p_nd->m_metadata + > p_nd->m_p_next_sibling->m_metadata); + } +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp new file mode 100644 index 000000000..fc9830f68 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp @@ -0,0 +1,161 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binomial_heap_base_/erase_fn_imps.hpp + * Contains an implementation class for a base of binomial heaps. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +pop() +{ + PB_DS_ASSERT_VALID_COND((*this),true) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + + if (m_p_max == 0) + find_max(); + + _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); + node_pointer p_nd = m_p_max; + remove_parentless_node(m_p_max); + base_type::actual_erase_node(p_nd); + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +remove_parentless_node(node_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + _GLIBCXX_DEBUG_ASSERT(base_type::parent(p_nd) == 0); + + node_pointer p_cur_root = p_nd == base_type::m_p_root? + p_nd->m_p_next_sibling : base_type::m_p_root; + + if (p_cur_root != 0) + p_cur_root->m_p_prev_or_parent = 0; + + if (p_nd->m_p_prev_or_parent != 0) + p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling; + + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + + node_pointer p_child = p_nd->m_p_l_child; + if (p_child != 0) + { + p_child->m_p_prev_or_parent = 0; + while (p_child->m_p_next_sibling != 0) + p_child = p_child->m_p_next_sibling; + } + + m_p_max = 0; + base_type::m_p_root = join(p_cur_root, p_child); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +clear() +{ + base_type::clear(); + m_p_max = 0; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase(point_iterator it) +{ + PB_DS_ASSERT_VALID_COND((*this),true) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + + base_type::bubble_to_top(it.m_p_nd); + remove_parentless_node(it.m_p_nd); + base_type::actual_erase_node(it.m_p_nd); + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID_COND((*this),true) + + if (base_type::empty()) + { + PB_DS_ASSERT_VALID_COND((*this),true) + return 0; + } + + base_type::to_linked_list(); + node_pointer p_out = base_type::prune(pred); + size_type ersd = 0; + while (p_out != 0) + { + ++ersd; + node_pointer p_next = p_out->m_p_next_sibling; + base_type::actual_erase_node(p_out); + p_out = p_next; + } + + node_pointer p_cur = base_type::m_p_root; + base_type::m_p_root = 0; + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = 0; + p_cur->m_metadata = 0; + p_cur->m_p_next_sibling = base_type::m_p_root; + + if (base_type::m_p_root != 0) + base_type::m_p_root->m_p_prev_or_parent = p_cur; + + base_type::m_p_root = p_cur; + base_type::m_p_root = fix(base_type::m_p_root); + p_cur = p_next; + } + + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) + return ersd; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp new file mode 100644 index 000000000..163c78603 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp @@ -0,0 +1,70 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binomial_heap_base_/find_fn_imps.hpp + * Contains an implementation class for a base of binomial heaps. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reference +PB_DS_CLASS_C_DEC:: +top() const +{ + PB_DS_ASSERT_VALID_COND((*this),false) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + + if (m_p_max == 0) + const_cast(this)->find_max(); + + _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); + return m_p_max->m_value; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +find_max() +{ + node_pointer p_cur = base_type::m_p_root; + m_p_max = p_cur; + while (p_cur != 0) + { + if (Cmp_Fn::operator()(m_p_max->m_value, p_cur->m_value)) + m_p_max = p_cur; + p_cur = p_cur->m_p_next_sibling; + } +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp new file mode 100644 index 000000000..06b0248a5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp @@ -0,0 +1,178 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binomial_heap_base_/insert_fn_imps.hpp + * Contains an implementation class for a base of binomial heaps. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +push(const_reference r_val) +{ + PB_DS_ASSERT_VALID_COND((*this),true) + node_pointer p_nd = base_type::get_new_node_for_insert(r_val); + insert_node(p_nd); + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) + return point_iterator(p_nd); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +insert_node(node_pointer p_nd) +{ + if (base_type::m_p_root == 0) + { + p_nd->m_p_next_sibling = 0; + p_nd->m_p_prev_or_parent = 0; + p_nd->m_p_l_child = 0; + p_nd->m_metadata = 0; + base_type::m_p_root = p_nd; + return; + } + + if (base_type::m_p_root->m_metadata > 0) + { + p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = 0; + p_nd->m_p_next_sibling = base_type::m_p_root; + base_type::m_p_root->m_p_prev_or_parent = p_nd; + base_type::m_p_root = p_nd; + p_nd->m_metadata = 0; + return; + } + + if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value)) + { + p_nd->m_p_next_sibling = base_type::m_p_root->m_p_next_sibling; + p_nd->m_p_prev_or_parent = 0; + p_nd->m_metadata = 1; + p_nd->m_p_l_child = base_type::m_p_root; + base_type::m_p_root->m_p_prev_or_parent = p_nd; + base_type::m_p_root->m_p_next_sibling = 0; + base_type::m_p_root = p_nd; + } + else + { + p_nd->m_p_next_sibling = 0; + p_nd->m_p_l_child = 0; + p_nd->m_p_prev_or_parent = base_type::m_p_root; + p_nd->m_metadata = 0; + _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root->m_p_l_child == 0); + base_type::m_p_root->m_p_l_child = p_nd; + base_type::m_p_root->m_metadata = 1; + } + + base_type::m_p_root = fix(base_type::m_p_root); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +fix(node_pointer p_nd) const +{ + while (p_nd->m_p_next_sibling != 0 && + p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata) + { + node_pointer p_next = p_nd->m_p_next_sibling; + if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) + { + p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + + if (p_nd->m_p_prev_or_parent != 0) + p_nd->m_p_prev_or_parent->m_p_next_sibling = p_next; + + base_type::make_child_of(p_nd, p_next); + ++p_next->m_metadata; + p_nd = p_next; + } + else + { + p_nd->m_p_next_sibling = p_next->m_p_next_sibling; + + if (p_nd->m_p_next_sibling != 0) + p_next->m_p_next_sibling = 0; + + base_type::make_child_of(p_next, p_nd); + ++p_nd->m_metadata; + } + } + + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; + + return p_nd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +modify(point_iterator it, const_reference r_new_val) +{ + PB_DS_ASSERT_VALID_COND((*this),true) + node_pointer p_nd = it.m_p_nd; + + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + PB_DS_ASSERT_BASE_NODE_CONSISTENT(p_nd, false) + + const bool bubble_up = Cmp_Fn::operator()(p_nd->m_value, r_new_val); + p_nd->m_value = r_new_val; + + if (bubble_up) + { + node_pointer p_parent = base_type::parent(p_nd); + while (p_parent != 0 && + Cmp_Fn::operator()(p_parent->m_value, p_nd->m_value)) + { + base_type::swap_with_parent(p_nd, p_parent); + p_parent = base_type::parent(p_nd); + } + + if (p_nd->m_p_prev_or_parent == 0) + base_type::m_p_root = p_nd; + + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) + return; + } + + base_type::bubble_to_top(p_nd); + remove_parentless_node(p_nd); + insert_node(p_nd); + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp new file mode 100644 index 000000000..75bd4079b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp @@ -0,0 +1,197 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file binomial_heap_base_/split_join_fn_imps.hpp + * Contains an implementation class for a base of binomial heaps. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +split(Pred pred, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID_COND((*this),true) + PB_DS_ASSERT_VALID_COND(other,true) + + other.clear(); + if (base_type::empty()) + { + PB_DS_ASSERT_VALID_COND((*this),true) + PB_DS_ASSERT_VALID_COND(other,true) + return; + } + + base_type::to_linked_list(); + node_pointer p_out = base_type::prune(pred); + while (p_out != 0) + { + _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); + --base_type::m_size; + ++other.m_size; + + node_pointer p_next = p_out->m_p_next_sibling; + p_out->m_p_l_child = p_out->m_p_prev_or_parent = 0; + p_out->m_metadata = 0; + + p_out->m_p_next_sibling = other.m_p_root; + if (other.m_p_root != 0) + other.m_p_root->m_p_prev_or_parent = p_out; + + other.m_p_root = p_out; + other.m_p_root = other.fix(other.m_p_root); + p_out = p_next; + } + + PB_DS_ASSERT_VALID_COND(other,true) + node_pointer p_cur = base_type::m_p_root; + base_type::m_p_root = 0; + + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = 0; + p_cur->m_metadata = 0; + p_cur->m_p_next_sibling = base_type::m_p_root; + + if (base_type::m_p_root != 0) + base_type::m_p_root->m_p_prev_or_parent = p_cur; + + base_type::m_p_root = p_cur; + base_type::m_p_root = fix(base_type::m_p_root); + p_cur = p_next; + } + + m_p_max = 0; + PB_DS_ASSERT_VALID_COND((*this),true) + PB_DS_ASSERT_VALID_COND(other,true) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID_COND((*this),true) + PB_DS_ASSERT_VALID_COND(other,true) + + node_pointer p_other = other.m_p_root; + if (p_other != 0) + do + { + node_pointer p_next = p_other->m_p_next_sibling; + std::swap(p_other->m_p_next_sibling, p_other->m_p_prev_or_parent); + p_other = p_next; + } + while (p_other != 0); + + base_type::m_p_root = join(base_type::m_p_root, other.m_p_root); + base_type::m_size += other.m_size; + m_p_max = 0; + + other.m_p_root = 0; + other.m_size = 0; + other.m_p_max = 0; + + PB_DS_ASSERT_VALID_COND((*this),true) + PB_DS_ASSERT_VALID_COND(other,true) +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +join(node_pointer p_lhs, node_pointer p_rhs) const +{ + node_pointer p_ret = 0; + node_pointer p_cur = 0; + + while (p_lhs != 0 || p_rhs != 0) + { + if (p_rhs == 0) + { + if (p_cur == 0) + p_ret = p_cur = p_lhs; + else + { + p_cur->m_p_next_sibling = p_lhs; + p_lhs->m_p_prev_or_parent = p_cur; + } + p_cur = p_lhs = 0; + } + else if (p_lhs == 0 || p_rhs->m_metadata < p_lhs->m_metadata) + { + if (p_cur == 0) + { + p_ret = p_cur = p_rhs; + p_rhs = p_rhs->m_p_prev_or_parent; + } + else + { + p_cur->m_p_next_sibling = p_rhs; + p_rhs = p_rhs->m_p_prev_or_parent; + p_cur->m_p_next_sibling->m_p_prev_or_parent = p_cur; + p_cur = p_cur->m_p_next_sibling; + } + } + else if (p_lhs->m_metadata < p_rhs->m_metadata) + { + if (p_cur == 0) + p_ret = p_cur = p_lhs; + else + { + p_cur->m_p_next_sibling = p_lhs; + p_lhs->m_p_prev_or_parent = p_cur; + p_cur = p_cur->m_p_next_sibling; + } + p_lhs = p_cur->m_p_next_sibling; + } + else + { + node_pointer p_next_rhs = p_rhs->m_p_prev_or_parent; + p_rhs->m_p_next_sibling = p_lhs; + p_lhs = fix(p_rhs); + p_rhs = p_next_rhs; + } + } + + if (p_cur != 0) + p_cur->m_p_next_sibling = 0; + + if (p_ret != 0) + p_ret->m_p_prev_or_parent = 0; + + return p_ret; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/branch_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/branch_policy.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/branch_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/branch_policy.hpp index bcb0915e0..d9fd830be 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/branch_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/branch_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp index 9123fff0d..b1b051540 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/traits.hpp new file mode 100644 index 000000000..d53dc2462 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/branch_policy/traits.hpp @@ -0,0 +1,95 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file branch_policy/traits.hpp + * Contains an implementation class for tree-like classes. + */ + +#ifndef PB_DS_NODE_AND_IT_TRAITS_HPP +#define PB_DS_NODE_AND_IT_TRAITS_HPP + +#include +#include +#include +#include + +#define PB_DS_DEBUG_VERIFY(_Cond) \ + _GLIBCXX_DEBUG_VERIFY_AT(_Cond, \ + _M_message(#_Cond" assertion from %1;:%2;") \ + ._M_string(__FILE__)._M_integer(__LINE__) \ + ,__file,__line) + +namespace __gnu_pbds +{ + namespace detail + { + /// Tree traits class, primary template. + template + class Node_Update, + typename Tag, + typename _Alloc> + struct tree_traits; + + /// Trie traits class, primary template. + template + class Node_Update, + typename Tag, + typename _Alloc> + struct trie_traits; + + } // namespace detail +} // namespace __gnu_pbds + +#include +#include +#include +#include + +#undef PB_DS_DEBUG_VERIFY + +#endif // #ifndef PB_DS_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp index 21fd88ea7..ce06b221d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp index 047a6b069..a0e545aa6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp index 4df970040..d0fbbb4d7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp new file mode 100644 index 000000000..23fe9d8d1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp @@ -0,0 +1,191 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/constructor_destructor_fn_imps.hpp + * Contains implementations of cc_ht_map_'s constructors, destructor, + * and related functions. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::entry_allocator +PB_DS_CLASS_C_DEC::s_entry_allocator; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::entry_pointer_allocator +PB_DS_CLASS_C_DEC::s_entry_pointer_allocator; + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + insert(*(first_it++)); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_CC_HASH_NAME() : + ranged_hash_fn_base(resize_base::get_nearest_larger_size(1)), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_pointer_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn) : + ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_pointer_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) : + PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), + ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_pointer_allocator.allocate(m_num_e)) +{ + std::fill(m_entries, m_entries + m_num_e, (entry_pointer)0); + Resize_Policy::notify_cleared(); + ranged_hash_fn_base::notify_resized(m_num_e); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, + const Comb_Hash_Fn& r_comb_hash_fn) : + PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), + ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), + r_hash_fn, r_comb_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_pointer_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_CC_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, + const Comb_Hash_Fn& r_comb_hash_fn, + const Resize_Policy& r_resize_policy) : + PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn), + Resize_Policy(r_resize_policy), + ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), + r_hash_fn, r_comb_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_pointer_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_CC_HASH_NAME(const PB_DS_CLASS_C_DEC& other) : + PB_DS_HASH_EQ_FN_C_DEC(other), + resize_base(other), ranged_hash_fn_base(other), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_pointer_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) + __try + { + copy_from_range(other.begin(), other.end()); + } + __catch(...) + { + deallocate_all(); + __throw_exception_again; + } + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~PB_DS_CC_HASH_NAME() +{ deallocate_all(); } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + std::swap(m_entries, other.m_entries); + std::swap(m_num_e, other.m_num_e); + std::swap(m_num_used_e, other.m_num_used_e); + ranged_hash_fn_base::swap(other); + hash_eq_fn_base::swap(other); + resize_base::swap(other); + + _GLIBCXX_DEBUG_ONLY(debug_base::swap(other)); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +deallocate_all() +{ + clear(); + s_entry_pointer_allocator.deallocate(m_entries, m_num_e); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ + std::fill(m_entries, m_entries + m_num_e, entry_pointer(0)); + Resize_Policy::notify_resized(m_num_e); + Resize_Policy::notify_cleared(); + ranged_hash_fn_base::notify_resized(m_num_e); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..f36860667 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp @@ -0,0 +1,55 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s constructors, destructor, + * and related functions. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +constructor_insert_new_imp(mapped_const_reference r_val, size_type pos, + false_type) +{ + // Following lines might throw an exception. + entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator); + + // At this point no exceptions can be thrown. + p->m_p_next = m_entries[pos]; + m_entries[pos] = p; + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp new file mode 100644 index 000000000..c818fa301 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp @@ -0,0 +1,56 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s constructors, destructor, + * and related functions. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +constructor_insert_new_imp(const_reference r_val, size_type pos, true_type) +{ + // Following lines might throw an exception. + entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator); + + // At this point no exceptions can be thrown. + p->m_p_next = m_entries[pos]; + p->m_hash = ranged_hash_fn_base::operator()((key_const_reference)(PB_DS_V2F(p->m_value))).second; + + m_entries[pos] = p; + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp new file mode 100644 index 000000000..b5f3a1272 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp @@ -0,0 +1,76 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/debug_fn_imps.hpp + * Contains implementations of cc_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + debug_base::check_size(m_num_used_e, __file, __line); + assert_entry_pointer_array_valid(m_entries, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_entry_pointer_array_valid(const entry_pointer_array a_p_entries, + const char* __file, int __line) const +{ + size_type iterated_num_used_e = 0; + for (size_type pos = 0; pos < m_num_e; ++pos) + { + entry_pointer p_e = a_p_entries[pos]; + while (p_e != 0) + { + ++iterated_num_used_e; + assert_entry_pointer_valid(p_e, traits_base::m_store_extra_indicator, + __file, __line); + p_e = p_e->m_p_next; + } + } + PB_DS_DEBUG_VERIFY(iterated_num_used_e == m_num_used_e); +} + +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..21539de04 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp @@ -0,0 +1,50 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_entry_pointer_valid(const entry_pointer p, false_type, + const char* __file, int __line) const +{ debug_base::check_key_exists(PB_DS_V2F(p->m_value), __file, __line); } + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp new file mode 100644 index 000000000..5c6920c1d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp @@ -0,0 +1,54 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/debug_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_entry_pointer_valid(const entry_pointer p_e, true_type, + const char* __file, int __line) const +{ + debug_base::check_key_exists(PB_DS_V2F(p_e->m_value), __file, __line); + comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value)); + PB_DS_DEBUG_VERIFY(p_e->m_hash == pos_hash_pair.second); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp index 88b19cf37..5b36cb726 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp new file mode 100644 index 000000000..b75d35a25 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/erase_fn_imps.hpp + * Contains implementations of cc_ht_map_'s erase related functions. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +erase_entry_pointer(entry_pointer& r_p_e) +{ + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(r_p_e->m_value))); + + entry_pointer p_e = r_p_e; + r_p_e = r_p_e->m_p_next; + rels_entry(p_e); + _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0); + resize_base::notify_erased(--m_num_used_e); +} + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + size_type num_ersd = 0; + for (size_type pos = 0; pos < m_num_e; ++pos) + { + while (m_entries[pos] != 0 && pred(m_entries[pos]->m_value)) + { + ++num_ersd; + entry_pointer p_next_e = m_entries[pos]->m_p_next; + erase_entry_pointer(m_entries[pos]); + m_entries[pos] = p_next_e; + } + + entry_pointer p_e = m_entries[pos]; + while (p_e != 0 && p_e->m_p_next != 0) + { + if (pred(p_e->m_p_next->m_value)) + { + ++num_ersd; + erase_entry_pointer(p_e->m_p_next); + } + else + p_e = p_e->m_p_next; + } + } + + do_resize_if_needed_no_throw(); + return num_ersd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + for (size_type pos = 0; pos < m_num_e; ++pos) + while (m_entries[pos] != 0) + erase_entry_pointer(m_entries[pos]); + do_resize_if_needed_no_throw(); + resize_base::notify_cleared(); +} + +#include +#include + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..65da88958 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s erase related functions, + * when the hash value is not stored. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ + PB_DS_ASSERT_VALID((*this)) + return erase_in_pos_imp(r_key, ranged_hash_fn_base::operator()(r_key)); +} + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase_in_pos_imp(key_const_reference r_key, size_type pos) +{ + PB_DS_ASSERT_VALID((*this)) + entry_pointer p_e = m_entries[pos]; + resize_base::notify_erase_search_start(); + if (p_e == 0) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + PB_DS_ASSERT_VALID((*this)) + return false; + } + + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_EXISTS(r_key) + erase_entry_pointer(m_entries[pos]); + do_resize_if_needed_no_throw(); + PB_DS_ASSERT_VALID((*this)) + return true; + } + + while (true) + { + entry_pointer p_next_e = p_e->m_p_next; + if (p_next_e == 0) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + PB_DS_ASSERT_VALID((*this)) + return false; + } + + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), r_key)) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_EXISTS(r_key) + erase_entry_pointer(p_e->m_p_next); + do_resize_if_needed_no_throw(); + PB_DS_ASSERT_VALID((*this)) + return true; + } + resize_base::notify_erase_search_collision(); + p_e = p_next_e; + } +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp new file mode 100644 index 000000000..7f29994db --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp @@ -0,0 +1,94 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/erase_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s erase related functions, + * when the hash value is stored. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase_in_pos_imp(key_const_reference r_key, const comp_hash& r_pos_hash_pair) +{ + PB_DS_ASSERT_VALID((*this)) + entry_pointer p_e = m_entries[r_pos_hash_pair.first]; + resize_base::notify_erase_search_start(); + if (p_e == 0) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + PB_DS_ASSERT_VALID((*this)) + return false; + } + + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, + r_key, r_pos_hash_pair.second)) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_EXISTS(r_key) + erase_entry_pointer(m_entries[r_pos_hash_pair.first]); + do_resize_if_needed_no_throw(); + PB_DS_ASSERT_VALID((*this)) + return true; + } + + while (true) + { + entry_pointer p_next_e = p_e->m_p_next; + if (p_next_e == 0) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + PB_DS_ASSERT_VALID((*this)) + return false; + } + + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), + p_next_e->m_hash, r_key, + r_pos_hash_pair.second)) + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_EXISTS(r_key) + erase_entry_pointer(p_e->m_p_next); + do_resize_if_needed_no_throw(); + PB_DS_ASSERT_VALID((*this)) + return true; + } + resize_base::notify_erase_search_collision(); + p_e = p_next_e; + } +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp new file mode 100644 index 000000000..c11ca2893 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp @@ -0,0 +1,71 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/find_fn_imps.hpp + * Contains implementations of cc_ht_map_'s find related functions. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) +{ + PB_DS_ASSERT_VALID((*this)) + return find_key_pointer(r_key, traits_base::m_store_extra_indicator); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) const +{ + PB_DS_ASSERT_VALID((*this)) + return const_cast(*this).find_key_pointer(r_key, + traits_base::m_store_extra_indicator); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find_end() +{ return 0; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find_end() const +{ return 0; } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp new file mode 100644 index 000000000..fcb367869 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp @@ -0,0 +1,41 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/find_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s find related functions, + * when the hash value is stored. + */ + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp new file mode 100644 index 000000000..c021c84c0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/info_fn_imps.hpp + * Contains implementations of cc_ht_map_'s entire container info related + * functions. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ return m_num_used_e; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ return m_entry_allocator.max_size(); } + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ return (size() == 0); } + +PB_DS_CLASS_T_DEC +template +bool +PB_DS_CLASS_C_DEC:: +operator==(const Other_HT_Map_Type& other) const +{ return cmp_with_other(other); } + +PB_DS_CLASS_T_DEC +template +bool +PB_DS_CLASS_C_DEC:: +cmp_with_other(const Other_Map_Type& other) const +{ + if (size() != other.size()) + return false; + + for (typename Other_Map_Type::const_iterator it = other.begin(); + it != other.end(); ++it) + { + key_const_reference r_key =(key_const_reference)PB_DS_V2F(*it); + mapped_const_pointer p_mapped_value = + const_cast(*this). + find_key_pointer(r_key, traits_base::m_store_extra_indicator); + + if (p_mapped_value == 0) + return false; + +#ifdef PB_DS_DATA_TRUE_INDICATOR + if (p_mapped_value->second != it->second) + return false; +#endif + } + return true; +} + +PB_DS_CLASS_T_DEC +template +bool +PB_DS_CLASS_C_DEC:: +operator!=(const Other_HT_Map_Type& other) const +{ return !operator==(other); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp new file mode 100644 index 000000000..6302fff98 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp @@ -0,0 +1,43 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/insert_fn_imps.hpp + * Contains implementations of cc_ht_map_'s insert related functions. + */ + +#include +#include + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..d6ff8f34b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp @@ -0,0 +1,70 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s insert related functions, + * when the hash value is not stored. + */ + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert_imp(const_reference r_val, false_type) +{ + PB_DS_ASSERT_VALID((*this)) + key_const_reference r_key = PB_DS_V2F(r_val); + const size_type pos = ranged_hash_fn_base::operator()(r_key); + entry_pointer p_e = m_entries[pos]; + resize_base::notify_insert_search_start(); + + while (p_e != 0 && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), + r_key)) + { + resize_base::notify_insert_search_collision(); + p_e = p_e->m_p_next; + } + + resize_base::notify_insert_search_end(); + if (p_e != 0) + { + PB_DS_CHECK_KEY_EXISTS(r_key) + return std::make_pair(&p_e->m_value, false); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return std::make_pair(insert_new_imp(r_val, pos), true); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp new file mode 100644 index 000000000..3856da86c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp @@ -0,0 +1,71 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/insert_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s insert related functions, + * when the hash value is stored. + */ + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert_imp(const_reference r_val, true_type) +{ + PB_DS_ASSERT_VALID((*this)) + key_const_reference key = PB_DS_V2F(r_val); + comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(key); + entry_pointer p_e = m_entries[pos_hash_pair.first]; + resize_base::notify_insert_search_start(); + + while (p_e != 0 && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), + p_e->m_hash, + key, pos_hash_pair.second)) + { + resize_base::notify_insert_search_collision(); + p_e = p_e->m_p_next; + } + + resize_base::notify_insert_search_end(); + if (p_e != 0) + { + PB_DS_CHECK_KEY_EXISTS(key) + return std::make_pair(&p_e->m_value, false); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(key) + return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp new file mode 100644 index 000000000..dd082abcc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp @@ -0,0 +1,83 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/iterators_fn_imps.hpp + * Contains implementations of cc_ht_map_'s iterators related functions, e.g., + * begin(). + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC::s_end_it; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC::s_const_end_it; + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +begin() +{ + pointer p_value; + std::pair pos; + get_start_it_state(p_value, pos); + return iterator(p_value, pos, this); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +end() +{ return s_end_it; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +begin() const +{ + pointer p_value; + std::pair pos; + get_start_it_state(p_value, pos); + return const_iterator(p_value, pos, this); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +end() const +{ return s_const_end_it; } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..fc37f284d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp @@ -0,0 +1,88 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/policy_access_fn_imps.hpp + * Contains implementations of cc_ht_map_'s policy access + * functions. + */ + +PB_DS_CLASS_T_DEC +Hash_Fn& +PB_DS_CLASS_C_DEC:: +get_hash_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Hash_Fn& +PB_DS_CLASS_C_DEC:: +get_hash_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Eq_Fn& +PB_DS_CLASS_C_DEC:: +get_eq_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Eq_Fn& +PB_DS_CLASS_C_DEC:: +get_eq_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Comb_Hash_Fn& +PB_DS_CLASS_C_DEC:: +get_comb_hash_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Comb_Hash_Fn& +PB_DS_CLASS_C_DEC:: +get_comb_hash_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Resize_Policy& +PB_DS_CLASS_C_DEC:: +get_resize_policy() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Resize_Policy& +PB_DS_CLASS_C_DEC:: +get_resize_policy() const +{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp new file mode 100644 index 000000000..c1d2eb199 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp @@ -0,0 +1,134 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/resize_fn_imps.hpp + * Contains implementations of cc_ht_map_'s resize related functions. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +do_resize_if_needed() +{ + if (!resize_base::is_resize_needed()) + return false; + resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); + return true; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +do_resize(size_type len) +{ resize_imp(resize_base::get_nearest_larger_size(len)); } + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +do_resize_if_needed_no_throw() +{ + if (!resize_base::is_resize_needed()) + return; + + __try + { + resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); + } + __catch(...) + { } + + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +resize_imp(size_type new_size) +{ + PB_DS_ASSERT_VALID((*this)) + if (new_size == m_num_e) + return; + + const size_type old_size = m_num_e; + entry_pointer_array a_p_entries_resized; + + // Following line might throw an exception. + ranged_hash_fn_base::notify_resized(new_size); + + __try + { + // Following line might throw an exception. + a_p_entries_resized = s_entry_pointer_allocator.allocate(new_size); + m_num_e = new_size; + } + __catch(...) + { + ranged_hash_fn_base::notify_resized(old_size); + __throw_exception_again; + } + + // At this point no exceptions can be thrown. + resize_imp_no_exceptions(new_size, a_p_entries_resized, old_size); + Resize_Policy::notify_resized(new_size); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +resize_imp_no_exceptions(size_type new_size, entry_pointer_array a_p_entries_resized, size_type old_size) +{ + std::fill(a_p_entries_resized, a_p_entries_resized + m_num_e, + entry_pointer(0)); + + for (size_type pos = 0; pos < old_size; ++pos) + { + entry_pointer p_e = m_entries[pos]; + while (p_e != 0) + p_e = resize_imp_no_exceptions_reassign_pointer(p_e, a_p_entries_resized, traits_base::m_store_extra_indicator); + } + + m_num_e = new_size; + _GLIBCXX_DEBUG_ONLY(assert_entry_pointer_array_valid(a_p_entries_resized, + __FILE__, __LINE__);) + s_entry_pointer_allocator.deallocate(m_entries, old_size); + m_entries = a_p_entries_resized; + PB_DS_ASSERT_VALID((*this)) +} + +#include +#include + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..a59fb9d30 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp @@ -0,0 +1,54 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s resize related functions, when the + * hash value is not stored. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::entry_pointer +PB_DS_CLASS_C_DEC:: +resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, false_type) +{ + const size_type hash_pos = + ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value)); + + entry_pointer const p_next_e = p_e->m_p_next; + p_e->m_p_next = a_p_entries_resized[hash_pos]; + a_p_entries_resized[hash_pos] = p_e; + return p_next_e; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp new file mode 100644 index 000000000..5e28e0d55 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp @@ -0,0 +1,54 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/resize_store_hash_fn_imps.hpp + * Contains implementations of cc_ht_map_'s resize related functions, when the + * hash value is stored. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::entry_pointer +PB_DS_CLASS_C_DEC:: +resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, true_type) +{ + const comp_hash pos_hash_pair = + ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash); + + entry_pointer const p_next_e = p_e->m_p_next; + p_e->m_p_next = a_p_entries_resized[pos_hash_pair.first]; + a_p_entries_resized[pos_hash_pair.first] = p_e; + return p_next_e; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp index 20c81bc06..b91f6df73 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp new file mode 100644 index 000000000..e6f9d9ecb --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp @@ -0,0 +1,72 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file cc_hash_table_map_/trace_fn_imps.hpp + * Contains implementations of cc_ht_map_'s trace-mode functions. + */ + +#ifdef PB_DS_HT_MAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << static_cast(m_num_e) << " " + << static_cast(m_num_used_e) << std::endl; + + for (size_type i = 0; i < m_num_e; ++i) + { + std::cerr << static_cast(i) << " "; + trace_list(m_entries[i]); + std::cerr << std::endl; + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_list(const_entry_pointer p_l) const +{ + size_type iterated_num_used_e = 0; + while (p_l != 0) + { + std::cerr << PB_DS_V2F(p_l->m_value) << " "; + p_l = p_l->m_p_next; + } +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cond_dealtor.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cond_dealtor.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cond_dealtor.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cond_dealtor.hpp index 558dd9887..2b9bd9fde 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/cond_dealtor.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/cond_dealtor.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/container_base_dispatch.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/container_base_dispatch.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/container_base_dispatch.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/container_base_dispatch.hpp index 6f4824a4c..2e1f4bb77 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/container_base_dispatch.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/container_base_dispatch.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/debug_map_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/debug_map_base.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/debug_map_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/debug_map_base.hpp index 976cf877c..2eed4cded 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/debug_map_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/debug_map_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/eq_fn/eq_by_less.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/eq_fn/eq_by_less.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/eq_fn/eq_by_less.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/eq_fn/eq_by_less.hpp index 11e649770..c27949536 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/eq_fn/eq_by_less.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/eq_fn/eq_by_less.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp index 87387e29f..7b48e764a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp new file mode 100644 index 000000000..6529a4f2a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp @@ -0,0 +1,223 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/constructor_destructor_fn_imps.hpp + * Contains implementations of gp_ht_map_'s constructors, destructor, + * and related functions. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::entry_allocator +PB_DS_CLASS_C_DEC::s_entry_allocator; + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + insert(*(first_it++)); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME() +: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1)), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn) +: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) +: hash_eq_fn_base(r_eq_fn), + ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, + const Comb_Probe_Fn& r_comb_hash_fn) +: hash_eq_fn_base(r_eq_fn), + ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), + r_hash_fn, r_comb_hash_fn), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, + const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober) +: hash_eq_fn_base(r_eq_fn), + ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), + r_hash_fn, comb_hash_fn, prober), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, + const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober, + const Resize_Policy& r_resize_policy) +: hash_eq_fn_base(r_eq_fn), resize_base(r_resize_policy), + ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), + r_hash_fn, comb_hash_fn, prober), + m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_GP_HASH_NAME(const PB_DS_CLASS_C_DEC& other) : +#ifdef _GLIBCXX_DEBUG + debug_base(other), +#endif + hash_eq_fn_base(other), + resize_base(other), + ranged_probe_fn_base(other), + m_num_e(other.m_num_e), + m_num_used_e(other.m_num_used_e), + m_entries(s_entry_allocator.allocate(m_num_e)) +{ + for (size_type i = 0; i < m_num_e; ++i) + m_entries[i].m_stat = (entry_status)empty_entry_status; + + __try + { + for (size_type i = 0; i < m_num_e; ++i) + { + m_entries[i].m_stat = other.m_entries[i].m_stat; + if (m_entries[i].m_stat == valid_entry_status) + new (m_entries + i) entry(other.m_entries[i]); + } + } + __catch(...) + { + deallocate_all(); + __throw_exception_again; + } + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~PB_DS_GP_HASH_NAME() +{ deallocate_all(); } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + std::swap(m_num_e, other.m_num_e); + std::swap(m_num_used_e, other.m_num_used_e); + std::swap(m_entries, other.m_entries); + ranged_probe_fn_base::swap(other); + hash_eq_fn_base::swap(other); + resize_base::swap(other); + _GLIBCXX_DEBUG_ONLY(debug_base::swap(other)); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +deallocate_all() +{ + clear(); + erase_all_valid_entries(m_entries, m_num_e); + s_entry_allocator.deallocate(m_entries, m_num_e); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_all_valid_entries(entry_array a_entries_resized, size_type len) +{ + for (size_type pos = 0; pos < len; ++pos) + { + entry_pointer p_e = &a_entries_resized[pos]; + if (p_e->m_stat == valid_entry_status) + p_e->m_value.~value_type(); + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ + Resize_Policy::notify_resized(m_num_e); + Resize_Policy::notify_cleared(); + ranged_probe_fn_base::notify_resized(m_num_e); + for (size_type i = 0; i < m_num_e; ++i) + m_entries[i].m_stat = empty_entry_status; +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..5ead0d960 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp @@ -0,0 +1,53 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s constructors, destructor, + * and related functions. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +constructor_insert_new_imp(mapped_const_reference r_val, size_type pos, + false_type) +{ + _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status)k; + entry* const p_e = m_entries + pos; + new (&p_e->m_value) mapped_value_type(r_val); + p_e->m_stat = valid_entry_status; + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp new file mode 100644 index 000000000..aa5ac1cf0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp @@ -0,0 +1,54 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s constructors, destructor, + * and related functions. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +constructor_insert_new_imp(mapped_const_reference r_val, size_type pos, + true_type) +{ + _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status); + entry* const p_e = m_entries + pos; + new (&p_e->m_value) mapped_value_type(r_val); + p_e->m_hash = ranged_probe_fn_base::operator()(PB_DS_V2F(r_val)).second; + p_e->m_stat = valid_entry_status; + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp new file mode 100644 index 000000000..95dadd0d5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp @@ -0,0 +1,56 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/debug_fn_imps.hpp + * Contains implementations of gp_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + debug_base::check_size(m_num_used_e, __file, __line); + assert_entry_array_valid(m_entries, traits_base::m_store_extra_indicator, + __file, __line); +} + +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..cfa2a2148 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp @@ -0,0 +1,72 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_entry_array_valid(const entry_array a_entries, false_type, + const char* __file, int __line) const +{ + size_type iterated_num_used_e = 0; + for (size_type pos = 0; pos < m_num_e; ++pos) + { + const_entry_pointer p_e = &a_entries[pos]; + switch(p_e->m_stat) + { + case empty_entry_status: + case erased_entry_status: + break; + case valid_entry_status: + { + key_const_reference r_key = PB_DS_V2F(p_e->m_value); + debug_base::check_key_exists(r_key, __file, __line); + ++iterated_num_used_e; + break; + } + default: + PB_DS_DEBUG_VERIFY(0); + }; + } + PB_DS_DEBUG_VERIFY(iterated_num_used_e == m_num_used_e); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp new file mode 100644 index 000000000..0da0e15d3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp @@ -0,0 +1,78 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/debug_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_entry_array_valid(const entry_array a_entries, true_type, + const char* __file, int __line) const +{ + size_type iterated_num_used_e = 0; + + for (size_type pos = 0; pos < m_num_e; ++pos) + { + const_entry_pointer p_e =& a_entries[pos]; + switch(p_e->m_stat) + { + case empty_entry_status: + case erased_entry_status: + break; + case valid_entry_status: + { + key_const_reference r_key = PB_DS_V2F(p_e->m_value); + debug_base::check_key_exists(r_key, __file, __line); + + const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); + + PB_DS_DEBUG_VERIFY(p_e->m_hash == pos_hash_pair.second); + ++iterated_num_used_e; + break; + } + default: + PB_DS_DEBUG_VERIFY(0); + }; + } + + PB_DS_DEBUG_VERIFY(iterated_num_used_e == m_num_used_e); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp new file mode 100644 index 000000000..c37ef3365 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/erase_fn_imps.hpp + * Contains implementations of gp_ht_map_'s erase related functions. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +erase_entry(entry_pointer p_e) +{ + _GLIBCXX_DEBUG_ASSERT(p_e->m_stat = valid_entry_status); + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_e->m_value));) + p_e->m_value.~value_type(); + p_e->m_stat = erased_entry_status; + _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0); + resize_base::notify_erased(--m_num_used_e); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + for (size_type pos = 0; pos < m_num_e; ++pos) + { + entry_pointer p_e = &m_entries[pos]; + if (p_e->m_stat == valid_entry_status) + erase_entry(p_e); + } + do_resize_if_needed_no_throw(); + resize_base::notify_cleared(); +} + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + size_type num_ersd = 0; + for (size_type pos = 0; pos < m_num_e; ++pos) + { + entry_pointer p_e = &m_entries[pos]; + if (p_e->m_stat == valid_entry_status) + if (pred(p_e->m_value)) + { + ++num_ersd; + erase_entry(p_e); + } + } + + do_resize_if_needed_no_throw(); + PB_DS_ASSERT_VALID((*this)) + return num_ersd; +} + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ return erase_imp(r_key, traits_base::m_store_extra_indicator); } + +#include +#include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..3204c0a7f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp @@ -0,0 +1,84 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s erase related functions, + * when the hash value is not stored. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase_imp(key_const_reference r_key, false_type) +{ + PB_DS_ASSERT_VALID((*this)) + size_type hash = ranged_probe_fn_base::operator()(r_key); + size_type i; + resize_base::notify_erase_search_start(); + + for (i = 0; i < m_num_e; ++i) + { + const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); + entry* const p_e = m_entries + pos; + switch(p_e->m_stat) + { + case empty_entry_status: + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return false; + } + break; + case valid_entry_status: + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) + { + resize_base::notify_erase_search_end(); + erase_entry(p_e); + do_resize_if_needed_no_throw(); + return true; + } + break; + case erased_entry_status: + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + resize_base::notify_erase_search_collision(); + } + resize_base::notify_erase_search_end(); + return false; +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp new file mode 100644 index 000000000..68ce59f42 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp @@ -0,0 +1,85 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/erase_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s erase related functions, + * when the hash value is stored. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase_imp(key_const_reference r_key, true_type) +{ + const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); + size_type i; + resize_base::notify_erase_search_start(); + for (i = 0; i < m_num_e; ++i) + { + const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i); + + entry* const p_e = m_entries + pos; + switch(p_e->m_stat) + { + case empty_entry_status: + { + resize_base::notify_erase_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return false; + } + break; + case valid_entry_status: + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, + r_key, pos_hash_pair.second)) + { + resize_base::notify_erase_search_end(); + erase_entry(p_e); + do_resize_if_needed_no_throw(); + return true; + } + break; + case erased_entry_status: + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + + resize_base::notify_erase_search_collision(); + } + resize_base::notify_erase_search_end(); + return false; +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp new file mode 100644 index 000000000..fc4d8a582 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp @@ -0,0 +1,70 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/find_fn_imps.hpp + * Contains implementations of gp_ht_map_'s find related functions. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) +{ + PB_DS_ASSERT_VALID((*this)) + return find_key_pointer(r_key, traits_base::m_store_extra_indicator); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) const +{ + PB_DS_ASSERT_VALID((*this)) + return const_cast(*this).find_key_pointer(r_key, traits_base::m_store_extra_indicator); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find_end() +{ return 0; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find_end() const +{ return 0; } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp index 17e28cbf6..b8d2029e1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp new file mode 100644 index 000000000..4946664bb --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp @@ -0,0 +1,40 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/find_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s insert related functions, + * when the hash value is stored. + */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp index 328fc7d75..8ea0a2251 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp new file mode 100644 index 000000000..53feafe4c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp @@ -0,0 +1,58 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/info_fn_imps.hpp + * Contains implementations of gp_ht_map_'s entire container info related + * functions. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ return m_num_used_e; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ return s_entry_allocator.max_size(); } + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ return (size() == 0); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp new file mode 100644 index 000000000..1db84186d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp @@ -0,0 +1,43 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/insert_fn_imps.hpp + * Contains implementations of gp_ht_map_'s insert related functions. + */ + +#include +#include + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..8923c17f3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp @@ -0,0 +1,111 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s insert related functions, + * when the hash value is not stored. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +find_ins_pos(key_const_reference r_key, false_type) +{ + size_type hash = ranged_probe_fn_base::operator()(r_key); + size_type i; + + /* The insertion position is initted to a non-legal value to indicate + * that it has not been initted yet. + */ + size_type ins_pos = m_num_e; + resize_base::notify_insert_search_start(); + for (i = 0; i < m_num_e; ++i) + { + const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); + _GLIBCXX_DEBUG_ASSERT(pos < m_num_e); + entry* const p_e = m_entries + pos; + switch(p_e->m_stat) + { + case empty_entry_status: + { + resize_base::notify_insert_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return (ins_pos == m_num_e) ? pos : ins_pos; + } + break; + case erased_entry_status: + if (ins_pos == m_num_e) + ins_pos = pos; + break; + case valid_entry_status: + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key)) + { + resize_base::notify_insert_search_end(); + PB_DS_CHECK_KEY_EXISTS(r_key) + return pos; + } + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + + resize_base::notify_insert_search_collision(); + } + resize_base::notify_insert_search_end(); + if (ins_pos == m_num_e) + __throw_insert_error(); + return ins_pos; +} + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert_imp(const_reference r_val, false_type) +{ + key_const_reference r_key = PB_DS_V2F(r_val); + const size_type pos = find_ins_pos(r_key, + traits_base::m_store_extra_indicator); + + if (m_entries[pos].m_stat == valid_entry_status) + { + PB_DS_CHECK_KEY_EXISTS(r_key) + return std::make_pair(&(m_entries + pos)->m_value, false); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return std::make_pair(insert_new_imp(r_val, pos), true); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp new file mode 100644 index 000000000..5eaad4ea8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp @@ -0,0 +1,118 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/insert_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s find related functions, + * when the hash value is stored. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::comp_hash +PB_DS_CLASS_C_DEC:: +find_ins_pos(key_const_reference r_key, true_type) +{ + PB_DS_ASSERT_VALID((*this)) + comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key); + + size_type i; + + /* The insertion position is initted to a non-legal value to indicate + * that it has not been initted yet. + */ + size_type ins_pos = m_num_e; + resize_base::notify_insert_search_start(); + for (i = 0; i < m_num_e; ++i) + { + const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i); + + entry* const p_e = m_entries + pos; + switch(p_e->m_stat) + { + case empty_entry_status: + { + resize_base::notify_insert_search_end(); + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + + return ((ins_pos == m_num_e) ? + std::make_pair(pos, pos_hash_pair.second) : + std::make_pair(ins_pos, pos_hash_pair.second)); + } + break; + case erased_entry_status: + if (ins_pos == m_num_e) + ins_pos = pos; + break; + case valid_entry_status: + if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash, + r_key, pos_hash_pair.second)) + { + resize_base::notify_insert_search_end(); + PB_DS_CHECK_KEY_EXISTS(r_key) + return std::make_pair(pos, pos_hash_pair.second); + } + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + resize_base::notify_insert_search_collision(); + } + resize_base::notify_insert_search_end(); + if (ins_pos == m_num_e) + __throw_insert_error(); + return std::make_pair(ins_pos, pos_hash_pair.second); +} + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert_imp(const_reference r_val, true_type) +{ + key_const_reference r_key = PB_DS_V2F(r_val); + comp_hash pos_hash_pair = find_ins_pos(r_key, + traits_base::m_store_extra_indicator); + + _GLIBCXX_DEBUG_ASSERT(pos_hash_pair.first < m_num_e); + entry_pointer p_e =& m_entries[pos_hash_pair.first]; + if (p_e->m_stat == valid_entry_status) + { + PB_DS_CHECK_KEY_EXISTS(r_key) + return std::make_pair(&p_e->m_value, false); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp index 77ff8fde2..af9a08409 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..e27bdb0bf --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/policy_access_fn_imps.hpp + * Contains implementations of gp_ht_map_'s policy agpess + * functions. + */ + +PB_DS_CLASS_T_DEC +Hash_Fn& +PB_DS_CLASS_C_DEC:: +get_hash_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Hash_Fn& +PB_DS_CLASS_C_DEC:: +get_hash_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Eq_Fn& +PB_DS_CLASS_C_DEC:: +get_eq_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Eq_Fn& +PB_DS_CLASS_C_DEC:: +get_eq_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Probe_Fn& +PB_DS_CLASS_C_DEC:: +get_probe_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Probe_Fn& +PB_DS_CLASS_C_DEC:: +get_probe_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Comb_Probe_Fn& +PB_DS_CLASS_C_DEC:: +get_comb_probe_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Comb_Probe_Fn& +PB_DS_CLASS_C_DEC:: +get_comb_probe_fn() const +{ return *this; } + +PB_DS_CLASS_T_DEC +Resize_Policy& +PB_DS_CLASS_C_DEC:: +get_resize_policy() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Resize_Policy& +PB_DS_CLASS_C_DEC:: +get_resize_policy() const +{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp new file mode 100644 index 000000000..aaba969e7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp @@ -0,0 +1,139 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/resize_fn_imps.hpp + * Contains implementations of gp_ht_map_'s resize related functions. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +do_resize_if_needed() +{ + if (!resize_base::is_resize_needed()) + return false; + resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); + return true; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +do_resize(size_type n) +{ resize_imp(resize_base::get_nearest_larger_size(n)); } + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +do_resize_if_needed_no_throw() +{ + if (!resize_base::is_resize_needed()) + return; + + __try + { + resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e)); + } + __catch(...) + { } + + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +resize_imp(size_type new_size) +{ +#ifdef PB_DS_REGRESSION + typename _Alloc::group_adjustor adjust(m_num_e); +#endif + + if (new_size == m_num_e) + return; + + PB_DS_ASSERT_VALID((*this)) + const size_type old_size = m_num_e; + entry_array a_entries_resized = 0; + + // Following line might throw an exception. + a_entries_resized = s_entry_allocator.allocate(new_size); + + ranged_probe_fn_base::notify_resized(new_size); + m_num_e = new_size; + + for (size_type i = 0; i < m_num_e; ++i) + a_entries_resized[i].m_stat = empty_entry_status; + + __try + { + resize_imp(a_entries_resized, old_size); + } + __catch(...) + { + erase_all_valid_entries(a_entries_resized, new_size); + m_num_e = old_size; + s_entry_allocator.deallocate(a_entries_resized, new_size); + ranged_probe_fn_base::notify_resized(old_size); + __throw_exception_again; + } + + // At this point no exceptions can be thrown. + _GLIBCXX_DEBUG_ONLY(assert_entry_array_valid(a_entries_resized, + traits_base::m_store_extra_indicator, + __FILE__, __LINE__);) + + Resize_Policy::notify_resized(new_size); + erase_all_valid_entries(m_entries, old_size); + s_entry_allocator.deallocate(m_entries, old_size); + m_entries = a_entries_resized; + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +resize_imp(entry_array a_entries_resized, size_type old_size) +{ + for (size_type pos = 0; pos < old_size; ++pos) + if (m_entries[pos].m_stat == valid_entry_status) + resize_imp_reassign(m_entries + pos, a_entries_resized, + traits_base::m_store_extra_indicator); +} + +#include +#include + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp new file mode 100644 index 000000000..874555ad2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp @@ -0,0 +1,72 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s resize related functions, when the + * hash value is not stored. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, + false_type) +{ + key_const_reference r_key = PB_DS_V2F(p_e->m_value); + size_type hash = ranged_probe_fn_base::operator()(r_key); + size_type i; + for (i = 0; i < m_num_e; ++i) + { + const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); + entry_pointer p_new_e = a_entries_resized + pos; + switch(p_new_e->m_stat) + { + case empty_entry_status: + new (&p_new_e->m_value) value_type(p_e->m_value); + p_new_e->m_stat = valid_entry_status; + return; + case erased_entry_status: + _GLIBCXX_DEBUG_ASSERT(0); + break; + case valid_entry_status: + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + } + __throw_insert_error(); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp new file mode 100644 index 000000000..1a6f4f805 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp @@ -0,0 +1,74 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/resize_store_hash_fn_imps.hpp + * Contains implementations of gp_ht_map_'s resize related functions, when the + * hash value is stored. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized, + true_type) +{ + key_const_reference r_key = PB_DS_V2F(p_e->m_value); + size_type hash = ranged_probe_fn_base::operator()(r_key, p_e->m_hash); + + size_type i; + for (i = 0; i < m_num_e; ++i) + { + const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i); + entry_pointer p_new_e = a_entries_resized + pos; + switch(p_new_e->m_stat) + { + case empty_entry_status: + new (&p_new_e->m_value) value_type(p_e->m_value); + p_new_e->m_hash = hash; + p_new_e->m_stat = valid_entry_status; + return; + case erased_entry_status: + _GLIBCXX_DEBUG_ASSERT(0); + break; + case valid_entry_status: + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + } + __throw_insert_error(); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp new file mode 100644 index 000000000..dd9ca2951 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp @@ -0,0 +1,74 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file gp_hash_table_map_/trace_fn_imps.hpp + * Contains implementations of gp_ht_map_'s trace-mode functions. + */ + +#ifdef PB_DS_HT_MAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << static_cast(m_num_e) << " " << + static_cast(m_num_used_e) << std::endl; + + for (size_type i = 0; i < m_num_e; ++i) + { + std::cerr << static_cast(i) << " "; + + switch(m_entries[i].m_stat) + { + case empty_entry_status: + std::cerr << ""; + break; + case erased_entry_status: + std::cerr << ""; + break; + case valid_entry_status: + std::cerr << PB_DS_V2F(m_entries[i].m_value); + break; + default: + _GLIBCXX_DEBUG_ASSERT(0); + }; + + std::cerr << std::endl; + } +} + +#endif // #ifdef PB_DS_HT_MAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp index 2c19539c0..18772ed03 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp index 75a743f69..a93e8878c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp index 06a9f7bea..c96fae19f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp index 4a106972b..5ef2f81e1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp index 5eaa0b239..a8c249ce4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp index a772753c6..f366a6cda 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp index f1edc75dc..5042553be 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp index 3fd9f3c9d..54d5b0143 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp index c4363690a..44986460d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp index a492eb381..9747f29e6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp index aa8670ed5..bc773d0ca 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp index eab52eb5c..4c8ab58a8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp index ec87e304d..aa6b8250b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp new file mode 100644 index 000000000..327e4c594 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp @@ -0,0 +1,159 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/const_iterator.hpp + * Contains an iterator class returned by the table's const find and insert + * methods. + */ + +#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP +#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { +#define PB_DS_CLASS_C_DEC \ + left_child_next_sibling_heap_const_iterator_ + +#define PB_DS_BASIC_HEAP_CIT_BASE \ + left_child_next_sibling_heap_node_point_const_iterator_ + + /// Const point-type iterator. + template + class left_child_next_sibling_heap_const_iterator_ + : public PB_DS_BASIC_HEAP_CIT_BASE + { + private: + typedef PB_DS_BASIC_HEAP_CIT_BASE base_type; + typedef typename base_type::node_pointer node_pointer; + + public: + /// Category. + typedef std::forward_iterator_tag iterator_category; + + /// Difference type. + typedef typename _Alloc::difference_type difference_type; + + /// Iterator's value type. + typedef typename base_type::value_type value_type; + + /// Iterator's pointer type. + typedef typename base_type::pointer pointer; + + /// Iterator's const pointer type. + typedef typename base_type::const_pointer const_pointer; + + /// Iterator's reference type. + typedef typename base_type::reference reference; + + /// Iterator's const reference type. + typedef typename base_type::const_reference const_reference; + + inline + left_child_next_sibling_heap_const_iterator_(node_pointer p_nd) + : base_type(p_nd) + { } + + /// Default constructor. + inline + left_child_next_sibling_heap_const_iterator_() + { } + + /// Copy constructor. + inline + left_child_next_sibling_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other) + { } + + /// Compares content to a different iterator object. + bool + operator==(const PB_DS_CLASS_C_DEC& other) const + { return (base_type::m_p_nd == other.m_p_nd); } + + /// Compares content (negatively) to a different iterator object. + bool + operator!=(const PB_DS_CLASS_C_DEC& other) const + { return (base_type::m_p_nd != other.m_p_nd); } + + PB_DS_CLASS_C_DEC& + operator++() + { + _GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd != 0); + inc(); + return (*this); + } + + PB_DS_CLASS_C_DEC + operator++(int) + { + PB_DS_CLASS_C_DEC ret_it(base_type::m_p_nd); + operator++(); + return (ret_it); + } + + private: + void + inc() + { + if (base_type::m_p_nd->m_p_next_sibling != 0) + { + base_type::m_p_nd = base_type::m_p_nd->m_p_next_sibling; + while (base_type::m_p_nd->m_p_l_child != 0) + base_type::m_p_nd = base_type::m_p_nd->m_p_l_child; + return; + } + + while (true) + { + node_pointer p_next = base_type::m_p_nd; + base_type::m_p_nd = base_type::m_p_nd->m_p_prev_or_parent; + if (base_type::m_p_nd == 0 + || base_type::m_p_nd->m_p_l_child == p_next) + return; + } + } + }; + +#undef PB_DS_CLASS_C_DEC +#undef PB_DS_BASIC_HEAP_CIT_BASE + + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..91adcdfd9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,152 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_allocator +PB_DS_CLASS_C_DEC::s_node_allocator; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::no_throw_copies_t +PB_DS_CLASS_C_DEC::s_no_throw_copies_ind; + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +left_child_next_sibling_heap() : + m_p_root(0), + m_size(0) +{ + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +left_child_next_sibling_heap(const Cmp_Fn& r_cmp_fn) : + Cmp_Fn(r_cmp_fn), + m_p_root(0), + m_size(0) +{ + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +left_child_next_sibling_heap(const PB_DS_CLASS_C_DEC& other) +: Cmp_Fn(other), m_p_root(0), m_size(0) +{ + m_size = other.m_size; + PB_DS_ASSERT_VALID(other) + m_p_root = recursive_copy_node(other.m_p_root); + m_size = other.m_size; + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + value_swap(other); + std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +value_swap(PB_DS_CLASS_C_DEC& other) +{ + std::swap(m_p_root, other.m_p_root); + std::swap(m_size, other.m_size); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~left_child_next_sibling_heap() +{ + clear(); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +recursive_copy_node(node_const_pointer p_nd) +{ + if (p_nd == 0) + return (0); + + node_pointer p_ret = s_node_allocator.allocate(1); + + __try + { + new (p_ret) node(*p_nd); + } + __catch(...) + { + s_node_allocator.deallocate(p_ret, 1); + __throw_exception_again; + } + + p_ret->m_p_l_child = p_ret->m_p_next_sibling = + p_ret->m_p_prev_or_parent = 0; + + __try + { + p_ret->m_p_l_child = recursive_copy_node(p_nd->m_p_l_child); + p_ret->m_p_next_sibling = recursive_copy_node(p_nd->m_p_next_sibling); + } + __catch(...) + { + clear_imp(p_ret); + __throw_exception_again; + } + + if (p_ret->m_p_l_child != 0) + p_ret->m_p_l_child->m_p_prev_or_parent = p_ret; + + if (p_ret->m_p_next_sibling != 0) + p_ret->m_p_next_sibling->m_p_prev_or_parent = + p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd ? p_ret : 0; + + return p_ret; +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp new file mode 100644 index 000000000..d81c10579 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp @@ -0,0 +1,137 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/debug_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + PB_DS_DEBUG_VERIFY(m_p_root == 0 || m_p_root->m_p_prev_or_parent == 0); + + if (m_p_root != 0) + assert_node_consistent(m_p_root, Single_Link_Roots, __file, __line); + assert_size(__file, __line); + assert_iterators(__file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_node_consistent(node_const_pointer p_nd, bool single_link, + const char* __file, int __line) const +{ + if (p_nd == 0) + return; + + assert_node_consistent(p_nd->m_p_l_child, false, __file, __line); + assert_node_consistent(p_nd->m_p_next_sibling, single_link, __file, __line); + + if (single_link) + PB_DS_DEBUG_VERIFY(p_nd->m_p_prev_or_parent == 0); + else if (p_nd->m_p_next_sibling != 0) + PB_DS_DEBUG_VERIFY(p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd); + + if (p_nd->m_p_l_child == 0) + return; + + node_const_pointer p_child = p_nd->m_p_l_child; + while (p_child != 0) + { + node_const_pointer p_next_child = p_child->m_p_next_sibling; + PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(p_nd->m_value, p_child->m_value)); + p_child = p_next_child; + } + PB_DS_DEBUG_VERIFY(p_nd->m_p_l_child->m_p_prev_or_parent == p_nd); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_iterators(const char* __file, int __line) const +{ + PB_DS_DEBUG_VERIFY(std::distance(begin(), end()) == size()); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_size(const char* __file, int __line) const +{ + PB_DS_DEBUG_VERIFY(size_from_node(m_p_root) == m_size); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size_under_node(node_const_pointer p_nd) +{ return 1 + size_from_node(p_nd->m_p_l_child); } + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size_from_node(node_const_pointer p_nd) +{ + size_type ret = 0; + while (p_nd != 0) + { + ret += 1 + size_from_node(p_nd->m_p_l_child); + p_nd = p_nd->m_p_next_sibling; + } + return ret; +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +degree(node_const_pointer p_nd) +{ + size_type ret = 0; + node_const_pointer p_child = p_nd->m_p_l_child; + while (p_child != 0) + { + ++ret; + p_child = p_child->m_p_next_sibling; + } + return ret; +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp new file mode 100644 index 000000000..6da7e2084 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp @@ -0,0 +1,150 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/erase_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + clear_imp(m_p_root); + _GLIBCXX_DEBUG_ASSERT(m_size == 0); + m_p_root = 0; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +actual_erase_node(node_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + p_nd->~node(); + s_node_allocator.deallocate(p_nd, 1); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear_imp(node_pointer p_nd) +{ + while (p_nd != 0) + { + clear_imp(p_nd->m_p_l_child); + node_pointer p_next = p_nd->m_p_next_sibling; + actual_erase_node(p_nd); + p_nd = p_next; + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +to_linked_list() +{ + PB_DS_ASSERT_VALID((*this)) + node_pointer p_cur = m_p_root; + while (p_cur != 0) + if (p_cur->m_p_l_child != 0) + { + node_pointer p_child_next = p_cur->m_p_l_child->m_p_next_sibling; + p_cur->m_p_l_child->m_p_next_sibling = p_cur->m_p_next_sibling; + p_cur->m_p_next_sibling = p_cur->m_p_l_child; + p_cur->m_p_l_child = p_child_next; + } + else + p_cur = p_cur->m_p_next_sibling; + +#ifdef _GLIBCXX_DEBUG + node_const_pointer p_counter = m_p_root; + size_type count = 0; + while (p_counter != 0) + { + ++count; + _GLIBCXX_DEBUG_ASSERT(p_counter->m_p_l_child == 0); + p_counter = p_counter->m_p_next_sibling; + } + _GLIBCXX_DEBUG_ASSERT(count == m_size); +#endif +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +prune(Pred pred) +{ + node_pointer p_cur = m_p_root; + m_p_root = 0; + node_pointer p_out = 0; + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + if (pred(p_cur->m_value)) + { + p_cur->m_p_next_sibling = p_out; + if (p_out != 0) + p_out->m_p_prev_or_parent = p_cur; + p_out = p_cur; + } + else + { + p_cur->m_p_next_sibling = m_p_root; + if (m_p_root != 0) + m_p_root->m_p_prev_or_parent = p_cur; + m_p_root = p_cur; + } + p_cur = p_next; + } + return p_out; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +bubble_to_top(node_pointer p_nd) +{ + node_pointer p_parent = parent(p_nd); + while (p_parent != 0) + { + swap_with_parent(p_nd, p_parent); + p_parent = parent(p_nd); + } +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp new file mode 100644 index 000000000..f0280e8c9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp @@ -0,0 +1,64 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/info_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ + return (m_size == 0); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ + return (m_size); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ + return (s_node_allocator.max_size()); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp new file mode 100644 index 000000000..e751f593a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp @@ -0,0 +1,175 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/insert_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +get_new_node_for_insert(const_reference r_val) +{ + return get_new_node_for_insert(r_val, s_no_throw_copies_ind); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +get_new_node_for_insert(const_reference r_val, false_type) +{ + node_pointer p_new_nd = s_node_allocator.allocate(1); + + cond_dealtor_t cond(p_new_nd); + + new (const_cast( + static_cast(&p_new_nd->m_value))) + typename node::value_type(r_val); + + cond.set_no_action(); + + ++m_size; + + return (p_new_nd); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +get_new_node_for_insert(const_reference r_val, true_type) +{ + node_pointer p_new_nd = s_node_allocator.allocate(1); + + new (const_cast( + static_cast(&p_new_nd->m_value))) + typename node::value_type(r_val); + + ++m_size; + + return (p_new_nd); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +make_child_of(node_pointer p_nd, node_pointer p_new_parent) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + _GLIBCXX_DEBUG_ASSERT(p_new_parent != 0); + + p_nd->m_p_next_sibling = p_new_parent->m_p_l_child; + + if (p_new_parent->m_p_l_child != 0) + p_new_parent->m_p_l_child->m_p_prev_or_parent = p_nd; + + p_nd->m_p_prev_or_parent = p_new_parent; + + p_new_parent->m_p_l_child = p_nd; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +parent(node_pointer p_nd) +{ + while (true) + { + node_pointer p_pot = p_nd->m_p_prev_or_parent; + + if (p_pot == 0 || p_pot->m_p_l_child == p_nd) + return p_pot; + + p_nd = p_pot; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +swap_with_parent(node_pointer p_nd, node_pointer p_parent) +{ + if (p_parent == m_p_root) + m_p_root = p_nd; + + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + _GLIBCXX_DEBUG_ASSERT(p_parent != 0); + _GLIBCXX_DEBUG_ASSERT(parent(p_nd) == p_parent); + + const bool nd_direct_child = p_parent->m_p_l_child == p_nd; + const bool parent_root = p_parent->m_p_prev_or_parent == 0; + const bool parent_direct_child = + !parent_root&& p_parent->m_p_prev_or_parent->m_p_l_child == p_parent; + + std::swap(p_parent->m_p_prev_or_parent, p_nd->m_p_prev_or_parent); + std::swap(p_parent->m_p_next_sibling, p_nd->m_p_next_sibling); + std::swap(p_parent->m_p_l_child, p_nd->m_p_l_child); + std::swap(p_parent->m_metadata, p_nd->m_metadata); + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child != 0); + _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent != 0); + + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; + + if (p_parent->m_p_next_sibling != 0) + p_parent->m_p_next_sibling->m_p_prev_or_parent = p_parent; + + if (p_parent->m_p_l_child != 0) + p_parent->m_p_l_child->m_p_prev_or_parent = p_parent; + + if (parent_direct_child) + p_nd->m_p_prev_or_parent->m_p_l_child = p_nd; + else if (!parent_root) + p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd; + + if (!nd_direct_child) + { + p_nd->m_p_l_child->m_p_prev_or_parent = p_nd; + + p_parent->m_p_prev_or_parent->m_p_next_sibling = p_parent; + } + else + { + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child == p_nd); + _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent == p_parent); + + p_nd->m_p_l_child = p_parent; + p_parent->m_p_prev_or_parent = p_nd; + } + + _GLIBCXX_DEBUG_ASSERT(parent(p_parent) == p_nd); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp new file mode 100644 index 000000000..b78811cf1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp @@ -0,0 +1,88 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/iterators_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +begin() +{ + node_pointer p_nd = m_p_root; + + if (p_nd == 0) + return (iterator(0)); + + while (p_nd->m_p_l_child != 0) + p_nd = p_nd->m_p_l_child; + + return (iterator(p_nd)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +begin() const +{ + node_pointer p_nd = m_p_root; + + if (p_nd == 0) + return (const_iterator(0)); + + while (p_nd->m_p_l_child != 0) + p_nd = p_nd->m_p_l_child; + + return (const_iterator(p_nd)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +end() +{ + return (iterator(0)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +end() const +{ + return (const_iterator(0)); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp index 76a572653..3b69d0334 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp new file mode 100644 index 000000000..47ef7ed42 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp @@ -0,0 +1,90 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/node.hpp + * Contains an implementation struct for this type of heap's node. + */ + +#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP +#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP + +namespace __gnu_pbds +{ + namespace detail + { + /// Node. + template + struct left_child_next_sibling_heap_node_ + { + private: + typedef left_child_next_sibling_heap_node_<_Value, _Metadata, _Alloc> this_type; + + public: + typedef _Value value_type; + typedef typename _Alloc::size_type size_type; + typedef _Metadata metadata_type; + + typedef typename _Alloc::template rebind::other::pointer node_pointer; + + value_type m_value; + metadata_type m_metadata; + node_pointer m_p_l_child; + node_pointer m_p_next_sibling; + node_pointer m_p_prev_or_parent; + }; + + template + struct left_child_next_sibling_heap_node_<_Value, null_type, _Alloc> + { + private: + typedef left_child_next_sibling_heap_node_<_Value, null_type, _Alloc> this_type; + + public: + typedef _Value value_type; + typedef typename _Alloc::size_type size_type; + + typedef typename _Alloc::template rebind::other::pointer node_pointer; + + value_type m_value; + node_pointer m_p_l_child; + node_pointer m_p_next_sibling; + node_pointer m_p_prev_or_parent; + }; + + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp new file mode 100644 index 000000000..68adf1e27 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp @@ -0,0 +1,149 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/point_const_iterator.hpp + * Contains an iterator class returned by the table's const find and insert + * methods. + */ + +#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP +#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { + +#define PB_DS_CLASS_T_DEC \ + template + +#define PB_DS_CLASS_C_DEC \ + left_child_next_sibling_heap_node_point_const_iterator_ + + /// Const point-type iterator. + template + class left_child_next_sibling_heap_node_point_const_iterator_ + { + protected: + typedef typename _Alloc::template rebind::other::pointer node_pointer; + + public: + /// Category. + typedef trivial_iterator_tag iterator_category; + + /// Difference type. + typedef trivial_iterator_difference_type difference_type; + + /// Iterator's value type. + typedef typename Node::value_type value_type; + + /// Iterator's pointer type. + typedef + typename _Alloc::template rebind< + value_type>::other::pointer + pointer; + + /// Iterator's const pointer type. + typedef + typename _Alloc::template rebind< + value_type>::other::const_pointer + const_pointer; + + /// Iterator's reference type. + typedef + typename _Alloc::template rebind< + value_type>::other::reference + reference; + + /// Iterator's const reference type. + typedef + typename _Alloc::template rebind< + value_type>::other::const_reference + const_reference; + + inline + left_child_next_sibling_heap_node_point_const_iterator_(node_pointer p_nd) : m_p_nd(p_nd) + { } + + /// Default constructor. + inline + left_child_next_sibling_heap_node_point_const_iterator_() : m_p_nd(0) + { } + + /// Copy constructor. + inline + left_child_next_sibling_heap_node_point_const_iterator_(const PB_DS_CLASS_C_DEC& other) : m_p_nd(other.m_p_nd) + { } + + /// Access. + const_pointer + operator->() const + { + _GLIBCXX_DEBUG_ASSERT(m_p_nd != 0); + return &m_p_nd->m_value; + } + + /// Access. + const_reference + operator*() const + { + _GLIBCXX_DEBUG_ASSERT(m_p_nd != 0); + return m_p_nd->m_value; + } + + /// Compares content to a different iterator object. + bool + operator==(const PB_DS_CLASS_C_DEC& other) const + { return m_p_nd == other.m_p_nd; } + + /// Compares content (negatively) to a different iterator object. + bool + operator!=(const PB_DS_CLASS_C_DEC& other) const + { return m_p_nd != other.m_p_nd; } + + node_pointer m_p_nd; + }; + +#undef PB_DS_CLASS_T_DEC +#undef PB_DS_CLASS_C_DEC + + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..5280c7480 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp @@ -0,0 +1,52 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/policy_access_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +PB_DS_CLASS_T_DEC +Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() const +{ return *this; } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp new file mode 100644 index 000000000..bf6ca638d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp @@ -0,0 +1,90 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file left_child_next_sibling_heap_/trace_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +#ifdef PB_DS_LC_NS_HEAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << std::endl; + trace_node(m_p_root, 0); + std::cerr << std::endl; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_node(node_const_pointer p_nd, size_type level) +{ + while (p_nd != 0) + { + for (size_type i = 0; i < level; ++i) + std::cerr << ' '; + + std::cerr << p_nd << + " prev = " << p_nd->m_p_prev_or_parent << + " next " << p_nd->m_p_next_sibling << + " left = " << p_nd->m_p_l_child << " "; + + trace_node_metadata(p_nd, type_to_type()); + std::cerr << p_nd->m_value << std::endl; + trace_node(p_nd->m_p_l_child, level + 1); + p_nd = p_nd->m_p_next_sibling; + } +} + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +trace_node_metadata(node_const_pointer p_nd, type_to_type) +{ + std::cerr << "(" << p_nd->m_metadata << ") "; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_node_metadata(node_const_pointer, type_to_type) +{ } + +#endif // #ifdef PB_DS_LC_NS_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp new file mode 100644 index 000000000..f5345e849 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp @@ -0,0 +1,136 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/constructor_destructor_fn_imps.hpp + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::entry_allocator +PB_DS_CLASS_C_DEC::s_entry_allocator; + +PB_DS_CLASS_T_DEC +Eq_Fn PB_DS_CLASS_C_DEC::s_eq_fn; + +PB_DS_CLASS_T_DEC +null_type PB_DS_CLASS_C_DEC::s_null_type; + +PB_DS_CLASS_T_DEC +Update_Policy PB_DS_CLASS_C_DEC::s_update_policy; + +PB_DS_CLASS_T_DEC +type_to_type< + typename PB_DS_CLASS_C_DEC::update_metadata> PB_DS_CLASS_C_DEC::s_metadata_type_indicator; + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + insert(*(first_it++)); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_LU_NAME() : m_p_l(0) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +template +PB_DS_CLASS_C_DEC:: +PB_DS_LU_NAME(It first_it, It last_it) : m_p_l(0) +{ + copy_from_range(first_it, last_it); + PB_DS_ASSERT_VALID((*this)); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_LU_NAME(const PB_DS_CLASS_C_DEC& other) : +m_p_l(0) +{ + __try + { + for (const_iterator it = other.begin(); it != other.end(); ++it) + { + entry_pointer p_l = allocate_new_entry(*it, + traits_base::m_no_throw_copies_indicator); + + p_l->m_p_next = m_p_l; + m_p_l = p_l; + } + } + __catch(...) + { + deallocate_all(); + __throw_exception_again; + } + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) + std::swap(m_p_l, other.m_p_l); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +deallocate_all() +{ + entry_pointer p_l = m_p_l; + while (p_l != 0) + { + entry_pointer p_next_l = p_l->m_p_next; + actual_erase_entry(p_l); + p_l = p_next_l; + } + m_p_l = 0; +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~PB_DS_LU_NAME() +{ deallocate_all(); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp new file mode 100644 index 000000000..75f25c796 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp @@ -0,0 +1,57 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/debug_fn_imps.hpp + * Contains implementations of cc_ht_map_'s debug-mode functions. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + size_type calc_size = 0; + for (const_iterator it = begin(); it != end(); ++it) + { + debug_base::check_key_exists(PB_DS_V2F(*it), __file, __line); + ++calc_size; + } + debug_base::check_size(calc_size, __file, __line); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp index cb70c5067..524b825a8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp new file mode 100644 index 000000000..c4ed47f55 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp @@ -0,0 +1,134 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/erase_fn_imps.hpp + * Contains implementations of lu_map_. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ + PB_DS_ASSERT_VALID((*this)) + if (m_p_l == 0) + return false; + + if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value))) + { + entry_pointer p_next = m_p_l->m_p_next; + actual_erase_entry(m_p_l); + m_p_l = p_next; + return true; + } + + entry_pointer p_l = m_p_l; + while (p_l->m_p_next != 0) + if (s_eq_fn(r_key, PB_DS_V2F(p_l->m_p_next->m_value))) + { + erase_next(p_l); + return true; + } + else + p_l = p_l->m_p_next; + return false; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + deallocate_all(); +} + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + size_type num_ersd = 0; + while (m_p_l != 0 && pred(m_p_l->m_value)) + { + entry_pointer p_next = m_p_l->m_p_next; + ++num_ersd; + actual_erase_entry(m_p_l); + m_p_l = p_next; + } + + if (m_p_l == 0) + return num_ersd; + + entry_pointer p_l = m_p_l; + while (p_l->m_p_next != 0) + { + if (pred(p_l->m_p_next->m_value)) + { + ++num_ersd; + erase_next(p_l); + } + else + p_l = p_l->m_p_next; + } + + PB_DS_ASSERT_VALID((*this)) + return num_ersd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_next(entry_pointer p_l) +{ + _GLIBCXX_DEBUG_ASSERT(p_l != 0); + _GLIBCXX_DEBUG_ASSERT(p_l->m_p_next != 0); + entry_pointer p_next_l = p_l->m_p_next->m_p_next; + actual_erase_entry(p_l->m_p_next); + p_l->m_p_next = p_next_l; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +actual_erase_entry(entry_pointer p_l) +{ + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->m_value));) + p_l->~entry(); + s_entry_allocator.deallocate(p_l, 1); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp new file mode 100644 index 000000000..f7d66f011 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp @@ -0,0 +1,90 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/find_fn_imps.hpp + * Contains implementations of lu_map_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::entry_pointer +PB_DS_CLASS_C_DEC:: +find_imp(key_const_reference r_key) const +{ + if (m_p_l == 0) + return 0; + if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value))) + { + apply_update(m_p_l, s_metadata_type_indicator); + PB_DS_CHECK_KEY_EXISTS(r_key) + return m_p_l; + } + + entry_pointer p_l = m_p_l; + while (p_l->m_p_next != 0) + { + entry_pointer p_next = p_l->m_p_next; + if (s_eq_fn(r_key, PB_DS_V2F(p_next->m_value))) + { + if (apply_update(p_next, s_metadata_type_indicator)) + { + p_l->m_p_next = p_next->m_p_next; + p_next->m_p_next = m_p_l; + m_p_l = p_next; + return m_p_l; + } + return p_next; + } + else + p_l = p_next; + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return 0; +} + +PB_DS_CLASS_T_DEC +template +inline bool +PB_DS_CLASS_C_DEC:: +apply_update(entry_pointer p_l, type_to_type) +{ return s_update_policy(p_l->m_update_metadata); } + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +apply_update(entry_pointer, type_to_type) +{ return s_update_policy(s_null_type); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp new file mode 100644 index 000000000..51076fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp @@ -0,0 +1,57 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/info_fn_imps.hpp + * Contains implementations of lu_map_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ return std::distance(begin(), end()); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ return s_entry_allocator.max_size(); } + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ return (m_p_l == 0); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp new file mode 100644 index 000000000..2f6199af1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp @@ -0,0 +1,106 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/insert_fn_imps.hpp + * Contains implementations of lu_map_. + */ + +PB_DS_CLASS_T_DEC +inline std::pair< + typename PB_DS_CLASS_C_DEC::point_iterator, + bool> +PB_DS_CLASS_C_DEC:: +insert(const_reference r_val) +{ + PB_DS_ASSERT_VALID((*this)) + entry_pointer p_l = find_imp(PB_DS_V2F(r_val)); + + if (p_l != 0) + { + PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(r_val)) + return std::make_pair(point_iterator(&p_l->m_value), false); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(PB_DS_V2F(r_val)) + + p_l = allocate_new_entry(r_val, traits_base::m_no_throw_copies_indicator); + p_l->m_p_next = m_p_l; + m_p_l = p_l; + PB_DS_ASSERT_VALID((*this)) + return std::make_pair(point_iterator(&p_l->m_value), true); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::entry_pointer +PB_DS_CLASS_C_DEC:: +allocate_new_entry(const_reference r_val, false_type) +{ + entry_pointer p_l = s_entry_allocator.allocate(1); + cond_dealtor_t cond(p_l); + new (const_cast(static_cast(&p_l->m_value))) + value_type(r_val); + + cond.set_no_action(); + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) + init_entry_metadata(p_l, s_metadata_type_indicator); + return p_l; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::entry_pointer +PB_DS_CLASS_C_DEC:: +allocate_new_entry(const_reference r_val, true_type) +{ + entry_pointer p_l = s_entry_allocator.allocate(1); + new (&p_l->m_value) value_type(r_val); + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));) + init_entry_metadata(p_l, s_metadata_type_indicator); + return p_l; +} + +PB_DS_CLASS_T_DEC +template +inline void +PB_DS_CLASS_C_DEC:: +init_entry_metadata(entry_pointer p_l, type_to_type) +{ new (&p_l->m_update_metadata) Metadata(s_update_policy()); } + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +init_entry_metadata(entry_pointer, type_to_type) +{ } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp new file mode 100644 index 000000000..39288228f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp @@ -0,0 +1,80 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/iterators_fn_imps.hpp + * Contains implementations of lu_map_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +begin() +{ + if (m_p_l == 0) + { + _GLIBCXX_DEBUG_ASSERT(empty()); + return end(); + } + return iterator(&m_p_l->m_value, m_p_l, this); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +begin() const +{ + if (m_p_l == 0) + { + _GLIBCXX_DEBUG_ASSERT(empty()); + return end(); + } + return iterator(&m_p_l->m_value, m_p_l, const_cast(this)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +end() +{ return iterator(0, 0, this); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +end() const +{ + return const_iterator(0, 0, const_cast(this)); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/lu_map_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/lu_map_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/lu_map_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/lu_map_.hpp index e33febb55..063742305 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_map_/lu_map_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/lu_map_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp new file mode 100644 index 000000000..9211acb3d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp @@ -0,0 +1,59 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file list_update_map_/trace_fn_imps.hpp + * Contains implementations of lu_map_. + */ + +#ifdef PB_DS_LU_MAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << m_p_l << std::endl << std::endl; + const_entry_pointer p_l = m_p_l; + while (p_l != 0) + { + std::cerr << PB_DS_V2F(p_l->m_value) << std::endl; + p_l = p_l->m_p_next; + } + std::cerr << std::endl; +} + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp index a911e9791..9f57b6ca2 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp index 1efbef9a1..eb7d6a41a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..0868076bf --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,257 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::value_allocator +PB_DS_CLASS_C_DEC::s_value_alloc; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::metadata_allocator +PB_DS_CLASS_C_DEC::s_metadata_alloc; + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_OV_TREE_NAME() : + m_a_values(0), + m_a_metadata(0), + m_end_it(0), + m_size(0) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_OV_TREE_NAME(const Cmp_Fn& r_cmp_fn) : + cmp_fn(r_cmp_fn), + m_a_values(0), + m_a_metadata(0), + m_end_it(0), + m_size(0) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_OV_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_nodeu) : + cmp_fn(r_cmp_fn), + node_update(r_nodeu), + m_a_values(0), + m_a_metadata(0), + m_end_it(0), + m_size(0) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_OV_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : +#ifdef PB_DS_TREE_TRACE + trace_base(other), +#endif + cmp_fn(other), + node_update(other), + m_a_values(0), + m_a_metadata(0), + m_end_it(0), + m_size(0) +{ + copy_from_ordered_range(other.begin(), other.end()); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +template +inline void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ +#ifdef PB_DS_DATA_TRUE_INDICATOR + typedef std::map::other> + map_type; +#else + typedef std::set::other> + map_type; +#endif + + map_type m(first_it, last_it); + copy_from_ordered_range(m.begin(), m.end()); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_ordered_range(It first_it, It last_it) +{ + const size_type len = std::distance(first_it, last_it); + if (len == 0) + return; + + value_vector a_values = s_value_alloc.allocate(len); + iterator target_it = a_values; + It source_it = first_it; + It source_end_it = last_it; + + cond_dtor cd(a_values, target_it, len); + while (source_it != source_end_it) + { + void* __v = const_cast(static_cast(target_it)); + new (__v) value_type(*source_it++); + ++target_it; + } + + reallocate_metadata((node_update*)this, len); + cd.set_no_action(); + m_a_values = a_values; + m_size = len; + m_end_it = m_a_values + m_size; + update(PB_DS_node_begin_imp(), (node_update*)this); + +#ifdef _GLIBCXX_DEBUG + for (const_iterator dbg_it = m_a_values; dbg_it != m_end_it; ++dbg_it) + debug_base::insert_new(PB_DS_V2F(*dbg_it)); +#endif +} + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_ordered_range(It first_it, It last_it, It other_first_it, + It other_last_it) +{ + clear(); + const size_type len = std::distance(first_it, last_it) + + std::distance(other_first_it, other_last_it); + + value_vector a_values = s_value_alloc.allocate(len); + + iterator target_it = a_values; + It source_it = first_it; + It source_end_it = last_it; + + cond_dtor cd(a_values, target_it, len); + while (source_it != source_end_it) + { + new (const_cast(static_cast(target_it))) + value_type(*source_it++); + ++target_it; + } + + source_it = other_first_it; + source_end_it = other_last_it; + + while (source_it != source_end_it) + { + new (const_cast(static_cast(target_it))) + value_type(*source_it++); + ++target_it; + } + + reallocate_metadata((node_update* )this, len); + cd.set_no_action(); + m_a_values = a_values; + m_size = len; + m_end_it = m_a_values + m_size; + update(PB_DS_node_begin_imp(), (node_update* )this); + +#ifdef _GLIBCXX_DEBUG + for (const_iterator dbg_it = m_a_values; dbg_it != m_end_it; ++dbg_it) + debug_base::insert_new(PB_DS_V2F(*dbg_it)); +#endif +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + value_swap(other); + std::swap(static_cast(*this), + static_cast(other)); + std::swap(static_cast(*this), + static_cast(other)); + PB_DS_ASSERT_VALID(other) + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +value_swap(PB_DS_CLASS_C_DEC& other) +{ + _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) + std::swap(m_a_values, other.m_a_values); + std::swap(m_a_metadata, other.m_a_metadata); + std::swap(m_size, other.m_size); + std::swap(m_end_it, other.m_end_it); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~PB_DS_OV_TREE_NAME() +{ + PB_DS_ASSERT_VALID((*this)) + cond_dtor cd(m_a_values, m_end_it, m_size); + reallocate_metadata((node_update*)this, 0); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update(node_iterator, null_node_update_pointer) +{ } + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +update(node_iterator nd_it, Node_Update* p_update) +{ + node_const_iterator end_it = PB_DS_node_end_imp(); + if (nd_it != end_it) + { + update(nd_it.get_l_child(), p_update); + update(nd_it.get_r_child(), p_update); + node_update::operator()(nd_it, end_it); + } +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp new file mode 100644 index 000000000..8512af5dc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp @@ -0,0 +1,79 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/debug_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + if (m_a_values == 0 || m_end_it == 0 || m_size == 0) + PB_DS_DEBUG_VERIFY(m_a_values == 0 && m_end_it == 0 && m_size == 0); + + assert_iterators(__file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_iterators(const char* __file, int __line) const +{ + debug_base::check_size(m_size, __file, __line); + size_type iterated_num = 0; + const_iterator prev_it = end(); + PB_DS_DEBUG_VERIFY(m_end_it == m_a_values + m_size); + for (const_iterator it = begin(); it != end(); ++it) + { + ++iterated_num; + debug_base::check_key_exists(PB_DS_V2F(*it), __file, __line); + PB_DS_DEBUG_VERIFY(lower_bound(PB_DS_V2F(*it)) == it); + const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it)); + --upper_bound_it; + PB_DS_DEBUG_VERIFY(upper_bound_it == it); + if (prev_it != end()) + PB_DS_DEBUG_VERIFY(Cmp_Fn::operator()(PB_DS_V2F(*prev_it), + PB_DS_V2F(*it))); + prev_it = it; + } + PB_DS_DEBUG_VERIFY(iterated_num == m_size); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp new file mode 100644 index 000000000..401adb5cb --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp @@ -0,0 +1,191 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/erase_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + PB_DS_ASSERT_VALID((*this)) + if (m_size == 0) + { + return; + } + else + { + reallocate_metadata((node_update* )this, 0); + cond_dtor cd(m_a_values, m_end_it, m_size); + } + + _GLIBCXX_DEBUG_ONLY(debug_base::clear();) + m_a_values = 0; + m_size = 0; + m_end_it = m_a_values; + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + +#ifdef PB_DS_REGRESSION + typename _Alloc::group_adjustor adjust(m_size); +#endif + + size_type new_size = 0; + size_type num_val_ersd = 0; + + for (iterator source_it = begin(); source_it != m_end_it; ++source_it) + if (!pred(*source_it)) + ++new_size; + else + ++num_val_ersd; + + if (new_size == 0) + { + clear(); + return num_val_ersd; + } + + value_vector a_new_values = s_value_alloc.allocate(new_size); + iterator target_it = a_new_values; + cond_dtor cd(a_new_values, target_it, new_size); + _GLIBCXX_DEBUG_ONLY(debug_base::clear()); + for (iterator source_it = begin(); source_it != m_end_it; ++source_it) + { + if (!pred(*source_it)) + { + new (const_cast(static_cast(target_it))) + value_type(*source_it); + + _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(*source_it))); + ++target_it; + } + } + + reallocate_metadata((node_update*)this, new_size); + cd.set_no_action(); + + { + cond_dtor cd1(m_a_values, m_end_it, m_size); + } + + m_a_values = a_new_values; + m_size = new_size; + m_end_it = target_it; + update(node_begin(), (node_update*)this); + PB_DS_ASSERT_VALID((*this)) + return num_val_ersd; +} + +PB_DS_CLASS_T_DEC +template +It +PB_DS_CLASS_C_DEC:: +erase_imp(It it) +{ + PB_DS_ASSERT_VALID((*this)) + if (it == end()) + return end(); + + PB_DS_CHECK_KEY_EXISTS(PB_DS_V2F(*it)) + +#ifdef PB_DS_REGRESSION + typename _Alloc::group_adjustor adjust(m_size); +#endif + + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + value_vector a_values = s_value_alloc.allocate(m_size - 1); + iterator source_it = begin(); + iterator source_end_it = end(); + iterator target_it = a_values; + iterator ret_it = end(); + + cond_dtor cd(a_values, target_it, m_size - 1); + + _GLIBCXX_DEBUG_ONLY(size_type cnt = 0;) + + while (source_it != source_end_it) + { + if (source_it != it) + { + _GLIBCXX_DEBUG_ONLY(++cnt;) + _GLIBCXX_DEBUG_ASSERT(cnt != m_size); + new (const_cast(static_cast(target_it))) + value_type(*source_it); + + ++target_it; + } + else + ret_it = target_it; + ++source_it; + } + + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + reallocate_metadata((node_update*)this, m_size - 1); + cd.set_no_action(); + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(*it));) + { + cond_dtor cd1(m_a_values, m_end_it, m_size); + } + + m_a_values = a_values; + --m_size; + m_end_it = m_a_values + m_size; + update(node_begin(), (node_update*)this); + PB_DS_ASSERT_VALID((*this)) + return It(ret_it); +} + +PB_DS_CLASS_T_DEC +bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ + point_iterator it = find(r_key); + if (it == end()) + return false; + erase(it); + return true; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp new file mode 100644 index 000000000..12bc73121 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp @@ -0,0 +1,60 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/info_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ + PB_DS_ASSERT_VALID((*this)) + return m_size; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ return s_value_alloc.max_size(); } + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ return size() == 0; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp new file mode 100644 index 000000000..dbae8ce58 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp @@ -0,0 +1,63 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/insert_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +reallocate_metadata(null_node_update_pointer, size_type) +{ } + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +reallocate_metadata(Node_Update_* , size_type new_size) +{ + metadata_pointer a_new_metadata_vec =(new_size == 0) ? 0 : s_metadata_alloc.allocate(new_size); + + if (m_a_metadata != 0) + { + for (size_type i = 0; i < m_size; ++i) + m_a_metadata[i].~metadata_type(); + s_metadata_alloc.deallocate(m_a_metadata, m_size); + } + std::swap(m_a_metadata, a_new_metadata_vec); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp new file mode 100644 index 000000000..fb3ab9dd0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/iterators_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +node_begin() const +{ return PB_DS_node_begin_imp(); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +node_end() const +{ return PB_DS_node_end_imp(); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +node_begin() +{ return PB_DS_node_begin_imp(); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +node_end() +{ return PB_DS_node_end_imp(); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +PB_DS_node_begin_imp() const +{ + return node_const_iterator(const_cast(mid_pointer(begin(), end())), + const_cast(begin()), + const_cast(end()),(m_a_metadata == 0)? + 0 : + mid_pointer(m_a_metadata, m_a_metadata + m_size)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +PB_DS_node_end_imp() const +{ + return node_const_iterator(end(), end(), end(), + (m_a_metadata == 0) ? 0 : m_a_metadata + m_size); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +PB_DS_node_begin_imp() +{ + return node_iterator(mid_pointer(begin(), end()), begin(), end(), + (m_a_metadata == 0) ? 0 : mid_pointer(m_a_metadata, m_a_metadata + m_size)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +PB_DS_node_end_imp() +{ + return node_iterator(end(), end(), + end(),(m_a_metadata == 0) ? 0 : m_a_metadata + m_size); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp new file mode 100644 index 000000000..bfa1c70d3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp @@ -0,0 +1,291 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/node_iterators.hpp + * Contains an implementation class for ov_tree_. + */ + +#ifndef PB_DS_OV_TREE_NODE_ITERATORS_HPP +#define PB_DS_OV_TREE_NODE_ITERATORS_HPP + +#include +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { +#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC \ + ov_tree_node_const_it_ + + /// Const node reference. + template + class ov_tree_node_const_it_ + { + + protected: + typedef + typename _Alloc::template rebind< + Value_Type>::other::pointer + pointer; + + typedef + typename _Alloc::template rebind< + Value_Type>::other::const_pointer + const_pointer; + + typedef + typename _Alloc::template rebind< + Metadata_Type>::other::const_pointer + const_metadata_pointer; + + typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC this_type; + + protected: + + template + inline static Ptr + mid_pointer(Ptr p_begin, Ptr p_end) + { + _GLIBCXX_DEBUG_ASSERT(p_end >= p_begin); + return (p_begin + (p_end - p_begin) / 2); + } + + public: + + typedef trivial_iterator_tag iterator_category; + + typedef trivial_iterator_difference_type difference_type; + + typedef + typename _Alloc::template rebind< + Value_Type>::other::const_pointer + value_type; + + typedef + typename _Alloc::template rebind< + typename remove_const< + Value_Type>::type>::other::const_pointer + reference; + + typedef + typename _Alloc::template rebind< + typename remove_const< + Value_Type>::type>::other::const_pointer + const_reference; + + typedef Metadata_Type metadata_type; + + typedef + typename _Alloc::template rebind< + metadata_type>::other::const_reference + metadata_const_reference; + + public: + inline + ov_tree_node_const_it_(const_pointer p_nd = 0, const_pointer p_begin_nd = 0, const_pointer p_end_nd = 0, const_metadata_pointer p_metadata = 0) : m_p_value(const_cast(p_nd)), m_p_begin_value(const_cast(p_begin_nd)), m_p_end_value(const_cast(p_end_nd)), m_p_metadata(p_metadata) + { } + + inline const_reference + operator*() const + { return m_p_value; } + + inline metadata_const_reference + get_metadata() const + { + enum + { + has_metadata = !is_same::value + }; + + PB_DS_STATIC_ASSERT(should_have_metadata, has_metadata); + _GLIBCXX_DEBUG_ASSERT(m_p_metadata != 0); + return *m_p_metadata; + } + + /// Returns the node iterator associated with the left node. + inline this_type + get_l_child() const + { + if (m_p_begin_value == m_p_value) + return (this_type(m_p_begin_value, m_p_begin_value, m_p_begin_value)); + + const_metadata_pointer p_begin_metadata = + m_p_metadata - (m_p_value - m_p_begin_value); + + return (this_type(mid_pointer(m_p_begin_value, m_p_value), + m_p_begin_value, + m_p_value, + mid_pointer(p_begin_metadata, m_p_metadata))); + } + + /// Returns the node iterator associated with the right node. + inline this_type + get_r_child() const + { + if (m_p_value == m_p_end_value) + return (this_type(m_p_end_value, m_p_end_value, m_p_end_value)); + + const_metadata_pointer p_end_metadata = + m_p_metadata + (m_p_end_value - m_p_value); + + return (this_type(mid_pointer(m_p_value + 1, m_p_end_value), + m_p_value + 1, + m_p_end_value,(m_p_metadata == 0) ? + 0 : mid_pointer(m_p_metadata + 1, p_end_metadata))); + } + + inline bool + operator==(const this_type& other) const + { + const bool is_end = m_p_begin_value == m_p_end_value; + const bool is_other_end = other.m_p_begin_value == other.m_p_end_value; + + if (is_end) + return (is_other_end); + + if (is_other_end) + return (is_end); + + return m_p_value == other.m_p_value; + } + + inline bool + operator!=(const this_type& other) const + { return !operator==(other); } + + public: + pointer m_p_value; + pointer m_p_begin_value; + pointer m_p_end_value; + + const_metadata_pointer m_p_metadata; + }; + +#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \ + ov_tree_node_it_ + + /// Node reference. + template + class ov_tree_node_it_ : public PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC + { + private: + typedef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC this_type; + + typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC base_type; + + typedef typename base_type::pointer pointer; + + typedef typename base_type::const_pointer const_pointer; + + typedef + typename base_type::const_metadata_pointer + const_metadata_pointer; + + public: + typedef trivial_iterator_tag iterator_category; + + typedef trivial_iterator_difference_type difference_type; + + typedef + typename _Alloc::template rebind< + Value_Type>::other::pointer + value_type; + + typedef + typename _Alloc::template rebind< + typename remove_const< + Value_Type>::type>::other::pointer + reference; + + typedef + typename _Alloc::template rebind< + typename remove_const< + Value_Type>::type>::other::pointer + const_reference; + + inline + ov_tree_node_it_(const_pointer p_nd = 0, const_pointer p_begin_nd = 0, const_pointer p_end_nd = 0, const_metadata_pointer p_metadata = 0) : base_type(p_nd, p_begin_nd, p_end_nd, p_metadata) + { } + + /// Access. + inline reference + operator*() const + { return reference(base_type::m_p_value); } + + /// Returns the node reference associated with the left node. + inline ov_tree_node_it_ + get_l_child() const + { + if (base_type::m_p_begin_value == base_type::m_p_value) + return (this_type(base_type::m_p_begin_value, base_type::m_p_begin_value, base_type::m_p_begin_value)); + + const_metadata_pointer p_begin_metadata = + base_type::m_p_metadata - (base_type::m_p_value - base_type::m_p_begin_value); + + return (this_type(base_type::mid_pointer(base_type::m_p_begin_value, base_type::m_p_value), + base_type::m_p_begin_value, + base_type::m_p_value, + base_type::mid_pointer(p_begin_metadata, base_type::m_p_metadata))); + } + + /// Returns the node reference associated with the right node. + inline ov_tree_node_it_ + get_r_child() const + { + if (base_type::m_p_value == base_type::m_p_end_value) + return this_type(base_type::m_p_end_value, base_type::m_p_end_value, + base_type::m_p_end_value); + + const_metadata_pointer p_end_metadata = + base_type::m_p_metadata + (base_type::m_p_end_value - base_type::m_p_value); + + return (this_type(base_type::mid_pointer(base_type::m_p_value + 1, base_type::m_p_end_value), + base_type::m_p_value + 1, + base_type::m_p_end_value,(base_type::m_p_metadata == 0)? + 0 : base_type::mid_pointer(base_type::m_p_metadata + 1, p_end_metadata))); + } + + }; + +#undef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC +#undef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC + +} // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp index 41a596377..015d74209 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..3c8abea22 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp @@ -0,0 +1,51 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/policy_access_fn_imps.hpp + * Contains an implementation class for ov_tree. + */ + +PB_DS_CLASS_T_DEC +Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() +{ return *this; } + +PB_DS_CLASS_T_DEC +const Cmp_Fn& +PB_DS_CLASS_C_DEC:: +get_cmp_fn() const +{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp new file mode 100644 index 000000000..0f254a96a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp @@ -0,0 +1,132 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/split_join_fn_imps.hpp + * Contains an implementation class for ov_tree_. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + if (m_size == 0) + { + other.clear(); + return; + } + + if (Cmp_Fn::operator()(r_key, PB_DS_V2F(*begin()))) + { + value_swap(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(*(end() - 1)))) + { + return; + } + + if (m_size == 1) + { + value_swap(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + iterator it = upper_bound(r_key); + PB_DS_CLASS_C_DEC new_other(other, other); + new_other.copy_from_ordered_range(it, end()); + PB_DS_CLASS_C_DEC new_this(*this, *this); + new_this.copy_from_ordered_range(begin(), it); + + // No exceptions from this point. + other.update(other.node_begin(), (node_update*)(&other)); + update(node_begin(), (node_update*)this); + other.value_swap(new_other); + value_swap(new_this); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + if (other.m_size == 0) + return; + + if (m_size == 0) + { + value_swap(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + const bool greater = Cmp_Fn::operator()(PB_DS_V2F(*(end() - 1)), + PB_DS_V2F(*other.begin())); + + const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(*(other.end() - 1)), + PB_DS_V2F(*begin())); + + if (!greater && !lesser) + __throw_join_error(); + + PB_DS_CLASS_C_DEC new_this(*this, *this); + + if (greater) + new_this.copy_from_ordered_range(begin(), end(), + other.begin(), other.end()); + else + new_this.copy_from_ordered_range(other.begin(), other.end(), + begin(), end()); + + // No exceptions from this point. + value_swap(new_this); + other.clear(); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/traits.hpp new file mode 100644 index 000000000..b940fcb53 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/ov_tree_map_/traits.hpp @@ -0,0 +1,190 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file ov_tree_map_/traits.hpp + * Contains an implementation class for ov_tree_. + */ + +#ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP +#define PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP + +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Tree traits. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct tree_traits< + Key, + Mapped, + Cmp_Fn, + Node_Update, + ov_tree_tag, + _Alloc> + { + private: + typedef + typename types_traits< + Key, + Mapped, + _Alloc, + false>::value_type + value_type; + + public: + typedef + typename tree_node_metadata_dispatch< + Key, + Mapped, + Cmp_Fn, + Node_Update, + _Alloc>::type + metadata_type; + + /// This is an iterator to an iterator: it iterates over nodes, + /// and de-referencing it returns one of the tree's iterators. + typedef + ov_tree_node_const_it_< + value_type, + metadata_type, + _Alloc> + node_const_iterator; + + typedef + ov_tree_node_it_< + value_type, + metadata_type, + _Alloc> + node_iterator; + + typedef + Node_Update< + node_const_iterator, + node_iterator, + Cmp_Fn, + _Alloc> + node_update; + + typedef + __gnu_pbds::null_node_update< + node_const_iterator, + node_iterator, + Cmp_Fn, + _Alloc>* + null_node_update_pointer; + }; + + + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct tree_traits< + Key, + null_type, + Cmp_Fn, + Node_Update, + ov_tree_tag, + _Alloc> + { + private: + typedef + typename types_traits< + Key, + null_type, + _Alloc, + false>::value_type + value_type; + + public: + typedef + typename tree_node_metadata_dispatch< + Key, + null_type, + Cmp_Fn, + Node_Update, + _Alloc>::type + metadata_type; + + /// This is an iterator to an iterator: it iterates over nodes, + /// and de-referencing it returns one of the tree's iterators. + typedef + ov_tree_node_const_it_< + value_type, + metadata_type, + _Alloc> + node_const_iterator; + + typedef node_const_iterator node_iterator; + + typedef + Node_Update< + node_const_iterator, + node_const_iterator, + Cmp_Fn, + _Alloc> + node_update; + + typedef + __gnu_pbds::null_node_update< + node_const_iterator, + node_iterator, + Cmp_Fn, + _Alloc>* + null_node_update_pointer; + }; + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..fe934dc2a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,82 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pairing_heap_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for a pairing heap. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + push(*(first_it++)); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +pairing_heap() +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +pairing_heap(const Cmp_Fn& r_cmp_fn) +: base_type(r_cmp_fn) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +pairing_heap(const PB_DS_CLASS_C_DEC& other) +: base_type(other) +{ PB_DS_ASSERT_VALID((*this)) } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + base_type::swap(other); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~pairing_heap() +{ } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp new file mode 100644 index 000000000..27f03c376 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp @@ -0,0 +1,53 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pairing_heap_/debug_fn_imps.hpp + * Contains an implementation class for a pairing heap. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + PB_DS_DEBUG_VERIFY(base_type::m_p_root == 0 + || base_type::m_p_root->m_p_next_sibling == 0); + base_type::assert_valid(__file, __line); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp new file mode 100644 index 000000000..9674766b8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp @@ -0,0 +1,233 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pairing_heap_/erase_fn_imps.hpp + * Contains an implementation class for a pairing heap. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +pop() +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + + node_pointer p_new_root = join_node_children(base_type::m_p_root); + PB_DS_ASSERT_NODE_CONSISTENT(p_new_root, false) + if (p_new_root != 0) + p_new_root->m_p_prev_or_parent = 0; + + base_type::actual_erase_node(base_type::m_p_root); + base_type::m_p_root = p_new_root; + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase(point_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + remove_node(it.m_p_nd); + base_type::actual_erase_node(it.m_p_nd); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +remove_node(node_pointer p_nd) +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + node_pointer p_new_child = join_node_children(p_nd); + + PB_DS_ASSERT_NODE_CONSISTENT(p_new_child, false) + + if (p_nd == base_type::m_p_root) + { + if (p_new_child != 0) + p_new_child->m_p_prev_or_parent = 0; + base_type::m_p_root = p_new_child; + PB_DS_ASSERT_NODE_CONSISTENT(base_type::m_p_root, false) + return; + } + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent != 0); + if (p_nd->m_p_prev_or_parent->m_p_l_child == p_nd) + { + if (p_new_child != 0) + { + p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling; + if (p_new_child->m_p_next_sibling != 0) + p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child; + p_nd->m_p_prev_or_parent->m_p_l_child = p_new_child; + PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) + return; + } + + p_nd->m_p_prev_or_parent->m_p_l_child = p_nd->m_p_next_sibling; + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) + return; + } + + if (p_new_child != 0) + { + p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling; + if (p_new_child->m_p_next_sibling != 0) + p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child; + p_new_child->m_p_prev_or_parent->m_p_next_sibling = p_new_child; + PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) + return; + } + + p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling; + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + PB_DS_ASSERT_NODE_CONSISTENT(p_nd->m_p_prev_or_parent, false) +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +join_node_children(node_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + node_pointer p_ret = p_nd->m_p_l_child; + if (p_ret == 0) + return 0; + while (p_ret->m_p_next_sibling != 0) + p_ret = forward_join(p_ret, p_ret->m_p_next_sibling); + while (p_ret->m_p_prev_or_parent != p_nd) + p_ret = back_join(p_ret->m_p_prev_or_parent, p_ret); + PB_DS_ASSERT_NODE_CONSISTENT(p_ret, false) + return p_ret; +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +forward_join(node_pointer p_nd, node_pointer p_next) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == p_next); + if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) + { + p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + base_type::make_child_of(p_nd, p_next); + return p_next->m_p_next_sibling == 0 + ? p_next : p_next->m_p_next_sibling; + } + + if (p_next->m_p_next_sibling != 0) + { + p_next->m_p_next_sibling->m_p_prev_or_parent = p_nd; + p_nd->m_p_next_sibling = p_next->m_p_next_sibling; + base_type::make_child_of(p_next, p_nd); + return p_nd->m_p_next_sibling; + } + + p_nd->m_p_next_sibling = 0; + base_type::make_child_of(p_next, p_nd); + PB_DS_ASSERT_NODE_CONSISTENT(p_nd, false) + return p_nd; +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +back_join(node_pointer p_nd, node_pointer p_next) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == 0); + + if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) + { + p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + base_type::make_child_of(p_nd, p_next); + PB_DS_ASSERT_NODE_CONSISTENT(p_next, false) + return p_next; + } + + p_nd->m_p_next_sibling = 0; + base_type::make_child_of(p_next, p_nd); + PB_DS_ASSERT_NODE_CONSISTENT(p_nd, false) + return p_nd; +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + if (base_type::empty()) + { + PB_DS_ASSERT_VALID((*this)) + return 0; + } + base_type::to_linked_list(); + node_pointer p_out = base_type::prune(pred); + size_type ersd = 0; + while (p_out != 0) + { + ++ersd; + node_pointer p_next = p_out->m_p_next_sibling; + base_type::actual_erase_node(p_out); + p_out = p_next; + } + + node_pointer p_cur = base_type::m_p_root; + base_type::m_p_root = 0; + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = 0; + + push_imp(p_cur); + p_cur = p_next; + } + PB_DS_ASSERT_VALID((*this)) + return ersd; +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp new file mode 100644 index 000000000..4601ff72b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp @@ -0,0 +1,49 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pairing_heap_/find_fn_imps.hpp + * Contains an implementation class for a pairing heap. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reference +PB_DS_CLASS_C_DEC:: +top() const +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + return base_type::m_p_root->m_value; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp new file mode 100644 index 000000000..3b6f5aa55 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp @@ -0,0 +1,88 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pairing_heap_/insert_fn_imps.hpp + * Contains an implementation class for a pairing heap. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +push(const_reference r_val) +{ + PB_DS_ASSERT_VALID((*this)) + node_pointer p_new_nd = base_type::get_new_node_for_insert(r_val); + push_imp(p_new_nd); + PB_DS_ASSERT_VALID((*this)) + return point_iterator(p_new_nd); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +push_imp(node_pointer p_nd) +{ + p_nd->m_p_l_child = 0; + if (base_type::m_p_root == 0) + { + p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = 0; + base_type::m_p_root = p_nd; + } + else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value)) + { + p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = 0; + base_type::make_child_of(base_type::m_p_root, p_nd); + PB_DS_ASSERT_NODE_CONSISTENT(p_nd, false) + base_type::m_p_root = p_nd; + } + else + { + base_type::make_child_of(p_nd, base_type::m_p_root); + PB_DS_ASSERT_NODE_CONSISTENT(base_type::m_p_root, false) + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +modify(point_iterator it, const_reference r_new_val) +{ + PB_DS_ASSERT_VALID((*this)) + remove_node(it.m_p_nd); + it.m_p_nd->m_value = r_new_val; + push_imp(it.m_p_nd); + PB_DS_ASSERT_VALID((*this)) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp index bc150c106..690eb51e7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp new file mode 100644 index 000000000..2ad269a12 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp @@ -0,0 +1,123 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pairing_heap_/split_join_fn_imps.hpp + * Contains an implementation class for a pairing heap. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +split(Pred pred, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + other.clear(); + + if (base_type::empty()) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + base_type::to_linked_list(); + node_pointer p_out = base_type::prune(pred); + while (p_out != 0) + { + _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); + --base_type::m_size; + ++other.m_size; + node_pointer p_next = p_out->m_p_next_sibling; + p_out->m_p_l_child = p_out->m_p_next_sibling = p_out->m_p_prev_or_parent = 0; + + other.push_imp(p_out); + p_out = p_next; + } + + PB_DS_ASSERT_VALID(other) + node_pointer p_cur = base_type::m_p_root; + base_type::m_p_root = 0; + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = 0; + + push_imp(p_cur); + p_cur = p_next; + } + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + if (other.m_p_root == 0) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + if (base_type::m_p_root == 0) + base_type::m_p_root = other.m_p_root; + else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, other.m_p_root->m_value)) + { + base_type::make_child_of(base_type::m_p_root, other.m_p_root); + PB_DS_ASSERT_NODE_CONSISTENT(other.m_p_root, false) + base_type::m_p_root = other.m_p_root; + } + else + { + base_type::make_child_of(other.m_p_root, base_type::m_p_root); + PB_DS_ASSERT_NODE_CONSISTENT(base_type::m_p_root, false) + } + + base_type::m_size += other.m_size; + other.m_p_root = 0; + other.m_size = 0; + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..6fdbfb1e0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,214 @@ + // -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::head_allocator +PB_DS_CLASS_C_DEC::s_head_allocator; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::inode_allocator +PB_DS_CLASS_C_DEC::s_inode_allocator; + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::leaf_allocator +PB_DS_CLASS_C_DEC::s_leaf_allocator; + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_PAT_TRIE_NAME() : + m_p_head(s_head_allocator.allocate(1)), + m_size(0) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_PAT_TRIE_NAME(const access_traits& r_access_traits) : + synth_access_traits(r_access_traits), + m_p_head(s_head_allocator.allocate(1)), + m_size(0) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_PAT_TRIE_NAME(const PB_DS_CLASS_C_DEC& other) : +#ifdef _GLIBCXX_DEBUG + debug_base(other), +#endif + synth_access_traits(other), + node_update(other), + m_p_head(s_head_allocator.allocate(1)), + m_size(0) +{ + initialize(); + m_size = other.m_size; + PB_DS_ASSERT_VALID(other) + if (other.m_p_head->m_p_parent == 0) + { + PB_DS_ASSERT_VALID((*this)) + return; + } + __try + { + m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent); + } + __catch(...) + { + s_head_allocator.deallocate(m_p_head, 1); + __throw_exception_again; + } + + m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent); + m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent); + m_p_head->m_p_parent->m_p_parent = m_p_head; + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + value_swap(other); + std::swap((access_traits& )(*this), (access_traits& )other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +value_swap(PB_DS_CLASS_C_DEC& other) +{ + _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);) + std::swap(m_p_head, other.m_p_head); + std::swap(m_size, other.m_size); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~PB_DS_PAT_TRIE_NAME() +{ + clear(); + s_head_allocator.deallocate(m_p_head, 1); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ + new (m_p_head) head(); + m_p_head->m_p_parent = 0; + m_p_head->m_p_min = m_p_head; + m_p_head->m_p_max = m_p_head; + m_size = 0; +} + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + insert(*(first_it++)); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +recursive_copy_node(node_const_pointer p_ncp) +{ + _GLIBCXX_DEBUG_ASSERT(p_ncp != 0); + if (p_ncp->m_type == leaf_node) + { + leaf_const_pointer p_other_lf = static_cast(p_ncp); + leaf_pointer p_new_lf = s_leaf_allocator.allocate(1); + cond_dealtor cond(p_new_lf); + new (p_new_lf) leaf(p_other_lf->value()); + apply_update(p_new_lf, (node_update*)this); + cond.set_no_action_dtor(); + return (p_new_lf); + } + + _GLIBCXX_DEBUG_ASSERT(p_ncp->m_type == i_node); + node_pointer a_p_children[inode::arr_size]; + size_type child_i = 0; + inode_const_pointer p_icp = static_cast(p_ncp); + + typename inode::const_iterator child_it = p_icp->begin(); + + inode_pointer p_ret; + __try + { + while (child_it != p_icp->end()) + { + a_p_children[child_i] = recursive_copy_node(*(child_it)); + child_i++; + child_it++; + } + p_ret = s_inode_allocator.allocate(1); + } + __catch(...) + { + while (child_i-- > 0) + clear_imp(a_p_children[child_i]); + __throw_exception_again; + } + + new (p_ret) inode(p_icp->get_e_ind(), pref_begin(a_p_children[0])); + + --child_i; + _GLIBCXX_DEBUG_ASSERT(child_i >= 1); + do + p_ret->add_child(a_p_children[child_i], pref_begin(a_p_children[child_i]), + pref_end(a_p_children[child_i]), this); + while (child_i-- > 0); + apply_update(p_ret, (node_update*)this); + return p_ret; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp new file mode 100644 index 000000000..7bfc9ea4a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp @@ -0,0 +1,115 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/debug_fn_imps.hpp + * Contains an implementation class for pat_trie_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + if (m_p_head->m_p_parent != 0) + m_p_head->m_p_parent->assert_valid(this, __file, __line); + assert_iterators(__file, __line); + assert_reverse_iterators(__file, __line); + if (m_p_head->m_p_parent == 0) + { + PB_DS_DEBUG_VERIFY(m_p_head->m_p_min == m_p_head); + PB_DS_DEBUG_VERIFY(m_p_head->m_p_max == m_p_head); + PB_DS_DEBUG_VERIFY(empty()); + return; + } + + PB_DS_DEBUG_VERIFY(m_p_head->m_p_min->m_type == leaf_node); + PB_DS_DEBUG_VERIFY(m_p_head->m_p_max->m_type == leaf_node); + PB_DS_DEBUG_VERIFY(!empty()); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_iterators(const char* __file, int __line) const +{ + size_type calc_size = 0; + for (const_iterator it = begin(); it != end(); ++it) + { + ++calc_size; + debug_base::check_key_exists(PB_DS_V2F(*it), __file, __line); + PB_DS_DEBUG_VERIFY(lower_bound(PB_DS_V2F(*it)) == it); + PB_DS_DEBUG_VERIFY(--upper_bound(PB_DS_V2F(*it)) == it); + } + PB_DS_DEBUG_VERIFY(calc_size == m_size); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_reverse_iterators(const char* __file, int __line) const +{ + size_type calc_size = 0; + for (const_reverse_iterator it = rbegin(); it != rend(); ++it) + { + ++calc_size; + node_const_pointer p_nd = + const_cast(this)->find_imp(PB_DS_V2F(*it)); + PB_DS_DEBUG_VERIFY(p_nd == it.m_p_nd); + } + PB_DS_DEBUG_VERIFY(calc_size == m_size); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +recursive_count_leafs(node_const_pointer p_nd, const char* __file, int __line) +{ + if (p_nd == 0) + return (0); + if (p_nd->m_type == leaf_node) + return (1); + PB_DS_DEBUG_VERIFY(p_nd->m_type == i_node); + size_type ret = 0; + for (typename inode::const_iterator it = static_cast(p_nd)->begin(); + it != static_cast(p_nd)->end(); + ++it) + ret += recursive_count_leafs(*it, __file, __line); + return ret; +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp new file mode 100644 index 000000000..030206a2c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp @@ -0,0 +1,315 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/erase_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ + node_pointer p_nd = find_imp(r_key); + if (p_nd == 0 || p_nd->m_type == i_node) + { + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return false; + } + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == leaf_node); + if (!synth_access_traits::equal_keys(PB_DS_V2F(reinterpret_cast(p_nd)->value()), r_key)) + { + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return false; + } + + PB_DS_CHECK_KEY_EXISTS(r_key) + erase_leaf(static_cast(p_nd)); + PB_DS_ASSERT_VALID((*this)) + return true; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_fixup(inode_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) >= 1); + if (std::distance(p_nd->begin(), p_nd->end()) == 1) + { + node_pointer p_parent = p_nd->m_p_parent; + if (p_parent == m_p_head) + m_p_head->m_p_parent = *p_nd->begin(); + else + { + _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == i_node); + node_pointer p_new_child = *p_nd->begin(); + + typedef inode_pointer inode_ptr; + inode_ptr p_internal = static_cast(p_parent); + p_internal->replace_child(p_new_child, pref_begin(p_new_child), + pref_end(p_new_child), this); + } + (*p_nd->begin())->m_p_parent = p_nd->m_p_parent; + p_nd->~inode(); + s_inode_allocator.deallocate(p_nd, 1); + + if (p_parent == m_p_head) + return; + + _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == i_node); + p_nd = static_cast(p_parent); + } + + while (true) + { + _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) > 1); + p_nd->update_prefixes(this); + apply_update(p_nd, (node_update*)this); + PB_DS_ASSERT_NODE_VALID(p_nd) + if (p_nd->m_p_parent->m_type == head_node) + return; + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent->m_type == i_node); + + p_nd = static_cast(p_nd->m_p_parent); + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +actual_erase_leaf(leaf_pointer p_l) +{ + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->value()))); + p_l->~leaf(); + s_leaf_allocator.deallocate(p_l, 1); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + if (!empty()) + { + clear_imp(m_p_head->m_p_parent); + m_size = 0; + initialize(); + _GLIBCXX_DEBUG_ONLY(debug_base::clear();) + PB_DS_ASSERT_VALID((*this)) + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear_imp(node_pointer p_nd) +{ + if (p_nd->m_type == i_node) + { + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); + for (typename inode::iterator it = + static_cast(p_nd)->begin(); + it != static_cast(p_nd)->end(); + ++it) + { + node_pointer p_child =* it; + clear_imp(p_child); + } + s_inode_allocator.deallocate(static_cast(p_nd), 1); + return; + } + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == leaf_node); + static_cast(p_nd)->~leaf(); + s_leaf_allocator.deallocate(static_cast(p_nd), 1); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +erase(const_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + + if (it == end()) + return it; + + const_iterator ret_it = it; + ++ret_it; + _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); + erase_leaf(static_cast(it.m_p_nd)); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} + +#ifdef PB_DS_DATA_TRUE_INDICATOR +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +erase(iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + + if (it == end()) + return it; + iterator ret_it = it; + ++ret_it; + _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); + erase_leaf(static_cast(it.m_p_nd)); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} +#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator +PB_DS_CLASS_C_DEC:: +erase(const_reverse_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + + if (it.m_p_nd == m_p_head) + return it; + const_reverse_iterator ret_it = it; + ++ret_it; + + _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); + erase_leaf(static_cast(it.m_p_nd)); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} + +#ifdef PB_DS_DATA_TRUE_INDICATOR +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +erase(reverse_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + + if (it.m_p_nd == m_p_head) + return it; + reverse_iterator ret_it = it; + ++ret_it; + + _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == leaf_node); + erase_leaf(static_cast(it.m_p_nd)); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} +#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + size_type num_ersd = 0; + PB_DS_ASSERT_VALID((*this)) + + iterator it = begin(); + while (it != end()) + { + PB_DS_ASSERT_VALID((*this)) + if (pred(*it)) + { + ++num_ersd; + it = erase(it); + } + else + ++it; + } + + PB_DS_ASSERT_VALID((*this)) + return num_ersd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_leaf(leaf_pointer p_l) +{ + update_min_max_for_erased_leaf(p_l); + if (p_l->m_p_parent->m_type == head_node) + { + _GLIBCXX_DEBUG_ASSERT(size() == 1); + clear(); + return; + } + + _GLIBCXX_DEBUG_ASSERT(size() > 1); + _GLIBCXX_DEBUG_ASSERT(p_l->m_p_parent->m_type == i_node); + + inode_pointer p_parent = static_cast(p_l->m_p_parent); + + p_parent->remove_child(p_l); + erase_fixup(p_parent); + actual_erase_leaf(p_l); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +update_min_max_for_erased_leaf(leaf_pointer p_l) +{ + if (m_size == 1) + { + m_p_head->m_p_min = m_p_head; + m_p_head->m_p_max = m_p_head; + return; + } + + if (p_l == static_cast(m_p_head->m_p_min)) + { + iterator it(p_l); + ++it; + m_p_head->m_p_min = it.m_p_nd; + return; + } + + if (p_l == static_cast(m_p_head->m_p_max)) + { + iterator it(p_l); + --it; + m_p_head->m_p_max = it.m_p_nd; + } +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp new file mode 100644 index 000000000..cd656fe7b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp @@ -0,0 +1,269 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/find_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) +{ + PB_DS_ASSERT_VALID((*this)) + node_pointer p_nd = find_imp(r_key); + + if (p_nd == 0 || p_nd->m_type != leaf_node) + { + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return end(); + } + + if (synth_access_traits::equal_keys(PB_DS_V2F(static_cast(p_nd)->value()), r_key)) + { + PB_DS_CHECK_KEY_EXISTS(r_key) + return iterator(p_nd); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return end(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) const +{ + PB_DS_ASSERT_VALID((*this)) + + node_const_pointer p_nd = const_cast(this)->find_imp(r_key); + + if (p_nd == 0 || p_nd->m_type != leaf_node) + { + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return end(); + } + + if (synth_access_traits::equal_keys(PB_DS_V2F(static_cast(p_nd)->value()), r_key)) + { + PB_DS_CHECK_KEY_EXISTS(r_key) + return const_iterator(const_cast(p_nd)); + } + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(r_key) + return end(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +find_imp(key_const_reference r_key) +{ + if (empty()) + return 0; + + typename synth_access_traits::const_iterator b_it = + synth_access_traits::begin(r_key); + typename synth_access_traits::const_iterator e_it = + synth_access_traits::end(r_key); + + node_pointer p_nd = m_p_head->m_p_parent; + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + + while (p_nd->m_type != leaf_node) + { + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); + node_pointer p_next_nd = static_cast(p_nd)->get_child_node(b_it, e_it, this); + + if (p_next_nd == 0) + return p_nd; + p_nd = p_next_nd; + } + return p_nd; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +lower_bound_imp(key_const_reference r_key) +{ + if (empty()) + return (m_p_head); + + node_pointer p_nd = m_p_head->m_p_parent; + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + + typename PB_DS_CLASS_C_DEC::a_const_iterator b_it = + synth_access_traits::begin(r_key); + + typename PB_DS_CLASS_C_DEC::a_const_iterator e_it = + synth_access_traits::end(r_key); + + size_type checked_ind = 0; + while (true) + { + if (p_nd->m_type == leaf_node) + { + if (!synth_access_traits::cmp_keys(PB_DS_V2F(static_cast(p_nd)->value()), r_key)) + return p_nd; + iterator it(p_nd); + ++it; + return it.m_p_nd; + } + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); + const size_type new_checked_ind = + static_cast(p_nd)->get_e_ind(); + + p_nd = + static_cast(p_nd)->get_lower_bound_child_node( b_it, e_it, checked_ind, this); + checked_ind = new_checked_ind; + } +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +lower_bound(key_const_reference r_key) +{ return point_iterator(lower_bound_imp(r_key)); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +lower_bound(key_const_reference r_key) const +{ + return point_const_iterator(const_cast(this)->lower_bound_imp(r_key)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +upper_bound(key_const_reference r_key) +{ + point_iterator l_bound_it = lower_bound(r_key); + + _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() || + !synth_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it), + r_key)); + + if (l_bound_it == end() || + synth_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it))) + return l_bound_it; + + return ++l_bound_it; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +upper_bound(key_const_reference r_key) const +{ + point_const_iterator l_bound_it = lower_bound(r_key); + + _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() || + !synth_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it), + r_key)); + + if (l_bound_it == end() || + synth_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it))) + return l_bound_it; + return ++l_bound_it; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::a_const_iterator +PB_DS_CLASS_C_DEC:: +pref_begin(node_const_pointer p_nd) +{ + if (p_nd->m_type == leaf_node) + return (synth_access_traits::begin(PB_DS_V2F(static_cast(p_nd)->value()))); + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); + return static_cast(p_nd)->pref_b_it(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::a_const_iterator +PB_DS_CLASS_C_DEC:: +pref_end(node_const_pointer p_nd) +{ + if (p_nd->m_type == leaf_node) + return (synth_access_traits::end(PB_DS_V2F(static_cast(p_nd)->value()))); + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == i_node); + return static_cast(p_nd)->pref_e_it(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::leaf_const_pointer +PB_DS_CLASS_C_DEC:: +leftmost_descendant(node_const_pointer p_nd) +{ + if (p_nd->m_type == leaf_node) + return static_cast(p_nd); + return static_cast(p_nd)->leftmost_descendant(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::leaf_pointer +PB_DS_CLASS_C_DEC:: +leftmost_descendant(node_pointer p_nd) +{ + if (p_nd->m_type == leaf_node) + return static_cast(p_nd); + return static_cast(p_nd)->leftmost_descendant(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::leaf_const_pointer +PB_DS_CLASS_C_DEC:: +rightmost_descendant(node_const_pointer p_nd) +{ + if (p_nd->m_type == leaf_node) + return static_cast(p_nd); + return static_cast(p_nd)->rightmost_descendant(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::leaf_pointer +PB_DS_CLASS_C_DEC:: +rightmost_descendant(node_pointer p_nd) +{ + if (p_nd->m_type == leaf_node) + return static_cast(p_nd); + return static_cast(p_nd)->rightmost_descendant(); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp new file mode 100644 index 000000000..ca66defc5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp @@ -0,0 +1,58 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/info_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +empty() const +{ return (m_size == 0); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +size() const +{ return m_size; } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +max_size() const +{ return s_inode_allocator.max_size(); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp index 13ac2734e..63b22d67a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp new file mode 100644 index 000000000..2babbc447 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp @@ -0,0 +1,120 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/iterators_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +begin() +{ return iterator(m_p_head->m_p_min); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +begin() const +{ return const_iterator(m_p_head->m_p_min); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +end() +{ return iterator(m_p_head); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +end() const +{ return const_iterator(m_p_head); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator +PB_DS_CLASS_C_DEC:: +rbegin() const +{ + if (empty()) + return rend(); + return --end(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +rbegin() +{ + if (empty()) + return rend(); + return --end(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +rend() +{ return reverse_iterator(m_p_head); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator +PB_DS_CLASS_C_DEC:: +rend() const +{ return const_reverse_iterator(m_p_head); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +node_begin() const +{ return node_const_iterator(m_p_head->m_p_parent, this); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +node_begin() +{ return node_iterator(m_p_head->m_p_parent, this); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_const_iterator +PB_DS_CLASS_C_DEC:: +node_end() const +{ return node_const_iterator(0, this); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_iterator +PB_DS_CLASS_C_DEC:: +node_end() +{ return node_iterator(0, this); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp index ad384e838..3d2627b91 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp index 0ff46f9e9..a9e5d86db 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp new file mode 100644 index 000000000..60fbb0a63 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp @@ -0,0 +1,63 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/policy_access_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::access_traits& +PB_DS_CLASS_C_DEC:: +get_access_traits() +{ return *this; } + +PB_DS_CLASS_T_DEC +const typename PB_DS_CLASS_C_DEC::access_traits& +PB_DS_CLASS_C_DEC:: +get_access_traits() const +{ return *this; } + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_update& +PB_DS_CLASS_C_DEC:: +get_node_update() +{ return *this; } + +PB_DS_CLASS_T_DEC +const typename PB_DS_CLASS_C_DEC::node_update& +PB_DS_CLASS_C_DEC:: +get_node_update() const +{ return *this; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp new file mode 100644 index 000000000..3d2e8c59a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/r_erase_fn_imps.hpp + * Contains an implementation class for pat_trie. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +actual_erase_node(node_pointer p_z) +{ + _GLIBCXX_DEBUG_ASSERT(m_size > 0); + --m_size; + _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_z->m_value))); + p_z->~node(); + s_node_allocator.deallocate(p_z, 1); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update_min_max_for_erased_node(node_pointer p_z) +{ + if (m_size == 1) + { + m_p_head->m_p_left = m_p_head->m_p_right = m_p_head; + return; + } + + if (m_p_head->m_p_left == p_z) + { + iterator it(p_z); + ++it; + m_p_head->m_p_left = it.m_p_nd; + } + else if (m_p_head->m_p_right == p_z) + { + iterator it(p_z); + --it; + m_p_head->m_p_right = it.m_p_nd; + } +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);) + clear_imp(m_p_head->m_p_parent); + m_size = 0; + initialize(); + _GLIBCXX_DEBUG_ONLY(debug_base::clear();) + _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear_imp(node_pointer p_nd) +{ + if (p_nd == 0) + return; + clear_imp(p_nd->m_p_left); + clear_imp(p_nd->m_p_right); + p_nd->~Node(); + s_node_allocator.deallocate(p_nd, 1); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp new file mode 100644 index 000000000..2ad9898cd --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp @@ -0,0 +1,150 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/rotate_fn_imps.hpp + * Contains imps for rotating nodes. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +rotate_left(node_pointer p_x) +{ + node_pointer p_y = p_x->m_p_right; + p_x->m_p_right = p_y->m_p_left; + + if (p_y->m_p_left != 0) + p_y->m_p_left->m_p_parent = p_x; + + p_y->m_p_parent = p_x->m_p_parent; + if (p_x == m_p_head->m_p_parent) + m_p_head->m_p_parent = p_y; + else if (p_x == p_x->m_p_parent->m_p_left) + p_x->m_p_parent->m_p_left = p_y; + else + p_x->m_p_parent->m_p_right = p_y; + + p_y->m_p_left = p_x; + p_x->m_p_parent = p_y; + + _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) + _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) + + apply_update(p_x, (Node_Update*)this); + apply_update(p_x->m_p_parent, (Node_Update*)this); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +rotate_right(node_pointer p_x) +{ + node_pointer p_y = p_x->m_p_left; + p_x->m_p_left = p_y->m_p_right; + + if (p_y->m_p_right != 0) + p_y->m_p_right->m_p_parent = p_x; + + p_y->m_p_parent = p_x->m_p_parent; + if (p_x == m_p_head->m_p_parent) + m_p_head->m_p_parent = p_y; + else if (p_x == p_x->m_p_parent->m_p_right) + p_x->m_p_parent->m_p_right = p_y; + else + p_x->m_p_parent->m_p_left = p_y; + + p_y->m_p_right = p_x; + p_x->m_p_parent = p_y; + + _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);) + _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);) + + apply_update(p_x, (Node_Update*)this); + apply_update(p_x->m_p_parent, (Node_Update*)this); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +rotate_parent(node_pointer p_nd) +{ + node_pointer p_parent = p_nd->m_p_parent; + if (p_nd == p_parent->m_p_left) + rotate_right(p_parent); + else + rotate_left(p_parent); + _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd); + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || p_nd->m_p_right == p_parent); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +apply_update(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/) +{ } + +PB_DS_CLASS_T_DEC +template +inline void +PB_DS_CLASS_C_DEC:: +apply_update(node_pointer p_nd, Node_Update_* p_update) +{ + p_update->operator()(& PB_DS_V2F(p_nd->m_value),(p_nd->m_p_left == 0) ? + 0 : + & PB_DS_V2F(p_nd->m_p_left->m_value),(p_nd->m_p_right == 0) ? + 0 : + & PB_DS_V2F(p_nd->m_p_right->m_value)); +} + +PB_DS_CLASS_T_DEC +template +inline void +PB_DS_CLASS_C_DEC:: +update_to_top(node_pointer p_nd, Node_Update_* p_update) +{ + while (p_nd != m_p_head) + { + apply_update(p_nd, p_update); + p_nd = p_nd->m_p_parent; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update_to_top(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/) +{ } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp index 27fcef97f..9e57935b5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp index 8baad33c8..fc2f8ff61 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp new file mode 100644 index 000000000..0cad00e63 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp @@ -0,0 +1,111 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/trace_fn_imps.hpp + * Contains an implementation class for pat_trie_. + */ + +#ifdef PB_DS_PAT_TRIE_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << std::endl; + if (m_p_head->m_p_parent == 0) + return; + trace_node(m_p_head->m_p_parent, 0); + std::cerr << std::endl; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_node(node_const_pointer p_nd, size_type level) +{ + for (size_type i = 0; i < level; ++i) + std::cerr << ' '; + std::cerr << p_nd << " "; + std::cerr << ((p_nd->m_type == pat_trie_leaf_node_type) ? "l " : "i "); + + trace_node_metadata(p_nd, type_to_type()); + typename access_traits::const_iterator el_it = pref_begin(p_nd); + while (el_it != pref_end(p_nd)) + { + std::cerr <<* el_it; + ++el_it; + } + + if (p_nd->m_type == pat_trie_leaf_node_type) + { + std::cerr << std::endl; + return; + } + + inode_const_pointer p_internal = static_cast(p_nd); + + std::cerr << " " << + static_cast(p_internal->get_e_ind()) << std::endl; + + const size_type num_children = std::distance(p_internal->begin(), + p_internal->end()); + + for (size_type child_i = 0; child_i < num_children; ++child_i) + { + typename inode::const_iterator child_it = p_internal->begin(); + std::advance(child_it, num_children - child_i - 1); + trace_node(*child_it, level + 1); + } +} + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +trace_node_metadata(node_const_pointer p_nd, type_to_type) +{ + std::cerr << "(" << static_cast(p_nd->get_metadata()) << ") "; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace_node_metadata(node_const_pointer, type_to_type) +{ } + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/traits.hpp new file mode 100644 index 000000000..c7f1c013a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/traits.hpp @@ -0,0 +1,148 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file pat_trie_/traits.hpp + * Contains an implementation class for pat_trie_. + */ + +#ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP +#define PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct trie_traits + { + private: + typedef pat_trie_base base_type; + typedef types_traits type_traits; + + public: + typedef typename trie_node_metadata_dispatch::type metadata_type; + typedef base_type::_Metadata metadata; + typedef _ATraits access_traits; + + /// Type for synthesized traits. + typedef __gnu_pbds::detail::synth_access_traits synth_access_traits; + + typedef base_type::_Node_base node; + typedef base_type::_Head head; + typedef base_type::_Leaf leaf; + typedef base_type::_Inode inode; + + typedef base_type::_Iter iterator; + typedef base_type::_CIter const_iterator; + typedef base_type::_Iter reverse_iterator; + typedef base_type::_CIter const_reverse_iterator; + + /// This is an iterator to an iterator: it iterates over nodes, + /// and de-referencing it returns one of the tree's iterators. + typedef base_type::_Node_citer node_const_iterator; + + typedef base_type::_Node_iter node_iterator; + + /// Type for node update. + typedef Node_Update node_update; + + typedef null_node_update* null_node_update_pointer; + }; + + + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct trie_traits + { + private: + typedef pat_trie_base base_type; + typedef types_traits type_traits; + + public: + typedef typename trie_node_metadata_dispatch::type metadata_type; + typedef base_type::_Metadata metadata; + typedef _ATraits access_traits; + + /// Type for synthesized traits. + typedef __gnu_pbds::detail::synth_access_traits synth_access_traits; + + typedef base_type::_Node_base node; + typedef base_type::_Head head; + typedef base_type::_Leaf leaf; + typedef base_type::_Inode inode; + + typedef base_type::_CIter const_iterator; + typedef const_iterator iterator; + typedef base_type::_CIter const_reverse_iterator; + typedef const_reverse_iterator reverse_iterator; + + /// This is an iterator to an iterator: it iterates over nodes, + /// and de-referencing it returns one of the tree's iterators. + typedef base_type::_Node_citer node_const_iterator; + + typedef node_const_iterator node_iterator; + + /// Type for node update. + typedef Node_Update node_update; + + typedef null_node_update* null_node_update_pointer; + }; + + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp index 24e6744d6..379503e07 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/priority_queue_base_dispatch.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/priority_queue_base_dispatch.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/priority_queue_base_dispatch.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/priority_queue_base_dispatch.hpp index 7e51117ee..c38a11be6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/priority_queue_base_dispatch.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/priority_queue_base_dispatch.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..ea3b3fdae --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/constructors_destructor_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + insert(*(first_it++)); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_RB_TREE_NAME() +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_RB_TREE_NAME(const Cmp_Fn& r_cmp_fn) : + base_type(r_cmp_fn) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_RB_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : + base_type(r_cmp_fn, r_node_update) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_RB_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : + base_type(other) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + base_type::swap(other); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ base_type::m_p_head->m_red = true; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp new file mode 100644 index 000000000..973eb8ad4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp @@ -0,0 +1,81 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/debug_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +assert_node_consistent(const node_pointer p_nd, const char* __file, + int __line) const +{ + if (p_nd == 0) + return 1; + + const size_type l_height = + assert_node_consistent(p_nd->m_p_left, __file, __line); + const size_type r_height = + assert_node_consistent(p_nd->m_p_right, __file, __line); + if (p_nd->m_red) + { + PB_DS_DEBUG_VERIFY(is_effectively_black(p_nd->m_p_left)); + PB_DS_DEBUG_VERIFY(is_effectively_black(p_nd->m_p_right)); + } + PB_DS_DEBUG_VERIFY(l_height == r_height); + return (p_nd->m_red ? 0 : 1) + l_height; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + base_type::assert_valid(__file, __line); + const node_pointer p_head = base_type::m_p_head; + PB_DS_DEBUG_VERIFY(p_head->m_red); + if (p_head->m_p_parent != 0) + { + PB_DS_DEBUG_VERIFY(!p_head->m_p_parent->m_red); + assert_node_consistent(p_head->m_p_parent, __file, __line); + } +} + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp new file mode 100644 index 000000000..a6f30b562 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp @@ -0,0 +1,289 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/erase_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ + point_iterator it = this->find(r_key); + if (it == base_type::end()) + return false; + erase(it); + return true; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +erase(iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + if (it == base_type::end()) + return it; + + iterator ret_it = it; + ++ret_it; + erase_node(it.m_p_nd); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +erase(reverse_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + if (it.m_p_nd == base_type::m_p_head) + return it; + + reverse_iterator ret_it = it; + ++ret_it; + erase_node(it.m_p_nd); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + size_type num_ersd = 0; + iterator it = base_type::begin(); + while (it != base_type::end()) + { + if (pred(*it)) + { + ++num_ersd; + it = erase(it); + } + else + ++it; + } + + PB_DS_ASSERT_VALID((*this)) + return num_ersd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_node(node_pointer p_nd) +{ + remove_node(p_nd); + base_type::actual_erase_node(p_nd); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +remove_node(node_pointer p_z) +{ + this->update_min_max_for_erased_node(p_z); + node_pointer p_y = p_z; + node_pointer p_x = 0; + node_pointer p_new_x_parent = 0; + + if (p_y->m_p_left == 0) + p_x = p_y->m_p_right; + else if (p_y->m_p_right == 0) + p_x = p_y->m_p_left; + else + { + p_y = p_y->m_p_right; + while (p_y->m_p_left != 0) + p_y = p_y->m_p_left; + p_x = p_y->m_p_right; + } + + if (p_y == p_z) + { + p_new_x_parent = p_y->m_p_parent; + if (p_x != 0) + p_x->m_p_parent = p_y->m_p_parent; + + if (base_type::m_p_head->m_p_parent == p_z) + base_type::m_p_head->m_p_parent = p_x; + else if (p_z->m_p_parent->m_p_left == p_z) + { + p_y->m_p_left = p_z->m_p_parent; + p_z->m_p_parent->m_p_left = p_x; + } + else + { + p_y->m_p_left = 0; + p_z->m_p_parent->m_p_right = p_x; + } + } + else + { + p_z->m_p_left->m_p_parent = p_y; + p_y->m_p_left = p_z->m_p_left; + if (p_y != p_z->m_p_right) + { + p_new_x_parent = p_y->m_p_parent; + if (p_x != 0) + p_x->m_p_parent = p_y->m_p_parent; + p_y->m_p_parent->m_p_left = p_x; + p_y->m_p_right = p_z->m_p_right; + p_z->m_p_right->m_p_parent = p_y; + } + else + p_new_x_parent = p_y; + + if (base_type::m_p_head->m_p_parent == p_z) + base_type::m_p_head->m_p_parent = p_y; + else if (p_z->m_p_parent->m_p_left == p_z) + p_z->m_p_parent->m_p_left = p_y; + else + p_z->m_p_parent->m_p_right = p_y; + + p_y->m_p_parent = p_z->m_p_parent; + std::swap(p_y->m_red, p_z->m_red); + p_y = p_z; + } + + this->update_to_top(p_new_x_parent, (node_update* )this); + + if (p_y->m_red) + return; + + remove_fixup(p_x, p_new_x_parent); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +remove_fixup(node_pointer p_x, node_pointer p_new_x_parent) +{ + _GLIBCXX_DEBUG_ASSERT(p_x == 0 || p_x->m_p_parent == p_new_x_parent); + + while (p_x != base_type::m_p_head->m_p_parent && is_effectively_black(p_x)) + if (p_x == p_new_x_parent->m_p_left) + { + node_pointer p_w = p_new_x_parent->m_p_right; + if (p_w->m_red) + { + p_w->m_red = false; + p_new_x_parent->m_red = true; + base_type::rotate_left(p_new_x_parent); + p_w = p_new_x_parent->m_p_right; + } + + if (is_effectively_black(p_w->m_p_left) + && is_effectively_black(p_w->m_p_right)) + { + p_w->m_red = true; + p_x = p_new_x_parent; + p_new_x_parent = p_new_x_parent->m_p_parent; + } + else + { + if (is_effectively_black(p_w->m_p_right)) + { + if (p_w->m_p_left != 0) + p_w->m_p_left->m_red = false; + + p_w->m_red = true; + base_type::rotate_right(p_w); + p_w = p_new_x_parent->m_p_right; + } + + p_w->m_red = p_new_x_parent->m_red; + p_new_x_parent->m_red = false; + + if (p_w->m_p_right != 0) + p_w->m_p_right->m_red = false; + + base_type::rotate_left(p_new_x_parent); + this->update_to_top(p_new_x_parent, (node_update* )this); + break; + } + } + else + { + node_pointer p_w = p_new_x_parent->m_p_left; + if (p_w->m_red == true) + { + p_w->m_red = false; + p_new_x_parent->m_red = true; + base_type::rotate_right(p_new_x_parent); + p_w = p_new_x_parent->m_p_left; + } + + if (is_effectively_black(p_w->m_p_right) + && is_effectively_black(p_w->m_p_left)) + { + p_w->m_red = true; + p_x = p_new_x_parent; + p_new_x_parent = p_new_x_parent->m_p_parent; + } + else + { + if (is_effectively_black(p_w->m_p_left)) + { + if (p_w->m_p_right != 0) + p_w->m_p_right->m_red = false; + + p_w->m_red = true; + base_type::rotate_left(p_w); + p_w = p_new_x_parent->m_p_left; + } + + p_w->m_red = p_new_x_parent->m_red; + p_new_x_parent->m_red = false; + + if (p_w->m_p_left != 0) + p_w->m_p_left->m_red = false; + + base_type::rotate_right(p_new_x_parent); + this->update_to_top(p_new_x_parent, (node_update* )this); + break; + } + } + + if (p_x != 0) + p_x->m_red = false; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp new file mode 100644 index 000000000..916c31355 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp @@ -0,0 +1,39 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/find_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp new file mode 100644 index 000000000..77e69904d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp @@ -0,0 +1,46 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/info_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +is_effectively_black(const node_pointer p_nd) +{ return (p_nd == 0 || !p_nd->m_red); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp new file mode 100644 index 000000000..0a2ab0f0f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp @@ -0,0 +1,115 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/insert_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert(const_reference r_value) +{ + PB_DS_ASSERT_VALID((*this)) + std::pair ins_pair = base_type::insert_leaf(r_value); + if (ins_pair.second == true) + { + ins_pair.first.m_p_nd->m_red = true; + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + insert_fixup(ins_pair.first.m_p_nd); + } + + PB_DS_ASSERT_VALID((*this)) + return ins_pair; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +insert_fixup(node_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd->m_red == true); + while (p_nd != base_type::m_p_head->m_p_parent && p_nd->m_p_parent->m_red) + { + if (p_nd->m_p_parent == p_nd->m_p_parent->m_p_parent->m_p_left) + { + node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_right; + if (p_y != 0 && p_y->m_red) + { + p_nd->m_p_parent->m_red = false; + p_y->m_red = false; + p_nd->m_p_parent->m_p_parent->m_red = true; + p_nd = p_nd->m_p_parent->m_p_parent; + } + else + { + if (p_nd == p_nd->m_p_parent->m_p_right) + { + p_nd = p_nd->m_p_parent; + base_type::rotate_left(p_nd); + } + p_nd->m_p_parent->m_red = false; + p_nd->m_p_parent->m_p_parent->m_red = true; + base_type::rotate_right(p_nd->m_p_parent->m_p_parent); + } + } + else + { + node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_left; + if (p_y != 0 && p_y->m_red) + { + p_nd->m_p_parent->m_red = false; + p_y->m_red = false; + p_nd->m_p_parent->m_p_parent->m_red = true; + p_nd = p_nd->m_p_parent->m_p_parent; + } + else + { + if (p_nd == p_nd->m_p_parent->m_p_left) + { + p_nd = p_nd->m_p_parent; + base_type::rotate_right(p_nd); + } + p_nd->m_p_parent->m_red = false; + p_nd->m_p_parent->m_p_parent->m_red = true; + base_type::rotate_left(p_nd->m_p_parent->m_p_parent); + } + } + } + + base_type::update_to_top(p_nd, (node_update* )this); + base_type::m_p_head->m_p_parent->m_red = false; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/node.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/node.hpp new file mode 100644 index 000000000..76a68f61d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/node.hpp @@ -0,0 +1,139 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/node.hpp + * Contains an implementation for rb_tree_. + */ + +#ifndef PB_DS_RB_TREE_NODE_HPP +#define PB_DS_RB_TREE_NODE_HPP + +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Node for Red-Black trees. + template + struct rb_tree_node_ + { + public: + typedef Value_Type value_type; + typedef Metadata metadata_type; + + typedef + typename _Alloc::template rebind< + rb_tree_node_< + Value_Type, + Metadata, + _Alloc> >::other::pointer + node_pointer; + + typedef + typename _Alloc::template rebind< + metadata_type>::other::reference + metadata_reference; + + typedef + typename _Alloc::template rebind< + metadata_type>::other::const_reference + metadata_const_reference; + + bool + special() const + { return m_red; } + + metadata_const_reference + get_metadata() const + { return m_metadata; } + + metadata_reference + get_metadata() + { return m_metadata; } + +#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ + void + trace() const + { + std::cout << PB_DS_V2F(m_value) <<(m_red? " " : " ") + << "(" << m_metadata << ")"; + } +#endif + + node_pointer m_p_left; + node_pointer m_p_right; + node_pointer m_p_parent; + value_type m_value; + bool m_red; + metadata_type m_metadata; + }; + + template + struct rb_tree_node_ + { + public: + typedef Value_Type value_type; + typedef null_type metadata_type; + + typedef + typename _Alloc::template rebind< + rb_tree_node_< + Value_Type, + null_type, + _Alloc> >::other::pointer + node_pointer; + + bool + special() const + { return m_red; } + +#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ + void + trace() const + { std::cout << PB_DS_V2F(m_value) <<(m_red? " " : " "); } +#endif + + node_pointer m_p_left; + node_pointer m_p_right; + node_pointer m_p_parent; + value_type m_value; + bool m_red; + }; + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp index 52a357da8..377cf8a3f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp new file mode 100644 index 000000000..a29cf02f2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp @@ -0,0 +1,306 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/split_join_fn_imps.hpp + * Contains an implementation for rb_tree_. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + if (base_type::join_prep(other) == false) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + const node_pointer p_x = other.split_min(); + join_imp(p_x, other.m_p_head->m_p_parent); + base_type::join_finish(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +join_imp(node_pointer p_x, node_pointer p_r) +{ + _GLIBCXX_DEBUG_ASSERT(p_x != 0); + if (p_r != 0) + p_r->m_red = false; + + const size_type h = black_height(base_type::m_p_head->m_p_parent); + const size_type other_h = black_height(p_r); + node_pointer p_x_l; + node_pointer p_x_r; + std::pair join_pos; + const bool right_join = h >= other_h; + if (right_join) + { + join_pos = find_join_pos_right(base_type::m_p_head->m_p_parent, + h, other_h); + p_x_l = join_pos.first; + p_x_r = p_r; + } + else + { + p_x_l = base_type::m_p_head->m_p_parent; + base_type::m_p_head->m_p_parent = p_r; + if (p_r != 0) + p_r->m_p_parent = base_type::m_p_head; + + join_pos = find_join_pos_left(base_type::m_p_head->m_p_parent, + h, other_h); + p_x_r = join_pos.first; + } + + node_pointer p_parent = join_pos.second; + if (p_parent == base_type::m_p_head) + { + base_type::m_p_head->m_p_parent = p_x; + p_x->m_p_parent = base_type::m_p_head; + } + else + { + p_x->m_p_parent = p_parent; + if (right_join) + p_x->m_p_parent->m_p_right = p_x; + else + p_x->m_p_parent->m_p_left = p_x; + } + + p_x->m_p_left = p_x_l; + if (p_x_l != 0) + p_x_l->m_p_parent = p_x; + + p_x->m_p_right = p_x_r; + if (p_x_r != 0) + p_x_r->m_p_parent = p_x; + + p_x->m_red = true; + + base_type::initialize_min_max(); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + base_type::update_to_top(p_x, (node_update* )this); + insert_fixup(p_x); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +split_min() +{ + node_pointer p_min = base_type::m_p_head->m_p_left; + +#ifdef _GLIBCXX_DEBUG + const node_pointer p_head = base_type::m_p_head; + _GLIBCXX_DEBUG_ASSERT(p_min != p_head); +#endif + + remove_node(p_min); + return p_min; +} + +PB_DS_CLASS_T_DEC +std::pair< + typename PB_DS_CLASS_C_DEC::node_pointer, + typename PB_DS_CLASS_C_DEC::node_pointer> +PB_DS_CLASS_C_DEC:: +find_join_pos_right(node_pointer p_l, size_type h_l, size_type h_r) +{ + _GLIBCXX_DEBUG_ASSERT(h_l >= h_r); + + if (base_type::m_p_head->m_p_parent == 0) + return (std::make_pair((node_pointer)0, base_type::m_p_head)); + + node_pointer p_l_parent = base_type::m_p_head; + while (h_l > h_r) + { + if (p_l->m_red == false) + { + _GLIBCXX_DEBUG_ASSERT(h_l > 0); + --h_l; + } + + p_l_parent = p_l; + p_l = p_l->m_p_right; + } + + if (!is_effectively_black(p_l)) + { + p_l_parent = p_l; + p_l = p_l->m_p_right; + } + + _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_l)); + _GLIBCXX_DEBUG_ASSERT(black_height(p_l) == h_r); + _GLIBCXX_DEBUG_ASSERT(p_l == 0 || p_l->m_p_parent == p_l_parent); + return std::make_pair(p_l, p_l_parent); +} + +PB_DS_CLASS_T_DEC +std::pair< + typename PB_DS_CLASS_C_DEC::node_pointer, + typename PB_DS_CLASS_C_DEC::node_pointer> +PB_DS_CLASS_C_DEC:: +find_join_pos_left(node_pointer p_r, size_type h_l, size_type h_r) +{ + _GLIBCXX_DEBUG_ASSERT(h_r > h_l); + if (base_type::m_p_head->m_p_parent == 0) + return (std::make_pair((node_pointer)0, + base_type::m_p_head)); + node_pointer p_r_parent = base_type::m_p_head; + while (h_r > h_l) + { + if (p_r->m_red == false) + { + _GLIBCXX_DEBUG_ASSERT(h_r > 0); + --h_r; + } + + p_r_parent = p_r; + p_r = p_r->m_p_left; + } + + if (!is_effectively_black(p_r)) + { + p_r_parent = p_r; + p_r = p_r->m_p_left; + } + + _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_r)); + _GLIBCXX_DEBUG_ASSERT(black_height(p_r) == h_l); + _GLIBCXX_DEBUG_ASSERT(p_r == 0 || p_r->m_p_parent == p_r_parent); + return std::make_pair(p_r, p_r_parent); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +black_height(node_pointer p_nd) +{ + size_type h = 1; + while (p_nd != 0) + { + if (p_nd->m_red == false) + ++h; + p_nd = p_nd->m_p_left; + } + return h; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + if (base_type::split_prep(r_key, other) == false) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + PB_DS_STRUCT_ONLY_ASSERT_VALID(other) + node_pointer p_nd = this->upper_bound(r_key).m_p_nd; + do + { + node_pointer p_next_nd = p_nd->m_p_parent; + if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) + split_at_node(p_nd, other); + + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + PB_DS_STRUCT_ONLY_ASSERT_VALID(other) + p_nd = p_next_nd; + } + while (p_nd != base_type::m_p_head); + + base_type::split_finish(other); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +split_at_node(node_pointer p_nd, PB_DS_CLASS_C_DEC& other) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + + node_pointer p_l = p_nd->m_p_left; + node_pointer p_r = p_nd->m_p_right; + node_pointer p_parent = p_nd->m_p_parent; + if (p_parent == base_type::m_p_head) + { + base_type::m_p_head->m_p_parent = p_l; + if (p_l != 0) + { + p_l->m_p_parent = base_type::m_p_head; + p_l->m_red = false; + } + } + else + { + if (p_parent->m_p_left == p_nd) + p_parent->m_p_left = p_l; + else + p_parent->m_p_right = p_l; + + if (p_l != 0) + p_l->m_p_parent = p_parent; + + this->update_to_top(p_parent, (node_update* )this); + + if (!p_nd->m_red) + remove_fixup(p_l, p_parent); + } + + base_type::initialize_min_max(); + other.join_imp(p_nd, p_r); + PB_DS_STRUCT_ONLY_ASSERT_VALID((*this)) + PB_DS_STRUCT_ONLY_ASSERT_VALID(other) +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/traits.hpp new file mode 100644 index 000000000..0ad2b9c39 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rb_tree_map_/traits.hpp @@ -0,0 +1,102 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rb_tree_map_/traits.hpp + * Contains an implementation for rb_tree_. + */ + +#ifndef PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP +#define PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP + +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct tree_traits + : public bin_search_tree_traits< + Key, + Mapped, + Cmp_Fn, + Node_Update, + rb_tree_node_< + typename types_traits::value_type, + typename tree_node_metadata_dispatch::type, + _Alloc>, + _Alloc> + { }; + + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct tree_traits + : public bin_search_tree_traits< + Key, + null_type, + Cmp_Fn, + Node_Update, + rb_tree_node_< + typename types_traits::value_type, + typename tree_node_metadata_dispatch::type, + _Alloc>, + _Alloc> + { }; + + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..59d48cac7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,84 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rc_binomial_heap_/constructors_destructor_fn_imps.hpp + * Contains an implementation for rc_binomial_heap_. + */ + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +rc_binomial_heap() +{ + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +rc_binomial_heap(const Cmp_Fn& r_cmp_fn) +: base_type(r_cmp_fn) +{ + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +rc_binomial_heap(const PB_DS_CLASS_C_DEC& other) +: base_type(other) +{ + make_binomial_heap(); + base_type::find_max(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~rc_binomial_heap() +{ } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + base_type::swap(other); + m_rc.swap(other.m_rc); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp new file mode 100644 index 000000000..3277cee95 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp @@ -0,0 +1,121 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rc_binomial_heap_/debug_fn_imps.hpp + * Contains an implementation for rc_binomial_heap_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + base_type::assert_valid(false, __file, __line); + if (!base_type::empty()) + { + PB_DS_DEBUG_VERIFY(base_type::m_p_max != 0); + base_type::assert_max(__file, __line); + } + + m_rc.assert_valid(__file, __line); + + if (m_rc.empty()) + { + base_type::assert_valid(true, __file, __line); + PB_DS_DEBUG_VERIFY(next_2_pointer(base_type::m_p_root) == 0); + return; + } + + node_const_pointer p_nd = next_2_pointer(base_type::m_p_root); + typename rc_t::const_iterator it = m_rc.end(); + --it; + + while (p_nd != 0) + { + PB_DS_DEBUG_VERIFY(*it == p_nd); + node_const_pointer p_next = p_nd->m_p_next_sibling; + PB_DS_DEBUG_VERIFY(p_next != 0); + PB_DS_DEBUG_VERIFY(p_nd->m_metadata == p_next->m_metadata); + PB_DS_DEBUG_VERIFY(p_next->m_p_next_sibling == 0 || + p_next->m_metadata < p_next->m_p_next_sibling->m_metadata); + + --it; + p_nd = next_2_pointer(next_after_0_pointer(p_nd)); + } + PB_DS_DEBUG_VERIFY(it + 1 == m_rc.begin()); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_const_pointer +PB_DS_CLASS_C_DEC:: +next_2_pointer(node_const_pointer p_nd) +{ + if (p_nd == 0) + return 0; + + node_pointer p_next = p_nd->m_p_next_sibling; + + if (p_next == 0) + return 0; + + if (p_nd->m_metadata == p_next->m_metadata) + return p_nd; + + return next_2_pointer(p_next); +} + +PB_DS_CLASS_T_DEC +typename PB_DS_CLASS_C_DEC::node_const_pointer +PB_DS_CLASS_C_DEC:: +next_after_0_pointer(node_const_pointer p_nd) +{ + if (p_nd == 0) + return 0; + + node_pointer p_next = p_nd->m_p_next_sibling; + + if (p_next == 0) + return 0; + + if (p_nd->m_metadata < p_next->m_metadata) + return p_next; + + return next_after_0_pointer(p_next); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp new file mode 100644 index 000000000..47fbaa2d7 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp @@ -0,0 +1,107 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rc_binomial_heap_/erase_fn_imps.hpp + * Contains an implementation for rc_binomial_heap_. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +pop() +{ + make_binomial_heap(); + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + base_type::pop(); + base_type::find_max(); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +clear() +{ + base_type::clear(); + m_rc.clear(); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +make_binomial_heap() +{ + node_pointer p_nd = base_type::m_p_root; + while (p_nd != 0) + { + node_pointer p_next = p_nd->m_p_next_sibling; + if (p_next == 0) + p_nd = p_next; + else if (p_nd->m_metadata == p_next->m_metadata) + p_nd = link_with_next_sibling(p_nd); + else if (p_nd->m_metadata < p_next->m_metadata) + p_nd = p_next; +#ifdef _GLIBCXX_DEBUG + else + _GLIBCXX_DEBUG_ASSERT(0); +#endif + } + + m_rc.clear(); +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + make_binomial_heap(); + const size_type ersd = base_type::erase_if(pred); + base_type::find_max(); + PB_DS_ASSERT_VALID((*this)) + return ersd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase(point_iterator it) +{ + make_binomial_heap(); + base_type::erase(it); + base_type::find_max(); +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp new file mode 100644 index 000000000..73a1dd58c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp @@ -0,0 +1,154 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rc_binomial_heap_/insert_fn_imps.hpp + * Contains an implementation for rc_binomial_heap_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +push(const_reference r_val) +{ + PB_DS_ASSERT_VALID((*this)) + + make_0_exposed(); + + PB_DS_ASSERT_VALID((*this)) + + node_pointer p_nd = base_type::get_new_node_for_insert(r_val); + + p_nd->m_p_l_child = p_nd->m_p_prev_or_parent = 0; + p_nd->m_metadata = 0; + + if (base_type::m_p_max == 0 || Cmp_Fn::operator()(base_type::m_p_max->m_value, r_val)) + base_type::m_p_max = p_nd; + + p_nd->m_p_next_sibling = base_type::m_p_root; + + if (base_type::m_p_root != 0) + base_type::m_p_root->m_p_prev_or_parent = p_nd; + + base_type::m_p_root = p_nd; + + if (p_nd->m_p_next_sibling != 0&& p_nd->m_p_next_sibling->m_metadata == 0) + m_rc.push(p_nd); + + PB_DS_ASSERT_VALID((*this)) + + return point_iterator(p_nd); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +modify(point_iterator it, const_reference r_new_val) +{ + PB_DS_ASSERT_VALID((*this)) + + make_binomial_heap(); + + base_type::modify(it, r_new_val); + + base_type::find_max(); + + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +link_with_next_sibling(node_pointer p_nd) +{ + node_pointer p_next = p_nd->m_p_next_sibling; + + _GLIBCXX_DEBUG_ASSERT(p_next != 0); + _GLIBCXX_DEBUG_ASSERT(p_next->m_p_prev_or_parent == p_nd); + + if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value)) + { + p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent; + + if (p_next->m_p_prev_or_parent == 0) + base_type::m_p_root = p_next; + else + p_next->m_p_prev_or_parent->m_p_next_sibling = p_next; + + if (base_type::m_p_max == p_nd) + base_type::m_p_max = p_next; + + base_type::make_child_of(p_nd, p_next); + + ++p_next->m_metadata; + + return p_next; + } + + p_nd->m_p_next_sibling = p_next->m_p_next_sibling; + + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd; + + if (base_type::m_p_max == p_next) + base_type::m_p_max = p_nd; + + base_type::make_child_of(p_next, p_nd); + + ++p_nd->m_metadata; + + return p_nd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +make_0_exposed() +{ + if (m_rc.empty()) + return; + + node_pointer p_nd = m_rc.top(); + + m_rc.pop(); + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling != 0); + _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata); + + node_pointer p_res = link_with_next_sibling(p_nd); + + if (p_res->m_p_next_sibling != 0&& p_res->m_metadata == p_res->m_p_next_sibling->m_metadata) + m_rc.push(p_res); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp index d649abc32..0bbdc73ec 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp index 4440018a1..562af9f70 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp new file mode 100644 index 000000000..3d606db0f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp @@ -0,0 +1,77 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rc_binomial_heap_/split_join_fn_imps.hpp + * Contains an implementation for rc_binomial_heap_. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +split(Pred pred, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + make_binomial_heap(); + other.make_binomial_heap(); + base_type::split(pred, other); + base_type::find_max(); + other.find_max(); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + make_binomial_heap(); + other.make_binomial_heap(); + base_type::join(other); + base_type::find_max(); + other.find_max(); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp new file mode 100644 index 000000000..21d16ff74 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp @@ -0,0 +1,52 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file rc_binomial_heap_/trace_fn_imps.hpp + * Contains an implementation for rc_binomial_heap_. + */ + +#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + base_type::trace(); + m_rc.trace(); +} + +#endif // #ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp index fc4802d97..ba87b7655 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp index 55d89b452..9882262fe 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp index 978a08ba5..7dd5759cb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp index ba36758bf..3c6cf0fb9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp index 71047bc9a..2c79dc9b1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp index f8a619b7f..f3fc5632a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp index 97f4ba711..7bb5316d5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp index 764aeec41..1d6cb3a70 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp index 07085fca7..66b595dde 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..fdeee71c4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,102 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/constructors_destructor_fn_imps.hpp + * Contains an implementation class for splay_tree_. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + insert(*(first_it++)); +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_S_TREE_NAME() +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_S_TREE_NAME(const Cmp_Fn& r_cmp_fn) : + base_type(r_cmp_fn) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_S_TREE_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) : + base_type(r_cmp_fn, r_node_update) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +PB_DS_S_TREE_NAME(const PB_DS_CLASS_C_DEC& other) : + base_type(other) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + base_type::swap(other); + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ base_type::m_p_head->m_special = true; } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp new file mode 100644 index 000000000..d468dc411 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp @@ -0,0 +1,75 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/debug_fn_imps.hpp + * Contains an implementation class for splay_tree_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + base_type::assert_valid(__file, __line); + const node_pointer p_head = base_type::m_p_head; + assert_special_imp(p_head, __file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_special_imp(const node_pointer p_nd, + const char* __file, int __line) const +{ + if (p_nd == 0) + return; + + if (p_nd == base_type::m_p_head) + { + PB_DS_DEBUG_VERIFY(p_nd->m_special); + assert_special_imp(p_nd->m_p_parent, __file, __line); + return; + } + + PB_DS_DEBUG_VERIFY(!p_nd->m_special); + assert_special_imp(p_nd->m_p_left, __file, __line); + assert_special_imp(p_nd->m_p_right, __file, __line); +} + +#endif + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp new file mode 100644 index 000000000..4310cd87c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp @@ -0,0 +1,157 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/erase_fn_imps.hpp + * Contains an implementation class for splay_tree_. + */ + +PB_DS_CLASS_T_DEC +inline bool +PB_DS_CLASS_C_DEC:: +erase(key_const_reference r_key) +{ + point_iterator it = find(r_key); + if (it == base_type::end()) + return false; + erase(it); + return true; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +erase(iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + if (it == base_type::end()) + return it; + iterator ret_it = it; + ++ret_it; + erase_node(it.m_p_nd); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::reverse_iterator +PB_DS_CLASS_C_DEC:: +erase(reverse_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + if (it.m_p_nd == base_type::m_p_head) + return (it); + reverse_iterator ret_it = it; + ++ret_it; + erase_node(it.m_p_nd); + PB_DS_ASSERT_VALID((*this)) + return ret_it; +} + +PB_DS_CLASS_T_DEC +template +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + size_type num_ersd = 0; + iterator it = base_type::begin(); + while (it != base_type::end()) + { + if (pred(*it)) + { + ++num_ersd; + it = erase(it); + } + else + ++it; + } + PB_DS_ASSERT_VALID((*this)) + return num_ersd; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase_node(node_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + splay(p_nd); + + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent); + + node_pointer p_l = p_nd->m_p_left; + node_pointer p_r = p_nd->m_p_right; + + base_type::update_min_max_for_erased_node(p_nd); + base_type::actual_erase_node(p_nd); + if (p_r == 0) + { + base_type::m_p_head->m_p_parent = p_l; + if (p_l != 0) + p_l->m_p_parent = base_type::m_p_head; + PB_DS_ASSERT_VALID((*this)) + return; + } + + node_pointer p_target_r = leftmost(p_r); + _GLIBCXX_DEBUG_ASSERT(p_target_r != 0); + p_r->m_p_parent = base_type::m_p_head; + base_type::m_p_head->m_p_parent = p_r; + splay(p_target_r); + + _GLIBCXX_DEBUG_ONLY(p_target_r->m_p_left = 0); + _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_parent == this->m_p_head); + _GLIBCXX_DEBUG_ASSERT(this->m_p_head->m_p_parent == p_target_r); + + p_target_r->m_p_left = p_l; + if (p_l != 0) + p_l->m_p_parent = p_target_r; + PB_DS_ASSERT_VALID((*this)) + this->apply_update(p_target_r, (node_update*)this); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +leftmost(node_pointer p_nd) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + while (p_nd->m_p_left != 0) + p_nd = p_nd->m_p_left; + return p_nd; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp new file mode 100644 index 000000000..cc7ae930c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp @@ -0,0 +1,100 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/find_fn_imps.hpp + * Contains an implementation class for splay_tree_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) +{ + node_pointer p_found = find_imp(r_key); + if (p_found != base_type::m_p_head) + splay(p_found); + return point_iterator(p_found); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_const_iterator +PB_DS_CLASS_C_DEC:: +find(key_const_reference r_key) const +{ + const node_pointer p_found = find_imp(r_key); + if (p_found != base_type::m_p_head) + const_cast(this)->splay(p_found); + return point_iterator(p_found); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +find_imp(key_const_reference r_key) +{ + _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid(__FILE__, + __LINE__);) + node_pointer p_nd = base_type::m_p_head->m_p_parent; + while (p_nd != 0) + if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) + { + if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) + return p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + return base_type::m_p_head; +} + +PB_DS_CLASS_T_DEC +inline const typename PB_DS_CLASS_C_DEC::node_pointer +PB_DS_CLASS_C_DEC:: +find_imp(key_const_reference r_key) const +{ + PB_DS_ASSERT_VALID((*this)) + node_pointer p_nd = base_type::m_p_head->m_p_parent; + while (p_nd != 0) + if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key)) + { + if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value))) + return p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + return base_type::m_p_head; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp new file mode 100644 index 000000000..16ff46643 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp @@ -0,0 +1,39 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/info_fn_imps.hpp + * Contains an implementation. + */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp new file mode 100644 index 000000000..de032ebfc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp @@ -0,0 +1,94 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/insert_fn_imps.hpp + * Contains an implementation class for splay_tree_. + */ + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert(const_reference r_value) +{ + PB_DS_ASSERT_VALID((*this)) + std::pair ins_pair = insert_leaf_imp(r_value); + ins_pair.first.m_p_nd->m_special = false; + PB_DS_ASSERT_VALID((*this)) + splay(ins_pair.first.m_p_nd); + PB_DS_ASSERT_VALID((*this)) + return ins_pair; +} + +PB_DS_CLASS_T_DEC +inline std::pair +PB_DS_CLASS_C_DEC:: +insert_leaf_imp(const_reference r_value) +{ + _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid(__FILE__, + __LINE__);) + if (base_type::m_size == 0) + return std::make_pair(base_type::insert_imp_empty(r_value), true); + + node_pointer p_nd = base_type::m_p_head->m_p_parent; + node_pointer p_pot = base_type::m_p_head; + + while (p_nd != 0) + if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), PB_DS_V2F(r_value))) + { + if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), PB_DS_V2F(p_nd->m_value))) + { + return std::make_pair(point_iterator(p_nd), false); + } + p_pot = p_nd; + p_nd = p_nd->m_p_left; + } + else + p_nd = p_nd->m_p_right; + + if (p_pot == base_type::m_p_head) + return std::make_pair(base_type::insert_leaf_new(r_value, base_type::m_p_head->m_p_right, false), true); + + PB_DS_CHECK_KEY_DOES_NOT_EXIST(PB_DS_V2F(r_value)) + + p_nd = p_pot->m_p_left; + if (p_nd == 0) + return (std::make_pair(base_type::insert_leaf_new(r_value, p_pot, true), true)); + + while (p_nd->m_p_right != 0) + p_nd = p_nd->m_p_right; + + return std::make_pair(this->insert_leaf_new(r_value, p_nd, false), true); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/node.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/node.hpp new file mode 100644 index 000000000..9dcf1f324 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/node.hpp @@ -0,0 +1,126 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/node.hpp + * Contains an implementation struct for splay_tree_'s node. + */ + +#ifndef PB_DS_SPLAY_TREE_NODE_HPP +#define PB_DS_SPLAY_TREE_NODE_HPP + +namespace __gnu_pbds +{ + namespace detail + { + /// Node for splay tree. + template + struct splay_tree_node_ + { + public: + typedef Value_Type value_type; + typedef Metadata metadata_type; + + typedef + typename _Alloc::template rebind< + splay_tree_node_ >::other::pointer + node_pointer; + + typedef + typename _Alloc::template rebind::other::reference + metadata_reference; + + typedef + typename _Alloc::template rebind::other::const_reference + metadata_const_reference; + +#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ + void + trace() const + { std::cout << PB_DS_V2F(m_value) << "(" << m_metadata << ")"; } +#endif + + inline bool + special() const + { return m_special; } + + inline metadata_const_reference + get_metadata() const + { return m_metadata; } + + inline metadata_reference + get_metadata() + { return m_metadata; } + + value_type m_value; + bool m_special; + node_pointer m_p_left; + node_pointer m_p_right; + node_pointer m_p_parent; + metadata_type m_metadata; + }; + + template + struct splay_tree_node_ + { + public: + typedef Value_Type value_type; + typedef null_type metadata_type; + + typedef + typename _Alloc::template rebind< + splay_tree_node_ >::other::pointer + node_pointer; + + inline bool + special() const + { return m_special; } + +#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_ + void + trace() const + { std::cout << PB_DS_V2F(m_value); } +#endif + + node_pointer m_p_left; + node_pointer m_p_right; + node_pointer m_p_parent; + value_type m_value; + bool m_special; + }; + } // namespace detail +} // namespace __gnu_pbds + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp index 345cf31b6..4587ac602 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp index 8c6df3a80..5ef331099 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp new file mode 100644 index 000000000..3dfd65da3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp @@ -0,0 +1,112 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/split_join_fn_imps.hpp + * Contains an implementation class for splay_tree_. + */ + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + if (base_type::join_prep(other) == false) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + node_pointer p_target_r = other.leftmost(other.m_p_head); + _GLIBCXX_DEBUG_ASSERT(p_target_r != 0); + other.splay(p_target_r); + + _GLIBCXX_DEBUG_ASSERT(p_target_r == other.m_p_head->m_p_parent); + _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left == 0); + + p_target_r->m_p_left = base_type::m_p_head->m_p_parent; + + _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left != 0); + p_target_r->m_p_left->m_p_parent = p_target_r; + + base_type::m_p_head->m_p_parent = p_target_r; + p_target_r->m_p_parent = base_type::m_p_head; + + this->apply_update(p_target_r, (node_update*)this); + base_type::join_finish(other); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +split(key_const_reference r_key, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + if (base_type::split_prep(r_key, other) == false) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + node_pointer p_upper_bound = this->upper_bound(r_key).m_p_nd; + _GLIBCXX_DEBUG_ASSERT(p_upper_bound != 0); + + splay(p_upper_bound); + _GLIBCXX_DEBUG_ASSERT(p_upper_bound->m_p_parent == this->m_p_head); + + node_pointer p_new_root = p_upper_bound->m_p_left; + _GLIBCXX_DEBUG_ASSERT(p_new_root != 0); + + base_type::m_p_head->m_p_parent = p_new_root; + p_new_root->m_p_parent = base_type::m_p_head; + other.m_p_head->m_p_parent = p_upper_bound; + p_upper_bound->m_p_parent = other.m_p_head; + p_upper_bound->m_p_left = 0; + this->apply_update(p_upper_bound, (node_update*)this); + base_type::split_finish(other); + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/traits.hpp new file mode 100644 index 000000000..01d34f3c2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/splay_tree_/traits.hpp @@ -0,0 +1,95 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file splay_tree_/traits.hpp + * Contains an implementation for splay_tree_. + */ + +#ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP +#define PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP + +#include + +namespace __gnu_pbds +{ + namespace detail + { + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct tree_traits + : public bin_search_tree_traits::value_type, + typename tree_node_metadata_dispatch::type, + _Alloc>, + _Alloc> + { }; + + /// Specialization. + /// @ingroup traits + template + class Node_Update, + typename _Alloc> + struct tree_traits + : public bin_search_tree_traits::value_type, + typename tree_node_metadata_dispatch::type, + _Alloc>, + _Alloc> + { }; + + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/standard_policies.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/standard_policies.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/standard_policies.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/standard_policies.hpp index bcaecec64..3a105f57e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/standard_policies.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/standard_policies.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp new file mode 100644 index 000000000..a9d0bafcb --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp @@ -0,0 +1,105 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/constructors_destructor_fn_imps.hpp + * Contains an implementation for thin_heap_. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +copy_from_range(It first_it, It last_it) +{ + while (first_it != last_it) + push(*(first_it++)); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +thin_heap() : m_p_max(0) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +thin_heap(const Cmp_Fn& r_cmp_fn) +: base_type(r_cmp_fn), m_p_max(0) +{ + initialize(); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +thin_heap(const PB_DS_CLASS_C_DEC& other) +: base_type(other) +{ + initialize(); + m_p_max = base_type::m_p_root; + for (node_pointer p_nd = base_type::m_p_root; p_nd != 0; + p_nd = p_nd->m_p_next_sibling) + if (Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value)) + m_p_max = p_nd; + + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +swap(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + base_type::swap(other); + std::swap(m_p_max, other.m_p_max); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~thin_heap() +{ } + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +initialize() +{ std::fill(m_a_aux, m_a_aux + max_rank, static_cast(0)); } + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp new file mode 100644 index 000000000..8a90aef93 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp @@ -0,0 +1,119 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/debug_fn_imps.hpp + * Contains an implementation for thin_heap_. + */ + +#ifdef _GLIBCXX_DEBUG + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_valid(const char* __file, int __line) const +{ + base_type::assert_valid(__file, __line); + assert_node_consistent(base_type::m_p_root, true, __file, __line); + assert_max(__file, __line); + assert_aux_null(__file, __line); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_aux_null(const char* __file, int __line) const +{ + for (size_type i = 0; i < max_rank; ++i) + PB_DS_DEBUG_VERIFY(m_a_aux[i] == 0); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_max(const char* __file, int __line) const +{ + if (m_p_max == 0) + { + PB_DS_DEBUG_VERIFY(base_type::empty()); + return; + } + + PB_DS_DEBUG_VERIFY(!base_type::empty()); + PB_DS_DEBUG_VERIFY(base_type::parent(m_p_max) == 0); + PB_DS_DEBUG_VERIFY(m_p_max->m_p_prev_or_parent == 0); + for (const_iterator it = base_type::begin(); it != base_type::end(); ++it) + PB_DS_DEBUG_VERIFY(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value)); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +assert_node_consistent(node_const_pointer p_nd, bool root, + const char* __file, int __line) const +{ + base_type::assert_node_consistent(p_nd, root, __file, __line); + if (p_nd == 0) + return; + + assert_node_consistent(p_nd->m_p_next_sibling, root, __file, __line); + assert_node_consistent(p_nd->m_p_l_child, false, __file, __line); + if (!root) + { + if (p_nd->m_metadata == 0) + PB_DS_DEBUG_VERIFY(p_nd->m_p_next_sibling == 0); + else + PB_DS_DEBUG_VERIFY(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata + 1); + } + + if (p_nd->m_p_l_child != 0) + PB_DS_DEBUG_VERIFY(p_nd->m_p_l_child->m_metadata + 1 == base_type::degree(p_nd)); + + const bool unmarked_valid = + (p_nd->m_p_l_child == 0 && p_nd->m_metadata == 0) + || (p_nd->m_p_l_child != 0 + && p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 1); + + const bool marked_valid = + (p_nd->m_p_l_child == 0 && p_nd->m_metadata == 1) + || (p_nd->m_p_l_child != 0 + && p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 2); + + PB_DS_DEBUG_VERIFY(unmarked_valid || marked_valid); + if (root) + PB_DS_DEBUG_VERIFY(unmarked_valid); +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp new file mode 100644 index 000000000..77db25ebf --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp @@ -0,0 +1,255 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/erase_fn_imps.hpp + * Contains an implementation for thin_heap_. + */ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +pop() +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); + + node_pointer p_nd = m_p_max; + remove_max_node(); + base_type::actual_erase_node(p_nd); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +remove_max_node() +{ + to_aux_except_max(); + make_from_aux(); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +to_aux_except_max() +{ + node_pointer p_add = base_type::m_p_root; + while (p_add != m_p_max) + { + node_pointer p_next_add = p_add->m_p_next_sibling; + add_to_aux(p_add); + p_add = p_next_add; + } + + p_add = m_p_max->m_p_l_child; + while (p_add != 0) + { + node_pointer p_next_add = p_add->m_p_next_sibling; + p_add->m_metadata = p_add->m_p_l_child == 0 ? + 0 : p_add->m_p_l_child->m_metadata + 1; + + add_to_aux(p_add); + p_add = p_next_add; + } + + p_add = m_p_max->m_p_next_sibling; + while (p_add != 0) + { + node_pointer p_next_add = p_add->m_p_next_sibling; + add_to_aux(p_add); + p_add = p_next_add; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +add_to_aux(node_pointer p_nd) +{ + size_type r = p_nd->m_metadata; + while (m_a_aux[r] != 0) + { + _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound()); + if (Cmp_Fn::operator()(m_a_aux[r]->m_value, p_nd->m_value)) + make_child_of(m_a_aux[r], p_nd); + else + { + make_child_of(p_nd, m_a_aux[r]); + p_nd = m_a_aux[r]; + } + + m_a_aux[r] = 0; + ++r; + } + + _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound()); + + m_a_aux[r] = p_nd; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +make_child_of(node_pointer p_nd, node_pointer p_new_parent) +{ + _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_new_parent->m_metadata); + _GLIBCXX_DEBUG_ASSERT(m_a_aux[p_nd->m_metadata] == p_nd || + m_a_aux[p_nd->m_metadata] == p_new_parent); + + ++p_new_parent->m_metadata; + base_type::make_child_of(p_nd, p_new_parent); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +make_from_aux() +{ + base_type::m_p_root = m_p_max = 0; + const size_type rnk_bnd = rank_bound(); + size_type i = 0; + while (i < rnk_bnd) + { + if (m_a_aux[i] != 0) + { + make_root_and_link(m_a_aux[i]); + m_a_aux[i] = 0; + } + ++i; + } + + PB_DS_ASSERT_AUX_NULL((*this)) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +remove_node(node_pointer p_nd) +{ + node_pointer p_parent = p_nd; + while (base_type::parent(p_parent) != 0) + p_parent = base_type::parent(p_parent); + + base_type::bubble_to_top(p_nd); + m_p_max = p_nd; + + node_pointer p_fix = base_type::m_p_root; + while (p_fix != 0&& p_fix->m_p_next_sibling != p_parent) + p_fix = p_fix->m_p_next_sibling; + + if (p_fix != 0) + p_fix->m_p_next_sibling = p_nd; + + remove_max_node(); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +clear() +{ + base_type::clear(); + m_p_max = 0; +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +erase(point_iterator it) +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + + node_pointer p_nd = it.m_p_nd; + remove_node(p_nd); + base_type::actual_erase_node(p_nd); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +template +typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +erase_if(Pred pred) +{ + PB_DS_ASSERT_VALID((*this)) + if (base_type::empty()) + { + PB_DS_ASSERT_VALID((*this)) + return 0; + } + + base_type::to_linked_list(); + node_pointer p_out = base_type::prune(pred); + size_type ersd = 0; + while (p_out != 0) + { + ++ersd; + node_pointer p_next = p_out->m_p_next_sibling; + base_type::actual_erase_node(p_out); + p_out = p_next; + } + + node_pointer p_cur = base_type::m_p_root; + m_p_max = base_type::m_p_root = 0; + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + make_root_and_link(p_cur); + p_cur = p_next; + } + + PB_DS_ASSERT_VALID((*this)) + return ersd; +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +rank_bound() +{ + using namespace std; + const size_t* const p_upper = + std::upper_bound(g_a_rank_bounds, + g_a_rank_bounds + num_distinct_rank_bounds, + base_type::m_size); + + if (p_upper == g_a_rank_bounds + num_distinct_rank_bounds) + return max_rank; + + return (p_upper - g_a_rank_bounds); +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp new file mode 100644 index 000000000..c5a61eccc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp @@ -0,0 +1,51 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/find_fn_imps.hpp + * Contains an implementation for thin_heap_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_reference +PB_DS_CLASS_C_DEC:: +top() const +{ + PB_DS_ASSERT_VALID((*this)) + _GLIBCXX_DEBUG_ASSERT(!base_type::empty()); + + _GLIBCXX_DEBUG_ASSERT(m_p_max != 0); + return m_p_max->m_value; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp new file mode 100644 index 000000000..1c200d7a2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp @@ -0,0 +1,280 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/insert_fn_imps.hpp + * Contains an implementation for thin_heap_. + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::point_iterator +PB_DS_CLASS_C_DEC:: +push(const_reference r_val) +{ + PB_DS_ASSERT_VALID((*this)) + node_pointer p_nd = base_type::get_new_node_for_insert(r_val); + p_nd->m_metadata = 0; + p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = 0; + if (base_type::m_p_root == 0) + { + p_nd->m_p_next_sibling = 0; + m_p_max = base_type::m_p_root = p_nd; + PB_DS_ASSERT_VALID((*this)) + return point_iterator(p_nd); + } + + p_nd->m_p_next_sibling = base_type::m_p_root; + base_type::m_p_root->m_p_prev_or_parent = 0; + base_type::m_p_root = p_nd; + update_max(p_nd); + PB_DS_ASSERT_VALID((*this)) + return point_iterator(p_nd); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +make_root(node_pointer p_nd) +{ + p_nd->m_metadata = p_nd->m_p_l_child == 0 + ? 0 : 1 + p_nd->m_p_l_child->m_metadata; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +make_root_and_link(node_pointer p_nd) +{ + make_root(p_nd); + p_nd->m_p_prev_or_parent = 0; + p_nd->m_p_next_sibling = base_type::m_p_root; + if (base_type::m_p_root != 0) + base_type::m_p_root->m_p_prev_or_parent = 0; + + base_type::m_p_root = p_nd; + update_max(p_nd); +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix(node_pointer p_y) +{ + while (true) + { + if (p_y->m_p_prev_or_parent == 0) + { + fix_root(p_y); + return; + } + else if (p_y->m_metadata == 1&& p_y->m_p_next_sibling == 0) + { + if (p_y->m_p_l_child != 0) + { + fix_sibling_rank_1_unmarked(p_y); + return; + } + + fix_sibling_rank_1_marked(p_y); + p_y = p_y->m_p_prev_or_parent; + } + else if (p_y->m_metadata > p_y->m_p_next_sibling->m_metadata + 1) + { + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child != 0); + if (p_y->m_metadata != p_y->m_p_l_child->m_metadata + 2) + { + fix_sibling_general_unmarked(p_y); + return; + } + + fix_sibling_general_marked(p_y); + p_y = p_y->m_p_prev_or_parent; + } + else if ((p_y->m_p_l_child == 0&& + p_y->m_metadata == 2) ||(p_y->m_p_l_child != 0&& + p_y->m_metadata == p_y->m_p_l_child->m_metadata + 3)) + { + node_pointer p_z = p_y->m_p_prev_or_parent; + fix_child(p_y); + p_y = p_z; + } + else + return; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix_root(node_pointer p_y) +{ + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent == 0); + make_root(p_y); + PB_DS_ASSERT_NODE_CONSISTENT(p_y, true) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix_sibling_rank_1_unmarked(node_pointer p_y) +{ + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); + + _GLIBCXX_DEBUG_ONLY(node_pointer p_w = p_y->m_p_l_child;) + _GLIBCXX_DEBUG_ASSERT(p_w != 0); + _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling == 0); + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_next_sibling == 0); + + p_y->m_p_next_sibling = p_y->m_p_l_child; + p_y->m_p_next_sibling->m_p_prev_or_parent = p_y; + p_y->m_p_l_child = 0; + PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix_sibling_rank_1_marked(node_pointer p_y) +{ + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child == 0); + p_y->m_metadata = 0; + PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix_sibling_general_unmarked(node_pointer p_y) +{ + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); + + node_pointer p_w = p_y->m_p_l_child; + _GLIBCXX_DEBUG_ASSERT(p_w != 0); + _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != 0); + + p_y->m_p_l_child = p_w->m_p_next_sibling; + p_w->m_p_next_sibling->m_p_prev_or_parent = p_y; + + p_w->m_p_next_sibling = p_y->m_p_next_sibling; + _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != 0); + p_w->m_p_next_sibling->m_p_prev_or_parent = p_w; + + p_y->m_p_next_sibling = p_w; + p_w->m_p_prev_or_parent = p_y; + + PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix_sibling_general_marked(node_pointer p_y) +{ + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); + --p_y->m_metadata; + PB_DS_ASSERT_NODE_CONSISTENT(p_y, false) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +fix_child(node_pointer p_y) +{ + _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != 0); + + if (p_y->m_p_next_sibling != 0) + p_y->m_p_next_sibling->m_p_prev_or_parent = p_y->m_p_prev_or_parent; + + if (p_y->m_p_prev_or_parent->m_p_l_child == p_y) + p_y->m_p_prev_or_parent->m_p_l_child = p_y->m_p_next_sibling; + else + p_y->m_p_prev_or_parent->m_p_next_sibling = p_y->m_p_next_sibling; + + make_root_and_link(p_y); +} + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +modify(point_iterator it, const_reference r_new_val) +{ + PB_DS_ASSERT_VALID((*this)) + node_pointer p_nd = it.m_p_nd; + _GLIBCXX_DEBUG_ASSERT(p_nd != 0); + + const bool smaller = Cmp_Fn::operator()(r_new_val, p_nd->m_value); + p_nd->m_value = r_new_val; + if (smaller) + { + remove_node(p_nd); + p_nd->m_p_l_child = 0; + make_root_and_link(p_nd); + PB_DS_ASSERT_VALID((*this)) + return; + } + + if (p_nd->m_p_prev_or_parent == 0) + { + update_max(p_nd); + PB_DS_ASSERT_VALID((*this)) + return; + } + + node_pointer p_y = p_nd->m_p_prev_or_parent; + _GLIBCXX_DEBUG_ASSERT(p_y != 0); + + if (p_nd->m_p_next_sibling != 0) + p_nd->m_p_next_sibling->m_p_prev_or_parent = p_y; + + if (p_y->m_p_l_child == p_nd) + p_y->m_p_l_child = p_nd->m_p_next_sibling; + else + p_y->m_p_next_sibling = p_nd->m_p_next_sibling; + + fix(p_y); + make_root_and_link(p_nd); + PB_DS_ASSERT_VALID((*this)) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +update_max(node_pointer p_nd) +{ + if (m_p_max == 0 || Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value)) + m_p_max = p_nd; +} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp new file mode 100644 index 000000000..99b691db9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp @@ -0,0 +1,108 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/split_join_fn_imps.hpp + * Contains an implementation for thin_heap_. + */ + +PB_DS_CLASS_T_DEC +template +void +PB_DS_CLASS_C_DEC:: +split(Pred pred, PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + other.clear(); + if (base_type::empty()) + { + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + return; + } + + base_type::to_linked_list(); + node_pointer p_out = base_type::prune(pred); + + while (p_out != 0) + { + _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0); + --base_type::m_size; + ++other.m_size; + node_pointer p_next = p_out->m_p_next_sibling; + other.make_root_and_link(p_out); + p_out = p_next; + } + + PB_DS_ASSERT_VALID(other) + node_pointer p_cur = base_type::m_p_root; + m_p_max = 0; + base_type::m_p_root = 0; + while (p_cur != 0) + { + node_pointer p_next = p_cur->m_p_next_sibling; + make_root_and_link(p_cur); + p_cur = p_next; + } + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +join(PB_DS_CLASS_C_DEC& other) +{ + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) + + node_pointer p_other = other.m_p_root; + while (p_other != 0) + { + node_pointer p_next = p_other->m_p_next_sibling; + make_root_and_link(p_other); + p_other = p_next; + } + base_type::m_size += other.m_size; + other.m_p_root = 0; + other.m_size = 0; + other.m_p_max = 0; + + PB_DS_ASSERT_VALID((*this)) + PB_DS_ASSERT_VALID(other) +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp index 33dca6eb2..476266c54 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp new file mode 100644 index 000000000..b28d87425 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp @@ -0,0 +1,53 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file thin_heap_/trace_fn_imps.hpp + * Contains an implementation class for left_child_next_sibling_heap_. + */ + +#ifdef PB_DS_THIN_HEAP_TRACE_ + +PB_DS_CLASS_T_DEC +void +PB_DS_CLASS_C_DEC:: +trace() const +{ + std::cerr << std::endl; + std::cerr << "m_p_max " << m_p_max << std::endl; + base_type::trace(); +} + +#endif // #ifdef PB_DS_THIN_HEAP_TRACE_ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp new file mode 100644 index 000000000..1fe45584c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file tree_policy/node_metadata_selector.hpp + * Contains an implementation class for trees. + */ + +#ifndef PB_DS_TREE_NODE_METADATA_DISPATCH_HPP +#define PB_DS_TREE_NODE_METADATA_DISPATCH_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { + /** + * @addtogroup traits Traits + * @{ + */ + + /// Tree metadata helper. + template + struct tree_metadata_helper; + + /// Specialization, false. + template + struct tree_metadata_helper + { + typedef typename Node_Update::metadata_type type; + }; + + /// Specialization, true. + template + struct tree_metadata_helper + { + typedef null_type type; + }; + + /// Tree node metadata dispatch. + template + class Node_Update, + typename _Alloc> + struct tree_node_metadata_dispatch + { + private: + typedef dumnode_const_iterator __it_type; + typedef Node_Update<__it_type, __it_type, Cmp_Fn, _Alloc> __node_u; + typedef null_node_update<__it_type, __it_type, Cmp_Fn, _Alloc> __nnode_u; + + enum + { + null_update = is_same<__node_u, __nnode_u>::value + }; + + public: + typedef typename tree_metadata_helper<__node_u, null_update>::type type; + }; + //@} + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_TREE_NODE_METADATA_DISPATCH_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp new file mode 100644 index 000000000..0869d2b57 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp @@ -0,0 +1,121 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file tree_policy/order_statistics_imp.hpp + * Contains forward declarations for order_statistics_key + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +find_by_order(size_type order) +{ + node_iterator it = node_begin(); + node_iterator end_it = node_end(); + + while (it != end_it) + { + node_iterator l_it = it.get_l_child(); + const size_type o = (l_it == end_it)? 0 : l_it.get_metadata(); + + if (order == o) + return *it; + else if (order < o) + it = l_it; + else + { + order -= o + 1; + it = it.get_r_child(); + } + } + + return base_type::end_iterator(); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +find_by_order(size_type order) const +{ return const_cast(this)->find_by_order(order); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +order_of_key(key_const_reference r_key) const +{ + node_const_iterator it = node_begin(); + node_const_iterator end_it = node_end(); + + const cmp_fn& r_cmp_fn = const_cast(this)->get_cmp_fn(); + size_type ord = 0; + while (it != end_it) + { + node_const_iterator l_it = it.get_l_child(); + + if (r_cmp_fn(r_key, this->extract_key(*(*it)))) + it = l_it; + else if (r_cmp_fn(this->extract_key(*(*it)), r_key)) + { + ord += (l_it == end_it)? 1 : 1 + l_it.get_metadata(); + it = it.get_r_child(); + } + else + { + ord += (l_it == end_it)? 0 : l_it.get_metadata(); + it = end_it; + } + } + return ord; +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +operator()(node_iterator node_it, node_const_iterator end_nd_it) const +{ + node_iterator l_it = node_it.get_l_child(); + const size_type l_rank = (l_it == end_nd_it) ? 0 : l_it.get_metadata(); + + node_iterator r_it = node_it.get_r_child(); + const size_type r_rank = (r_it == end_nd_it) ? 0 : r_it.get_metadata(); + + const_cast(node_it.get_metadata())= 1 + l_rank + r_rank; +} + +PB_DS_CLASS_T_DEC +PB_DS_CLASS_C_DEC:: +~tree_order_statistics_node_update() +{ } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp index f8c6bb4c5..c9370a2e5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_trace_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_trace_base.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_trace_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_trace_base.hpp index c0498bee6..7551ed089 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/tree_trace_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/tree_trace_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp new file mode 100644 index 000000000..457a9f89c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp @@ -0,0 +1,103 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file trie_policy/node_metadata_selector.hpp + * Contains an implementation class for tries. + */ + +#ifndef PB_DS_TRIE_NODE_METADATA_DISPATCH_HPP +#define PB_DS_TRIE_NODE_METADATA_DISPATCH_HPP + +#include +#include + +namespace __gnu_pbds +{ + namespace detail + { + /** + * @addtogroup traits Traits + * @{ + */ + + /// Trie metadata helper. + template + struct trie_metadata_helper; + + /// Specialization, false. + template + struct trie_metadata_helper + { + typedef typename Node_Update::metadata_type type; + }; + + /// Specialization, true. + template + struct trie_metadata_helper + { + typedef null_type type; + }; + + /// Trie node metadata dispatch. + template + class Node_Update, + typename _Alloc> + struct trie_node_metadata_dispatch + { + private: + typedef dumnode_const_iterator __it_type; + typedef Node_Update<__it_type, __it_type, Cmp_Fn, _Alloc> __node_u; + typedef null_node_update<__it_type, __it_type, Cmp_Fn, _Alloc> __nnode_u; + + enum + { + null_update = is_same<__node_u, __nnode_u>::value + }; + + public: + typedef typename trie_metadata_helper<__node_u, null_update>::type type; + }; + //@} + } // namespace detail +} // namespace __gnu_pbds + +#endif // #ifndef PB_DS_TRIE_NODE_METADATA_DISPATCH_HPP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp new file mode 100644 index 000000000..f3fe853e4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp @@ -0,0 +1,160 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file trie_policy/order_statistics_imp.hpp + * Contains forward declarations for order_statistics_key + */ + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::iterator +PB_DS_CLASS_C_DEC:: +find_by_order(size_type order) +{ + if (empty()) + return end(); + + ++order; + node_iterator nd_it = node_begin(); + + while (true) + { + if (order > nd_it.get_metadata()) + return ++base_type::rightmost_it(nd_it); + + const size_type num_children = nd_it.num_children(); + if (num_children == 0) + return *nd_it; + + for (size_type i = 0; i < num_children; ++i) + { + node_iterator child_nd_it = nd_it.get_child(i); + if (order <= child_nd_it.get_metadata()) + { + i = num_children; + nd_it = child_nd_it; + } + else + order -= child_nd_it.get_metadata(); + } + } +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::const_iterator +PB_DS_CLASS_C_DEC:: +find_by_order(size_type order) const +{ return const_cast(this)->find_by_order(order); } + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +order_of_key(key_const_reference r_key) const +{ + const _ATraits& r_traits = + const_cast(this)->get_access_traits(); + + return order_of_prefix(r_traits.begin(r_key), r_traits.end(r_key)); +} + +PB_DS_CLASS_T_DEC +inline typename PB_DS_CLASS_C_DEC::size_type +PB_DS_CLASS_C_DEC:: +order_of_prefix(typename access_traits::const_iterator b, + typename access_traits::const_iterator e) const +{ + if (empty()) + return 0; + + const _ATraits& r_traits = + const_cast(this)->get_access_traits(); + + node_const_iterator nd_it = node_begin(); + node_const_iterator end_nd_it = node_end(); + size_type ord = 0; + + while (true) + { + const size_type num_children = nd_it.num_children(); + if (num_children == 0) + { + key_const_reference r_key = base_type::extract_key(*(*nd_it)); + typename access_traits::const_iterator key_b = + r_traits.begin(r_key); + + typename access_traits::const_iterator key_e = + r_traits.end(r_key); + + return (base_type::less(key_b, key_e, b, e, r_traits)) ? + ord + 1 : ord; + } + + node_const_iterator next_nd_it = end_nd_it; + size_type i = num_children - 1; + + do + { + node_const_iterator child_nd_it = nd_it.get_child(i); + + if (next_nd_it != end_nd_it) + ord += child_nd_it.get_metadata(); + else if (!base_type::less(b, e, + child_nd_it.valid_prefix().first, + child_nd_it.valid_prefix().second, + r_traits)) + next_nd_it = child_nd_it; + } + while (i-- > 0); + + if (next_nd_it == end_nd_it) + return ord; + + nd_it = next_nd_it; + } +} + +PB_DS_CLASS_T_DEC +inline void +PB_DS_CLASS_C_DEC:: +operator()(node_iterator nd_it, node_const_iterator /*end_nd_it*/) const +{ + const size_type num_children = nd_it.num_children(); + size_type children_rank = 0; + for (size_type i = 0; i < num_children; ++i) + children_rank += nd_it.get_child(i).get_metadata(); + + const size_type res = (num_children == 0) ? 1 : children_rank; + const_cast(nd_it.get_metadata()) = res; +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp index 65fa90573..ecc7f0a43 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp index 7576a84b5..7726d9212 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp index d2cd9eef2..ada26e453 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp index 0d5803bac..e87104a9c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp index c3573b880..32c4592c2 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/type_utils.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/type_utils.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/type_utils.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/type_utils.hpp index 5b67f2c81..70dd4ce60 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/type_utils.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/type_utils.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/types_traits.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/types_traits.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/types_traits.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/types_traits.hpp index c9c1eb234..6b1b75717 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/types_traits.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/types_traits.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp new file mode 100644 index 000000000..a8f3a8576 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp @@ -0,0 +1,111 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file unordered_iterator/const_iterator.hpp + * Contains an iterator class used for const ranging over the elements of the + * table. + */ + +/// Const range-type iterator. +class const_iterator_ +: public point_const_iterator_ +{ +public: + /// Category. + typedef std::forward_iterator_tag iterator_category; + + /// Difference type. + typedef typename _Alloc::difference_type difference_type; + + /// Iterator's value type. + typedef value_type_ value_type; + + /// Iterator's pointer type. + typedef pointer_ pointer; + + /// Iterator's const pointer type. + typedef const_pointer_ const_pointer; + + /// Iterator's reference type. + typedef reference_ reference; + + /// Iterator's const reference type. + typedef const_reference_ const_reference; + + /// Default constructor. + const_iterator_() : m_p_tbl(0) + { } + + /// Increments. + const_iterator_& + operator++() + { + m_p_tbl->inc_it_state(base_type::m_p_value, m_pos); + return *this; + } + + /// Increments. + const_iterator_ + operator++(int) + { + const_iterator_ ret =* this; + m_p_tbl->inc_it_state(base_type::m_p_value, m_pos); + return ret; + } + +protected: + typedef point_const_iterator_ base_type; + + /** + * Constructor used by the table to initiate the generalized + * pointer and position (e.g., this is called from within a find() + * of a table. + * */ + const_iterator_(const_pointer_ p_value, PB_DS_GEN_POS pos, + const PB_DS_CLASS_C_DEC* p_tbl) + : point_const_iterator_(p_value), m_p_tbl(p_tbl), m_pos(pos) + { } + + /** + * Pointer to the table object which created the iterator (used for + * incrementing its position. + * */ + const PB_DS_CLASS_C_DEC* m_p_tbl; + + PB_DS_GEN_POS m_pos; + + friend class PB_DS_CLASS_C_DEC; +}; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/iterator.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/iterator.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/iterator.hpp index 2d8f9bb66..bfdbcc9eb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/iterator.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/iterator.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp new file mode 100644 index 000000000..76686ae60 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp @@ -0,0 +1,133 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. + +// Permission to use, copy, modify, sell, and distribute this software +// is hereby granted without fee, provided that the above copyright +// notice appears in all copies, and that both that copyright notice +// and this permission notice appear in supporting documentation. None +// of the above authors, nor IBM Haifa Research Laboratories, make any +// representation about the suitability of this software for any +// purpose. It is provided "as is" without express or implied +// warranty. + +/** + * @file unordered_iterator/point_const_iterator.hpp + * Contains an iterator class returned by the tables' const find and insert + * methods. + */ + +class point_iterator_; + +/// Const point-type iterator. +class point_const_iterator_ +{ +public: + /// Category. + typedef trivial_iterator_tag iterator_category; + + /// Difference type. + typedef trivial_iterator_difference_type difference_type; + + /// Iterator's value type. + typedef value_type_ value_type; + + /// Iterator's pointer type. + typedef pointer_ pointer; + + /// Iterator's const pointer type. + typedef const_pointer_ const_pointer; + + /// Iterator's reference type. + typedef reference_ reference; + + /// Iterator's const reference type. + typedef const_reference_ const_reference; + + inline + point_const_iterator_(const_pointer p_value) : m_p_value(p_value) + { } + + /// Default constructor. + inline + point_const_iterator_() : m_p_value(0) + { } + + /// Copy constructor. + inline + point_const_iterator_(const point_const_iterator_& other) + : m_p_value(other.m_p_value) + { } + + /// Copy constructor. + inline + point_const_iterator_(const point_iterator_& other) + : m_p_value(other.m_p_value) + { } + + /// Access. + const_pointer + operator->() const + { + _GLIBCXX_DEBUG_ASSERT(m_p_value != 0); + return m_p_value; + } + + /// Access. + const_reference + operator*() const + { + _GLIBCXX_DEBUG_ASSERT(m_p_value != 0); + return *m_p_value; + } + + /// Compares content to a different iterator object. + bool + operator==(const point_iterator_& other) const + { return m_p_value == other.m_p_value; } + + /// Compares content to a different iterator object. + bool + operator==(const point_const_iterator_& other) const + { return m_p_value == other.m_p_value; } + + /// Compares content (negatively) to a different iterator object. + bool + operator!=(const point_iterator_& other) const + { return m_p_value != other.m_p_value; } + + /// Compares content (negatively) to a different iterator object. + bool + operator!=(const point_const_iterator_& other) const + { return m_p_value != other.m_p_value; } + +protected: + const_pointer m_p_value; + + friend class point_iterator_; + + friend class PB_DS_CLASS_C_DEC; +}; + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp index 402314194..3e430e778 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/exception.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/exception.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/exception.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/exception.hpp index c5138a5ec..51a316fce 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/exception.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/exception.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/hash_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/hash_policy.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/hash_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/hash_policy.hpp index 4bc63513b..d031a2b36 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/hash_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/hash_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/list_update_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/list_update_policy.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/list_update_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/list_update_policy.hpp index 0e22a3b60..0a1cd10aa 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/list_update_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/list_update_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/priority_queue.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/priority_queue.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/priority_queue.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/priority_queue.hpp index aa6053ea4..e862d35d3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/priority_queue.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/priority_queue.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/tag_and_trait.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/tag_and_trait.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/tag_and_trait.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/tag_and_trait.hpp index 79a6a6783..1d3e2e4bb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/tag_and_trait.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/tag_and_trait.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/tree_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/tree_policy.hpp similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/tree_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/tree_policy.hpp index dd1c1b280..b4192bb8c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/tree_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/tree_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/trie_policy.hpp b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/trie_policy.hpp similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/trie_policy.hpp rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/trie_policy.hpp index 73c14b0e1..b102b458c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pb_ds/trie_policy.hpp +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pb_ds/trie_policy.hpp @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pod_char_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pod_char_traits.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pod_char_traits.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pod_char_traits.h index 9f3bee806..8fa200dda 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pod_char_traits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pod_char_traits.h @@ -1,6 +1,6 @@ // POD character, std::char_traits specialization -*- C++ -*- -// Copyright (C) 2002-2017 Free Software Foundation, Inc. +// Copyright (C) 2002-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pointer.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pointer.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pointer.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pointer.h index 8432da0d2..e37d3a9bd 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pointer.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pointer.h @@ -1,6 +1,6 @@ // Custom pointer adapter and sample storage policies -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 @@ -437,6 +437,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _CXX_POINTER_ARITH_OPERATOR_SET(unsigned int); _CXX_POINTER_ARITH_OPERATOR_SET(long); _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long); +#ifdef _GLIBCXX_USE_LONG_LONG + _CXX_POINTER_ARITH_OPERATOR_SET(long long); + _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long long); +#endif // Mathematical Manipulators inline _Pointer_adapter& diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pool_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pool_allocator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pool_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pool_allocator.h index 3e59fabf2..3e19c54c4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/pool_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/pool_allocator.h @@ -1,6 +1,6 @@ // Allocators -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/random new file mode 100644 index 000000000..8ae3bde77 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/random @@ -0,0 +1,3788 @@ +// Random number extensions -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/random + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _EXT_RANDOM +#define _EXT_RANDOM 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include +#ifdef __SSE2__ +# include +#endif + +#if defined(_GLIBCXX_USE_C99_STDINT_TR1) && defined(UINT32_C) + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + + /* Mersenne twister implementation optimized for vector operations. + * + * Reference: http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/ + */ + template + class simd_fast_mersenne_twister_engine + { + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not an unsigned integral type"); + static_assert(__sr1 < 32, "first right shift too large"); + static_assert(__sr2 < 16, "second right shift too large"); + static_assert(__sl1 < 32, "first left shift too large"); + static_assert(__sl2 < 16, "second left shift too large"); + + public: + typedef _UIntType result_type; + + private: + static constexpr size_t m_w = sizeof(result_type) * 8; + static constexpr size_t _M_nstate = __m / 128 + 1; + static constexpr size_t _M_nstate32 = _M_nstate * 4; + + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not an unsigned integral type"); + static_assert(__pos1 < _M_nstate, "POS1 not smaller than state size"); + static_assert(16 % sizeof(_UIntType) == 0, + "UIntType size must divide 16"); + + public: + static constexpr size_t state_size = _M_nstate * (16 + / sizeof(result_type)); + static constexpr result_type default_seed = 5489u; + + // constructors and member function + explicit + simd_fast_mersenne_twister_engine(result_type __sd = default_seed) + { seed(__sd); } + + template::value> + ::type> + explicit + simd_fast_mersenne_twister_engine(_Sseq& __q) + { seed(__q); } + + void + seed(result_type __sd = default_seed); + + template + typename std::enable_if::value>::type + seed(_Sseq& __q); + + static constexpr result_type + min() + { return 0; } + + static constexpr result_type + max() + { return std::numeric_limits::max(); } + + void + discard(unsigned long long __z); + + result_type + operator()() + { + if (__builtin_expect(_M_pos >= state_size, 0)) + _M_gen_rand(); + + return _M_stateT[_M_pos++]; + } + + template + friend bool + operator==(const simd_fast_mersenne_twister_engine<_UIntType_2, + __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, + __msk1_2, __msk2_2, __msk3_2, __msk4_2, + __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __lhs, + const simd_fast_mersenne_twister_engine<_UIntType_2, + __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, + __msk1_2, __msk2_2, __msk3_2, __msk4_2, + __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __rhs); + + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::simd_fast_mersenne_twister_engine + <_UIntType_2, + __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, + __msk1_2, __msk2_2, __msk3_2, __msk4_2, + __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __x); + + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType_2, + __m_2, __pos1_2, __sl1_2, __sl2_2, __sr1_2, __sr2_2, + __msk1_2, __msk2_2, __msk3_2, __msk4_2, + __parity1_2, __parity2_2, __parity3_2, __parity4_2>& __x); + + private: + union + { +#ifdef __SSE2__ + __m128i _M_state[_M_nstate]; +#endif +#ifdef __ARM_NEON +#ifdef __aarch64__ + __Uint32x4_t _M_state[_M_nstate]; +#endif +#endif + uint32_t _M_state32[_M_nstate32]; + result_type _M_stateT[state_size]; + } __attribute__ ((__aligned__ (16))); + size_t _M_pos; + + void _M_gen_rand(void); + void _M_period_certification(); + }; + + + template + inline bool + operator!=(const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, + __msk4, __parity1, __parity2, __parity3, __parity4>& __lhs, + const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, __msk1, __msk2, __msk3, + __msk4, __parity1, __parity2, __parity3, __parity4>& __rhs) + { return !(__lhs == __rhs); } + + + /* Definitions for the SIMD-oriented Fast Mersenne Twister as defined + * in the C implementation by Daito and Matsumoto, as both a 32-bit + * and 64-bit version. + */ + typedef simd_fast_mersenne_twister_engine + sfmt607; + + typedef simd_fast_mersenne_twister_engine + sfmt607_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt1279; + + typedef simd_fast_mersenne_twister_engine + sfmt1279_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt2281; + + typedef simd_fast_mersenne_twister_engine + sfmt2281_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt4253; + + typedef simd_fast_mersenne_twister_engine + sfmt4253_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt11213; + + typedef simd_fast_mersenne_twister_engine + sfmt11213_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt19937; + + typedef simd_fast_mersenne_twister_engine + sfmt19937_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt44497; + + typedef simd_fast_mersenne_twister_engine + sfmt44497_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt86243; + + typedef simd_fast_mersenne_twister_engine + sfmt86243_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt132049; + + typedef simd_fast_mersenne_twister_engine + sfmt132049_64; + + + typedef simd_fast_mersenne_twister_engine + sfmt216091; + + typedef simd_fast_mersenne_twister_engine + sfmt216091_64; + +#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + + /** + * @brief A beta continuous distribution for random numbers. + * + * The formula for the beta probability density function is: + * @f[ + * p(x|\alpha,\beta) = \frac{1}{B(\alpha,\beta)} + * x^{\alpha - 1} (1 - x)^{\beta - 1} + * @f] + */ + template + class beta_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef beta_distribution<_RealType> distribution_type; + friend class beta_distribution<_RealType>; + + explicit + param_type(_RealType __alpha_val = _RealType(1), + _RealType __beta_val = _RealType(1)) + : _M_alpha(__alpha_val), _M_beta(__beta_val) + { + __glibcxx_assert(_M_alpha > _RealType(0)); + __glibcxx_assert(_M_beta > _RealType(0)); + } + + _RealType + alpha() const + { return _M_alpha; } + + _RealType + beta() const + { return _M_beta; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_alpha == __p2._M_alpha + && __p1._M_beta == __p2._M_beta); } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void + _M_initialize(); + + _RealType _M_alpha; + _RealType _M_beta; + }; + + public: + /** + * @brief Constructs a beta distribution with parameters + * @f$\alpha@f$ and @f$\beta@f$. + */ + explicit + beta_distribution(_RealType __alpha_val = _RealType(1), + _RealType __beta_val = _RealType(1)) + : _M_param(__alpha_val, __beta_val) + { } + + explicit + beta_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns the @f$\alpha@f$ of the distribution. + */ + _RealType + alpha() const + { return _M_param.alpha(); } + + /** + * @brief Returns the @f$\beta@f$ of the distribution. + */ + _RealType + beta() const + { return _M_param.beta(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return result_type(1); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two beta distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const beta_distribution& __d1, + const beta_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %beta_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %beta_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::beta_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %beta_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %beta_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::beta_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two beta distributions are different. + */ + template + inline bool + operator!=(const __gnu_cxx::beta_distribution<_RealType>& __d1, + const __gnu_cxx::beta_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A multi-variate normal continuous distribution for random numbers. + * + * The formula for the normal probability density function is + * @f[ + * p(\overrightarrow{x}|\overrightarrow{\mu },\Sigma) = + * \frac{1}{\sqrt{(2\pi )^k\det(\Sigma))}} + * e^{-\frac{1}{2}(\overrightarrow{x}-\overrightarrow{\mu})^\text{T} + * \Sigma ^{-1}(\overrightarrow{x}-\overrightarrow{\mu})} + * @f] + * + * where @f$\overrightarrow{x}@f$ and @f$\overrightarrow{\mu}@f$ are + * vectors of dimension @f$k@f$ and @f$\Sigma@f$ is the covariance + * matrix (which must be positive-definite). + */ + template + class normal_mv_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + static_assert(_Dimen != 0, "dimension is zero"); + + public: + /** The type of the range of the distribution. */ + typedef std::array<_RealType, _Dimen> result_type; + /** Parameter type. */ + class param_type + { + static constexpr size_t _M_t_size = _Dimen * (_Dimen + 1) / 2; + + public: + typedef normal_mv_distribution<_Dimen, _RealType> distribution_type; + friend class normal_mv_distribution<_Dimen, _RealType>; + + param_type() + { + std::fill(_M_mean.begin(), _M_mean.end(), _RealType(0)); + auto __it = _M_t.begin(); + for (size_t __i = 0; __i < _Dimen; ++__i) + { + std::fill_n(__it, __i, _RealType(0)); + __it += __i; + *__it++ = _RealType(1); + } + } + + template + param_type(_ForwardIterator1 __meanbegin, + _ForwardIterator1 __meanend, + _ForwardIterator2 __varcovbegin, + _ForwardIterator2 __varcovend) + { + __glibcxx_function_requires(_ForwardIteratorConcept< + _ForwardIterator1>) + __glibcxx_function_requires(_ForwardIteratorConcept< + _ForwardIterator2>) + _GLIBCXX_DEBUG_ASSERT(std::distance(__meanbegin, __meanend) + <= _Dimen); + const auto __dist = std::distance(__varcovbegin, __varcovend); + _GLIBCXX_DEBUG_ASSERT(__dist == _Dimen * _Dimen + || __dist == _Dimen * (_Dimen + 1) / 2 + || __dist == _Dimen); + + if (__dist == _Dimen * _Dimen) + _M_init_full(__meanbegin, __meanend, __varcovbegin, __varcovend); + else if (__dist == _Dimen * (_Dimen + 1) / 2) + _M_init_lower(__meanbegin, __meanend, __varcovbegin, __varcovend); + else + { + __glibcxx_assert(__dist == _Dimen); + _M_init_diagonal(__meanbegin, __meanend, + __varcovbegin, __varcovend); + } + } + + param_type(std::initializer_list<_RealType> __mean, + std::initializer_list<_RealType> __varcov) + { + _GLIBCXX_DEBUG_ASSERT(__mean.size() <= _Dimen); + _GLIBCXX_DEBUG_ASSERT(__varcov.size() == _Dimen * _Dimen + || __varcov.size() == _Dimen * (_Dimen + 1) / 2 + || __varcov.size() == _Dimen); + + if (__varcov.size() == _Dimen * _Dimen) + _M_init_full(__mean.begin(), __mean.end(), + __varcov.begin(), __varcov.end()); + else if (__varcov.size() == _Dimen * (_Dimen + 1) / 2) + _M_init_lower(__mean.begin(), __mean.end(), + __varcov.begin(), __varcov.end()); + else + { + __glibcxx_assert(__varcov.size() == _Dimen); + _M_init_diagonal(__mean.begin(), __mean.end(), + __varcov.begin(), __varcov.end()); + } + } + + std::array<_RealType, _Dimen> + mean() const + { return _M_mean; } + + std::array<_RealType, _M_t_size> + varcov() const + { return _M_t; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_mean == __p2._M_mean && __p1._M_t == __p2._M_t; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + template + void _M_init_full(_InputIterator1 __meanbegin, + _InputIterator1 __meanend, + _InputIterator2 __varcovbegin, + _InputIterator2 __varcovend); + template + void _M_init_lower(_InputIterator1 __meanbegin, + _InputIterator1 __meanend, + _InputIterator2 __varcovbegin, + _InputIterator2 __varcovend); + template + void _M_init_diagonal(_InputIterator1 __meanbegin, + _InputIterator1 __meanend, + _InputIterator2 __varbegin, + _InputIterator2 __varend); + + std::array<_RealType, _Dimen> _M_mean; + std::array<_RealType, _M_t_size> _M_t; + }; + + public: + normal_mv_distribution() + : _M_param(), _M_nd() + { } + + template + normal_mv_distribution(_ForwardIterator1 __meanbegin, + _ForwardIterator1 __meanend, + _ForwardIterator2 __varcovbegin, + _ForwardIterator2 __varcovend) + : _M_param(__meanbegin, __meanend, __varcovbegin, __varcovend), + _M_nd() + { } + + normal_mv_distribution(std::initializer_list<_RealType> __mean, + std::initializer_list<_RealType> __varcov) + : _M_param(__mean, __varcov), _M_nd() + { } + + explicit + normal_mv_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the mean of the distribution. + */ + result_type + mean() const + { return _M_param.mean(); } + + /** + * @brief Returns the compact form of the variance/covariance + * matrix of the distribution. + */ + std::array<_RealType, _Dimen * (_Dimen + 1) / 2> + varcov() const + { return _M_param.varcov(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { result_type __res; + __res.fill(std::numeric_limits<_RealType>::lowest()); + return __res; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { result_type __res; + __res.fill(std::numeric_limits<_RealType>::max()); + return __res; } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { return this->__generate_impl(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { return this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two multi-variant normal distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + template + friend bool + operator==(const + __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& + __d1, + const + __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& + __d2); + + /** + * @brief Inserts a %normal_mv_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %normal_mv_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const + __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& + __x); + + /** + * @brief Extracts a %normal_mv_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %normal_mv_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::normal_mv_distribution<_Dimen1, _RealType1>& + __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + std::normal_distribution<_RealType> _M_nd; + }; + + /** + * @brief Return true if two multi-variate normal distributions are + * different. + */ + template + inline bool + operator!=(const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& + __d1, + const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& + __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A Rice continuous distribution for random numbers. + * + * The formula for the Rice probability density function is + * @f[ + * p(x|\nu,\sigma) = \frac{x}{\sigma^2} + * \exp\left(-\frac{x^2+\nu^2}{2\sigma^2}\right) + * I_0\left(\frac{x \nu}{\sigma^2}\right) + * @f] + * where @f$I_0(z)@f$ is the modified Bessel function of the first kind + * of order 0 and @f$\nu >= 0@f$ and @f$\sigma > 0@f$. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$\sqrt{\pi/2}L_{1/2}(-\nu^2/2\sigma^2)@f$
Variance@f$2\sigma^2 + \nu^2 + * + (\pi\sigma^2/2)L^2_{1/2}(-\nu^2/2\sigma^2)@f$
Range@f$[0, \infty)@f$
+ * where @f$L_{1/2}(x)@f$ is the Laguerre polynomial of order 1/2. + */ + template + class + rice_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef rice_distribution distribution_type; + + param_type(result_type __nu_val = result_type(0), + result_type __sigma_val = result_type(1)) + : _M_nu(__nu_val), _M_sigma(__sigma_val) + { + __glibcxx_assert(_M_nu >= result_type(0)); + __glibcxx_assert(_M_sigma > result_type(0)); + } + + result_type + nu() const + { return _M_nu; } + + result_type + sigma() const + { return _M_sigma; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_nu == __p2._M_nu && __p1._M_sigma == __p2._M_sigma; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_nu; + result_type _M_sigma; + }; + + /** + * @brief Constructors. + */ + explicit + rice_distribution(result_type __nu_val = result_type(0), + result_type __sigma_val = result_type(1)) + : _M_param(__nu_val, __sigma_val), + _M_ndx(__nu_val, __sigma_val), + _M_ndy(result_type(0), __sigma_val) + { } + + explicit + rice_distribution(const param_type& __p) + : _M_param(__p), + _M_ndx(__p.nu(), __p.sigma()), + _M_ndy(result_type(0), __p.sigma()) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_ndx.reset(); + _M_ndy.reset(); + } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + nu() const + { return _M_param.nu(); } + + result_type + sigma() const + { return _M_param.sigma(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __x = this->_M_ndx(__urng); + result_type __y = this->_M_ndy(__urng); +#if _GLIBCXX_USE_C99_MATH_TR1 + return std::hypot(__x, __y); +#else + return std::sqrt(__x * __x + __y * __y); +#endif + } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typename std::normal_distribution::param_type + __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma()); + result_type __x = this->_M_ndx(__px, __urng); + result_type __y = this->_M_ndy(__py, __urng); +#if _GLIBCXX_USE_C99_MATH_TR1 + return std::hypot(__x, __y); +#else + return std::sqrt(__x * __x + __y * __y); +#endif + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Rice distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const rice_distribution& __d1, + const rice_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_ndx == __d2._M_ndx + && __d1._M_ndy == __d2._M_ndy); } + + /** + * @brief Inserts a %rice_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %rice_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const rice_distribution<_RealType1>&); + + /** + * @brief Extracts a %rice_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %rice_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + rice_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::normal_distribution _M_ndx; + std::normal_distribution _M_ndy; + }; + + /** + * @brief Return true if two Rice distributions are not equal. + */ + template + inline bool + operator!=(const rice_distribution<_RealType1>& __d1, + const rice_distribution<_RealType1>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A Nakagami continuous distribution for random numbers. + * + * The formula for the Nakagami probability density function is + * @f[ + * p(x|\mu,\omega) = \frac{2\mu^\mu}{\Gamma(\mu)\omega^\mu} + * x^{2\mu-1}e^{-\mu x / \omega} + * @f] + * where @f$\Gamma(z)@f$ is the gamma function and @f$\mu >= 0.5@f$ + * and @f$\omega > 0@f$. + */ + template + class + nakagami_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef nakagami_distribution distribution_type; + + param_type(result_type __mu_val = result_type(1), + result_type __omega_val = result_type(1)) + : _M_mu(__mu_val), _M_omega(__omega_val) + { + __glibcxx_assert(_M_mu >= result_type(0.5L)); + __glibcxx_assert(_M_omega > result_type(0)); + } + + result_type + mu() const + { return _M_mu; } + + result_type + omega() const + { return _M_omega; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_mu == __p2._M_mu && __p1._M_omega == __p2._M_omega; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_mu; + result_type _M_omega; + }; + + /** + * @brief Constructors. + */ + explicit + nakagami_distribution(result_type __mu_val = result_type(1), + result_type __omega_val = result_type(1)) + : _M_param(__mu_val, __omega_val), + _M_gd(__mu_val, __omega_val / __mu_val) + { } + + explicit + nakagami_distribution(const param_type& __p) + : _M_param(__p), + _M_gd(__p.mu(), __p.omega() / __p.mu()) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_gd.reset(); } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + mu() const + { return _M_param.mu(); } + + result_type + omega() const + { return _M_param.omega(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return std::sqrt(this->_M_gd(__urng)); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typename std::gamma_distribution::param_type + __pg(__p.mu(), __p.omega() / __p.mu()); + return std::sqrt(this->_M_gd(__pg, __urng)); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Nakagami distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const nakagami_distribution& __d1, + const nakagami_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_gd == __d2._M_gd); } + + /** + * @brief Inserts a %nakagami_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %nakagami_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const nakagami_distribution<_RealType1>&); + + /** + * @brief Extracts a %nakagami_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %nakagami_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + nakagami_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd; + }; + + /** + * @brief Return true if two Nakagami distributions are not equal. + */ + template + inline bool + operator!=(const nakagami_distribution<_RealType>& __d1, + const nakagami_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A Pareto continuous distribution for random numbers. + * + * The formula for the Pareto cumulative probability function is + * @f[ + * P(x|\alpha,\mu) = 1 - \left(\frac{\mu}{x}\right)^\alpha + * @f] + * The formula for the Pareto probability density function is + * @f[ + * p(x|\alpha,\mu) = \frac{\alpha + 1}{\mu} + * \left(\frac{\mu}{x}\right)^{\alpha + 1} + * @f] + * where @f$x >= \mu@f$ and @f$\mu > 0@f$, @f$\alpha > 0@f$. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$\alpha \mu / (\alpha - 1)@f$ + * for @f$\alpha > 1@f$
Variance@f$\alpha \mu^2 / [(\alpha - 1)^2(\alpha - 2)]@f$ + * for @f$\alpha > 2@f$
Range@f$[\mu, \infty)@f$
+ */ + template + class + pareto_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef pareto_distribution distribution_type; + + param_type(result_type __alpha_val = result_type(1), + result_type __mu_val = result_type(1)) + : _M_alpha(__alpha_val), _M_mu(__mu_val) + { + __glibcxx_assert(_M_alpha > result_type(0)); + __glibcxx_assert(_M_mu > result_type(0)); + } + + result_type + alpha() const + { return _M_alpha; } + + result_type + mu() const + { return _M_mu; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_alpha == __p2._M_alpha && __p1._M_mu == __p2._M_mu; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_alpha; + result_type _M_mu; + }; + + /** + * @brief Constructors. + */ + explicit + pareto_distribution(result_type __alpha_val = result_type(1), + result_type __mu_val = result_type(1)) + : _M_param(__alpha_val, __mu_val), + _M_ud() + { } + + explicit + pareto_distribution(const param_type& __p) + : _M_param(__p), + _M_ud() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_ud.reset(); + } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + alpha() const + { return _M_param.alpha(); } + + result_type + mu() const + { return _M_param.mu(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return this->mu(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { + return this->mu() * std::pow(this->_M_ud(__urng), + -result_type(1) / this->alpha()); + } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + return __p.mu() * std::pow(this->_M_ud(__urng), + -result_type(1) / __p.alpha()); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Pareto distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const pareto_distribution& __d1, + const pareto_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_ud == __d2._M_ud); } + + /** + * @brief Inserts a %pareto_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %pareto_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const pareto_distribution<_RealType1>&); + + /** + * @brief Extracts a %pareto_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %pareto_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + pareto_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::uniform_real_distribution _M_ud; + }; + + /** + * @brief Return true if two Pareto distributions are not equal. + */ + template + inline bool + operator!=(const pareto_distribution<_RealType>& __d1, + const pareto_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A K continuous distribution for random numbers. + * + * The formula for the K probability density function is + * @f[ + * p(x|\lambda, \mu, \nu) = \frac{2}{x} + * \left(\frac{\lambda\nu x}{\mu}\right)^{\frac{\lambda + \nu}{2}} + * \frac{1}{\Gamma(\lambda)\Gamma(\nu)} + * K_{\nu - \lambda}\left(2\sqrt{\frac{\lambda\nu x}{\mu}}\right) + * @f] + * where @f$I_0(z)@f$ is the modified Bessel function of the second kind + * of order @f$\nu - \lambda@f$ and @f$\lambda > 0@f$, @f$\mu > 0@f$ + * and @f$\nu > 0@f$. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$\mu@f$
Variance@f$\mu^2\frac{\lambda + \nu + 1}{\lambda\nu}@f$
Range@f$[0, \infty)@f$
+ */ + template + class + k_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef k_distribution distribution_type; + + param_type(result_type __lambda_val = result_type(1), + result_type __mu_val = result_type(1), + result_type __nu_val = result_type(1)) + : _M_lambda(__lambda_val), _M_mu(__mu_val), _M_nu(__nu_val) + { + __glibcxx_assert(_M_lambda > result_type(0)); + __glibcxx_assert(_M_mu > result_type(0)); + __glibcxx_assert(_M_nu > result_type(0)); + } + + result_type + lambda() const + { return _M_lambda; } + + result_type + mu() const + { return _M_mu; } + + result_type + nu() const + { return _M_nu; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { + return __p1._M_lambda == __p2._M_lambda + && __p1._M_mu == __p2._M_mu + && __p1._M_nu == __p2._M_nu; + } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_lambda; + result_type _M_mu; + result_type _M_nu; + }; + + /** + * @brief Constructors. + */ + explicit + k_distribution(result_type __lambda_val = result_type(1), + result_type __mu_val = result_type(1), + result_type __nu_val = result_type(1)) + : _M_param(__lambda_val, __mu_val, __nu_val), + _M_gd1(__lambda_val, result_type(1) / __lambda_val), + _M_gd2(__nu_val, __mu_val / __nu_val) + { } + + explicit + k_distribution(const param_type& __p) + : _M_param(__p), + _M_gd1(__p.lambda(), result_type(1) / __p.lambda()), + _M_gd2(__p.nu(), __p.mu() / __p.nu()) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_gd1.reset(); + _M_gd2.reset(); + } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + lambda() const + { return _M_param.lambda(); } + + result_type + mu() const + { return _M_param.mu(); } + + result_type + nu() const + { return _M_param.nu(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator&); + + template + result_type + operator()(_UniformRandomNumberGenerator&, const param_type&); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two K distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const k_distribution& __d1, + const k_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_gd1 == __d2._M_gd1 + && __d1._M_gd2 == __d2._M_gd2); } + + /** + * @brief Inserts a %k_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %k_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const k_distribution<_RealType1>&); + + /** + * @brief Extracts a %k_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %k_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + k_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::gamma_distribution _M_gd1; + std::gamma_distribution _M_gd2; + }; + + /** + * @brief Return true if two K distributions are not equal. + */ + template + inline bool + operator!=(const k_distribution<_RealType>& __d1, + const k_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief An arcsine continuous distribution for random numbers. + * + * The formula for the arcsine probability density function is + * @f[ + * p(x|a,b) = \frac{1}{\pi \sqrt{(x - a)(b - x)}} + * @f] + * where @f$x >= a@f$ and @f$x <= b@f$. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$ (a + b) / 2 @f$
Variance@f$ (b - a)^2 / 8 @f$
Range@f$[a, b]@f$
+ */ + template + class + arcsine_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef arcsine_distribution distribution_type; + + param_type(result_type __a = result_type(0), + result_type __b = result_type(1)) + : _M_a(__a), _M_b(__b) + { + __glibcxx_assert(_M_a <= _M_b); + } + + result_type + a() const + { return _M_a; } + + result_type + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_a; + result_type _M_b; + }; + + /** + * @brief Constructors. + */ + explicit + arcsine_distribution(result_type __a = result_type(0), + result_type __b = result_type(1)) + : _M_param(__a, __b), + _M_ud(-1.5707963267948966192313216916397514L, + +1.5707963267948966192313216916397514L) + { } + + explicit + arcsine_distribution(const param_type& __p) + : _M_param(__p), + _M_ud(-1.5707963267948966192313216916397514L, + +1.5707963267948966192313216916397514L) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_ud.reset(); } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return this->a(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return this->b(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __x = std::sin(this->_M_ud(__urng)); + return (__x * (this->b() - this->a()) + + this->a() + this->b()) / result_type(2); + } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + result_type __x = std::sin(this->_M_ud(__urng)); + return (__x * (__p.b() - __p.a()) + + __p.a() + __p.b()) / result_type(2); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two arcsine distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const arcsine_distribution& __d1, + const arcsine_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_ud == __d2._M_ud); } + + /** + * @brief Inserts a %arcsine_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %arcsine_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const arcsine_distribution<_RealType1>&); + + /** + * @brief Extracts a %arcsine_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %arcsine_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + arcsine_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + std::uniform_real_distribution _M_ud; + }; + + /** + * @brief Return true if two arcsine distributions are not equal. + */ + template + inline bool + operator!=(const arcsine_distribution<_RealType>& __d1, + const arcsine_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A Hoyt continuous distribution for random numbers. + * + * The formula for the Hoyt probability density function is + * @f[ + * p(x|q,\omega) = \frac{(1 + q^2)x}{q\omega} + * \exp\left(-\frac{(1 + q^2)^2 x^2}{4 q^2 \omega}\right) + * I_0\left(\frac{(1 - q^4) x^2}{4 q^2 \omega}\right) + * @f] + * where @f$I_0(z)@f$ is the modified Bessel function of the first kind + * of order 0 and @f$0 < q < 1@f$. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$ \sqrt{\frac{2}{\pi}} \sqrt{\frac{\omega}{1 + q^2}} + * E(1 - q^2) @f$
Variance@f$ \omega \left(1 - \frac{2E^2(1 - q^2)} + * {\pi (1 + q^2)}\right) @f$
Range@f$[0, \infty)@f$
+ * where @f$E(x)@f$ is the elliptic function of the second kind. + */ + template + class + hoyt_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef hoyt_distribution distribution_type; + + param_type(result_type __q = result_type(0.5L), + result_type __omega = result_type(1)) + : _M_q(__q), _M_omega(__omega) + { + __glibcxx_assert(_M_q > result_type(0)); + __glibcxx_assert(_M_q < result_type(1)); + } + + result_type + q() const + { return _M_q; } + + result_type + omega() const + { return _M_omega; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_q == __p2._M_q && __p1._M_omega == __p2._M_omega; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_q; + result_type _M_omega; + }; + + /** + * @brief Constructors. + */ + explicit + hoyt_distribution(result_type __q = result_type(0.5L), + result_type __omega = result_type(1)) + : _M_param(__q, __omega), + _M_ad(result_type(0.5L) * (result_type(1) + __q * __q), + result_type(0.5L) * (result_type(1) + __q * __q) + / (__q * __q)), + _M_ed(result_type(1)) + { } + + explicit + hoyt_distribution(const param_type& __p) + : _M_param(__p), + _M_ad(result_type(0.5L) * (result_type(1) + __p.q() * __p.q()), + result_type(0.5L) * (result_type(1) + __p.q() * __p.q()) + / (__p.q() * __p.q())), + _M_ed(result_type(1)) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { + _M_ad.reset(); + _M_ed.reset(); + } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + q() const + { return _M_param.q(); } + + result_type + omega() const + { return _M_param.omega(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return result_type(0); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two Hoyt distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + friend bool + operator==(const hoyt_distribution& __d1, + const hoyt_distribution& __d2) + { return (__d1._M_param == __d2._M_param + && __d1._M_ad == __d2._M_ad + && __d1._M_ed == __d2._M_ed); } + + /** + * @brief Inserts a %hoyt_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %hoyt_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const hoyt_distribution<_RealType1>&); + + /** + * @brief Extracts a %hoyt_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %hoyt_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + hoyt_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + + __gnu_cxx::arcsine_distribution _M_ad; + std::exponential_distribution _M_ed; + }; + + /** + * @brief Return true if two Hoyt distributions are not equal. + */ + template + inline bool + operator!=(const hoyt_distribution<_RealType>& __d1, + const hoyt_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A triangular distribution for random numbers. + * + * The formula for the triangular probability density function is + * @f[ + * / 0 for x < a + * p(x|a,b,c) = | \frac{2(x-a)}{(c-a)(b-a)} for a <= x <= b + * | \frac{2(c-x)}{(c-a)(c-b)} for b < x <= c + * \ 0 for c < x + * @f] + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$ \frac{a+b+c}{2} @f$
Variance@f$ \frac{a^2+b^2+c^2-ab-ac-bc} + * {18}@f$
Range@f$[a, c]@f$
+ */ + template + class triangular_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + friend class triangular_distribution<_RealType>; + + explicit + param_type(_RealType __a = _RealType(0), + _RealType __b = _RealType(0.5), + _RealType __c = _RealType(1)) + : _M_a(__a), _M_b(__b), _M_c(__c) + { + __glibcxx_assert(_M_a <= _M_b); + __glibcxx_assert(_M_b <= _M_c); + __glibcxx_assert(_M_a < _M_c); + + _M_r_ab = (_M_b - _M_a) / (_M_c - _M_a); + _M_f_ab_ac = (_M_b - _M_a) * (_M_c - _M_a); + _M_f_bc_ac = (_M_c - _M_b) * (_M_c - _M_a); + } + + _RealType + a() const + { return _M_a; } + + _RealType + b() const + { return _M_b; } + + _RealType + c() const + { return _M_c; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { + return (__p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b + && __p1._M_c == __p2._M_c); + } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + + _RealType _M_a; + _RealType _M_b; + _RealType _M_c; + _RealType _M_r_ab; + _RealType _M_f_ab_ac; + _RealType _M_f_bc_ac; + }; + + /** + * @brief Constructs a triangle distribution with parameters + * @f$ a @f$, @f$ b @f$ and @f$ c @f$. + */ + explicit + triangular_distribution(result_type __a = result_type(0), + result_type __b = result_type(0.5), + result_type __c = result_type(1)) + : _M_param(__a, __b, __c) + { } + + explicit + triangular_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns the @f$ a @f$ of the distribution. + */ + result_type + a() const + { return _M_param.a(); } + + /** + * @brief Returns the @f$ b @f$ of the distribution. + */ + result_type + b() const + { return _M_param.b(); } + + /** + * @brief Returns the @f$ c @f$ of the distribution. + */ + result_type + c() const + { return _M_param.c(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return _M_param._M_a; } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return _M_param._M_c; } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + result_type __rnd = __aurng(); + if (__rnd <= __p._M_r_ab) + return __p.a() + std::sqrt(__rnd * __p._M_f_ab_ac); + else + return __p.c() - std::sqrt((result_type(1) - __rnd) + * __p._M_f_bc_ac); + } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two triangle distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const triangular_distribution& __d1, + const triangular_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %triangular_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %triangular_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::triangular_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %triangular_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %triangular_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::triangular_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two triangle distributions are different. + */ + template + inline bool + operator!=(const __gnu_cxx::triangular_distribution<_RealType>& __d1, + const __gnu_cxx::triangular_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A von Mises distribution for random numbers. + * + * The formula for the von Mises probability density function is + * @f[ + * p(x|\mu,\kappa) = \frac{e^{\kappa \cos(x-\mu)}} + * {2\pi I_0(\kappa)} + * @f] + * + * The generating functions use the method according to: + * + * D. J. Best and N. I. Fisher, 1979. "Efficient Simulation of the + * von Mises Distribution", Journal of the Royal Statistical Society. + * Series C (Applied Statistics), Vol. 28, No. 2, pp. 152-157. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$ \mu @f$
Variance@f$ 1-I_1(\kappa)/I_0(\kappa) @f$
Range@f$[-\pi, \pi]@f$
+ */ + template + class von_mises_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + /** Parameter type. */ + struct param_type + { + friend class von_mises_distribution<_RealType>; + + explicit + param_type(_RealType __mu = _RealType(0), + _RealType __kappa = _RealType(1)) + : _M_mu(__mu), _M_kappa(__kappa) + { + const _RealType __pi = __gnu_cxx::__math_constants<_RealType>::__pi; + __glibcxx_assert(_M_mu >= -__pi && _M_mu <= __pi); + __glibcxx_assert(_M_kappa >= _RealType(0)); + + auto __tau = std::sqrt(_RealType(4) * _M_kappa * _M_kappa + + _RealType(1)) + _RealType(1); + auto __rho = ((__tau - std::sqrt(_RealType(2) * __tau)) + / (_RealType(2) * _M_kappa)); + _M_r = (_RealType(1) + __rho * __rho) / (_RealType(2) * __rho); + } + + _RealType + mu() const + { return _M_mu; } + + _RealType + kappa() const + { return _M_kappa; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_mu == __p2._M_mu && __p1._M_kappa == __p2._M_kappa; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_mu; + _RealType _M_kappa; + _RealType _M_r; + }; + + /** + * @brief Constructs a von Mises distribution with parameters + * @f$\mu@f$ and @f$\kappa@f$. + */ + explicit + von_mises_distribution(result_type __mu = result_type(0), + result_type __kappa = result_type(1)) + : _M_param(__mu, __kappa) + { } + + explicit + von_mises_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns the @f$ \mu @f$ of the distribution. + */ + result_type + mu() const + { return _M_param.mu(); } + + /** + * @brief Returns the @f$ \kappa @f$ of the distribution. + */ + result_type + kappa() const + { return _M_param.kappa(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { + return -__gnu_cxx::__math_constants::__pi; + } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { + return __gnu_cxx::__math_constants::__pi; + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, _M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two von Mises distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const von_mises_distribution& __d1, + const von_mises_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %von_mises_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %von_mises_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::von_mises_distribution<_RealType1>& __x); + + /** + * @brief Extracts a %von_mises_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %von_mises_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::von_mises_distribution<_RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two von Mises distributions are different. + */ + template + inline bool + operator!=(const __gnu_cxx::von_mises_distribution<_RealType>& __d1, + const __gnu_cxx::von_mises_distribution<_RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A discrete hypergeometric random number distribution. + * + * The hypergeometric distribution is a discrete probability distribution + * that describes the probability of @p k successes in @p n draws @a without + * replacement from a finite population of size @p N containing exactly @p K + * successes. + * + * The formula for the hypergeometric probability density function is + * @f[ + * p(k|N,K,n) = \frac{\binom{K}{k} \binom{N-K}{n-k}}{\binom{N}{n}} + * @f] + * where @f$N@f$ is the total population of the distribution, + * @f$K@f$ is the total population of the distribution. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$ n\frac{K}{N} @f$
Variance@f$ n\frac{K}{N}\frac{N-K}{N}\frac{N-n}{N-1} + * @f$
Range@f$[max(0, n+K-N), min(K, n)]@f$
+ */ + template + class hypergeometric_distribution + { + static_assert(std::is_unsigned<_UIntType>::value, "template argument " + "substituting _UIntType not an unsigned integral type"); + + public: + /** The type of the range of the distribution. */ + typedef _UIntType result_type; + + /** Parameter type. */ + struct param_type + { + typedef hypergeometric_distribution<_UIntType> distribution_type; + friend class hypergeometric_distribution<_UIntType>; + + explicit + param_type(result_type __N = 10, result_type __K = 5, + result_type __n = 1) + : _M_N{__N}, _M_K{__K}, _M_n{__n} + { + __glibcxx_assert(_M_N >= _M_K); + __glibcxx_assert(_M_N >= _M_n); + } + + result_type + total_size() const + { return _M_N; } + + result_type + successful_size() const + { return _M_K; } + + result_type + unsuccessful_size() const + { return _M_N - _M_K; } + + result_type + total_draws() const + { return _M_n; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return (__p1._M_N == __p2._M_N) + && (__p1._M_K == __p2._M_K) + && (__p1._M_n == __p2._M_n); } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + + result_type _M_N; + result_type _M_K; + result_type _M_n; + }; + + // constructors and member function + explicit + hypergeometric_distribution(result_type __N = 10, result_type __K = 5, + result_type __n = 1) + : _M_param{__N, __K, __n} + { } + + explicit + hypergeometric_distribution(const param_type& __p) + : _M_param{__p} + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Returns the distribution parameter @p N, + * the total number of items. + */ + result_type + total_size() const + { return this->_M_param.total_size(); } + + /** + * @brief Returns the distribution parameter @p K, + * the total number of successful items. + */ + result_type + successful_size() const + { return this->_M_param.successful_size(); } + + /** + * @brief Returns the total number of unsuccessful items @f$ N - K @f$. + */ + result_type + unsuccessful_size() const + { return this->_M_param.unsuccessful_size(); } + + /** + * @brief Returns the distribution parameter @p n, + * the total number of draws. + */ + result_type + total_draws() const + { return this->_M_param.total_draws(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return this->_M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { this->_M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { + using _IntType = typename std::make_signed::type; + return static_cast(std::max(static_cast<_IntType>(0), + static_cast<_IntType>(this->total_draws() + - this->unsuccessful_size()))); + } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::min(this->successful_size(), this->total_draws()); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, this->_M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, this->_M_param); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two hypergeometric distributions have the same + * parameters and the sequences that would be generated + * are equal. + */ + friend bool + operator==(const hypergeometric_distribution& __d1, + const hypergeometric_distribution& __d2) + { return __d1._M_param == __d2._M_param; } + + /** + * @brief Inserts a %hypergeometric_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %hypergeometric_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::hypergeometric_distribution<_UIntType1>& + __x); + + /** + * @brief Extracts a %hypergeometric_distribution random number + * distribution @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %hypergeometric_distribution random number generator + * distribution. + * + * @returns The input stream with @p __x extracted or in an error + * state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::hypergeometric_distribution<_UIntType1>& __x); + + private: + + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two hypergeometric distributions are different. + */ + template + inline bool + operator!=(const __gnu_cxx::hypergeometric_distribution<_UIntType>& __d1, + const __gnu_cxx::hypergeometric_distribution<_UIntType>& __d2) + { return !(__d1 == __d2); } + + /** + * @brief A logistic continuous distribution for random numbers. + * + * The formula for the logistic probability density function is + * @f[ + * p(x|\a,\b) = \frac{e^{(x - a)/b}}{b[1 + e^{(x - a)/b}]^2} + * @f] + * where @f$b > 0@f$. + * + * The formula for the logistic probability function is + * @f[ + * cdf(x|\a,\b) = \frac{e^{(x - a)/b}}{1 + e^{(x - a)/b}} + * @f] + * where @f$b > 0@f$. + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$a@f$
Variance@f$b^2\pi^2/3@f$
Range@f$[0, \infty)@f$
+ */ + template + class + logistic_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + + public: + /** The type of the range of the distribution. */ + typedef _RealType result_type; + + /** Parameter type. */ + struct param_type + { + typedef logistic_distribution distribution_type; + + param_type(result_type __a = result_type(0), + result_type __b = result_type(1)) + : _M_a(__a), _M_b(__b) + { + __glibcxx_assert(_M_b > result_type(0)); + } + + result_type + a() const + { return _M_a; } + + result_type + b() const + { return _M_b; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_a == __p2._M_a && __p1._M_b == __p2._M_b; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + void _M_initialize(); + + result_type _M_a; + result_type _M_b; + }; + + /** + * @brief Constructors. + */ + explicit + logistic_distribution(result_type __a = result_type(0), + result_type __b = result_type(1)) + : _M_param(__a, __b) + { } + + explicit + logistic_distribution(const param_type& __p) + : _M_param(__p) + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { } + + /** + * @brief Return the parameters of the distribution. + */ + result_type + a() const + { return _M_param.a(); } + + result_type + b() const + { return _M_param.b(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + */ + result_type + min() const + { return -std::numeric_limits::max(); } + + /** + * @brief Returns the least upper bound value of the distribution. + */ + result_type + max() const + { return std::numeric_limits::max(); } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, this->_M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator&, + const param_type&); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, this->param()); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two logistic distributions have + * the same parameters and the sequences that would + * be generated are equal. + */ + template + friend bool + operator==(const logistic_distribution<_RealType1>& __d1, + const logistic_distribution<_RealType1>& __d2) + { return __d1.param() == __d2.param(); } + + /** + * @brief Inserts a %logistic_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %logistic_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>&, + const logistic_distribution<_RealType1>&); + + /** + * @brief Extracts a %logistic_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %logistic_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>&, + logistic_distribution<_RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + }; + + /** + * @brief Return true if two logistic distributions are not equal. + */ + template + inline bool + operator!=(const logistic_distribution<_RealType1>& __d1, + const logistic_distribution<_RealType1>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A distribution for random coordinates on a unit sphere. + * + * The method used in the generation function is attributed by Donald Knuth + * to G. W. Brown, Modern Mathematics for the Engineer (1956). + */ + template + class uniform_on_sphere_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + static_assert(_Dimen != 0, "dimension is zero"); + + public: + /** The type of the range of the distribution. */ + typedef std::array<_RealType, _Dimen> result_type; + + /** Parameter type. */ + struct param_type + { + explicit + param_type() + { } + + friend bool + operator==(const param_type&, const param_type&) + { return true; } + + friend bool + operator!=(const param_type&, const param_type&) + { return false; } + }; + + /** + * @brief Constructs a uniform on sphere distribution. + */ + explicit + uniform_on_sphere_distribution() + : _M_param(), _M_nd() + { } + + explicit + uniform_on_sphere_distribution(const param_type& __p) + : _M_param(__p), _M_nd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_nd.reset(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + * This function makes no sense for this distribution. + */ + result_type + min() const + { + result_type __res; + __res.fill(0); + return __res; + } + + /** + * @brief Returns the least upper bound value of the distribution. + * This function makes no sense for this distribution. + */ + result_type + max() const + { + result_type __res; + __res.fill(0); + return __res; + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, this->param()); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two uniform on sphere distributions have + * the same parameters and the sequences that would be + * generated are equal. + */ + friend bool + operator==(const uniform_on_sphere_distribution& __d1, + const uniform_on_sphere_distribution& __d2) + { return __d1._M_nd == __d2._M_nd; } + + /** + * @brief Inserts a %uniform_on_sphere_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %uniform_on_sphere_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::uniform_on_sphere_distribution<_Dimen1, + _RealType1>& + __x); + + /** + * @brief Extracts a %uniform_on_sphere_distribution random number + * distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_on_sphere_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::uniform_on_sphere_distribution<_Dimen1, + _RealType1>& __x); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + std::normal_distribution<_RealType> _M_nd; + }; + + /** + * @brief Return true if two uniform on sphere distributions are different. + */ + template + inline bool + operator!=(const __gnu_cxx::uniform_on_sphere_distribution<_Dimen, + _RealType>& __d1, + const __gnu_cxx::uniform_on_sphere_distribution<_Dimen, + _RealType>& __d2) + { return !(__d1 == __d2); } + + + /** + * @brief A distribution for random coordinates inside a unit sphere. + */ + template + class uniform_inside_sphere_distribution + { + static_assert(std::is_floating_point<_RealType>::value, + "template argument not a floating point type"); + static_assert(_Dimen != 0, "dimension is zero"); + + public: + /** The type of the range of the distribution. */ + using result_type = std::array<_RealType, _Dimen>; + + /** Parameter type. */ + struct param_type + { + using distribution_type + = uniform_inside_sphere_distribution<_Dimen, _RealType>; + friend class uniform_inside_sphere_distribution<_Dimen, _RealType>; + + explicit + param_type(_RealType __radius = _RealType(1)) + : _M_radius(__radius) + { + __glibcxx_assert(_M_radius > _RealType(0)); + } + + _RealType + radius() const + { return _M_radius; } + + friend bool + operator==(const param_type& __p1, const param_type& __p2) + { return __p1._M_radius == __p2._M_radius; } + + friend bool + operator!=(const param_type& __p1, const param_type& __p2) + { return !(__p1 == __p2); } + + private: + _RealType _M_radius; + }; + + /** + * @brief Constructors. + */ + explicit + uniform_inside_sphere_distribution(_RealType __radius = _RealType(1)) + : _M_param(__radius), _M_uosd() + { } + + explicit + uniform_inside_sphere_distribution(const param_type& __p) + : _M_param(__p), _M_uosd() + { } + + /** + * @brief Resets the distribution state. + */ + void + reset() + { _M_uosd.reset(); } + + /** + * @brief Returns the @f$radius@f$ of the distribution. + */ + _RealType + radius() const + { return _M_param.radius(); } + + /** + * @brief Returns the parameter set of the distribution. + */ + param_type + param() const + { return _M_param; } + + /** + * @brief Sets the parameter set of the distribution. + * @param __param The new parameter set of the distribution. + */ + void + param(const param_type& __param) + { _M_param = __param; } + + /** + * @brief Returns the greatest lower bound value of the distribution. + * This function makes no sense for this distribution. + */ + result_type + min() const + { + result_type __res; + __res.fill(0); + return __res; + } + + /** + * @brief Returns the least upper bound value of the distribution. + * This function makes no sense for this distribution. + */ + result_type + max() const + { + result_type __res; + __res.fill(0); + return __res; + } + + /** + * @brief Generating functions. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return this->operator()(__urng, _M_param); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p); + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng) + { this->__generate(__f, __t, __urng, this->param()); } + + template + void + __generate(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + template + void + __generate(result_type* __f, result_type* __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { this->__generate_impl(__f, __t, __urng, __p); } + + /** + * @brief Return true if two uniform on sphere distributions have + * the same parameters and the sequences that would be + * generated are equal. + */ + friend bool + operator==(const uniform_inside_sphere_distribution& __d1, + const uniform_inside_sphere_distribution& __d2) + { return __d1._M_param == __d2._M_param && __d1._M_uosd == __d2._M_uosd; } + + /** + * @brief Inserts a %uniform_inside_sphere_distribution random number + * distribution @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %uniform_inside_sphere_distribution random number + * distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen1, + _RealType1>& + ); + + /** + * @brief Extracts a %uniform_inside_sphere_distribution random number + * distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_inside_sphere_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::uniform_inside_sphere_distribution<_Dimen1, + _RealType1>&); + + private: + template + void + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p); + + param_type _M_param; + uniform_on_sphere_distribution<_Dimen, _RealType> _M_uosd; + }; + + /** + * @brief Return true if two uniform on sphere distributions are different. + */ + template + inline bool + operator!=(const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, + _RealType>& __d1, + const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, + _RealType>& __d2) + { return !(__d1 == __d2); } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + +#include +#include + +#endif // _GLIBCXX_USE_C99_STDINT_TR1 && UINT32_C + +#endif // C++11 + +#endif // _EXT_RANDOM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/random.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/random.tcc new file mode 100644 index 000000000..07857dd6c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/random.tcc @@ -0,0 +1,1850 @@ +// Random number extensions -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file ext/random.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{ext/random} + */ + +#ifndef _EXT_RANDOM_TCC +#define _EXT_RANDOM_TCC 1 + +#pragma GCC system_header + +namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + + template + void simd_fast_mersenne_twister_engine<_UIntType, __m, + __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, + __parity4>:: + seed(_UIntType __seed) + { + _M_state32[0] = static_cast(__seed); + for (size_t __i = 1; __i < _M_nstate32; ++__i) + _M_state32[__i] = (1812433253UL + * (_M_state32[__i - 1] ^ (_M_state32[__i - 1] >> 30)) + + __i); + _M_pos = state_size; + _M_period_certification(); + } + + + namespace { + + inline uint32_t _Func1(uint32_t __x) + { + return (__x ^ (__x >> 27)) * UINT32_C(1664525); + } + + inline uint32_t _Func2(uint32_t __x) + { + return (__x ^ (__x >> 27)) * UINT32_C(1566083941); + } + + } + + + template + template + typename std::enable_if::value>::type + simd_fast_mersenne_twister_engine<_UIntType, __m, + __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, + __parity4>:: + seed(_Sseq& __q) + { + size_t __lag; + + if (_M_nstate32 >= 623) + __lag = 11; + else if (_M_nstate32 >= 68) + __lag = 7; + else if (_M_nstate32 >= 39) + __lag = 5; + else + __lag = 3; + const size_t __mid = (_M_nstate32 - __lag) / 2; + + std::fill(_M_state32, _M_state32 + _M_nstate32, UINT32_C(0x8b8b8b8b)); + uint32_t __arr[_M_nstate32]; + __q.generate(__arr + 0, __arr + _M_nstate32); + + uint32_t __r = _Func1(_M_state32[0] ^ _M_state32[__mid] + ^ _M_state32[_M_nstate32 - 1]); + _M_state32[__mid] += __r; + __r += _M_nstate32; + _M_state32[__mid + __lag] += __r; + _M_state32[0] = __r; + + for (size_t __i = 1, __j = 0; __j < _M_nstate32; ++__j) + { + __r = _Func1(_M_state32[__i] + ^ _M_state32[(__i + __mid) % _M_nstate32] + ^ _M_state32[(__i + _M_nstate32 - 1) % _M_nstate32]); + _M_state32[(__i + __mid) % _M_nstate32] += __r; + __r += __arr[__j] + __i; + _M_state32[(__i + __mid + __lag) % _M_nstate32] += __r; + _M_state32[__i] = __r; + __i = (__i + 1) % _M_nstate32; + } + for (size_t __j = 0; __j < _M_nstate32; ++__j) + { + const size_t __i = (__j + 1) % _M_nstate32; + __r = _Func2(_M_state32[__i] + + _M_state32[(__i + __mid) % _M_nstate32] + + _M_state32[(__i + _M_nstate32 - 1) % _M_nstate32]); + _M_state32[(__i + __mid) % _M_nstate32] ^= __r; + __r -= __i; + _M_state32[(__i + __mid + __lag) % _M_nstate32] ^= __r; + _M_state32[__i] = __r; + } + + _M_pos = state_size; + _M_period_certification(); + } + + + template + void simd_fast_mersenne_twister_engine<_UIntType, __m, + __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, + __parity4>:: + _M_period_certification(void) + { + static const uint32_t __parity[4] = { __parity1, __parity2, + __parity3, __parity4 }; + uint32_t __inner = 0; + for (size_t __i = 0; __i < 4; ++__i) + if (__parity[__i] != 0) + __inner ^= _M_state32[__i] & __parity[__i]; + + if (__builtin_parity(__inner) & 1) + return; + for (size_t __i = 0; __i < 4; ++__i) + if (__parity[__i] != 0) + { + _M_state32[__i] ^= 1 << (__builtin_ffs(__parity[__i]) - 1); + return; + } + __builtin_unreachable(); + } + + + template + void simd_fast_mersenne_twister_engine<_UIntType, __m, + __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, + __parity4>:: + discard(unsigned long long __z) + { + while (__z > state_size - _M_pos) + { + __z -= state_size - _M_pos; + + _M_gen_rand(); + } + + _M_pos += __z; + } + + +#ifndef _GLIBCXX_OPT_HAVE_RANDOM_SFMT_GEN_READ + + namespace { + + template + inline void __rshift(uint32_t *__out, const uint32_t *__in) + { + uint64_t __th = ((static_cast(__in[3]) << 32) + | static_cast(__in[2])); + uint64_t __tl = ((static_cast(__in[1]) << 32) + | static_cast(__in[0])); + + uint64_t __oh = __th >> (__shift * 8); + uint64_t __ol = __tl >> (__shift * 8); + __ol |= __th << (64 - __shift * 8); + __out[1] = static_cast(__ol >> 32); + __out[0] = static_cast(__ol); + __out[3] = static_cast(__oh >> 32); + __out[2] = static_cast(__oh); + } + + + template + inline void __lshift(uint32_t *__out, const uint32_t *__in) + { + uint64_t __th = ((static_cast(__in[3]) << 32) + | static_cast(__in[2])); + uint64_t __tl = ((static_cast(__in[1]) << 32) + | static_cast(__in[0])); + + uint64_t __oh = __th << (__shift * 8); + uint64_t __ol = __tl << (__shift * 8); + __oh |= __tl >> (64 - __shift * 8); + __out[1] = static_cast(__ol >> 32); + __out[0] = static_cast(__ol); + __out[3] = static_cast(__oh >> 32); + __out[2] = static_cast(__oh); + } + + + template + inline void __recursion(uint32_t *__r, + const uint32_t *__a, const uint32_t *__b, + const uint32_t *__c, const uint32_t *__d) + { + uint32_t __x[4]; + uint32_t __y[4]; + + __lshift<__sl2>(__x, __a); + __rshift<__sr2>(__y, __c); + __r[0] = (__a[0] ^ __x[0] ^ ((__b[0] >> __sr1) & __msk1) + ^ __y[0] ^ (__d[0] << __sl1)); + __r[1] = (__a[1] ^ __x[1] ^ ((__b[1] >> __sr1) & __msk2) + ^ __y[1] ^ (__d[1] << __sl1)); + __r[2] = (__a[2] ^ __x[2] ^ ((__b[2] >> __sr1) & __msk3) + ^ __y[2] ^ (__d[2] << __sl1)); + __r[3] = (__a[3] ^ __x[3] ^ ((__b[3] >> __sr1) & __msk4) + ^ __y[3] ^ (__d[3] << __sl1)); + } + + } + + + template + void simd_fast_mersenne_twister_engine<_UIntType, __m, + __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, + __parity4>:: + _M_gen_rand(void) + { + const uint32_t *__r1 = &_M_state32[_M_nstate32 - 8]; + const uint32_t *__r2 = &_M_state32[_M_nstate32 - 4]; + static constexpr size_t __pos1_32 = __pos1 * 4; + + size_t __i; + for (__i = 0; __i < _M_nstate32 - __pos1_32; __i += 4) + { + __recursion<__sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4> + (&_M_state32[__i], &_M_state32[__i], + &_M_state32[__i + __pos1_32], __r1, __r2); + __r1 = __r2; + __r2 = &_M_state32[__i]; + } + + for (; __i < _M_nstate32; __i += 4) + { + __recursion<__sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4> + (&_M_state32[__i], &_M_state32[__i], + &_M_state32[__i + __pos1_32 - _M_nstate32], __r1, __r2); + __r1 = __r2; + __r2 = &_M_state32[__i]; + } + + _M_pos = 0; + } + +#endif + +#ifndef _GLIBCXX_OPT_HAVE_RANDOM_SFMT_OPERATOREQUAL + template + bool + operator==(const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, __parity4>& __lhs, + const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, __parity4>& __rhs) + { + typedef __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, __parity4> __engine; + return (std::equal(__lhs._M_stateT, + __lhs._M_stateT + __engine::state_size, + __rhs._M_stateT) + && __lhs._M_pos == __rhs._M_pos); + } +#endif + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, __parity4>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (size_t __i = 0; __i < __x._M_nstate32; ++__i) + __os << __x._M_state32[__i] << __space; + __os << __x._M_pos; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::simd_fast_mersenne_twister_engine<_UIntType, + __m, __pos1, __sl1, __sl2, __sr1, __sr2, + __msk1, __msk2, __msk3, __msk4, + __parity1, __parity2, __parity3, __parity4>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (size_t __i = 0; __i < __x._M_nstate32; ++__i) + __is >> __x._M_state32[__i]; + __is >> __x._M_pos; + + __is.flags(__flags); + return __is; + } + +#endif // __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ + + /** + * Iteration method due to M.D. Jhnk. + * + * M.D. Jhnk, Erzeugung von betaverteilten und gammaverteilten + * Zufallszahlen, Metrika, Volume 8, 1964 + */ + template + template + typename beta_distribution<_RealType>::result_type + beta_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __x, __y; + do + { + __x = std::exp(std::log(__aurng()) / __param.alpha()); + __y = std::exp(std::log(__aurng()) / __param.beta()); + } + while (__x + __y > result_type(1)); + + return __x / (__x + __y); + } + + template + template + void + beta_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f != __t) + { + result_type __x, __y; + do + { + __x = std::exp(std::log(__aurng()) / __param.alpha()); + __y = std::exp(std::log(__aurng()) / __param.beta()); + } + while (__x + __y > result_type(1)); + + *__f++ = __x / (__x + __y); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::beta_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.alpha() << __space << __x.beta(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::beta_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __alpha_val, __beta_val; + __is >> __alpha_val >> __beta_val; + __x.param(typename __gnu_cxx::beta_distribution<_RealType>:: + param_type(__alpha_val, __beta_val)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + normal_mv_distribution<_Dimen, _RealType>::param_type:: + _M_init_full(_InputIterator1 __meanbegin, _InputIterator1 __meanend, + _InputIterator2 __varcovbegin, _InputIterator2 __varcovend) + { + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + std::fill(std::copy(__meanbegin, __meanend, _M_mean.begin()), + _M_mean.end(), _RealType(0)); + + // Perform the Cholesky decomposition + auto __w = _M_t.begin(); + for (size_t __j = 0; __j < _Dimen; ++__j) + { + _RealType __sum = _RealType(0); + + auto __slitbegin = __w; + auto __cit = _M_t.begin(); + for (size_t __i = 0; __i < __j; ++__i) + { + auto __slit = __slitbegin; + _RealType __s = *__varcovbegin++; + for (size_t __k = 0; __k < __i; ++__k) + __s -= *__slit++ * *__cit++; + + *__w++ = __s /= *__cit++; + __sum += __s * __s; + } + + __sum = *__varcovbegin - __sum; + if (__builtin_expect(__sum <= _RealType(0), 0)) + std::__throw_runtime_error(__N("normal_mv_distribution::" + "param_type::_M_init_full")); + *__w++ = std::sqrt(__sum); + + std::advance(__varcovbegin, _Dimen - __j); + } + } + + template + template + void + normal_mv_distribution<_Dimen, _RealType>::param_type:: + _M_init_lower(_InputIterator1 __meanbegin, _InputIterator1 __meanend, + _InputIterator2 __varcovbegin, _InputIterator2 __varcovend) + { + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + std::fill(std::copy(__meanbegin, __meanend, _M_mean.begin()), + _M_mean.end(), _RealType(0)); + + // Perform the Cholesky decomposition + auto __w = _M_t.begin(); + for (size_t __j = 0; __j < _Dimen; ++__j) + { + _RealType __sum = _RealType(0); + + auto __slitbegin = __w; + auto __cit = _M_t.begin(); + for (size_t __i = 0; __i < __j; ++__i) + { + auto __slit = __slitbegin; + _RealType __s = *__varcovbegin++; + for (size_t __k = 0; __k < __i; ++__k) + __s -= *__slit++ * *__cit++; + + *__w++ = __s /= *__cit++; + __sum += __s * __s; + } + + __sum = *__varcovbegin++ - __sum; + if (__builtin_expect(__sum <= _RealType(0), 0)) + std::__throw_runtime_error(__N("normal_mv_distribution::" + "param_type::_M_init_full")); + *__w++ = std::sqrt(__sum); + } + } + + template + template + void + normal_mv_distribution<_Dimen, _RealType>::param_type:: + _M_init_diagonal(_InputIterator1 __meanbegin, _InputIterator1 __meanend, + _InputIterator2 __varbegin, _InputIterator2 __varend) + { + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) + __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) + std::fill(std::copy(__meanbegin, __meanend, _M_mean.begin()), + _M_mean.end(), _RealType(0)); + + auto __w = _M_t.begin(); + size_t __step = 0; + while (__varbegin != __varend) + { + std::fill_n(__w, __step, _RealType(0)); + __w += __step++; + if (__builtin_expect(*__varbegin < _RealType(0), 0)) + std::__throw_runtime_error(__N("normal_mv_distribution::" + "param_type::_M_init_diagonal")); + *__w++ = std::sqrt(*__varbegin++); + } + } + + template + template + typename normal_mv_distribution<_Dimen, _RealType>::result_type + normal_mv_distribution<_Dimen, _RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + result_type __ret; + + _M_nd.__generate(__ret.begin(), __ret.end(), __urng); + + auto __t_it = __param._M_t.crbegin(); + for (size_t __i = _Dimen; __i > 0; --__i) + { + _RealType __sum = _RealType(0); + for (size_t __j = __i; __j > 0; --__j) + __sum += __ret[__j - 1] * *__t_it++; + __ret[__i - 1] = __sum; + } + + return __ret; + } + + template + template + void + normal_mv_distribution<_Dimen, _RealType>:: + __generate_impl(_ForwardIterator __f, _ForwardIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_Mutable_ForwardIteratorConcept< + _ForwardIterator>) + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + bool + operator==(const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& + __d1, + const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& + __d2) + { + return __d1._M_param == __d2._M_param && __d1._M_nd == __d2._M_nd; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + auto __mean = __x._M_param.mean(); + for (auto __it : __mean) + __os << __it << __space; + auto __t = __x._M_param.varcov(); + for (auto __it : __t) + __os << __it << __space; + + __os << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::normal_mv_distribution<_Dimen, _RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + std::array<_RealType, _Dimen> __mean; + for (auto& __it : __mean) + __is >> __it; + std::array<_RealType, _Dimen * (_Dimen + 1) / 2> __varcov; + for (auto& __it : __varcov) + __is >> __it; + + __is >> __x._M_nd; + + __x.param(typename normal_mv_distribution<_Dimen, _RealType>:: + param_type(__mean.begin(), __mean.end(), + __varcov.begin(), __varcov.end())); + + __is.flags(__flags); + return __is; + } + + + template + template + void + rice_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + while (__f != __t) + { + typename std::normal_distribution::param_type + __px(__p.nu(), __p.sigma()), __py(result_type(0), __p.sigma()); + result_type __x = this->_M_ndx(__px, __urng); + result_type __y = this->_M_ndy(__py, __urng); +#if _GLIBCXX_USE_C99_MATH_TR1 + *__f++ = std::hypot(__x, __y); +#else + *__f++ = std::sqrt(__x * __x + __y * __y); +#endif + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const rice_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.nu() << __space << __x.sigma(); + __os << __space << __x._M_ndx; + __os << __space << __x._M_ndy; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + rice_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __nu_val, __sigma_val; + __is >> __nu_val >> __sigma_val; + __is >> __x._M_ndx; + __is >> __x._M_ndy; + __x.param(typename rice_distribution<_RealType>:: + param_type(__nu_val, __sigma_val)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + nakagami_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + typename std::gamma_distribution::param_type + __pg(__p.mu(), __p.omega() / __p.mu()); + while (__f != __t) + *__f++ = std::sqrt(this->_M_gd(__pg, __urng)); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const nakagami_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.mu() << __space << __x.omega(); + __os << __space << __x._M_gd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + nakagami_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __mu_val, __omega_val; + __is >> __mu_val >> __omega_val; + __is >> __x._M_gd; + __x.param(typename nakagami_distribution<_RealType>:: + param_type(__mu_val, __omega_val)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + pareto_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + result_type __mu_val = __p.mu(); + result_type __malphinv = -result_type(1) / __p.alpha(); + while (__f != __t) + *__f++ = __mu_val * std::pow(this->_M_ud(__urng), __malphinv); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const pareto_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.alpha() << __space << __x.mu(); + __os << __space << __x._M_ud; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + pareto_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __alpha_val, __mu_val; + __is >> __alpha_val >> __mu_val; + __is >> __x._M_ud; + __x.param(typename pareto_distribution<_RealType>:: + param_type(__alpha_val, __mu_val)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename k_distribution<_RealType>::result_type + k_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __x = this->_M_gd1(__urng); + result_type __y = this->_M_gd2(__urng); + return std::sqrt(__x * __y); + } + + template + template + typename k_distribution<_RealType>::result_type + k_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + typename std::gamma_distribution::param_type + __p1(__p.lambda(), result_type(1) / __p.lambda()), + __p2(__p.nu(), __p.mu() / __p.nu()); + result_type __x = this->_M_gd1(__p1, __urng); + result_type __y = this->_M_gd2(__p2, __urng); + return std::sqrt(__x * __y); + } + + template + template + void + k_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + typename std::gamma_distribution::param_type + __p1(__p.lambda(), result_type(1) / __p.lambda()), + __p2(__p.nu(), __p.mu() / __p.nu()); + while (__f != __t) + { + result_type __x = this->_M_gd1(__p1, __urng); + result_type __y = this->_M_gd2(__p2, __urng); + *__f++ = std::sqrt(__x * __y); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const k_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.lambda() << __space << __x.mu() << __space << __x.nu(); + __os << __space << __x._M_gd1; + __os << __space << __x._M_gd2; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + k_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __lambda_val, __mu_val, __nu_val; + __is >> __lambda_val >> __mu_val >> __nu_val; + __is >> __x._M_gd1; + __is >> __x._M_gd2; + __x.param(typename k_distribution<_RealType>:: + param_type(__lambda_val, __mu_val, __nu_val)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + arcsine_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + result_type __dif = __p.b() - __p.a(); + result_type __sum = __p.a() + __p.b(); + while (__f != __t) + { + result_type __x = std::sin(this->_M_ud(__urng)); + *__f++ = (__x * __dif + __sum) / result_type(2); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const arcsine_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + __os << __space << __x._M_ud; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + arcsine_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __is >> __x._M_ud; + __x.param(typename arcsine_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename hoyt_distribution<_RealType>::result_type + hoyt_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __x = this->_M_ad(__urng); + result_type __y = this->_M_ed(__urng); + return (result_type(2) * this->q() + / (result_type(1) + this->q() * this->q())) + * std::sqrt(this->omega() * __x * __y); + } + + template + template + typename hoyt_distribution<_RealType>::result_type + hoyt_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + result_type __q2 = __p.q() * __p.q(); + result_type __num = result_type(0.5L) * (result_type(1) + __q2); + typename __gnu_cxx::arcsine_distribution::param_type + __pa(__num, __num / __q2); + result_type __x = this->_M_ad(__pa, __urng); + result_type __y = this->_M_ed(__urng); + return (result_type(2) * __p.q() / (result_type(1) + __q2)) + * std::sqrt(__p.omega() * __x * __y); + } + + template + template + void + hoyt_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + result_type __2q = result_type(2) * __p.q(); + result_type __q2 = __p.q() * __p.q(); + result_type __q2p1 = result_type(1) + __q2; + result_type __num = result_type(0.5L) * __q2p1; + result_type __omega = __p.omega(); + typename __gnu_cxx::arcsine_distribution::param_type + __pa(__num, __num / __q2); + while (__f != __t) + { + result_type __x = this->_M_ad(__pa, __urng); + result_type __y = this->_M_ed(__urng); + *__f++ = (__2q / __q2p1) * std::sqrt(__omega * __x * __y); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const hoyt_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.q() << __space << __x.omega(); + __os << __space << __x._M_ad; + __os << __space << __x._M_ed; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + hoyt_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __q, __omega; + __is >> __q >> __omega; + __is >> __x._M_ad; + __is >> __x._M_ed; + __x.param(typename hoyt_distribution<_RealType>:: + param_type(__q, __omega)); + + __is.flags(__flags); + return __is; + } + + + template + template + void + triangular_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::triangular_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b() << __space << __x.c(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::triangular_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b, __c; + __is >> __a >> __b >> __c; + __x.param(typename __gnu_cxx::triangular_distribution<_RealType>:: + param_type(__a, __b, __c)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename von_mises_distribution<_RealType>::result_type + von_mises_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + const result_type __pi + = __gnu_cxx::__math_constants::__pi; + std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __f; + while (1) + { + result_type __rnd = std::cos(__pi * __aurng()); + __f = (result_type(1) + __p._M_r * __rnd) / (__p._M_r + __rnd); + result_type __c = __p._M_kappa * (__p._M_r - __f); + + result_type __rnd2 = __aurng(); + if (__c * (result_type(2) - __c) > __rnd2) + break; + if (std::log(__c / __rnd2) >= __c - result_type(1)) + break; + } + + result_type __res = std::acos(__f); +#if _GLIBCXX_USE_C99_MATH_TR1 + __res = std::copysign(__res, __aurng() - result_type(0.5)); +#else + if (__aurng() < result_type(0.5)) + __res = -__res; +#endif + __res += __p._M_mu; + if (__res > __pi) + __res -= result_type(2) * __pi; + else if (__res < -__pi) + __res += result_type(2) * __pi; + return __res; + } + + template + template + void + von_mises_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::von_mises_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.mu() << __space << __x.kappa(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::von_mises_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __mu, __kappa; + __is >> __mu >> __kappa; + __x.param(typename __gnu_cxx::von_mises_distribution<_RealType>:: + param_type(__mu, __kappa)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename hypergeometric_distribution<_UIntType>::result_type + hypergeometric_distribution<_UIntType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + std::__detail::_Adaptor<_UniformRandomNumberGenerator, double> + __aurng(__urng); + + result_type __a = __param.successful_size(); + result_type __b = __param.total_size(); + result_type __k = 0; + + if (__param.total_draws() < __param.total_size() / 2) + { + for (result_type __i = 0; __i < __param.total_draws(); ++__i) + { + if (__b * __aurng() < __a) + { + ++__k; + if (__k == __param.successful_size()) + return __k; + --__a; + } + --__b; + } + return __k; + } + else + { + for (result_type __i = 0; __i < __param.unsuccessful_size(); ++__i) + { + if (__b * __aurng() < __a) + { + ++__k; + if (__k == __param.successful_size()) + return __param.successful_size() - __k; + --__a; + } + --__b; + } + return __param.successful_size() - __k; + } + } + + template + template + void + hypergeometric_distribution<_UIntType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + while (__f != __t) + *__f++ = this->operator()(__urng); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::hypergeometric_distribution<_UIntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_UIntType>::max_digits10); + + __os << __x.total_size() << __space << __x.successful_size() << __space + << __x.total_draws(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::hypergeometric_distribution<_UIntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _UIntType __total_size, __successful_size, __total_draws; + __is >> __total_size >> __successful_size >> __total_draws; + __x.param(typename __gnu_cxx::hypergeometric_distribution<_UIntType>:: + param_type(__total_size, __successful_size, __total_draws)); + + __is.flags(__flags); + return __is; + } + + + template + template + typename logistic_distribution<_RealType>::result_type + logistic_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + result_type __arg = result_type(1); + while (__arg == result_type(1) || __arg == result_type(0)) + __arg = __aurng(); + return __p.a() + + __p.b() * std::log(__arg / (result_type(1) - __arg)); + } + + template + template + void + logistic_distribution<_RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + std::__detail::_Adaptor<_UniformRandomNumberGenerator, result_type> + __aurng(__urng); + + while (__f != __t) + { + result_type __arg = result_type(1); + while (__arg == result_type(1) || __arg == result_type(0)) + __arg = __aurng(); + *__f++ = __p.a() + + __p.b() * std::log(__arg / (result_type(1) - __arg)); + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const logistic_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.a() << __space << __x.b(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + logistic_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __a, __b; + __is >> __a >> __b; + __x.param(typename logistic_distribution<_RealType>:: + param_type(__a, __b)); + + __is.flags(__flags); + return __is; + } + + + namespace { + + // Helper class for the uniform_on_sphere_distribution generation + // function. + template + class uniform_on_sphere_helper + { + typedef typename uniform_on_sphere_distribution<_Dimen, _RealType>:: + result_type result_type; + + public: + template + result_type operator()(_NormalDistribution& __nd, + _UniformRandomNumberGenerator& __urng) + { + result_type __ret; + typename result_type::value_type __norm; + + do + { + auto __sum = _RealType(0); + + std::generate(__ret.begin(), __ret.end(), + [&__nd, &__urng, &__sum](){ + _RealType __t = __nd(__urng); + __sum += __t * __t; + return __t; }); + __norm = std::sqrt(__sum); + } + while (__norm == _RealType(0) || ! __builtin_isfinite(__norm)); + + std::transform(__ret.begin(), __ret.end(), __ret.begin(), + [__norm](_RealType __val){ return __val / __norm; }); + + return __ret; + } + }; + + + template + class uniform_on_sphere_helper<2, _RealType> + { + typedef typename uniform_on_sphere_distribution<2, _RealType>:: + result_type result_type; + + public: + template + result_type operator()(_NormalDistribution&, + _UniformRandomNumberGenerator& __urng) + { + result_type __ret; + _RealType __sq; + std::__detail::_Adaptor<_UniformRandomNumberGenerator, + _RealType> __aurng(__urng); + + do + { + __ret[0] = _RealType(2) * __aurng() - _RealType(1); + __ret[1] = _RealType(2) * __aurng() - _RealType(1); + + __sq = __ret[0] * __ret[0] + __ret[1] * __ret[1]; + } + while (__sq == _RealType(0) || __sq > _RealType(1)); + +#if _GLIBCXX_USE_C99_MATH_TR1 + // Yes, we do not just use sqrt(__sq) because hypot() is more + // accurate. + auto __norm = std::hypot(__ret[0], __ret[1]); +#else + auto __norm = std::sqrt(__sq); +#endif + __ret[0] /= __norm; + __ret[1] /= __norm; + + return __ret; + } + }; + + } + + + template + template + typename uniform_on_sphere_distribution<_Dimen, _RealType>::result_type + uniform_on_sphere_distribution<_Dimen, _RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + uniform_on_sphere_helper<_Dimen, _RealType> __helper; + return __helper(_M_nd, __urng); + } + + template + template + void + uniform_on_sphere_distribution<_Dimen, _RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::uniform_on_sphere_distribution<_Dimen, + _RealType>& __x) + { + return __os << __x._M_nd; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::uniform_on_sphere_distribution<_Dimen, + _RealType>& __x) + { + return __is >> __x._M_nd; + } + + + namespace { + + // Helper class for the uniform_inside_sphere_distribution generation + // function. + template + class uniform_inside_sphere_helper; + + template + class uniform_inside_sphere_helper<_Dimen, false, _RealType> + { + using result_type + = typename uniform_inside_sphere_distribution<_Dimen, _RealType>:: + result_type; + + public: + template + result_type + operator()(_UniformOnSphereDistribution& __uosd, + _UniformRandomNumberGenerator& __urng, + _RealType __radius) + { + std::__detail::_Adaptor<_UniformRandomNumberGenerator, + _RealType> __aurng(__urng); + + _RealType __pow = 1 / _RealType(_Dimen); + _RealType __urt = __radius * std::pow(__aurng(), __pow); + result_type __ret = __uosd(__aurng); + + std::transform(__ret.begin(), __ret.end(), __ret.begin(), + [__urt](_RealType __val) + { return __val * __urt; }); + + return __ret; + } + }; + + // Helper class for the uniform_inside_sphere_distribution generation + // function specialized for small dimensions. + template + class uniform_inside_sphere_helper<_Dimen, true, _RealType> + { + using result_type + = typename uniform_inside_sphere_distribution<_Dimen, _RealType>:: + result_type; + + public: + template + result_type + operator()(_UniformOnSphereDistribution&, + _UniformRandomNumberGenerator& __urng, + _RealType __radius) + { + result_type __ret; + _RealType __sq; + _RealType __radsq = __radius * __radius; + std::__detail::_Adaptor<_UniformRandomNumberGenerator, + _RealType> __aurng(__urng); + + do + { + __sq = _RealType(0); + for (int i = 0; i < _Dimen; ++i) + { + __ret[i] = _RealType(2) * __aurng() - _RealType(1); + __sq += __ret[i] * __ret[i]; + } + } + while (__sq > _RealType(1)); + + for (int i = 0; i < _Dimen; ++i) + __ret[i] *= __radius; + + return __ret; + } + }; + } // namespace + + // + // Experiments have shown that rejection is more efficient than transform + // for dimensions less than 8. + // + template + template + typename uniform_inside_sphere_distribution<_Dimen, _RealType>::result_type + uniform_inside_sphere_distribution<_Dimen, _RealType>:: + operator()(_UniformRandomNumberGenerator& __urng, + const param_type& __p) + { + uniform_inside_sphere_helper<_Dimen, _Dimen < 8, _RealType> __helper; + return __helper(_M_uosd, __urng, __p.radius()); + } + + template + template + void + uniform_inside_sphere_distribution<_Dimen, _RealType>:: + __generate_impl(_OutputIterator __f, _OutputIterator __t, + _UniformRandomNumberGenerator& __urng, + const param_type& __param) + { + __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator, + result_type>) + + while (__f != __t) + *__f++ = this->operator()(__urng, __param); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, + _RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(std::numeric_limits<_RealType>::max_digits10); + + __os << __x.radius() << __space << __x._M_uosd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + __gnu_cxx::uniform_inside_sphere_distribution<_Dimen, + _RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + _RealType __radius_val; + __is >> __radius_val >> __x._M_uosd; + __x.param(typename uniform_inside_sphere_distribution<_Dimen, _RealType>:: + param_type(__radius_val)); + + __is.flags(__flags); + + return __is; + } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace __gnu_cxx + + +#endif // _EXT_RANDOM_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rb_tree b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rb_tree similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rb_tree rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rb_tree index a114f8f4c..c526554ca 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rb_tree +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rb_tree @@ -1,6 +1,6 @@ // rb_tree extension -*- C++ -*- -// Copyright (C) 2002-2017 Free Software Foundation, Inc. +// Copyright (C) 2002-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rc_string_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rc_string_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rc_string_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rc_string_base.h index 60d015be0..46f189331 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rc_string_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rc_string_base.h @@ -1,6 +1,6 @@ // Reference-counted versatile string base -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rope b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rope similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rope rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rope index 785205cb2..a53d2e07a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/rope +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/rope @@ -1,6 +1,6 @@ // SGI's rope class -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -65,6 +65,8 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace __detail { enum { _S_max_rope_depth = 45 }; @@ -76,8 +78,6 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) using std::allocator; using std::_Destroy; -_GLIBCXX_BEGIN_NAMESPACE_VERSION - // See libstdc++/36832. template void @@ -150,7 +150,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class char_producer { public: - virtual ~char_producer() { }; + virtual ~char_producer() { } virtual void operator()(size_t __start_pos, size_t __len, @@ -314,7 +314,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // compile-time would do. Hence this should all be private // for now. // The symmetry with char_producer is accidental and temporary. - virtual ~_Rope_char_consumer() { }; + virtual ~_Rope_char_consumer() { } virtual bool operator()(const _CharT* __buffer, size_t __len) = 0; @@ -924,9 +924,9 @@ protected: ~_Rope_self_destruct_ptr() { _Rope_RopeRep<_CharT, _Alloc>::_S_unref(_M_ptr); } #if __cpp_exceptions - _Rope_self_destruct_ptr() : _M_ptr(0) { }; + _Rope_self_destruct_ptr() : _M_ptr(0) { } #else - _Rope_self_destruct_ptr() { }; + _Rope_self_destruct_ptr() { } #endif _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT, _Alloc>* __p) : _M_ptr(__p) { } @@ -1153,7 +1153,7 @@ protected: typedef const _CharT* pointer; public: - _Rope_const_iterator() { }; + _Rope_const_iterator() { } _Rope_const_iterator(const _Rope_const_iterator& __x) : _Rope_iterator_base<_CharT,_Alloc>(__x) { } @@ -1325,7 +1325,7 @@ protected: _Rope_iterator() { this->_M_root = 0; // Needed for reference counting. - }; + } _Rope_iterator(const _Rope_iterator& __x) : _Rope_iterator_base<_CharT, _Alloc>(__x) @@ -2937,10 +2937,10 @@ _GLIBCXX_END_NAMESPACE_VERSION namespace std _GLIBCXX_VISIBILITY(default) { -namespace tr1 -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace tr1 +{ template<> struct hash<__gnu_cxx::crope> { @@ -2967,9 +2967,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return 13 * __str[0] + 5 * __str[__size - 1] + __size; } }; +} // namespace tr1 _GLIBCXX_END_NAMESPACE_VERSION -} // namespace tr1 } // namespace std # include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/ropeimpl.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/ropeimpl.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/ropeimpl.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/ropeimpl.h index 471b13f4f..e160eecd0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/ropeimpl.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/ropeimpl.h @@ -1,6 +1,6 @@ // SGI's rope class implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 @@ -844,7 +844,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION public: _Rope_flatten_char_consumer(_CharT* __buffer) - { _M_buf_ptr = __buffer; }; + { _M_buf_ptr = __buffer; } ~_Rope_flatten_char_consumer() {} @@ -897,8 +897,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _Insert_ostream& _M_o; public: _Rope_insert_char_consumer(_Insert_ostream& __writer) - : _M_o(__writer) {}; - ~_Rope_insert_char_consumer() { }; + : _M_o(__writer) {} + ~_Rope_insert_char_consumer() { } // Caller is presumed to own the ostream bool operator() (const _CharT* __leaf, size_t __n); // Returns true to continue traversal. @@ -1139,7 +1139,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } else { - char* __kind; + const char* __kind; switch (__r->_M_tag) { diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/slist b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/slist similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/slist rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/slist index 66a0a8825..02691b0be 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/slist +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/slist @@ -1,6 +1,6 @@ // Singly-linked list implementation -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/sso_string_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/sso_string_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/sso_string_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/sso_string_base.h index 01673e76d..5fe114f55 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/sso_string_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/sso_string_base.h @@ -1,6 +1,6 @@ // Short-string-optimized versatile string base -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/stdio_filebuf.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/stdio_filebuf.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/stdio_filebuf.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/stdio_filebuf.h index 9a3b8760f..6627a861c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/stdio_filebuf.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/stdio_filebuf.h @@ -1,6 +1,6 @@ // File descriptor layer for filebuf -*- C++ -*- -// Copyright (C) 2002-2017 Free Software Foundation, Inc. +// Copyright (C) 2002-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/stdio_sync_filebuf.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/stdio_sync_filebuf.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/stdio_sync_filebuf.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/stdio_sync_filebuf.h index 4c9e1aed6..a6d48d18f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/stdio_sync_filebuf.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/stdio_sync_filebuf.h @@ -1,6 +1,6 @@ // Iostreams wrapper for stdio FILE* -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/string_conversions.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/string_conversions.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/string_conversions.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/string_conversions.h index 89cba6185..7d7ff4c6b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/string_conversions.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/string_conversions.h @@ -1,6 +1,6 @@ // String Conversions -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/throw_allocator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/throw_allocator.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/throw_allocator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/throw_allocator.h index f2b78682d..5d9caa2bc 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/throw_allocator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/throw_allocator.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/type_traits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/type_traits.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/type_traits.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/type_traits.h index 1efefbcfc..cca298d55 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/type_traits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/type_traits.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/typelist.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/typelist.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/typelist.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/typelist.h index 46e653b40..b21f01ffb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/typelist.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/typelist.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 @@ -127,18 +127,7 @@ namespace typelist template struct create6; -} // namespace typelist -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace - - -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -namespace typelist -{ namespace detail { template @@ -366,10 +355,6 @@ namespace detail typedef typename append_type::type::root type; }; } // namespace detail -} // namespace typelist - -_GLIBCXX_END_NAMESPACE_VERSION -} // namespace #define _GLIBCXX_TYPELIST_CHAIN1(X0) __gnu_cxx::typelist::chain #define _GLIBCXX_TYPELIST_CHAIN2(X0, X1) __gnu_cxx::typelist::chain @@ -392,12 +377,6 @@ _GLIBCXX_END_NAMESPACE_VERSION #define _GLIBCXX_TYPELIST_CHAIN19(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18) __gnu_cxx::typelist::chain #define _GLIBCXX_TYPELIST_CHAIN20(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14, X15, X16, X17, X18, X19) __gnu_cxx::typelist::chain -namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) -{ -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -namespace typelist -{ template void apply(Fn& fn, Typelist) diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring.h index 4c8606b17..e45e774e8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring.h @@ -1,6 +1,6 @@ // Versatile string -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 @@ -2962,6 +2962,6 @@ _GLIBCXX_END_NAMESPACE_VERSION #endif // C++11 -#include "vstring.tcc" +#include #endif /* _VSTRING_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring.tcc index ae5be38cd..f333f7b62 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring.tcc @@ -1,6 +1,6 @@ // Versatile string -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring_fwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring_fwd.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring_fwd.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring_fwd.h index 45ae5de59..7ca79981e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring_fwd.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring_fwd.h @@ -1,6 +1,6 @@ // Forward declarations -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring_util.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring_util.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring_util.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring_util.h index f9627812f..1019e71c4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ext/vstring_util.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ext/vstring_util.h @@ -1,6 +1,6 @@ // Versatile string utility -*- C++ -*- -// Copyright (C) 2005-2017 Free Software Foundation, Inc. +// Copyright (C) 2005-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/fenv.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/fenv.h new file mode 100644 index 000000000..1e18a5128 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/fenv.h @@ -0,0 +1,81 @@ +// -*- C++ -*- compatibility header. + +// Copyright (C) 2007-2018 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 +// . + +/** @file fenv.h + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_FENV_H +#define _GLIBCXX_FENV_H 1 + +#pragma GCC system_header + +#include +#if _GLIBCXX_HAVE_FENV_H +# include_next +#endif + +#if __cplusplus >= 201103L + +#if _GLIBCXX_USE_C99_FENV_TR1 + +#undef feclearexcept +#undef fegetexceptflag +#undef feraiseexcept +#undef fesetexceptflag +#undef fetestexcept +#undef fegetround +#undef fesetround +#undef fegetenv +#undef feholdexcept +#undef fesetenv +#undef feupdateenv + +namespace std +{ + // types + using ::fenv_t; + using ::fexcept_t; + + // functions + using ::feclearexcept; + using ::fegetexceptflag; + using ::feraiseexcept; + using ::fesetexceptflag; + using ::fetestexcept; + + using ::fegetround; + using ::fesetround; + + using ::fegetenv; + using ::feholdexcept; + using ::fesetenv; + using ::feupdateenv; +} // namespace + +#endif // _GLIBCXX_USE_C99_FENV_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_FENV_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/filesystem b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/filesystem new file mode 100644 index 000000000..df40d1d19 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/filesystem @@ -0,0 +1,45 @@ +// -*- C++ -*- + +// Copyright (C) 2014-2018 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 +// . + +/** @file filesystem + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_FILESYSTEM +#define _GLIBCXX_FILESYSTEM 1 + +#pragma GCC system_header + +#if __cplusplus >= 201703L + +#include +#include +#include +#include + +#define __cpp_lib_filesystem 201703 + +#endif // C++17 + +#endif // _GLIBCXX_FILESYSTEM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/forward_list new file mode 100644 index 000000000..fd4cfe531 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/forward_list @@ -0,0 +1,52 @@ +// -*- C++ -*- + +// Copyright (C) 2008-2018 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 +// . + +/** @file include/forward_list + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_FORWARD_LIST +#define _GLIBCXX_FORWARD_LIST 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif // C++11 + +#endif // _GLIBCXX_FORWARD_LIST diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/fstream b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/fstream similarity index 87% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/fstream rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/fstream index 52830945f..3a5895d68 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/fstream +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/fstream @@ -1,6 +1,6 @@ // File based streams -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -48,6 +48,14 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201703L + // Enable if _Path is a filesystem::path or experimental::filesystem::path + template().make_preferred().filename())> + using _If_fs_path = enable_if_t, _Result>; +#endif // C++17 + + // [27.8.1.1] template class basic_filebuf /** * @brief The actual work of input and output (for files). @@ -306,7 +314,20 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __filebuf_type* open(const std::string& __s, ios_base::openmode __mode) { return open(__s.c_str(), __mode); } -#endif + +#if __cplusplus >= 201703L + /** + * @brief Opens an external file. + * @param __s The name of the file, as a filesystem::path. + * @param __mode The open mode flags. + * @return @c this on success, NULL on failure + */ + template + _If_fs_path<_Path, __filebuf_type*> + open(const _Path& __s, ios_base::openmode __mode) + { return open(__s.c_str(), __mode); } +#endif // C++17 +#endif // C++11 /** * @brief Closes the currently associated file. @@ -487,9 +508,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __mode Open file in specified mode (see std::ios_base). * * @c ios_base::in is automatically included in @a __mode. - * - * Tip: When using std::string to hold the filename, you must use - * .c_str() before passing it to this constructor. */ explicit basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in) @@ -516,13 +534,28 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION this->open(__s, __mode); } +#if __cplusplus >= 201703L + /** + * @param Create an input file stream. + * @param __s filesystem::path specifying the filename. + * @param __mode Open file in specified mode (see std::ios_base). + * + * @c ios_base::in is automatically included in @a __mode. + */ + template> + basic_ifstream(const _Path& __s, + ios_base::openmode __mode = ios_base::in) + : basic_ifstream(__s.c_str(), __mode) + { } +#endif // C++17 + basic_ifstream(const basic_ifstream&) = delete; basic_ifstream(basic_ifstream&& __rhs) : __istream_type(std::move(__rhs)), _M_filebuf(std::move(__rhs._M_filebuf)) { __istream_type::set_rdbuf(&_M_filebuf); } -#endif +#endif // C++11 /** * @brief The destructor does nothing. @@ -587,9 +620,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * Calls @c std::basic_filebuf::open(s,__mode|in). If that function * fails, @c failbit is set in the stream's error state. - * - * Tip: When using std::string to hold the filename, you must use - * .c_str() before passing it to this constructor. */ void open(const char* __s, ios_base::openmode __mode = ios_base::in) @@ -621,7 +651,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // 409. Closing an fstream should clear error state this->clear(); } -#endif + +#if __cplusplus >= 201703L + /** + * @brief Opens an external file. + * @param __s The name of the file, as a filesystem::path. + * @param __mode The open mode flags. + * + * Calls @c std::basic_filebuf::open(__s,__mode|in). If that function + * fails, @c failbit is set in the stream's error state. + */ + template + _If_fs_path<_Path, void> + open(const _Path& __s, ios_base::openmode __mode = ios_base::in) + { open(__s.c_str(), __mode); } +#endif // C++17 +#endif // C++11 /** * @brief Close the file. @@ -687,15 +732,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __s Null terminated string specifying the filename. * @param __mode Open file in specified mode (see std::ios_base). * - * @c ios_base::out | @c ios_base::trunc is automatically included in - * @a __mode. - * - * Tip: When using std::string to hold the filename, you must use - * .c_str() before passing it to this constructor. + * @c ios_base::out is automatically included in @a __mode. */ explicit basic_ofstream(const char* __s, - ios_base::openmode __mode = ios_base::out|ios_base::trunc) + ios_base::openmode __mode = ios_base::out) : __ostream_type(), _M_filebuf() { this->init(&_M_filebuf); @@ -708,18 +749,32 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __s std::string specifying the filename. * @param __mode Open file in specified mode (see std::ios_base). * - * @c ios_base::out | @c ios_base::trunc is automatically included in - * @a __mode. + * @c ios_base::out is automatically included in @a __mode. */ explicit basic_ofstream(const std::string& __s, - ios_base::openmode __mode = ios_base::out|ios_base::trunc) + ios_base::openmode __mode = ios_base::out) : __ostream_type(), _M_filebuf() { this->init(&_M_filebuf); this->open(__s, __mode); } +#if __cplusplus >= 201703L + /** + * @param Create an output file stream. + * @param __s filesystem::path specifying the filename. + * @param __mode Open file in specified mode (see std::ios_base). + * + * @c ios_base::out is automatically included in @a __mode. + */ + template> + basic_ofstream(const _Path& __s, + ios_base::openmode __mode = ios_base::out) + : basic_ofstream(__s.c_str(), __mode) + { } +#endif // C++17 + basic_ofstream(const basic_ofstream&) = delete; basic_ofstream(basic_ofstream&& __rhs) @@ -789,15 +844,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __s The name of the file. * @param __mode The open mode flags. * - * Calls @c std::basic_filebuf::open(__s,__mode|out|trunc). If that + * Calls @c std::basic_filebuf::open(__s,__mode|out). If that * function fails, @c failbit is set in the stream's error state. - * - * Tip: When using std::string to hold the filename, you must use - * .c_str() before passing it to this constructor. */ void - open(const char* __s, - ios_base::openmode __mode = ios_base::out | ios_base::trunc) + open(const char* __s, ios_base::openmode __mode = ios_base::out) { if (!_M_filebuf.open(__s, __mode | ios_base::out)) this->setstate(ios_base::failbit); @@ -813,12 +864,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @param __s The name of the file. * @param __mode The open mode flags. * - * Calls @c std::basic_filebuf::open(s,mode|out|trunc). If that + * Calls @c std::basic_filebuf::open(s,mode|out). If that * function fails, @c failbit is set in the stream's error state. */ void - open(const std::string& __s, - ios_base::openmode __mode = ios_base::out | ios_base::trunc) + open(const std::string& __s, ios_base::openmode __mode = ios_base::out) { if (!_M_filebuf.open(__s, __mode | ios_base::out)) this->setstate(ios_base::failbit); @@ -827,7 +877,22 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // 409. Closing an fstream should clear error state this->clear(); } -#endif + +#if __cplusplus >= 201703L + /** + * @brief Opens an external file. + * @param __s The name of the file, as a filesystem::path. + * @param __mode The open mode flags. + * + * Calls @c std::basic_filebuf::open(__s,__mode|out). If that + * function fails, @c failbit is set in the stream's error state. + */ + template + _If_fs_path<_Path, void> + open(const _Path& __s, ios_base::openmode __mode = ios_base::out) + { open(__s.c_str(), __mode); } +#endif // C++17 +#endif // C++11 /** * @brief Close the file. @@ -894,9 +959,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @brief Create an input/output file stream. * @param __s Null terminated string specifying the filename. * @param __mode Open file in specified mode (see std::ios_base). - * - * Tip: When using std::string to hold the filename, you must use - * .c_str() before passing it to this constructor. */ explicit basic_fstream(const char* __s, @@ -922,6 +984,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION this->open(__s, __mode); } +#if __cplusplus >= 201703L + /** + * @param Create an input/output file stream. + * @param __s filesystem::path specifying the filename. + * @param __mode Open file in specified mode (see std::ios_base). + */ + template> + basic_fstream(const _Path& __s, + ios_base::openmode __mode = ios_base::in | ios_base::out) + : basic_fstream(__s.c_str(), __mode) + { } +#endif // C++17 + basic_fstream(const basic_fstream&) = delete; basic_fstream(basic_fstream&& __rhs) @@ -993,9 +1068,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * Calls @c std::basic_filebuf::open(__s,__mode). If that * function fails, @c failbit is set in the stream's error state. - * - * Tip: When using std::string to hold the filename, you must use - * .c_str() before passing it to this constructor. */ void open(const char* __s, @@ -1029,7 +1101,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // 409. Closing an fstream should clear error state this->clear(); } -#endif + +#if __cplusplus >= 201703L + /** + * @brief Opens an external file. + * @param __s The name of the file, as a filesystem::path. + * @param __mode The open mode flags. + * + * Calls @c std::basic_filebuf::open(__s,__mode). If that + * function fails, @c failbit is set in the stream's error state. + */ + template + _If_fs_path<_Path, void> + open(const _Path& __s, + ios_base::openmode __mode = ios_base::in | ios_base::out) + { open(__s.c_str(), __mode); } +#endif // C++17 +#endif // C++11 /** * @brief Close the file. diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/functional new file mode 100644 index 000000000..093528bcc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/functional @@ -0,0 +1,1198 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 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/functional + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_FUNCTIONAL +#define _GLIBCXX_FUNCTIONAL 1 + +#pragma GCC system_header + +#include +#include + +#if __cplusplus >= 201103L + +#include +#include +#include +#include +#include +#include // std::reference_wrapper and _Mem_fn_traits +#include // std::function +#if __cplusplus > 201402L +# include +# include +# include +# include +# include +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#if __cplusplus > 201402L +# define __cpp_lib_invoke 201411 + + /// Invoke a callable object. + template + inline invoke_result_t<_Callable, _Args...> + invoke(_Callable&& __fn, _Args&&... __args) + noexcept(is_nothrow_invocable_v<_Callable, _Args...>) + { + return std::__invoke(std::forward<_Callable>(__fn), + std::forward<_Args>(__args)...); + } +#endif + + template::value> + class _Mem_fn_base + : public _Mem_fn_traits<_MemFunPtr>::__maybe_type + { + using _Traits = _Mem_fn_traits<_MemFunPtr>; + + using _Arity = typename _Traits::__arity; + using _Varargs = typename _Traits::__vararg; + + template + friend struct _Bind_check_arity; + + _MemFunPtr _M_pmf; + + public: + + using result_type = typename _Traits::__result_type; + + explicit constexpr + _Mem_fn_base(_MemFunPtr __pmf) noexcept : _M_pmf(__pmf) { } + + template + auto + operator()(_Args&&... __args) const + noexcept(noexcept( + std::__invoke(_M_pmf, std::forward<_Args>(__args)...))) + -> decltype(std::__invoke(_M_pmf, std::forward<_Args>(__args)...)) + { return std::__invoke(_M_pmf, std::forward<_Args>(__args)...); } + }; + + // Partial specialization for member object pointers. + template + class _Mem_fn_base<_MemObjPtr, false> + { + using _Arity = integral_constant; + using _Varargs = false_type; + + template + friend struct _Bind_check_arity; + + _MemObjPtr _M_pm; + + public: + explicit constexpr + _Mem_fn_base(_MemObjPtr __pm) noexcept : _M_pm(__pm) { } + + template + auto + operator()(_Tp&& __obj) const + noexcept(noexcept(std::__invoke(_M_pm, std::forward<_Tp>(__obj)))) + -> decltype(std::__invoke(_M_pm, std::forward<_Tp>(__obj))) + { return std::__invoke(_M_pm, std::forward<_Tp>(__obj)); } + }; + + template + struct _Mem_fn; // undefined + + template + struct _Mem_fn<_Res _Class::*> + : _Mem_fn_base<_Res _Class::*> + { + using _Mem_fn_base<_Res _Class::*>::_Mem_fn_base; + }; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2048. Unnecessary mem_fn overloads + /** + * @brief Returns a function object that forwards to the member + * pointer @a pm. + * @ingroup functors + */ + template + inline _Mem_fn<_Tp _Class::*> + mem_fn(_Tp _Class::* __pm) noexcept + { + return _Mem_fn<_Tp _Class::*>(__pm); + } + + /** + * @brief Determines if the given type _Tp is a function object that + * should be treated as a subexpression when evaluating calls to + * function objects returned by bind(). + * + * C++11 [func.bind.isbind]. + * @ingroup binders + */ + template + struct is_bind_expression + : public false_type { }; + + /** + * @brief Determines if the given type _Tp is a placeholder in a + * bind() expression and, if so, which placeholder it is. + * + * C++11 [func.bind.isplace]. + * @ingroup binders + */ + template + struct is_placeholder + : public integral_constant + { }; + +#if __cplusplus > 201402L + template inline constexpr bool is_bind_expression_v + = is_bind_expression<_Tp>::value; + template inline constexpr int is_placeholder_v + = is_placeholder<_Tp>::value; +#endif // C++17 + + /** @brief The type of placeholder objects defined by libstdc++. + * @ingroup binders + */ + template struct _Placeholder { }; + + /** @namespace std::placeholders + * @brief ISO C++11 entities sub-namespace for functional. + * @ingroup binders + */ + namespace placeholders + { + /* Define a large number of placeholders. There is no way to + * simplify this with variadic templates, because we're introducing + * unique names for each. + */ + extern const _Placeholder<1> _1; + extern const _Placeholder<2> _2; + extern const _Placeholder<3> _3; + extern const _Placeholder<4> _4; + extern const _Placeholder<5> _5; + extern const _Placeholder<6> _6; + extern const _Placeholder<7> _7; + extern const _Placeholder<8> _8; + extern const _Placeholder<9> _9; + extern const _Placeholder<10> _10; + extern const _Placeholder<11> _11; + extern const _Placeholder<12> _12; + extern const _Placeholder<13> _13; + extern const _Placeholder<14> _14; + extern const _Placeholder<15> _15; + extern const _Placeholder<16> _16; + extern const _Placeholder<17> _17; + extern const _Placeholder<18> _18; + extern const _Placeholder<19> _19; + extern const _Placeholder<20> _20; + extern const _Placeholder<21> _21; + extern const _Placeholder<22> _22; + extern const _Placeholder<23> _23; + extern const _Placeholder<24> _24; + extern const _Placeholder<25> _25; + extern const _Placeholder<26> _26; + extern const _Placeholder<27> _27; + extern const _Placeholder<28> _28; + extern const _Placeholder<29> _29; + } + + /** + * Partial specialization of is_placeholder that provides the placeholder + * number for the placeholder objects defined by libstdc++. + * @ingroup binders + */ + template + struct is_placeholder<_Placeholder<_Num> > + : public integral_constant + { }; + + template + struct is_placeholder > + : public integral_constant + { }; + + + // Like tuple_element_t but SFINAE-friendly. + template + using _Safe_tuple_element_t + = typename enable_if<(__i < tuple_size<_Tuple>::value), + tuple_element<__i, _Tuple>>::type::type; + + /** + * Maps an argument to bind() into an actual argument to the bound + * function object [func.bind.bind]/10. Only the first parameter should + * be specified: the rest are used to determine among the various + * implementations. Note that, although this class is a function + * object, it isn't entirely normal because it takes only two + * parameters regardless of the number of parameters passed to the + * bind expression. The first parameter is the bound argument and + * the second parameter is a tuple containing references to the + * rest of the arguments. + */ + template::value, + bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> + class _Mu; + + /** + * If the argument is reference_wrapper<_Tp>, returns the + * underlying reference. + * C++11 [func.bind.bind] p10 bullet 1. + */ + template + class _Mu, false, false> + { + public: + /* Note: This won't actually work for const volatile + * reference_wrappers, because reference_wrapper::get() is const + * but not volatile-qualified. This might be a defect in the TR. + */ + template + _Tp& + operator()(_CVRef& __arg, _Tuple&) const volatile + { return __arg.get(); } + }; + + /** + * If the argument is a bind expression, we invoke the underlying + * function object with the same cv-qualifiers as we are given and + * pass along all of our arguments (unwrapped). + * C++11 [func.bind.bind] p10 bullet 2. + */ + template + class _Mu<_Arg, true, false> + { + public: + template + auto + operator()(_CVArg& __arg, + tuple<_Args...>& __tuple) const volatile + -> decltype(__arg(declval<_Args>()...)) + { + // Construct an index tuple and forward to __call + typedef typename _Build_index_tuple::__type + _Indexes; + return this->__call(__arg, __tuple, _Indexes()); + } + + private: + // Invokes the underlying function object __arg by unpacking all + // of the arguments in the tuple. + template + auto + __call(_CVArg& __arg, tuple<_Args...>& __tuple, + const _Index_tuple<_Indexes...>&) const volatile + -> decltype(__arg(declval<_Args>()...)) + { + return __arg(std::get<_Indexes>(std::move(__tuple))...); + } + }; + + /** + * If the argument is a placeholder for the Nth argument, returns + * a reference to the Nth argument to the bind function object. + * C++11 [func.bind.bind] p10 bullet 3. + */ + template + class _Mu<_Arg, false, true> + { + public: + template + _Safe_tuple_element_t<(is_placeholder<_Arg>::value - 1), _Tuple>&& + operator()(const volatile _Arg&, _Tuple& __tuple) const volatile + { + return + ::std::get<(is_placeholder<_Arg>::value - 1)>(std::move(__tuple)); + } + }; + + /** + * If the argument is just a value, returns a reference to that + * value. The cv-qualifiers on the reference are determined by the caller. + * C++11 [func.bind.bind] p10 bullet 4. + */ + template + class _Mu<_Arg, false, false> + { + public: + template + _CVArg&& + operator()(_CVArg&& __arg, _Tuple&) const volatile + { return std::forward<_CVArg>(__arg); } + }; + + // std::get for volatile-qualified tuples + template + inline auto + __volget(volatile tuple<_Tp...>& __tuple) + -> __tuple_element_t<_Ind, tuple<_Tp...>> volatile& + { return std::get<_Ind>(const_cast&>(__tuple)); } + + // std::get for const-volatile-qualified tuples + template + inline auto + __volget(const volatile tuple<_Tp...>& __tuple) + -> __tuple_element_t<_Ind, tuple<_Tp...>> const volatile& + { return std::get<_Ind>(const_cast&>(__tuple)); } + + /// Type of the function object returned from bind(). + template + struct _Bind; + + template + class _Bind<_Functor(_Bound_args...)> + : public _Weak_result_type<_Functor> + { + typedef typename _Build_index_tuple::__type + _Bound_indexes; + + _Functor _M_f; + tuple<_Bound_args...> _M_bound_args; + + // Call unqualified + template + _Result + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) + { + return std::__invoke(_M_f, + _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... + ); + } + + // Call as const + template + _Result + __call_c(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const + { + return std::__invoke(_M_f, + _Mu<_Bound_args>()(std::get<_Indexes>(_M_bound_args), __args)... + ); + } + + // Call as volatile + template + _Result + __call_v(tuple<_Args...>&& __args, + _Index_tuple<_Indexes...>) volatile + { + return std::__invoke(_M_f, + _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... + ); + } + + // Call as const volatile + template + _Result + __call_c_v(tuple<_Args...>&& __args, + _Index_tuple<_Indexes...>) const volatile + { + return std::__invoke(_M_f, + _Mu<_Bound_args>()(__volget<_Indexes>(_M_bound_args), __args)... + ); + } + + template + using _Mu_type = decltype( + _Mu::type>()( + std::declval<_BoundArg&>(), std::declval<_CallArgs&>()) ); + + template + using _Res_type_impl + = typename result_of< _Fn&(_Mu_type<_BArgs, _CallArgs>&&...) >::type; + + template + using _Res_type = _Res_type_impl<_Functor, _CallArgs, _Bound_args...>; + + template + using __dependent = typename + enable_if::value+1), _Functor>::type; + + template class __cv_quals> + using _Res_type_cv = _Res_type_impl< + typename __cv_quals<__dependent<_CallArgs>>::type, + _CallArgs, + typename __cv_quals<_Bound_args>::type...>; + + public: + template + explicit _Bind(const _Functor& __f, _Args&&... __args) + : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) + { } + + template + explicit _Bind(_Functor&& __f, _Args&&... __args) + : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) + { } + + _Bind(const _Bind&) = default; + + _Bind(_Bind&& __b) + : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) + { } + + // Call unqualified + template>> + _Result + operator()(_Args&&... __args) + { + return this->__call<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + + // Call as const + template, add_const>> + _Result + operator()(_Args&&... __args) const + { + return this->__call_c<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + +#if __cplusplus > 201402L +# define _GLIBCXX_DEPR_BIND \ + [[deprecated("std::bind does not support volatile in C++17")]] +#else +# define _GLIBCXX_DEPR_BIND +#endif + // Call as volatile + template, add_volatile>> + _GLIBCXX_DEPR_BIND + _Result + operator()(_Args&&... __args) volatile + { + return this->__call_v<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + + // Call as const volatile + template, add_cv>> + _GLIBCXX_DEPR_BIND + _Result + operator()(_Args&&... __args) const volatile + { + return this->__call_c_v<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + }; + + /// Type of the function object returned from bind(). + template + struct _Bind_result; + + template + class _Bind_result<_Result, _Functor(_Bound_args...)> + { + typedef typename _Build_index_tuple::__type + _Bound_indexes; + + _Functor _M_f; + tuple<_Bound_args...> _M_bound_args; + + // sfinae types + template + using __enable_if_void + = typename enable_if{}>::type; + + template + using __disable_if_void + = typename enable_if{}, _Result>::type; + + // Call unqualified + template + __disable_if_void<_Res> + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) + { + return std::__invoke(_M_f, _Mu<_Bound_args>() + (std::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call unqualified, return void + template + __enable_if_void<_Res> + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) + { + std::__invoke(_M_f, _Mu<_Bound_args>() + (std::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const + template + __disable_if_void<_Res> + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const + { + return std::__invoke(_M_f, _Mu<_Bound_args>() + (std::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const, return void + template + __enable_if_void<_Res> + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) const + { + std::__invoke(_M_f, _Mu<_Bound_args>() + (std::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as volatile + template + __disable_if_void<_Res> + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile + { + return std::__invoke(_M_f, _Mu<_Bound_args>() + (__volget<_Indexes>(_M_bound_args), __args)...); + } + + // Call as volatile, return void + template + __enable_if_void<_Res> + __call(tuple<_Args...>&& __args, _Index_tuple<_Indexes...>) volatile + { + std::__invoke(_M_f, _Mu<_Bound_args>() + (__volget<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const volatile + template + __disable_if_void<_Res> + __call(tuple<_Args...>&& __args, + _Index_tuple<_Indexes...>) const volatile + { + return std::__invoke(_M_f, _Mu<_Bound_args>() + (__volget<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const volatile, return void + template + __enable_if_void<_Res> + __call(tuple<_Args...>&& __args, + _Index_tuple<_Indexes...>) const volatile + { + std::__invoke(_M_f, _Mu<_Bound_args>() + (__volget<_Indexes>(_M_bound_args), __args)...); + } + + public: + typedef _Result result_type; + + template + explicit _Bind_result(const _Functor& __f, _Args&&... __args) + : _M_f(__f), _M_bound_args(std::forward<_Args>(__args)...) + { } + + template + explicit _Bind_result(_Functor&& __f, _Args&&... __args) + : _M_f(std::move(__f)), _M_bound_args(std::forward<_Args>(__args)...) + { } + + _Bind_result(const _Bind_result&) = default; + + _Bind_result(_Bind_result&& __b) + : _M_f(std::move(__b._M_f)), _M_bound_args(std::move(__b._M_bound_args)) + { } + + // Call unqualified + template + result_type + operator()(_Args&&... __args) + { + return this->__call<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + + // Call as const + template + result_type + operator()(_Args&&... __args) const + { + return this->__call<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + + // Call as volatile + template + _GLIBCXX_DEPR_BIND + result_type + operator()(_Args&&... __args) volatile + { + return this->__call<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + + // Call as const volatile + template + _GLIBCXX_DEPR_BIND + result_type + operator()(_Args&&... __args) const volatile + { + return this->__call<_Result>( + std::forward_as_tuple(std::forward<_Args>(__args)...), + _Bound_indexes()); + } + }; +#undef _GLIBCXX_DEPR_BIND + + /** + * @brief Class template _Bind is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression<_Bind<_Signature> > + : public true_type { }; + + /** + * @brief Class template _Bind is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression > + : public true_type { }; + + /** + * @brief Class template _Bind is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression > + : public true_type { }; + + /** + * @brief Class template _Bind is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression> + : public true_type { }; + + /** + * @brief Class template _Bind_result is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression<_Bind_result<_Result, _Signature>> + : public true_type { }; + + /** + * @brief Class template _Bind_result is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression> + : public true_type { }; + + /** + * @brief Class template _Bind_result is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression> + : public true_type { }; + + /** + * @brief Class template _Bind_result is always a bind expression. + * @ingroup binders + */ + template + struct is_bind_expression> + : public true_type { }; + + template + struct _Bind_check_arity { }; + + template + struct _Bind_check_arity<_Ret (*)(_Args...), _BoundArgs...> + { + static_assert(sizeof...(_BoundArgs) == sizeof...(_Args), + "Wrong number of arguments for function"); + }; + + template + struct _Bind_check_arity<_Ret (*)(_Args......), _BoundArgs...> + { + static_assert(sizeof...(_BoundArgs) >= sizeof...(_Args), + "Wrong number of arguments for function"); + }; + + template + struct _Bind_check_arity<_Tp _Class::*, _BoundArgs...> + { + using _Arity = typename _Mem_fn<_Tp _Class::*>::_Arity; + using _Varargs = typename _Mem_fn<_Tp _Class::*>::_Varargs; + static_assert(_Varargs::value + ? sizeof...(_BoundArgs) >= _Arity::value + 1 + : sizeof...(_BoundArgs) == _Arity::value + 1, + "Wrong number of arguments for pointer-to-member"); + }; + + // Trait type used to remove std::bind() from overload set via SFINAE + // when first argument has integer type, so that std::bind() will + // not be a better match than ::bind() from the BSD Sockets API. + template::type> + using __is_socketlike = __or_, is_enum<_Tp2>>; + + template + struct _Bind_helper + : _Bind_check_arity::type, _BoundArgs...> + { + typedef typename decay<_Func>::type __func_type; + typedef _Bind<__func_type(typename decay<_BoundArgs>::type...)> type; + }; + + // Partial specialization for is_socketlike == true, does not define + // nested type so std::bind() will not participate in overload resolution + // when the first argument might be a socket file descriptor. + template + struct _Bind_helper + { }; + + /** + * @brief Function template for std::bind. + * @ingroup binders + */ + template + inline typename + _Bind_helper<__is_socketlike<_Func>::value, _Func, _BoundArgs...>::type + bind(_Func&& __f, _BoundArgs&&... __args) + { + typedef _Bind_helper __helper_type; + return typename __helper_type::type(std::forward<_Func>(__f), + std::forward<_BoundArgs>(__args)...); + } + + template + struct _Bindres_helper + : _Bind_check_arity::type, _BoundArgs...> + { + typedef typename decay<_Func>::type __functor_type; + typedef _Bind_result<_Result, + __functor_type(typename decay<_BoundArgs>::type...)> + type; + }; + + /** + * @brief Function template for std::bind. + * @ingroup binders + */ + template + inline + typename _Bindres_helper<_Result, _Func, _BoundArgs...>::type + bind(_Func&& __f, _BoundArgs&&... __args) + { + typedef _Bindres_helper<_Result, _Func, _BoundArgs...> __helper_type; + return typename __helper_type::type(std::forward<_Func>(__f), + std::forward<_BoundArgs>(__args)...); + } + +#if __cplusplus >= 201402L + /// Generalized negator. + template + class _Not_fn + { + template + using __inv_res_t = typename __invoke_result<_Fn2, _Args...>::type; + + template + static decltype(!std::declval<_Tp>()) + _S_not() noexcept(noexcept(!std::declval<_Tp>())); + + public: + template + _Not_fn(_Fn2&& __fn, int) + : _M_fn(std::forward<_Fn2>(__fn)) { } + + _Not_fn(const _Not_fn& __fn) = default; + _Not_fn(_Not_fn&& __fn) = default; + ~_Not_fn() = default; + + // Macro to define operator() with given cv-qualifiers ref-qualifiers, + // forwarding _M_fn and the function arguments with the same qualifiers, + // and deducing the return type and exception-specification. +#define _GLIBCXX_NOT_FN_CALL_OP( _QUALS ) \ + template \ + decltype(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>()) \ + operator()(_Args&&... __args) _QUALS \ + noexcept(__is_nothrow_invocable<_Fn _QUALS, _Args...>::value \ + && noexcept(_S_not<__inv_res_t<_Fn _QUALS, _Args...>>())) \ + { \ + return !std::__invoke(std::forward< _Fn _QUALS >(_M_fn), \ + std::forward<_Args>(__args)...); \ + } + _GLIBCXX_NOT_FN_CALL_OP( & ) + _GLIBCXX_NOT_FN_CALL_OP( const & ) + _GLIBCXX_NOT_FN_CALL_OP( && ) + _GLIBCXX_NOT_FN_CALL_OP( const && ) +#undef _GLIBCXX_NOT_FN_CALL + + private: + _Fn _M_fn; + }; + + template + struct __is_byte_like : false_type { }; + + template + struct __is_byte_like<_Tp, equal_to<_Tp>> + : __bool_constant::value> { }; + + template + struct __is_byte_like<_Tp, equal_to> + : __bool_constant::value> { }; + +#if __cplusplus >= 201703L + // Declare std::byte (full definition is in ). + enum class byte : unsigned char; + + template<> + struct __is_byte_like> + : true_type { }; + + template<> + struct __is_byte_like> + : true_type { }; + +#define __cpp_lib_not_fn 201603 + /// [func.not_fn] Function template not_fn + template + inline auto + not_fn(_Fn&& __fn) + noexcept(std::is_nothrow_constructible, _Fn&&>::value) + { + return _Not_fn>{std::forward<_Fn>(__fn), 0}; + } + + // Searchers +#define __cpp_lib_boyer_moore_searcher 201603 + + template> + class default_searcher + { + public: + default_searcher(_ForwardIterator1 __pat_first, + _ForwardIterator1 __pat_last, + _BinaryPredicate __pred = _BinaryPredicate()) + : _M_m(__pat_first, __pat_last, std::move(__pred)) + { } + + template + pair<_ForwardIterator2, _ForwardIterator2> + operator()(_ForwardIterator2 __first, _ForwardIterator2 __last) const + { + _ForwardIterator2 __first_ret = + std::search(__first, __last, std::get<0>(_M_m), std::get<1>(_M_m), + std::get<2>(_M_m)); + auto __ret = std::make_pair(__first_ret, __first_ret); + if (__ret.first != __last) + std::advance(__ret.second, std::distance(std::get<0>(_M_m), + std::get<1>(_M_m))); + return __ret; + } + + private: + tuple<_ForwardIterator1, _ForwardIterator1, _BinaryPredicate> _M_m; + }; + + template + struct __boyer_moore_map_base + { + template + __boyer_moore_map_base(_RAIter __pat, size_t __patlen, + _Hash&& __hf, _Pred&& __pred) + : _M_bad_char{ __patlen, std::move(__hf), std::move(__pred) } + { + if (__patlen > 0) + for (__diff_type __i = 0; __i < __patlen - 1; ++__i) + _M_bad_char[__pat[__i]] = __patlen - 1 - __i; + } + + using __diff_type = _Tp; + + __diff_type + _M_lookup(_Key __key, __diff_type __not_found) const + { + auto __iter = _M_bad_char.find(__key); + if (__iter == _M_bad_char.end()) + return __not_found; + return __iter->second; + } + + _Pred + _M_pred() const { return _M_bad_char.key_eq(); } + + _GLIBCXX_STD_C::unordered_map<_Key, _Tp, _Hash, _Pred> _M_bad_char; + }; + + template + struct __boyer_moore_array_base + { + template + __boyer_moore_array_base(_RAIter __pat, size_t __patlen, + _Unused&&, _Pred&& __pred) + : _M_bad_char{ _GLIBCXX_STD_C::array<_Tp, _Len>{}, std::move(__pred) } + { + std::get<0>(_M_bad_char).fill(__patlen); + if (__patlen > 0) + for (__diff_type __i = 0; __i < __patlen - 1; ++__i) + { + auto __ch = __pat[__i]; + using _UCh = make_unsigned_t; + auto __uch = static_cast<_UCh>(__ch); + std::get<0>(_M_bad_char)[__uch] = __patlen - 1 - __i; + } + } + + using __diff_type = _Tp; + + template + __diff_type + _M_lookup(_Key __key, __diff_type __not_found) const + { + auto __ukey = static_cast>(__key); + if (__ukey >= _Len) + return __not_found; + return std::get<0>(_M_bad_char)[__ukey]; + } + + const _Pred& + _M_pred() const { return std::get<1>(_M_bad_char); } + + tuple<_GLIBCXX_STD_C::array<_Tp, _Len>, _Pred> _M_bad_char; + }; + + // Use __boyer_moore_array_base when pattern consists of narrow characters + // (or std::byte) and uses std::equal_to as the predicate. + template::value_type, + typename _Diff = typename iterator_traits<_RAIter>::difference_type> + using __boyer_moore_base_t + = conditional_t<__is_byte_like<_Val, _Pred>::value, + __boyer_moore_array_base<_Diff, 256, _Pred>, + __boyer_moore_map_base<_Val, _Diff, _Hash, _Pred>>; + + template::value_type>, + typename _BinaryPredicate = equal_to<>> + class boyer_moore_searcher + : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> + { + using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; + using typename _Base::__diff_type; + + public: + boyer_moore_searcher(_RAIter __pat_first, _RAIter __pat_last, + _Hash __hf = _Hash(), + _BinaryPredicate __pred = _BinaryPredicate()); + + template + pair<_RandomAccessIterator2, _RandomAccessIterator2> + operator()(_RandomAccessIterator2 __first, + _RandomAccessIterator2 __last) const; + + private: + bool + _M_is_prefix(_RAIter __word, __diff_type __len, + __diff_type __pos) + { + const auto& __pred = this->_M_pred(); + __diff_type __suffixlen = __len - __pos; + for (__diff_type __i = 0; __i < __suffixlen; ++__i) + if (!__pred(__word[__i], __word[__pos + __i])) + return false; + return true; + } + + __diff_type + _M_suffix_length(_RAIter __word, __diff_type __len, + __diff_type __pos) + { + const auto& __pred = this->_M_pred(); + __diff_type __i = 0; + while (__pred(__word[__pos - __i], __word[__len - 1 - __i]) + && __i < __pos) + { + ++__i; + } + return __i; + } + + template + __diff_type + _M_bad_char_shift(_Tp __c) const + { return this->_M_lookup(__c, _M_pat_end - _M_pat); } + + _RAIter _M_pat; + _RAIter _M_pat_end; + _GLIBCXX_STD_C::vector<__diff_type> _M_good_suffix; + }; + + template::value_type>, + typename _BinaryPredicate = equal_to<>> + class boyer_moore_horspool_searcher + : __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate> + { + using _Base = __boyer_moore_base_t<_RAIter, _Hash, _BinaryPredicate>; + using typename _Base::__diff_type; + + public: + boyer_moore_horspool_searcher(_RAIter __pat, + _RAIter __pat_end, + _Hash __hf = _Hash(), + _BinaryPredicate __pred + = _BinaryPredicate()) + : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), + _M_pat(__pat), _M_pat_end(__pat_end) + { } + + template + pair<_RandomAccessIterator2, _RandomAccessIterator2> + operator()(_RandomAccessIterator2 __first, + _RandomAccessIterator2 __last) const + { + const auto& __pred = this->_M_pred(); + auto __patlen = _M_pat_end - _M_pat; + if (__patlen == 0) + return std::make_pair(__first, __first); + auto __len = __last - __first; + while (__len >= __patlen) + { + for (auto __scan = __patlen - 1; + __pred(__first[__scan], _M_pat[__scan]); --__scan) + if (__scan == 0) + return std::make_pair(__first, __first + __patlen); + auto __shift = _M_bad_char_shift(__first[__patlen - 1]); + __len -= __shift; + __first += __shift; + } + return std::make_pair(__last, __last); + } + + private: + template + __diff_type + _M_bad_char_shift(_Tp __c) const + { return this->_M_lookup(__c, _M_pat_end - _M_pat); } + + _RAIter _M_pat; + _RAIter _M_pat_end; + }; + + template + boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: + boyer_moore_searcher(_RAIter __pat, _RAIter __pat_end, + _Hash __hf, _BinaryPredicate __pred) + : _Base(__pat, __pat_end - __pat, std::move(__hf), std::move(__pred)), + _M_pat(__pat), _M_pat_end(__pat_end), _M_good_suffix(__pat_end - __pat) + { + auto __patlen = __pat_end - __pat; + if (__patlen == 0) + return; + __diff_type __last_prefix = __patlen - 1; + for (__diff_type __p = __patlen - 1; __p >= 0; --__p) + { + if (_M_is_prefix(__pat, __patlen, __p + 1)) + __last_prefix = __p + 1; + _M_good_suffix[__p] = __last_prefix + (__patlen - 1 - __p); + } + for (__diff_type __p = 0; __p < __patlen - 1; ++__p) + { + auto __slen = _M_suffix_length(__pat, __patlen, __p); + auto __pos = __patlen - 1 - __slen; + if (!__pred(__pat[__p - __slen], __pat[__pos])) + _M_good_suffix[__pos] = __patlen - 1 - __p + __slen; + } + } + + template + template + pair<_RandomAccessIterator2, _RandomAccessIterator2> + boyer_moore_searcher<_RAIter, _Hash, _BinaryPredicate>:: + operator()(_RandomAccessIterator2 __first, + _RandomAccessIterator2 __last) const + { + auto __patlen = _M_pat_end - _M_pat; + if (__patlen == 0) + return std::make_pair(__first, __first); + const auto& __pred = this->_M_pred(); + __diff_type __i = __patlen - 1; + auto __stringlen = __last - __first; + while (__i < __stringlen) + { + __diff_type __j = __patlen - 1; + while (__j >= 0 && __pred(__first[__i], _M_pat[__j])) + { + --__i; + --__j; + } + if (__j < 0) + { + const auto __match = __first + __i + 1; + return std::make_pair(__match, __match + __patlen); + } + __i += std::max(_M_bad_char_shift(__first[__i]), + _M_good_suffix[__j]); + } + return std::make_pair(__last, __last); + } + +#endif // C++17 +#endif // C++14 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++11 + +#endif // _GLIBCXX_FUNCTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/future b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/future similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/future rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/future index d9d446bc2..f9ad5666f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/future +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/future @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/initializer_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/initializer_list similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/initializer_list rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/initializer_list index 6279e0de5..540adf127 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/initializer_list +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/initializer_list @@ -1,6 +1,6 @@ // std::initializer_list support -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 Free Software Foundation, Inc. // // This file is part of GCC. // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iomanip b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iomanip similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iomanip rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iomanip index 073fb9b3e..9c1f63edb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iomanip +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iomanip @@ -1,6 +1,6 @@ // Standard stream manipulators -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -446,7 +446,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __is; } -#if __cplusplus > 201103L +#if __cplusplus >= 201402L #define __cpp_lib_quoted_string_io 201304 @@ -471,8 +471,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) { return __detail::_Quoted_string< - const basic_string<_CharT, _Traits, _Alloc>&, _CharT>( - __string, __delim, __escape); + const basic_string<_CharT, _Traits, _Alloc>&, _CharT>( + __string, __delim, __escape); } template @@ -481,11 +481,23 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) { return __detail::_Quoted_string< - basic_string<_CharT, _Traits, _Alloc>&, _CharT>( - __string, __delim, __escape); + basic_string<_CharT, _Traits, _Alloc>&, _CharT>( + __string, __delim, __escape); } -#endif // __cplusplus > 201103L +#if __cplusplus >= 201703L + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2785. quoted should work with basic_string_view + template + inline auto + quoted(basic_string_view<_CharT, _Traits> __sv, + _CharT __delim = _CharT('"'), _CharT __escape = _CharT('\\')) + { + return __detail::_Quoted_string< + basic_string_view<_CharT, _Traits>, _CharT>(__sv, __delim, __escape); + } +#endif // C++17 +#endif // C++14 #endif // __cplusplus >= 201103L diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ios b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ios similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ios rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ios index cd0fbacce..54c8e02ff 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ios +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ios @@ -1,6 +1,6 @@ // Iostreams base classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iosfwd b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iosfwd similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iosfwd rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iosfwd index 04b8b479b..8cbd3349c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iosfwd +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iosfwd @@ -1,6 +1,6 @@ // Forward declarations -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iostream b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iostream similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iostream rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iostream index 1d28a0088..cb4c53a79 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/iostream +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iostream @@ -1,6 +1,6 @@ // Standard iostream objects -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/istream b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/istream similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/istream rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/istream index 233cc6b01..010be33e5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/istream +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/istream @@ -1,6 +1,6 @@ // Input streams -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iterator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iterator new file mode 100644 index 000000000..9e38efaac --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/iterator @@ -0,0 +1,70 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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/iterator + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_ITERATOR +#define _GLIBCXX_ITERATOR 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif /* _GLIBCXX_ITERATOR */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/limits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/limits similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/limits rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/limits index fb7d183ff..e8eb6a1e0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/limits +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/limits @@ -1,6 +1,6 @@ // The template and inlines for the numeric_limits classes. -*- C++ -*- -// Copyright (C) 1999-2017 Free Software Foundation, Inc. +// Copyright (C) 1999-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/list new file mode 100644 index 000000000..6ba1363b8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/list @@ -0,0 +1,75 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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/list + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_LIST +#define _GLIBCXX_LIST 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_LIST */ + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/locale b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/locale similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/locale rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/locale index 78e5673aa..e03d2a1ef 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/locale +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/locale @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/map new file mode 100644 index 000000000..5c429f00c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/map @@ -0,0 +1,73 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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/map + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_MAP +#define _GLIBCXX_MAP 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_MAP */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/math.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/math.h new file mode 100644 index 000000000..39e551158 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/math.h @@ -0,0 +1,181 @@ +// -*- C++ -*- compatibility header. + +// Copyright (C) 2002-2018 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 +// . + +/** @file math.h + * This is a Standard C++ Library header. + */ + +#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS +# include_next +#else + +#ifndef _GLIBCXX_MATH_H +#define _GLIBCXX_MATH_H 1 + +# include + +using std::abs; +using std::acos; +using std::asin; +using std::atan; +using std::atan2; +using std::cos; +using std::sin; +using std::tan; +using std::cosh; +using std::sinh; +using std::tanh; +using std::exp; +using std::frexp; +using std::ldexp; +using std::log; +using std::log10; +using std::modf; +using std::pow; +using std::sqrt; +using std::ceil; +using std::fabs; +using std::floor; +using std::fmod; + +#if _GLIBCXX_USE_C99_MATH +using std::fpclassify; +using std::isfinite; +using std::isinf; +using std::isnan; +using std::isnormal; +using std::signbit; +using std::isgreater; +using std::isgreaterequal; +using std::isless; +using std::islessequal; +using std::islessgreater; +using std::isunordered; +#endif + +#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99_MATH_TR1) +using std::acosh; +using std::asinh; +using std::atanh; +using std::cbrt; +using std::copysign; +using std::erf; +using std::erfc; +using std::exp2; +using std::expm1; +using std::fdim; +using std::fma; +using std::fmax; +using std::fmin; +using std::hypot; +using std::ilogb; +using std::lgamma; +using std::llrint; +using std::llround; +using std::log1p; +using std::log2; +using std::logb; +using std::lrint; +using std::lround; +using std::nearbyint; +using std::nextafter; +using std::nexttoward; +using std::remainder; +using std::remquo; +using std::rint; +using std::round; +using std::scalbln; +using std::scalbn; +using std::tgamma; +using std::trunc; +#endif // C++11 && _GLIBCXX_USE_C99_MATH_TR1 + +#if _GLIBCXX_USE_STD_SPEC_FUNCS +using std::assoc_laguerref; +using std::assoc_laguerrel; +using std::assoc_laguerre; +using std::assoc_legendref; +using std::assoc_legendrel; +using std::assoc_legendre; +using std::betaf; +using std::betal; +using std::beta; +using std::comp_ellint_1f; +using std::comp_ellint_1l; +using std::comp_ellint_1; +using std::comp_ellint_2f; +using std::comp_ellint_2l; +using std::comp_ellint_2; +using std::comp_ellint_3f; +using std::comp_ellint_3l; +using std::comp_ellint_3; +using std::cyl_bessel_if; +using std::cyl_bessel_il; +using std::cyl_bessel_i; +using std::cyl_bessel_jf; +using std::cyl_bessel_jl; +using std::cyl_bessel_j; +using std::cyl_bessel_kf; +using std::cyl_bessel_kl; +using std::cyl_bessel_k; +using std::cyl_neumannf; +using std::cyl_neumannl; +using std::cyl_neumann; +using std::ellint_1f; +using std::ellint_1l; +using std::ellint_1; +using std::ellint_2f; +using std::ellint_2l; +using std::ellint_2; +using std::ellint_3f; +using std::ellint_3l; +using std::ellint_3; +using std::expintf; +using std::expintl; +using std::expint; +using std::hermitef; +using std::hermitel; +using std::hermite; +using std::laguerref; +using std::laguerrel; +using std::laguerre; +using std::legendref; +using std::legendrel; +using std::legendre; +using std::riemann_zetaf; +using std::riemann_zetal; +using std::riemann_zeta; +using std::sph_besself; +using std::sph_bessell; +using std::sph_bessel; +using std::sph_legendref; +using std::sph_legendrel; +using std::sph_legendre; +using std::sph_neumannf; +using std::sph_neumannl; +using std::sph_neumann; +#endif // _GLIBCXX_USE_STD_SPEC_FUNCS + +#endif // _GLIBCXX_MATH_H +#endif // __cplusplus diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/memory new file mode 100644 index 000000000..f3559a913 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/memory @@ -0,0 +1,153 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * Copyright (c) 1997-1999 + * 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/memory + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_MEMORY +#define _GLIBCXX_MEMORY 1 + +#pragma GCC system_header + +/** + * @defgroup memory Memory + * @ingroup utilities + * + * Components for memory allocation, deallocation, and management. + */ + +/** + * @defgroup pointer_abstractions Pointer Abstractions + * @ingroup memory + * + * Smart pointers, etc. + */ + +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +# include // std::exception +# include // std::type_info in get_deleter +# include // std::basic_ostream +# include +# include +# include +# include // std::less +# include +# include +# include +# include +# include +# include +# if _GLIBCXX_USE_DEPRECATED +# include +# endif +#else +# include +#endif + +#if __cplusplus >= 201103L +# include +# ifdef _GLIBCXX_USE_C99_STDINT_TR1 +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +/** + * @brief Fit aligned storage in buffer. + * + * [ptr.align] + * + * This function tries to fit @a __size bytes of storage with alignment + * @a __align into the buffer @a __ptr of size @a __space bytes. If such + * a buffer fits then @a __ptr is changed to point to the first byte of the + * aligned storage and @a __space is reduced by the bytes used for alignment. + * + * @param __align A fundamental or extended alignment value. + * @param __size Size of the aligned storage required. + * @param __ptr Pointer to a buffer of @a __space bytes. + * @param __space Size of the buffer pointed to by @a __ptr. + * @return the updated pointer if the aligned storage fits, otherwise nullptr. + */ +inline void* +align(size_t __align, size_t __size, void*& __ptr, size_t& __space) noexcept +{ + const auto __intptr = reinterpret_cast(__ptr); + const auto __aligned = (__intptr - 1u + __align) & -__align; + const auto __diff = __aligned - __intptr; + if ((__size + __diff) > __space) + return nullptr; + else + { + __space -= __diff; + return __ptr = reinterpret_cast(__aligned); + } +} + +// 20.7.4 [util.dynamic.safety], pointer safety + +enum class pointer_safety { relaxed, preferred, strict }; + +inline void +declare_reachable(void*) { } + +template + inline _Tp* + undeclare_reachable(_Tp* __p) { return __p; } + +inline void +declare_no_pointers(char*, size_t) { } + +inline void +undeclare_no_pointers(char*, size_t) { } + +inline pointer_safety +get_pointer_safety() noexcept { return pointer_safety::relaxed; } + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace +#endif // _GLIBCXX_USE_C99_STDINT_TR1 +#endif // C++11 + +#endif /* _GLIBCXX_MEMORY */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/mutex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/mutex similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/mutex rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/mutex index 1cc9090d3..71e915cc5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/mutex +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/mutex @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2003-2017 Free Software Foundation, Inc. +// Copyright (C) 2003-2018 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 @@ -507,9 +507,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; /** @brief Generic try_lock. - * @param __l1 Meets Mutex requirements (try_lock() may throw). - * @param __l2 Meets Mutex requirements (try_lock() may throw). - * @param __l3 Meets Mutex requirements (try_lock() may throw). + * @param __l1 Meets Lockable requirements (try_lock() may throw). + * @param __l2 Meets Lockable requirements (try_lock() may throw). + * @param __l3 Meets Lockable requirements (try_lock() may throw). * @return Returns -1 if all try_lock() calls return true. Otherwise returns * a 0-based index corresponding to the argument that returned false. * @post Either all arguments are locked, or none will be. @@ -527,9 +527,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } /** @brief Generic lock. - * @param __l1 Meets Mutex requirements (try_lock() may throw). - * @param __l2 Meets Mutex requirements (try_lock() may throw). - * @param __l3 Meets Mutex requirements (try_lock() may throw). + * @param __l1 Meets Lockable requirements (try_lock() may throw). + * @param __l2 Meets Lockable requirements (try_lock() may throw). + * @param __l3 Meets Lockable requirements (try_lock() may throw). * @throw An exception thrown by an argument's lock() or try_lock() member. * @post All arguments are locked. * diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/new b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/new similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/new rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/new index 04f172ceb..99c769c48 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/new +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/new @@ -1,6 +1,6 @@ // The -*- C++ -*- dynamic memory management header. -// Copyright (C) 1994-2017 Free Software Foundation, Inc. +// Copyright (C) 1994-2018 Free Software Foundation, Inc. // This file is part of GCC. // @@ -68,7 +68,7 @@ namespace std class bad_array_new_length : public bad_alloc { public: - bad_array_new_length() throw() { }; + bad_array_new_length() throw() { } // This declaration is not useless: // http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 @@ -176,7 +176,7 @@ inline void operator delete[](void*, void*) _GLIBCXX_USE_NOEXCEPT { } //@} } // extern "C++" -#if __cplusplus > 201402L +#if __cplusplus >= 201703L #if __GNUC__ >= 7 # define _GLIBCXX_HAVE_BUILTIN_LAUNDER 1 #elif defined __has_builtin @@ -192,7 +192,7 @@ namespace std #define __cpp_lib_launder 201606 /// Pointer optimization barrier [ptr.launder] template - constexpr _Tp* + [[nodiscard]] constexpr _Tp* launder(_Tp* __p) noexcept { return __builtin_launder(__p); } diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/numeric new file mode 100644 index 000000000..c093df18e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/numeric @@ -0,0 +1,165 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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/numeric + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_NUMERIC +#define _GLIBCXX_NUMERIC 1 + +#pragma GCC system_header + +#include +#include +#include + +#ifdef _GLIBCXX_PARALLEL +# include +#endif + +/** + * @defgroup numerics Numerics + * + * Components for performing numeric operations. Includes support for + * for complex number types, random number generation, numeric + * (n-at-a-time) arrays, generalized numeric algorithms, and special + * math functions. + */ + +#if __cplusplus >= 201402L +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace __detail +{ + // std::abs is not constexpr and doesn't support unsigned integers. + template + constexpr + enable_if_t<__and_, is_signed<_Tp>>::value, _Tp> + __abs_integral(_Tp __val) + { return __val < 0 ? -__val : __val; } + + template + constexpr + enable_if_t<__and_, is_unsigned<_Tp>>::value, _Tp> + __abs_integral(_Tp __val) + { return __val; } + + void __abs_integral(bool) = delete; + + template + constexpr common_type_t<_Mn, _Nn> + __gcd(_Mn __m, _Nn __n) + { + return __m == 0 ? __detail::__abs_integral(__n) + : __n == 0 ? __detail::__abs_integral(__m) + : __detail::__gcd(__n, __m % __n); + } + + /// Least common multiple + template + constexpr common_type_t<_Mn, _Nn> + __lcm(_Mn __m, _Nn __n) + { + return (__m != 0 && __n != 0) + ? (__detail::__abs_integral(__m) / __detail::__gcd(__m, __n)) + * __detail::__abs_integral(__n) + : 0; + } +} // namespace __detail + +#if __cplusplus > 201402L + +#define __cpp_lib_gcd_lcm 201606 +// These were used in drafts of SD-6: +#define __cpp_lib_gcd 201606 +#define __cpp_lib_lcm 201606 + + /// Greatest common divisor + template + constexpr common_type_t<_Mn, _Nn> + gcd(_Mn __m, _Nn __n) + { + static_assert(is_integral_v<_Mn>, "gcd arguments are integers"); + static_assert(is_integral_v<_Nn>, "gcd arguments are integers"); + static_assert(!is_same_v, bool>, + "gcd arguments are not bools"); + static_assert(!is_same_v, bool>, + "gcd arguments are not bools"); + return __detail::__gcd(__m, __n); + } + + /// Least common multiple + template + constexpr common_type_t<_Mn, _Nn> + lcm(_Mn __m, _Nn __n) + { + static_assert(is_integral_v<_Mn>, "lcm arguments are integers"); + static_assert(is_integral_v<_Nn>, "lcm arguments are integers"); + static_assert(!is_same_v, bool>, + "lcm arguments are not bools"); + static_assert(!is_same_v, bool>, + "lcm arguments are not bools"); + return __detail::__lcm(__m, __n); + } + +#endif // C++17 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++14 + + +#endif /* _GLIBCXX_NUMERIC */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/optional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/optional new file mode 100644 index 000000000..20153fb24 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/optional @@ -0,0 +1,1534 @@ +// -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file include/optional + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_OPTIONAL +#define _GLIBCXX_OPTIONAL 1 + +#pragma GCC system_header + +#if __cplusplus >= 201703L + +#include +#include +#include +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup utilities + * @{ + */ + +#define __cpp_lib_optional 201606L + + template + class optional; + + /// Tag type to disengage optional objects. + struct nullopt_t + { + // Do not user-declare default constructor at all for + // optional_value = {} syntax to work. + // nullopt_t() = delete; + + // Used for constructing nullopt. + enum class _Construct { _Token }; + + // Must be constexpr for nullopt_t to be literal. + explicit constexpr nullopt_t(_Construct) { } + }; + + /// Tag to disengage optional objects. + inline constexpr nullopt_t nullopt { nullopt_t::_Construct::_Token }; + + /** + * @brief Exception class thrown when a disengaged optional object is + * dereferenced. + * @ingroup exceptions + */ + class bad_optional_access : public exception + { + public: + bad_optional_access() { } + + virtual const char* what() const noexcept override + { return "bad optional access"; } + + virtual ~bad_optional_access() noexcept = default; + }; + + void + __throw_bad_optional_access() + __attribute__((__noreturn__)); + + // XXX Does not belong here. + inline void + __throw_bad_optional_access() + { _GLIBCXX_THROW_OR_ABORT(bad_optional_access()); } + + + // Payload for optionals with non-trivial destructor. + template , + bool /*_HasTrivialCopy */ = + is_trivially_copy_assignable_v<_Tp> + && is_trivially_copy_constructible_v<_Tp>, + bool /*_HasTrivialMove */ = + is_trivially_move_assignable_v<_Tp> + && is_trivially_move_constructible_v<_Tp>> + struct _Optional_payload + { + constexpr _Optional_payload() noexcept : _M_empty() { } + + template + constexpr + _Optional_payload(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) { } + + template + constexpr + _Optional_payload(std::initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + constexpr + _Optional_payload(bool __engaged, const _Optional_payload& __other) + : _Optional_payload(__other) + { } + + constexpr + _Optional_payload(bool __engaged, _Optional_payload&& __other) + : _Optional_payload(std::move(__other)) + { } + + constexpr + _Optional_payload(const _Optional_payload& __other) + { + if (__other._M_engaged) + this->_M_construct(__other._M_payload); + } + + constexpr + _Optional_payload(_Optional_payload&& __other) + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_payload)); + } + + constexpr + _Optional_payload& + operator=(const _Optional_payload& __other) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = __other._M_get(); + else + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + else + this->_M_reset(); + } + return *this; + } + + constexpr + _Optional_payload& + operator=(_Optional_payload&& __other) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>()) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = std::move(__other._M_get()); + else + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + else + this->_M_reset(); + } + return *this; + } + + using _Stored_type = remove_const_t<_Tp>; + + struct _Empty_byte { }; + + union { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged = false; + + ~_Optional_payload() + { + if (_M_engaged) + _M_payload.~_Stored_type(); + } + + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new ((void *) std::__addressof(this->_M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + this->_M_engaged = true; + } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { return this->_M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return this->_M_payload; } + + // _M_reset is a 'safe' operation with no precondition. + constexpr + void + _M_reset() noexcept + { + if (this->_M_engaged) + { + this->_M_engaged = false; + this->_M_payload.~_Stored_type(); + } + } + }; + + // Payload for potentially-constexpr optionals. + template + struct _Optional_payload<_Tp, true, true, true> + { + constexpr _Optional_payload() noexcept + : _M_empty(), _M_engaged(false) { } + + template + constexpr + _Optional_payload(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) + { } + + template + constexpr + _Optional_payload(std::initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + constexpr + _Optional_payload(bool __engaged, const _Optional_payload& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(__other._M_get()); + } + + constexpr + _Optional_payload(bool __engaged, _Optional_payload&& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(std::move(__other._M_get())); + } + + using _Stored_type = remove_const_t<_Tp>; + + struct _Empty_byte { }; + + union { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged; + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { return this->_M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return this->_M_payload; } + }; + + // Payload for optionals with non-trivial copy assignment. + template + struct _Optional_payload<_Tp, true, false, true> + { + constexpr _Optional_payload() noexcept + : _M_empty(), _M_engaged(false) { } + + template + constexpr + _Optional_payload(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), _M_engaged(true) + { } + + template + constexpr + _Optional_payload(std::initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + constexpr + _Optional_payload(bool __engaged, const _Optional_payload& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(__other._M_get()); + } + + constexpr + _Optional_payload(bool __engaged, _Optional_payload&& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(std::move(__other._M_get())); + } + + _Optional_payload(const _Optional_payload&) = default; + _Optional_payload(_Optional_payload&&) = default; + + constexpr + _Optional_payload& + operator=(const _Optional_payload& __other) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = __other._M_get(); + else + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + else + this->_M_reset(); + } + return *this; + } + + _Optional_payload& + operator=(_Optional_payload&& __other) = default; + + using _Stored_type = remove_const_t<_Tp>; + + struct _Empty_byte { }; + + union { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged; + + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new ((void *) std::__addressof(this->_M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + this->_M_engaged = true; + } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { return this->_M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return this->_M_payload; } + + // _M_reset is a 'safe' operation with no precondition. + constexpr + void + _M_reset() noexcept + { + if (this->_M_engaged) + { + this->_M_engaged = false; + this->_M_payload.~_Stored_type(); + } + } + }; + + // Payload for optionals with non-trivial move assignment. + template + struct _Optional_payload<_Tp, true, true, false> + { + constexpr _Optional_payload() noexcept + : _M_empty(), _M_engaged(false) { } + + template + constexpr + _Optional_payload(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + template + constexpr + _Optional_payload(std::initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + constexpr + _Optional_payload(bool __engaged, const _Optional_payload& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(__other._M_get()); + } + + constexpr + _Optional_payload(bool __engaged, _Optional_payload&& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(std::move(__other._M_get())); + } + + _Optional_payload(const _Optional_payload&) = default; + _Optional_payload(_Optional_payload&&) = default; + + _Optional_payload& + operator=(const _Optional_payload& __other) = default; + + constexpr + _Optional_payload& + operator=(_Optional_payload&& __other) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>()) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = std::move(__other._M_get()); + else + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + else + this->_M_reset(); + } + return *this; + } + + using _Stored_type = remove_const_t<_Tp>; + + struct _Empty_byte { }; + + union { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged; + + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new ((void *) std::__addressof(this->_M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + this->_M_engaged = true; + } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { return this->_M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return this->_M_payload; } + + // _M_reset is a 'safe' operation with no precondition. + constexpr + void + _M_reset() noexcept + { + if (this->_M_engaged) + { + this->_M_engaged = false; + this->_M_payload.~_Stored_type(); + } + } + }; + + // Payload for optionals with non-trivial copy and move assignment. + template + struct _Optional_payload<_Tp, true, false, false> + { + constexpr _Optional_payload() noexcept + : _M_empty(), _M_engaged(false) {} + + template + constexpr + _Optional_payload(in_place_t, _Args&&... __args) + : _M_payload(std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + template + constexpr + _Optional_payload(std::initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(__il, std::forward<_Args>(__args)...), + _M_engaged(true) + { } + + constexpr + _Optional_payload(bool __engaged, const _Optional_payload& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(__other._M_get()); + } + + constexpr + _Optional_payload(bool __engaged, _Optional_payload&& __other) + : _M_engaged(__engaged) + { + if (__engaged) + _M_construct(std::move(__other._M_get())); + } + + _Optional_payload(const _Optional_payload&) = default; + _Optional_payload(_Optional_payload&&) = default; + + constexpr + _Optional_payload& + operator=(const _Optional_payload& __other) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = __other._M_get(); + else + { + if (__other._M_engaged) + this->_M_construct(__other._M_get()); + else + this->_M_reset(); + } + return *this; + } + + constexpr + _Optional_payload& + operator=(_Optional_payload&& __other) + noexcept(__and_, + is_nothrow_move_assignable<_Tp>>()) + { + if (this->_M_engaged && __other._M_engaged) + this->_M_get() = std::move(__other._M_get()); + else + { + if (__other._M_engaged) + this->_M_construct(std::move(__other._M_get())); + else + this->_M_reset(); + } + return *this; + } + + using _Stored_type = remove_const_t<_Tp>; + + struct _Empty_byte { }; + + union { + _Empty_byte _M_empty; + _Stored_type _M_payload; + }; + bool _M_engaged; + + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new ((void *) std::__addressof(this->_M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + this->_M_engaged = true; + } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { return this->_M_payload; } + + constexpr const _Tp& + _M_get() const noexcept + { return this->_M_payload; } + + // _M_reset is a 'safe' operation with no precondition. + constexpr + void + _M_reset() noexcept + { + if (this->_M_engaged) + { + this->_M_engaged = false; + this->_M_payload.~_Stored_type(); + } + } + }; + + template + class _Optional_base_impl + { + protected: + using _Stored_type = remove_const_t<_Tp>; + + // The _M_construct operation has !_M_engaged as a precondition + // while _M_destruct has _M_engaged as a precondition. + template + void + _M_construct(_Args&&... __args) + noexcept(is_nothrow_constructible<_Stored_type, _Args...>()) + { + ::new + (std::__addressof(static_cast<_Dp*>(this)->_M_payload._M_payload)) + _Stored_type(std::forward<_Args>(__args)...); + static_cast<_Dp*>(this)->_M_payload._M_engaged = true; + } + + void + _M_destruct() noexcept + { + static_cast<_Dp*>(this)->_M_payload._M_engaged = false; + static_cast<_Dp*>(this)->_M_payload._M_payload.~_Stored_type(); + } + + // _M_reset is a 'safe' operation with no precondition. + constexpr + void + _M_reset() noexcept + { + if (static_cast<_Dp*>(this)->_M_payload._M_engaged) + static_cast<_Dp*>(this)->_M_destruct(); + } + }; + + /** + * @brief Class template that takes care of copy/move constructors + of optional + * + * Such a separate base class template is necessary in order to + * conditionally make copy/move constructors trivial. + * @see optional, _Enable_special_members + */ + template, + bool = is_trivially_move_constructible_v<_Tp>> + class _Optional_base + // protected inheritance because optional needs to reach that base too + : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> + { + friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; + + public: + // Constructors for disengaged optionals. + constexpr _Optional_base() = default; + + // Constructors for engaged optionals. + template, bool> = false> + constexpr explicit _Optional_base(in_place_t, _Args&&... __args) + : _M_payload(in_place, + std::forward<_Args>(__args)...) { } + + template&, + _Args&&...>, bool> = false> + constexpr explicit _Optional_base(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(in_place, + __il, std::forward<_Args>(__args)...) + { } + + // Copy and move constructors. + constexpr _Optional_base(const _Optional_base& __other) + : _M_payload(__other._M_payload._M_engaged, + __other._M_payload) + { } + + constexpr _Optional_base(_Optional_base&& __other) + noexcept(is_nothrow_move_constructible<_Tp>()) + : _M_payload(__other._M_payload._M_engaged, + std::move(__other._M_payload)) + { } + + // Assignment operators. + _Optional_base& operator=(const _Optional_base&) = default; + _Optional_base& operator=(_Optional_base&&) = default; + + protected: + + constexpr bool _M_is_engaged() const noexcept + { return this->_M_payload._M_engaged; } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + constexpr const _Tp& + _M_get() const noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + private: + _Optional_payload<_Tp> _M_payload; + }; + + template + class _Optional_base<_Tp, false, true> + : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> + { + friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; + public: + + // Constructors for disengaged optionals. + constexpr _Optional_base() = default; + + // Constructors for engaged optionals. + template, bool> = false> + constexpr explicit _Optional_base(in_place_t, _Args&&... __args) + : _M_payload(in_place, + std::forward<_Args>(__args)...) { } + + template&, + _Args&&...>, bool> = false> + constexpr explicit _Optional_base(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(in_place, + __il, std::forward<_Args>(__args)...) + { } + + // Copy and move constructors. + constexpr _Optional_base(const _Optional_base& __other) + : _M_payload(__other._M_payload._M_engaged, + __other._M_payload) + { } + + constexpr _Optional_base(_Optional_base&& __other) = default; + + // Assignment operators. + _Optional_base& operator=(const _Optional_base&) = default; + _Optional_base& operator=(_Optional_base&&) = default; + + protected: + + constexpr bool _M_is_engaged() const noexcept + { return this->_M_payload._M_engaged; } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + constexpr const _Tp& + _M_get() const noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + private: + _Optional_payload<_Tp> _M_payload; + }; + + template + class _Optional_base<_Tp, true, false> + : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> + { + friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; + public: + + // Constructors for disengaged optionals. + constexpr _Optional_base() = default; + + // Constructors for engaged optionals. + template, bool> = false> + constexpr explicit _Optional_base(in_place_t, _Args&&... __args) + : _M_payload(in_place, + std::forward<_Args>(__args)...) { } + + template&, + _Args&&...>, bool> = false> + constexpr explicit _Optional_base(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(in_place, + __il, std::forward<_Args>(__args)...) + { } + + // Copy and move constructors. + constexpr _Optional_base(const _Optional_base& __other) = default; + + constexpr _Optional_base(_Optional_base&& __other) + noexcept(is_nothrow_move_constructible<_Tp>()) + : _M_payload(__other._M_payload._M_engaged, + std::move(__other._M_payload)) + { } + + // Assignment operators. + _Optional_base& operator=(const _Optional_base&) = default; + _Optional_base& operator=(_Optional_base&&) = default; + + protected: + + constexpr bool _M_is_engaged() const noexcept + { return this->_M_payload._M_engaged; } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + constexpr const _Tp& + _M_get() const noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + private: + _Optional_payload<_Tp> _M_payload; + }; + + template + class _Optional_base<_Tp, true, true> + : protected _Optional_base_impl<_Tp, _Optional_base<_Tp>> + { + friend class _Optional_base_impl<_Tp, _Optional_base<_Tp>>; + public: + + // Constructors for disengaged optionals. + constexpr _Optional_base() = default; + + // Constructors for engaged optionals. + template, bool> = false> + constexpr explicit _Optional_base(in_place_t, _Args&&... __args) + : _M_payload(in_place, + std::forward<_Args>(__args)...) { } + + template&, + _Args&&...>, bool> = false> + constexpr explicit _Optional_base(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _M_payload(in_place, + __il, std::forward<_Args>(__args)...) + { } + + // Copy and move constructors. + constexpr _Optional_base(const _Optional_base& __other) = default; + constexpr _Optional_base(_Optional_base&& __other) = default; + + // Assignment operators. + _Optional_base& operator=(const _Optional_base&) = default; + _Optional_base& operator=(_Optional_base&&) = default; + + protected: + + constexpr bool _M_is_engaged() const noexcept + { return this->_M_payload._M_engaged; } + + // The _M_get operations have _M_engaged as a precondition. + constexpr _Tp& + _M_get() noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + constexpr const _Tp& + _M_get() const noexcept + { + __glibcxx_assert(this->_M_is_engaged()); + return this->_M_payload._M_payload; + } + + private: + _Optional_payload<_Tp> _M_payload; + }; + + template + class optional; + + template + using __converts_from_optional = + __or_&>, + is_constructible<_Tp, optional<_Up>&>, + is_constructible<_Tp, const optional<_Up>&&>, + is_constructible<_Tp, optional<_Up>&&>, + is_convertible&, _Tp>, + is_convertible&, _Tp>, + is_convertible&&, _Tp>, + is_convertible&&, _Tp>>; + + template + using __assigns_from_optional = + __or_&>, + is_assignable<_Tp&, optional<_Up>&>, + is_assignable<_Tp&, const optional<_Up>&&>, + is_assignable<_Tp&, optional<_Up>&&>>; + + /** + * @brief Class template for optional values. + */ + template + class optional + : private _Optional_base<_Tp>, + private _Enable_copy_move< + // Copy constructor. + is_copy_constructible<_Tp>::value, + // Copy assignment. + __and_, is_copy_assignable<_Tp>>::value, + // Move constructor. + is_move_constructible<_Tp>::value, + // Move assignment. + __and_, is_move_assignable<_Tp>>::value, + // Unique tag type. + optional<_Tp>> + { + static_assert(!is_same_v, nullopt_t>); + static_assert(!is_same_v, in_place_t>); + static_assert(!is_reference_v<_Tp>); + + private: + using _Base = _Optional_base<_Tp>; + + public: + using value_type = _Tp; + + constexpr optional() = default; + + constexpr optional(nullopt_t) noexcept { } + + // Converting constructors for engaged optionals. + template , decay_t<_Up>>>, + __not_>>, + is_constructible<_Tp, _Up&&>, + is_convertible<_Up&&, _Tp> + >::value, bool> = true> + constexpr optional(_Up&& __t) + : _Base(std::in_place, std::forward<_Up>(__t)) { } + + template , decay_t<_Up>>>, + __not_>>, + is_constructible<_Tp, _Up&&>, + __not_> + >::value, bool> = false> + explicit constexpr optional(_Up&& __t) + : _Base(std::in_place, std::forward<_Up>(__t)) { } + + template >, + is_constructible<_Tp, const _Up&>, + is_convertible, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = true> + constexpr optional(const optional<_Up>& __t) + { + if (__t) + emplace(*__t); + } + + template >, + is_constructible<_Tp, const _Up&>, + __not_>, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = false> + explicit constexpr optional(const optional<_Up>& __t) + { + if (__t) + emplace(*__t); + } + + template >, + is_constructible<_Tp, _Up&&>, + is_convertible<_Up&&, _Tp>, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = true> + constexpr optional(optional<_Up>&& __t) + { + if (__t) + emplace(std::move(*__t)); + } + + template >, + is_constructible<_Tp, _Up&&>, + __not_>, + __not_<__converts_from_optional<_Tp, _Up>> + >::value, bool> = false> + explicit constexpr optional(optional<_Up>&& __t) + { + if (__t) + emplace(std::move(*__t)); + } + + template, bool> = false> + explicit constexpr optional(in_place_t, _Args&&... __args) + : _Base(std::in_place, std::forward<_Args>(__args)...) { } + + template&, + _Args&&...>, bool> = false> + explicit constexpr optional(in_place_t, + initializer_list<_Up> __il, + _Args&&... __args) + : _Base(std::in_place, __il, std::forward<_Args>(__args)...) { } + + // Assignment operators. + optional& + operator=(nullopt_t) noexcept + { + this->_M_reset(); + return *this; + } + + template + enable_if_t<__and_< + __not_, decay_t<_Up>>>, + is_constructible<_Tp, _Up>, + __not_<__and_, + is_same<_Tp, decay_t<_Up>>>>, + is_assignable<_Tp&, _Up>>::value, + optional&> + operator=(_Up&& __u) + { + if (this->_M_is_engaged()) + this->_M_get() = std::forward<_Up>(__u); + else + this->_M_construct(std::forward<_Up>(__u)); + + return *this; + } + + template + enable_if_t<__and_< + __not_>, + is_constructible<_Tp, const _Up&>, + is_assignable<_Tp&, _Up>, + __not_<__converts_from_optional<_Tp, _Up>>, + __not_<__assigns_from_optional<_Tp, _Up>> + >::value, + optional&> + operator=(const optional<_Up>& __u) + { + if (__u) + { + if (this->_M_is_engaged()) + this->_M_get() = *__u; + else + this->_M_construct(*__u); + } + else + { + this->_M_reset(); + } + return *this; + } + + template + enable_if_t<__and_< + __not_>, + is_constructible<_Tp, _Up>, + is_assignable<_Tp&, _Up>, + __not_<__converts_from_optional<_Tp, _Up>>, + __not_<__assigns_from_optional<_Tp, _Up>> + >::value, + optional&> + operator=(optional<_Up>&& __u) + { + if (__u) + { + if (this->_M_is_engaged()) + this->_M_get() = std::move(*__u); + else + this->_M_construct(std::move(*__u)); + } + else + { + this->_M_reset(); + } + + return *this; + } + + template + enable_if_t::value, _Tp&> + emplace(_Args&&... __args) + { + this->_M_reset(); + this->_M_construct(std::forward<_Args>(__args)...); + return this->_M_get(); + } + + template + enable_if_t&, + _Args&&...>::value, _Tp&> + emplace(initializer_list<_Up> __il, _Args&&... __args) + { + this->_M_reset(); + this->_M_construct(__il, std::forward<_Args>(__args)...); + return this->_M_get(); + } + + // Destructor is implicit, implemented in _Optional_base. + + // Swap. + void + swap(optional& __other) + noexcept(is_nothrow_move_constructible<_Tp>() + && is_nothrow_swappable_v<_Tp>) + { + using std::swap; + + if (this->_M_is_engaged() && __other._M_is_engaged()) + swap(this->_M_get(), __other._M_get()); + else if (this->_M_is_engaged()) + { + __other._M_construct(std::move(this->_M_get())); + this->_M_destruct(); + } + else if (__other._M_is_engaged()) + { + this->_M_construct(std::move(__other._M_get())); + __other._M_destruct(); + } + } + + // Observers. + constexpr const _Tp* + operator->() const + { return std::__addressof(this->_M_get()); } + + constexpr + _Tp* + operator->() + { return std::__addressof(this->_M_get()); } + + constexpr const _Tp& + operator*() const& + { return this->_M_get(); } + + constexpr _Tp& + operator*()& + { return this->_M_get(); } + + constexpr _Tp&& + operator*()&& + { return std::move(this->_M_get()); } + + constexpr const _Tp&& + operator*() const&& + { return std::move(this->_M_get()); } + + constexpr explicit operator bool() const noexcept + { return this->_M_is_engaged(); } + + constexpr bool has_value() const noexcept + { return this->_M_is_engaged(); } + + constexpr const _Tp& + value() const& + { + return this->_M_is_engaged() + ? this->_M_get() + : (__throw_bad_optional_access(), + this->_M_get()); + } + + constexpr _Tp& + value()& + { + return this->_M_is_engaged() + ? this->_M_get() + : (__throw_bad_optional_access(), + this->_M_get()); + } + + constexpr _Tp&& + value()&& + { + return this->_M_is_engaged() + ? std::move(this->_M_get()) + : (__throw_bad_optional_access(), + std::move(this->_M_get())); + } + + constexpr const _Tp&& + value() const&& + { + return this->_M_is_engaged() + ? std::move(this->_M_get()) + : (__throw_bad_optional_access(), + std::move(this->_M_get())); + } + + template + constexpr _Tp + value_or(_Up&& __u) const& + { + static_assert(is_copy_constructible_v<_Tp>); + static_assert(is_convertible_v<_Up&&, _Tp>); + + return this->_M_is_engaged() + ? this->_M_get() + : static_cast<_Tp>(std::forward<_Up>(__u)); + } + + template + constexpr _Tp + value_or(_Up&& __u) && + { + static_assert(is_move_constructible_v<_Tp>); + static_assert(is_convertible_v<_Up&&, _Tp>); + + return this->_M_is_engaged() + ? std::move(this->_M_get()) + : static_cast<_Tp>(std::forward<_Up>(__u)); + } + void reset() noexcept { this->_M_reset(); } + }; + + template + using __optional_relop_t = + enable_if_t::value, bool>; + + // Comparisons between optional values. + template + constexpr auto + operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) + -> __optional_relop_t() == declval<_Up>())> + { + return static_cast(__lhs) == static_cast(__rhs) + && (!__lhs || *__lhs == *__rhs); + } + + template + constexpr auto + operator!=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) + -> __optional_relop_t() != declval<_Up>())> + { + return static_cast(__lhs) != static_cast(__rhs) + || (static_cast(__lhs) && *__lhs != *__rhs); + } + + template + constexpr auto + operator<(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) + -> __optional_relop_t() < declval<_Up>())> + { + return static_cast(__rhs) && (!__lhs || *__lhs < *__rhs); + } + + template + constexpr auto + operator>(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) + -> __optional_relop_t() > declval<_Up>())> + { + return static_cast(__lhs) && (!__rhs || *__lhs > *__rhs); + } + + template + constexpr auto + operator<=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) + -> __optional_relop_t() <= declval<_Up>())> + { + return !__lhs || (static_cast(__rhs) && *__lhs <= *__rhs); + } + + template + constexpr auto + operator>=(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) + -> __optional_relop_t() >= declval<_Up>())> + { + return !__rhs || (static_cast(__lhs) && *__lhs >= *__rhs); + } + + // Comparisons with nullopt. + template + constexpr bool + operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return !__lhs; } + + template + constexpr bool + operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return !__rhs; } + + template + constexpr bool + operator!=(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return static_cast(__lhs); } + + template + constexpr bool + operator!=(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return static_cast(__rhs); } + + template + constexpr bool + operator<(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept + { return false; } + + template + constexpr bool + operator<(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return static_cast(__rhs); } + + template + constexpr bool + operator>(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return static_cast(__lhs); } + + template + constexpr bool + operator>(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept + { return false; } + + template + constexpr bool + operator<=(const optional<_Tp>& __lhs, nullopt_t) noexcept + { return !__lhs; } + + template + constexpr bool + operator<=(nullopt_t, const optional<_Tp>& /* __rhs */) noexcept + { return true; } + + template + constexpr bool + operator>=(const optional<_Tp>& /* __lhs */, nullopt_t) noexcept + { return true; } + + template + constexpr bool + operator>=(nullopt_t, const optional<_Tp>& __rhs) noexcept + { return !__rhs; } + + // Comparisons with value type. + template + constexpr auto + operator==(const optional<_Tp>& __lhs, const _Up& __rhs) + -> __optional_relop_t() == declval<_Up>())> + { return __lhs && *__lhs == __rhs; } + + template + constexpr auto + operator==(const _Up& __lhs, const optional<_Tp>& __rhs) + -> __optional_relop_t() == declval<_Tp>())> + { return __rhs && __lhs == *__rhs; } + + template + constexpr auto + operator!=(const optional<_Tp>& __lhs, const _Up& __rhs) + -> __optional_relop_t() != declval<_Up>())> + { return !__lhs || *__lhs != __rhs; } + + template + constexpr auto + operator!=(const _Up& __lhs, const optional<_Tp>& __rhs) + -> __optional_relop_t() != declval<_Tp>())> + { return !__rhs || __lhs != *__rhs; } + + template + constexpr auto + operator<(const optional<_Tp>& __lhs, const _Up& __rhs) + -> __optional_relop_t() < declval<_Up>())> + { return !__lhs || *__lhs < __rhs; } + + template + constexpr auto + operator<(const _Up& __lhs, const optional<_Tp>& __rhs) + -> __optional_relop_t() < declval<_Tp>())> + { return __rhs && __lhs < *__rhs; } + + template + constexpr auto + operator>(const optional<_Tp>& __lhs, const _Up& __rhs) + -> __optional_relop_t() > declval<_Up>())> + { return __lhs && *__lhs > __rhs; } + + template + constexpr auto + operator>(const _Up& __lhs, const optional<_Tp>& __rhs) + -> __optional_relop_t() > declval<_Tp>())> + { return !__rhs || __lhs > *__rhs; } + + template + constexpr auto + operator<=(const optional<_Tp>& __lhs, const _Up& __rhs) + -> __optional_relop_t() <= declval<_Up>())> + { return !__lhs || *__lhs <= __rhs; } + + template + constexpr auto + operator<=(const _Up& __lhs, const optional<_Tp>& __rhs) + -> __optional_relop_t() <= declval<_Tp>())> + { return __rhs && __lhs <= *__rhs; } + + template + constexpr auto + operator>=(const optional<_Tp>& __lhs, const _Up& __rhs) + -> __optional_relop_t() >= declval<_Up>())> + { return __lhs && *__lhs >= __rhs; } + + template + constexpr auto + operator>=(const _Up& __lhs, const optional<_Tp>& __rhs) + -> __optional_relop_t() >= declval<_Tp>())> + { return !__rhs || __lhs >= *__rhs; } + + // Swap and creation functions. + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2748. swappable traits for optionals + template + inline enable_if_t && is_swappable_v<_Tp>> + swap(optional<_Tp>& __lhs, optional<_Tp>& __rhs) + noexcept(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + + template + enable_if_t && is_swappable_v<_Tp>)> + swap(optional<_Tp>&, optional<_Tp>&) = delete; + + template + constexpr optional> + make_optional(_Tp&& __t) + { return optional> { std::forward<_Tp>(__t) }; } + + template + constexpr optional<_Tp> + make_optional(_Args&&... __args) + { return optional<_Tp> { in_place, std::forward<_Args>(__args)... }; } + + template + constexpr optional<_Tp> + make_optional(initializer_list<_Up> __il, _Args&&... __args) + { return optional<_Tp> { in_place, __il, std::forward<_Args>(__args)... }; } + + // Hash. + + template, + bool = __poison_hash<_Up>::__enable_hash_call> + struct __optional_hash_call_base + { + size_t + operator()(const optional<_Tp>& __t) const + noexcept(noexcept(hash<_Up>{}(*__t))) + { + // We pick an arbitrary hash for disengaged optionals which hopefully + // usual values of _Tp won't typically hash to. + constexpr size_t __magic_disengaged_hash = static_cast(-3333); + return __t ? hash<_Up>{}(*__t) : __magic_disengaged_hash; + } + }; + + template + struct __optional_hash_call_base<_Tp, _Up, false> {}; + + template + struct hash> + : private __poison_hash>, + public __optional_hash_call_base<_Tp> + { + using result_type [[__deprecated__]] = size_t; + using argument_type [[__deprecated__]] = optional<_Tp>; + }; + + template + struct __is_fast_hash>> : __is_fast_hash> + { }; + + /// @} + +#if __cpp_deduction_guides >= 201606 + template optional(_Tp) -> optional<_Tp>; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++17 + +#endif // _GLIBCXX_OPTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ostream b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ostream similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ostream rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ostream index f7cab03c8..448a92881 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/ostream +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ostream @@ -1,6 +1,6 @@ // Output streams -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algo.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algo.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algo.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algo.h index f6d0b2ad3..ae3dbeb9b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algo.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algo.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algobase.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algobase.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algobase.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algobase.h index 22c92de0d..235c2bc2c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/algobase.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algobase.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algorithm b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algorithm new file mode 100644 index 000000000..d5042d5c5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algorithm @@ -0,0 +1,39 @@ +// Algorithm extensions -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file parallel/algorithm + * This file is a GNU extension to the Standard C++ Library. + */ + +#ifndef _PARALLEL_ALGORITHM +#define _PARALLEL_ALGORITHM 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algorithmfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algorithmfwd.h new file mode 100644 index 000000000..132fe7a9c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/algorithmfwd.h @@ -0,0 +1,908 @@ +// Forward declarations -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file parallel/algorithmfwd.h + * This file is a GNU parallel extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PARALLEL_ALGORITHMFWD_H +#define _GLIBCXX_PARALLEL_ALGORITHMFWD_H 1 + +#pragma GCC system_header + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __parallel +{ + template + _FIter + adjacent_find(_FIter, _FIter); + + template + _FIter + adjacent_find(_FIter, _FIter, __gnu_parallel::sequential_tag); + + template + _FIter + __adjacent_find_switch(_FIter, _FIter, _IterTag); + + template + _RAIter + __adjacent_find_switch(_RAIter, _RAIter, random_access_iterator_tag); + + + template + _FIter + adjacent_find(_FIter, _FIter, _BiPredicate); + + template + _FIter + adjacent_find(_FIter, _FIter, _BiPredicate, + __gnu_parallel::sequential_tag); + + template + _FIter + __adjacent_find_switch(_FIter, _FIter, _BiPredicate, _IterTag); + + template + _RAIter + __adjacent_find_switch(_RAIter, _RAIter, _BiPredicate, + random_access_iterator_tag); + + + template + typename iterator_traits<_IIter>::difference_type + count(_IIter, _IIter, const _Tp&); + + template + typename iterator_traits<_IIter>::difference_type + count(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag); + + template + typename iterator_traits<_IIter>::difference_type + count(_IIter, _IIter, const _Tp&, __gnu_parallel::_Parallelism); + + template + typename iterator_traits<_IIter>::difference_type + __count_switch(_IIter, _IIter, const _Tp&, _IterTag); + + template + typename iterator_traits<_RAIter>::difference_type + __count_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_unbalanced); + + + template + typename iterator_traits<_IIter>::difference_type + count_if(_IIter, _IIter, _Predicate); + + template + typename iterator_traits<_IIter>::difference_type + count_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag); + + template + typename iterator_traits<_IIter>::difference_type + count_if(_IIter, _IIter, _Predicate, __gnu_parallel::_Parallelism); + + template + typename iterator_traits<_IIter>::difference_type + __count_if_switch(_IIter, _IIter, _Predicate, _IterTag); + + template + typename iterator_traits<_RAIter>::difference_type + __count_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_unbalanced); + + // algobase.h + template + bool + equal(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag); + + template + bool + equal(_IIter1, _IIter1, _IIter2, _Predicate, + __gnu_parallel::sequential_tag); + + template + bool + equal(_IIter1, _IIter1, _IIter2); + + template + bool + equal(_IIter1, _IIter1, _IIter2, _Predicate); + + template + _IIter + find(_IIter, _IIter, const _Tp&, __gnu_parallel::sequential_tag); + + template + _IIter + find(_IIter, _IIter, const _Tp& __val); + + template + _IIter + __find_switch(_IIter, _IIter, const _Tp&, _IterTag); + + template + _RAIter + __find_switch(_RAIter, _RAIter, const _Tp&, random_access_iterator_tag); + + template + _IIter + find_if(_IIter, _IIter, _Predicate, __gnu_parallel::sequential_tag); + + template + _IIter + find_if(_IIter, _IIter, _Predicate); + + template + _IIter + __find_if_switch(_IIter, _IIter, _Predicate, _IterTag); + + template + _RAIter + __find_if_switch(_RAIter, _RAIter, _Predicate, random_access_iterator_tag); + + template + _IIter + find_first_of(_IIter, _IIter, _FIter, _FIter, + __gnu_parallel::sequential_tag); + + template + _IIter + find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate, + __gnu_parallel::sequential_tag); + + template + _IIter + find_first_of(_IIter, _IIter, _FIter, _FIter, _BiPredicate); + + template + _IIter + find_first_of(_IIter, _IIter, _FIter, _FIter); + + template + _IIter + __find_first_of_switch( + _IIter, _IIter, _FIter, _FIter, _IterTag1, _IterTag2); + + template + _RAIter + __find_first_of_switch(_RAIter, _RAIter, _FIter, _FIter, _BiPredicate, + random_access_iterator_tag, _IterTag); + + template + _IIter + __find_first_of_switch(_IIter, _IIter, _FIter, _FIter, _BiPredicate, + _IterTag1, _IterTag2); + + + template + _Function + for_each(_IIter, _IIter, _Function); + + template + _Function + for_each(_IIter, _IIter, _Function, __gnu_parallel::sequential_tag); + + template + _Function + for_each(_Iterator, _Iterator, _Function, __gnu_parallel::_Parallelism); + + template + _Function + __for_each_switch(_IIter, _IIter, _Function, _IterTag); + + template + _Function + __for_each_switch(_RAIter, _RAIter, _Function, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + + template + void + generate(_FIter, _FIter, _Generator); + + template + void + generate(_FIter, _FIter, _Generator, __gnu_parallel::sequential_tag); + + template + void + generate(_FIter, _FIter, _Generator, __gnu_parallel::_Parallelism); + + template + void + __generate_switch(_FIter, _FIter, _Generator, _IterTag); + + template + void + __generate_switch(_RAIter, _RAIter, _Generator, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + template + _OIter + generate_n(_OIter, _Size, _Generator); + + template + _OIter + generate_n(_OIter, _Size, _Generator, __gnu_parallel::sequential_tag); + + template + _OIter + generate_n(_OIter, _Size, _Generator, __gnu_parallel::_Parallelism); + + template + _OIter + __generate_n_switch(_OIter, _Size, _Generator, _IterTag); + + template + _RAIter + __generate_n_switch(_RAIter, _Size, _Generator, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, + __gnu_parallel::sequential_tag); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate, + __gnu_parallel::sequential_tag); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2); + + template + bool + lexicographical_compare(_IIter1, _IIter1, _IIter2, _IIter2, _Predicate); + + template + bool + __lexicographical_compare_switch(_IIter1, _IIter1, _IIter2, _IIter2, + _Predicate, _IterTag1, _IterTag2); + + template + bool + __lexicographical_compare_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, + _Predicate, random_access_iterator_tag, + random_access_iterator_tag); + + // algo.h + template + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2, __gnu_parallel::sequential_tag); + + template + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2, _Predicate, + __gnu_parallel::sequential_tag); + + template + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2); + + template + pair<_IIter1, _IIter2> + mismatch(_IIter1, _IIter1, _IIter2, _Predicate); + + template + pair<_IIter1, _IIter2> + __mismatch_switch(_IIter1, _IIter1, _IIter2, _Predicate, + _IterTag1, _IterTag2); + + template + pair<_RAIter1, _RAIter2> + __mismatch_switch(_RAIter1, _RAIter1, _RAIter2, _Predicate, + random_access_iterator_tag, random_access_iterator_tag); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2, __gnu_parallel::sequential_tag); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate, + __gnu_parallel::sequential_tag); + + template + _FIter1 + search(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate); + + template + _RAIter1 + __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, + random_access_iterator_tag, random_access_iterator_tag); + + template + _FIter1 + __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _IterTag1, _IterTag2); + + template + _RAIter1 + __search_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _BiPredicate, + random_access_iterator_tag, random_access_iterator_tag); + + template + _FIter1 + __search_switch(_FIter1, _FIter1, _FIter2, _FIter2, _BiPredicate, + _IterTag1, _IterTag2); + + template + _FIter + search_n(_FIter, _FIter, _Integer, const _Tp&, + __gnu_parallel::sequential_tag); + + template + _FIter + search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate, + __gnu_parallel::sequential_tag); + + template + _FIter + search_n(_FIter, _FIter, _Integer, const _Tp&); + + template + _FIter + search_n(_FIter, _FIter, _Integer, const _Tp&, _BiPredicate); + + template + _RAIter + __search_n_switch(_RAIter, _RAIter, _Integer, const _Tp&, + _BiPredicate, random_access_iterator_tag); + + template + _FIter + __search_n_switch(_FIter, _FIter, _Integer, const _Tp&, + _BiPredicate, _IterTag); + + + template + _OIter + transform(_IIter, _IIter, _OIter, _UnaryOperation); + + template + _OIter + transform(_IIter, _IIter, _OIter, _UnaryOperation, + __gnu_parallel::sequential_tag); + + template + _OIter + transform(_IIter, _IIter, _OIter, _UnaryOperation, + __gnu_parallel::_Parallelism); + + template + _OIter + __transform1_switch(_IIter, _IIter, _OIter, _UnaryOperation, + _IterTag1, _IterTag2); + + + template + _RAOIter + __transform1_switch(_RAIIter, _RAIIter, _RAOIter, _UnaryOperation, + random_access_iterator_tag, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + + template + _OIter + transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation); + + template + _OIter + transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, + __gnu_parallel::sequential_tag); + + template + _OIter + transform(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, + __gnu_parallel::_Parallelism); + + template + _RAIter3 + __transform2_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter3, _BiOperation, + random_access_iterator_tag, random_access_iterator_tag, + random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + template + _OIter + __transform2_switch(_IIter1, _IIter1, _IIter2, _OIter, _BiOperation, + _Tag1, _Tag2, _Tag3); + + + template + void + replace(_FIter, _FIter, const _Tp&, const _Tp&); + + template + void + replace(_FIter, _FIter, const _Tp&, const _Tp&, + __gnu_parallel::sequential_tag); + + template + void + replace(_FIter, _FIter, const _Tp&, const _Tp&, + __gnu_parallel::_Parallelism); + + template + void + __replace_switch(_FIter, _FIter, const _Tp&, const _Tp&, _IterTag); + + template + void + __replace_switch(_RAIter, _RAIter, const _Tp&, const _Tp&, + random_access_iterator_tag, __gnu_parallel::_Parallelism); + + + template + void + replace_if(_FIter, _FIter, _Predicate, const _Tp&); + + template + void + replace_if(_FIter, _FIter, _Predicate, const _Tp&, + __gnu_parallel::sequential_tag); + + template + void + replace_if(_FIter, _FIter, _Predicate, const _Tp&, + __gnu_parallel::_Parallelism); + + template + void + __replace_if_switch(_FIter, _FIter, _Predicate, const _Tp&, _IterTag); + + template + void + __replace_if_switch(_RAIter, _RAIter, _Predicate, const _Tp&, + random_access_iterator_tag, + __gnu_parallel::_Parallelism); + + + template + _FIter + max_element(_FIter, _FIter); + + template + _FIter + max_element(_FIter, _FIter, __gnu_parallel::sequential_tag); + + template + _FIter + max_element(_FIter, _FIter, __gnu_parallel::_Parallelism); + + template + _FIter + max_element(_FIter, _FIter, _Compare); + + template + _FIter + max_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag); + + template + _FIter + max_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism); + + template + _FIter + __max_element_switch(_FIter, _FIter, _Compare, _IterTag); + + template + _RAIter + __max_element_switch( + _RAIter, _RAIter, _Compare, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + + template + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + __gnu_parallel::sequential_tag); + + template + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, + __gnu_parallel::sequential_tag); + + template + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare); + + template + _OIter + merge(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, + _IterTag1, _IterTag2, _IterTag3); + + template + _OIter + __merge_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Compare, + random_access_iterator_tag, random_access_iterator_tag, + random_access_iterator_tag); + + + template + _FIter + min_element(_FIter, _FIter); + + template + _FIter + min_element(_FIter, _FIter, __gnu_parallel::sequential_tag); + + template + _FIter + min_element(_FIter, _FIter, + __gnu_parallel::_Parallelism __parallelism_tag); + + template + _FIter + min_element(_FIter, _FIter, _Compare); + + template + _FIter + min_element(_FIter, _FIter, _Compare, __gnu_parallel::sequential_tag); + + template + _FIter + min_element(_FIter, _FIter, _Compare, __gnu_parallel::_Parallelism); + + template + _FIter + __min_element_switch(_FIter, _FIter, _Compare, _IterTag); + + template + _RAIter + __min_element_switch( + _RAIter, _RAIter, _Compare, random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism + = __gnu_parallel::parallel_balanced); + + template + void + nth_element(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag); + + template + void + nth_element(_RAIter, _RAIter, _RAIter, _Compare, + __gnu_parallel::sequential_tag); + + template + void + nth_element(_RAIter, _RAIter, _RAIter, _Compare); + + template + void + nth_element(_RAIter, _RAIter, _RAIter); + + template + void + partial_sort(_RAIter, _RAIter, _RAIter, _Compare, + __gnu_parallel::sequential_tag); + + template + void + partial_sort(_RAIter, _RAIter, _RAIter, __gnu_parallel::sequential_tag); + + template + void + partial_sort(_RAIter, _RAIter, _RAIter, _Compare); + + template + void + partial_sort(_RAIter, _RAIter, _RAIter); + + template + _FIter + partition(_FIter, _FIter, _Predicate, __gnu_parallel::sequential_tag); + + template + _FIter + partition(_FIter, _FIter, _Predicate); + + template + _FIter + __partition_switch(_FIter, _FIter, _Predicate, _IterTag); + + template + _RAIter + __partition_switch( + _RAIter, _RAIter, _Predicate, random_access_iterator_tag); + + template + void + random_shuffle(_RAIter, _RAIter, __gnu_parallel::sequential_tag); + + template + void + random_shuffle(_RAIter, _RAIter, _RandomNumberGenerator&, + __gnu_parallel::sequential_tag); + + template + void + random_shuffle(_RAIter, _RAIter); + + template + void + random_shuffle(_RAIter, _RAIter, +#if __cplusplus >= 201103L + _RandomNumberGenerator&&); +#else + _RandomNumberGenerator&); +#endif + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + __gnu_parallel::sequential_tag); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate, + __gnu_parallel::sequential_tag); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_union(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate); + + template + _OIter + __set_union_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + _Predicate, _IterTag1, _IterTag2, _IterTag3); + + template + _Output_RAIter + __set_union_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, _Output_RAIter, + _Predicate, random_access_iterator_tag, + random_access_iterator_tag, random_access_iterator_tag); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + __gnu_parallel::sequential_tag); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate, + __gnu_parallel::sequential_tag); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_intersection(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate); + + template + _OIter + __set_intersection_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + _Predicate, _IterTag1, _IterTag2, _IterTag3); + + template + _Output_RAIter + __set_intersection_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, + _Output_RAIter, _Predicate, + random_access_iterator_tag, + random_access_iterator_tag, + random_access_iterator_tag); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + __gnu_parallel::sequential_tag); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + _Predicate, __gnu_parallel::sequential_tag); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_symmetric_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + _Predicate); + + template + _OIter + __set_symmetric_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, + _OIter, _Predicate, _IterTag1, _IterTag2, + _IterTag3); + + template + _Output_RAIter + __set_symmetric_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, + _Output_RAIter, _Predicate, + random_access_iterator_tag, + random_access_iterator_tag, + random_access_iterator_tag); + + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + __gnu_parallel::sequential_tag); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate, + __gnu_parallel::sequential_tag); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter); + + template + _OIter + set_difference(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, _Predicate); + + template + _OIter + __set_difference_switch(_IIter1, _IIter1, _IIter2, _IIter2, _OIter, + _Predicate, _IterTag1, _IterTag2, _IterTag3); + + template + _Output_RAIter + __set_difference_switch(_RAIter1, _RAIter1, _RAIter2, _RAIter2, + _Output_RAIter, _Predicate, + random_access_iterator_tag, + random_access_iterator_tag, + random_access_iterator_tag); + + + template + void + sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag); + + template + void + sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag); + + template + void + sort(_RAIter, _RAIter); + + template + void + sort(_RAIter, _RAIter, _Compare); + + template + void + stable_sort(_RAIter, _RAIter, __gnu_parallel::sequential_tag); + + template + void + stable_sort(_RAIter, _RAIter, _Compare, __gnu_parallel::sequential_tag); + + template + void + stable_sort(_RAIter, _RAIter); + + template + void + stable_sort(_RAIter, _RAIter, _Compare); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter, __gnu_parallel::sequential_tag); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter, _Predicate, + __gnu_parallel::sequential_tag); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter); + + template + _OIter + unique_copy(_IIter, _IIter, _OIter, _Predicate); + + template + _OIter + __unique_copy_switch(_IIter, _IIter, _OIter, _Predicate, + _IterTag1, _IterTag2); + + template + _RandomAccess_OIter + __unique_copy_switch(_RAIter, _RAIter, _RandomAccess_OIter, _Predicate, + random_access_iterator_tag, random_access_iterator_tag); +} // end namespace __parallel +} // end namespace std + +#endif /* _GLIBCXX_PARALLEL_ALGORITHMFWD_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/balanced_quicksort.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/balanced_quicksort.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/balanced_quicksort.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/balanced_quicksort.h index de1a37ead..e03410e42 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/balanced_quicksort.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/balanced_quicksort.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/base.h new file mode 100644 index 000000000..2c2821ea0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/base.h @@ -0,0 +1,430 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file parallel/base.h + * @brief Sequential helper functions. + * This file is a GNU parallel extension to the Standard C++ Library. + */ + +// Written by Johannes Singler. + +#ifndef _GLIBCXX_PARALLEL_BASE_H +#define _GLIBCXX_PARALLEL_BASE_H 1 + +#include +#include +#include +#include +#include +#include + +// Parallel mode namespaces. + +/** + * @namespace std::__parallel + * @brief GNU parallel code, replaces standard behavior with parallel behavior. + */ +namespace std _GLIBCXX_VISIBILITY(default) +{ + namespace __parallel { } +} + +/** + * @namespace __gnu_parallel + * @brief GNU parallel code for public use. + */ +namespace __gnu_parallel +{ + // Import all the parallel versions of components in namespace std. + using namespace std::__parallel; +} + +/** + * @namespace __gnu_sequential + * @brief GNU sequential classes for public use. + */ +namespace __gnu_sequential +{ + // Import whatever is the serial version. +#ifdef _GLIBCXX_PARALLEL + using namespace std::_GLIBCXX_STD_A; +#else + using namespace std; +#endif +} + + +namespace __gnu_parallel +{ + // NB: Including this file cannot produce (unresolved) symbols from + // the OpenMP runtime unless the parallel mode is actually invoked + // and active, which imples that the OpenMP runtime is actually + // going to be linked in. + inline _ThreadIndex + __get_max_threads() + { + _ThreadIndex __i = omp_get_max_threads(); + return __i > 1 ? __i : 1; + } + + + inline bool + __is_parallel(const _Parallelism __p) { return __p != sequential; } + + + /** @brief Calculates the rounded-down logarithm of @c __n for base 2. + * @param __n Argument. + * @return Returns 0 for any argument <1. + */ + template + inline _Size + __rd_log2(_Size __n) + { + _Size __k; + for (__k = 0; __n > 1; __n >>= 1) + ++__k; + return __k; + } + + /** @brief Encode two integers into one gnu_parallel::_CASable. + * @param __a First integer, to be encoded in the most-significant @c + * _CASable_bits/2 bits. + * @param __b Second integer, to be encoded in the least-significant + * @c _CASable_bits/2 bits. + * @return value encoding @c __a and @c __b. + * @see __decode2 + */ + inline _CASable + __encode2(int __a, int __b) //must all be non-negative, actually + { + return (((_CASable)__a) << (_CASable_bits / 2)) | (((_CASable)__b) << 0); + } + + /** @brief Decode two integers from one gnu_parallel::_CASable. + * @param __x __gnu_parallel::_CASable to decode integers from. + * @param __a First integer, to be decoded from the most-significant + * @c _CASable_bits/2 bits of @c __x. + * @param __b Second integer, to be encoded in the least-significant + * @c _CASable_bits/2 bits of @c __x. + * @see __encode2 + */ + inline void + __decode2(_CASable __x, int& __a, int& __b) + { + __a = (int)((__x >> (_CASable_bits / 2)) & _CASable_mask); + __b = (int)((__x >> 0 ) & _CASable_mask); + } + + //needed for parallel "numeric", even if "algorithm" not included + + /** @brief Equivalent to std::min. */ + template + inline const _Tp& + min(const _Tp& __a, const _Tp& __b) + { return (__a < __b) ? __a : __b; } + + /** @brief Equivalent to std::max. */ + template + inline const _Tp& + max(const _Tp& __a, const _Tp& __b) + { return (__a > __b) ? __a : __b; } + + /** @brief Constructs predicate for equality from strict weak + * ordering predicate + */ + template + class _EqualFromLess : public std::binary_function<_T1, _T2, bool> + { + private: + _Compare& _M_comp; + + public: + _EqualFromLess(_Compare& __comp) : _M_comp(__comp) { } + + bool operator()(const _T1& __a, const _T2& __b) + { return !_M_comp(__a, __b) && !_M_comp(__b, __a); } + }; + + + /** @brief Similar to std::unary_negate, + * but giving the argument types explicitly. */ + template + class __unary_negate + : public std::unary_function + { + protected: + _Predicate _M_pred; + + public: + explicit + __unary_negate(const _Predicate& __x) : _M_pred(__x) { } + + bool + operator()(const argument_type& __x) + { return !_M_pred(__x); } + }; + + /** @brief Similar to std::binder1st, + * but giving the argument types explicitly. */ + template + class __binder1st + : public std::unary_function<_SecondArgumentType, _ResultType> + { + protected: + _Operation _M_op; + _FirstArgumentType _M_value; + + public: + __binder1st(const _Operation& __x, const _FirstArgumentType& __y) + : _M_op(__x), _M_value(__y) { } + + _ResultType + operator()(const _SecondArgumentType& __x) + { return _M_op(_M_value, __x); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 109. Missing binders for non-const sequence elements + _ResultType + operator()(_SecondArgumentType& __x) const + { return _M_op(_M_value, __x); } + }; + + /** + * @brief Similar to std::binder2nd, but giving the argument types + * explicitly. + */ + template + class __binder2nd + : public std::unary_function<_FirstArgumentType, _ResultType> + { + protected: + _Operation _M_op; + _SecondArgumentType _M_value; + + public: + __binder2nd(const _Operation& __x, const _SecondArgumentType& __y) + : _M_op(__x), _M_value(__y) { } + + _ResultType + operator()(const _FirstArgumentType& __x) const + { return _M_op(__x, _M_value); } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 109. Missing binders for non-const sequence elements + _ResultType + operator()(_FirstArgumentType& __x) + { return _M_op(__x, _M_value); } + }; + + /** @brief Similar to std::equal_to, but allows two different types. */ + template + struct _EqualTo : std::binary_function<_T1, _T2, bool> + { + bool operator()(const _T1& __t1, const _T2& __t2) const + { return __t1 == __t2; } + }; + + /** @brief Similar to std::less, but allows two different types. */ + template + struct _Less : std::binary_function<_T1, _T2, bool> + { + bool + operator()(const _T1& __t1, const _T2& __t2) const + { return __t1 < __t2; } + + bool + operator()(const _T2& __t2, const _T1& __t1) const + { return __t2 < __t1; } + }; + + // Partial specialization for one type. Same as std::less. + template + struct _Less<_Tp, _Tp> + : public std::less<_Tp> { }; + + /** @brief Similar to std::plus, but allows two different types. */ + template(0) + + *static_cast<_Tp2*>(0))> + struct _Plus : public std::binary_function<_Tp1, _Tp2, _Result> + { + _Result + operator()(const _Tp1& __x, const _Tp2& __y) const + { return __x + __y; } + }; + + // Partial specialization for one type. Same as std::plus. + template + struct _Plus<_Tp, _Tp, _Tp> + : public std::plus<_Tp> { }; + + /** @brief Similar to std::multiplies, but allows two different types. */ + template(0) + * *static_cast<_Tp2*>(0))> + struct _Multiplies : public std::binary_function<_Tp1, _Tp2, _Result> + { + _Result + operator()(const _Tp1& __x, const _Tp2& __y) const + { return __x * __y; } + }; + + // Partial specialization for one type. Same as std::multiplies. + template + struct _Multiplies<_Tp, _Tp, _Tp> + : public std::multiplies<_Tp> { }; + + /** @brief _Iterator associated with __gnu_parallel::_PseudoSequence. + * If features the usual random-access iterator functionality. + * @param _Tp Sequence _M_value type. + * @param _DifferenceTp Sequence difference type. + */ + template + class _PseudoSequenceIterator + { + public: + typedef _DifferenceTp _DifferenceType; + + _PseudoSequenceIterator(const _Tp& __val, _DifferenceType __pos) + : _M_val(__val), _M_pos(__pos) { } + + // Pre-increment operator. + _PseudoSequenceIterator& + operator++() + { + ++_M_pos; + return *this; + } + + // Post-increment operator. + _PseudoSequenceIterator + operator++(int) + { return _PseudoSequenceIterator(_M_pos++); } + + const _Tp& + operator*() const + { return _M_val; } + + const _Tp& + operator[](_DifferenceType) const + { return _M_val; } + + bool + operator==(const _PseudoSequenceIterator& __i2) + { return _M_pos == __i2._M_pos; } + + bool + operator!=(const _PseudoSequenceIterator& __i2) + { return _M_pos != __i2._M_pos; } + + _DifferenceType + operator-(const _PseudoSequenceIterator& __i2) + { return _M_pos - __i2._M_pos; } + + private: + const _Tp& _M_val; + _DifferenceType _M_pos; + }; + + /** @brief Sequence that conceptually consists of multiple copies of + the same element. + * The copies are not stored explicitly, of course. + * @param _Tp Sequence _M_value type. + * @param _DifferenceTp Sequence difference type. + */ + template + class _PseudoSequence + { + public: + typedef _DifferenceTp _DifferenceType; + + // Better cast down to uint64_t, than up to _DifferenceTp. + typedef _PseudoSequenceIterator<_Tp, uint64_t> iterator; + + /** @brief Constructor. + * @param __val Element of the sequence. + * @param __count Number of (virtual) copies. + */ + _PseudoSequence(const _Tp& __val, _DifferenceType __count) + : _M_val(__val), _M_count(__count) { } + + /** @brief Begin iterator. */ + iterator + begin() const + { return iterator(_M_val, 0); } + + /** @brief End iterator. */ + iterator + end() const + { return iterator(_M_val, _M_count); } + + private: + const _Tp& _M_val; + _DifferenceType _M_count; + }; + + /** @brief Compute the median of three referenced elements, + according to @c __comp. + * @param __a First iterator. + * @param __b Second iterator. + * @param __c Third iterator. + * @param __comp Comparator. + */ + template + _RAIter + __median_of_three_iterators(_RAIter __a, _RAIter __b, + _RAIter __c, _Compare __comp) + { + if (__comp(*__a, *__b)) + if (__comp(*__b, *__c)) + return __b; + else + if (__comp(*__a, *__c)) + return __c; + else + return __a; + else + { + // Just swap __a and __b. + if (__comp(*__a, *__c)) + return __a; + else + if (__comp(*__b, *__c)) + return __c; + else + return __b; + } + } + +#if _GLIBCXX_PARALLEL_ASSERTIONS && defined(__glibcxx_assert_impl) +#define _GLIBCXX_PARALLEL_ASSERT(_Condition) __glibcxx_assert_impl(_Condition) +#else +#define _GLIBCXX_PARALLEL_ASSERT(_Condition) +#endif + +} //namespace __gnu_parallel + +#endif /* _GLIBCXX_PARALLEL_BASE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/basic_iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/basic_iterator.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/basic_iterator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/basic_iterator.h index b239aa085..fad9d8995 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/basic_iterator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/basic_iterator.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/checkers.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/checkers.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/checkers.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/checkers.h index efc9158f2..ad3585951 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/checkers.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/checkers.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/compatibility.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/compatibility.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/compatibility.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/compatibility.h index 6ea699fda..d50d67933 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/compatibility.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/compatibility.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/compiletime_settings.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/compiletime_settings.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/compiletime_settings.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/compiletime_settings.h index 34376fc63..032ebc60b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/compiletime_settings.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/compiletime_settings.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/equally_split.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/equally_split.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/equally_split.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/equally_split.h index 926403a8f..afaac7b33 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/equally_split.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/equally_split.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/features.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/features.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/features.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/features.h index 071ecacc0..9f773ded9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/features.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/features.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/find.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/find.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/find.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/find.h index 6eaf940b5..63aa9c113 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/find.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/find.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/find_selectors.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/find_selectors.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/find_selectors.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/find_selectors.h index e62282fe6..6766da0b5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/find_selectors.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/find_selectors.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/for_each.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/for_each.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/for_each.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/for_each.h index cab7d1c2c..3014fb5f9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/for_each.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/for_each.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/for_each_selectors.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/for_each_selectors.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/for_each_selectors.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/for_each_selectors.h index a0b727da6..f9cd58467 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/for_each_selectors.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/for_each_selectors.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/iterator.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/iterator.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/iterator.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/iterator.h index 2fd4b2d90..05f83d849 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/iterator.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/iterator.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/list_partition.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/list_partition.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/list_partition.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/list_partition.h index 6efb45a3f..c9f54b778 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/list_partition.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/list_partition.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/losertree.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/losertree.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/losertree.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/losertree.h index 6e5266dc6..9a91f6c98 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/losertree.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/losertree.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/merge.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/merge.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/merge.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/merge.h index 16ed11fcc..43d0bfa14 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/merge.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/merge.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiseq_selection.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiseq_selection.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiseq_selection.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiseq_selection.h index b5d6941c7..57f71469c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiseq_selection.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiseq_selection.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiway_merge.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiway_merge.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiway_merge.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiway_merge.h index ccd8b6e93..e684c51a3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiway_merge.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiway_merge.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiway_mergesort.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiway_mergesort.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiway_mergesort.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiway_mergesort.h index 0a22d77c4..2acf8e647 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/multiway_mergesort.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/multiway_mergesort.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/numeric b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/numeric new file mode 100644 index 000000000..c2c9fac28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/numeric @@ -0,0 +1,511 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** + * @file parallel/numeric +* + * @brief Parallel STL function calls corresponding to stl_numeric.h. + * The functions defined here mainly do case switches and + * call the actual parallelized versions in other files. + * Inlining policy: Functions that basically only contain one function call, + * are declared inline. + * This file is a GNU parallel extension to the Standard C++ Library. + */ + +// Written by Johannes Singler and Felix Putze. + +#ifndef _GLIBCXX_PARALLEL_NUMERIC_H +#define _GLIBCXX_PARALLEL_NUMERIC_H 1 + +#include +#include +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __parallel +{ + // Sequential fallback. + template + inline _Tp + accumulate(_IIter __begin, _IIter __end, _Tp __init, + __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::accumulate(__begin, __end, __init); } + + template + inline _Tp + accumulate(_IIter __begin, _IIter __end, _Tp __init, + _BinaryOperation __binary_op, __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::accumulate(__begin, __end, __init, __binary_op); } + + // Sequential fallback for input iterator case. + template + inline _Tp + __accumulate_switch(_IIter __begin, _IIter __end, + _Tp __init, _IteratorTag) + { return accumulate(__begin, __end, __init, + __gnu_parallel::sequential_tag()); } + + template + inline _Tp + __accumulate_switch(_IIter __begin, _IIter __end, _Tp __init, + _BinaryOperation __binary_op, _IteratorTag) + { return accumulate(__begin, __end, __init, __binary_op, + __gnu_parallel::sequential_tag()); } + + // Parallel algorithm for random access iterators. + template + _Tp + __accumulate_switch(__RAIter __begin, __RAIter __end, + _Tp __init, _BinaryOperation __binary_op, + random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) + >= __gnu_parallel::_Settings::get().accumulate_minimal_n + && __gnu_parallel::__is_parallel(__parallelism_tag))) + { + _Tp __res = __init; + __gnu_parallel::__accumulate_selector<__RAIter> + __my_selector; + __gnu_parallel:: + __for_each_template_random_access_ed(__begin, __end, + __gnu_parallel::_Nothing(), + __my_selector, + __gnu_parallel:: + __accumulate_binop_reduct + <_BinaryOperation>(__binary_op), + __res, __res, -1); + return __res; + } + else + return accumulate(__begin, __end, __init, __binary_op, + __gnu_parallel::sequential_tag()); + } + + // Public interface. + template + inline _Tp + accumulate(_IIter __begin, _IIter __end, _Tp __init, + __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef std::iterator_traits<_IIter> _IteratorTraits; + typedef typename _IteratorTraits::value_type _ValueType; + typedef typename _IteratorTraits::iterator_category _IteratorCategory; + + return __accumulate_switch(__begin, __end, __init, + __gnu_parallel::_Plus<_Tp, _ValueType>(), + _IteratorCategory(), __parallelism_tag); + } + + template + inline _Tp + accumulate(_IIter __begin, _IIter __end, _Tp __init) + { + typedef std::iterator_traits<_IIter> _IteratorTraits; + typedef typename _IteratorTraits::value_type _ValueType; + typedef typename _IteratorTraits::iterator_category _IteratorCategory; + + return __accumulate_switch(__begin, __end, __init, + __gnu_parallel::_Plus<_Tp, _ValueType>(), + _IteratorCategory()); + } + + template + inline _Tp + accumulate(_IIter __begin, _IIter __end, _Tp __init, + _BinaryOperation __binary_op, + __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_IIter> _IteratorTraits; + typedef typename _IteratorTraits::iterator_category _IteratorCategory; + return __accumulate_switch(__begin, __end, __init, __binary_op, + _IteratorCategory(), __parallelism_tag); + } + + template + inline _Tp + accumulate(_IIter __begin, _IIter __end, _Tp __init, + _BinaryOperation __binary_op) + { + typedef iterator_traits<_IIter> _IteratorTraits; + typedef typename _IteratorTraits::iterator_category _IteratorCategory; + return __accumulate_switch(__begin, __end, __init, __binary_op, + _IteratorCategory()); + } + + + // Sequential fallback. + template + inline _Tp + inner_product(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init, + __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::inner_product( + __first1, __last1, __first2, __init); } + + template + inline _Tp + inner_product(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, + _BinaryFunction2 __binary_op2, + __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::inner_product(__first1, __last1, __first2, __init, + __binary_op1, __binary_op2); } + + // Parallel algorithm for random access iterators. + template + _Tp + __inner_product_switch(_RAIter1 __first1, + _RAIter1 __last1, + _RAIter2 __first2, _Tp __init, + _BinaryFunction1 __binary_op1, + _BinaryFunction2 __binary_op2, + random_access_iterator_tag, + random_access_iterator_tag, + __gnu_parallel::_Parallelism __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION((__last1 - __first1) + >= __gnu_parallel::_Settings::get(). + accumulate_minimal_n + && __gnu_parallel:: + __is_parallel(__parallelism_tag))) + { + _Tp __res = __init; + __gnu_parallel:: + __inner_product_selector<_RAIter1, + _RAIter2, _Tp> __my_selector(__first1, __first2); + __gnu_parallel:: + __for_each_template_random_access_ed( + __first1, __last1, __binary_op2, __my_selector, __binary_op1, + __res, __res, -1); + return __res; + } + else + return inner_product(__first1, __last1, __first2, __init, + __gnu_parallel::sequential_tag()); + } + + // No parallelism for input iterators. + template + inline _Tp + __inner_product_switch(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init, + _BinaryFunction1 __binary_op1, + _BinaryFunction2 __binary_op2, + _IteratorTag1, _IteratorTag2) + { return inner_product(__first1, __last1, __first2, __init, __binary_op1, + __binary_op2, __gnu_parallel::sequential_tag()); } + + template + inline _Tp + inner_product(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, + _BinaryFunction2 __binary_op2, + __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_IIter1> _TraitsType1; + typedef typename _TraitsType1::iterator_category _IteratorCategory1; + + typedef iterator_traits<_IIter2> _TraitsType2; + typedef typename _TraitsType2::iterator_category _IteratorCategory2; + + return __inner_product_switch(__first1, __last1, __first2, __init, + __binary_op1, __binary_op2, + _IteratorCategory1(), _IteratorCategory2(), + __parallelism_tag); + } + + template + inline _Tp + inner_product(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init, _BinaryFunction1 __binary_op1, + _BinaryFunction2 __binary_op2) + { + typedef iterator_traits<_IIter1> _TraitsType1; + typedef typename _TraitsType1::iterator_category _IteratorCategory1; + + typedef iterator_traits<_IIter2> _TraitsType2; + typedef typename _TraitsType2::iterator_category _IteratorCategory2; + + return __inner_product_switch(__first1, __last1, __first2, __init, + __binary_op1, __binary_op2, + _IteratorCategory1(), + _IteratorCategory2()); + } + + template + inline _Tp + inner_product(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init, + __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_IIter1> _TraitsType1; + typedef typename _TraitsType1::value_type _ValueType1; + typedef iterator_traits<_IIter2> _TraitsType2; + typedef typename _TraitsType2::value_type _ValueType2; + + typedef typename + __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type + _MultipliesResultType; + return __gnu_parallel::inner_product(__first1, __last1, __first2, __init, + __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(), + __gnu_parallel:: + _Multiplies<_ValueType1, _ValueType2>(), + __parallelism_tag); + } + + template + inline _Tp + inner_product(_IIter1 __first1, _IIter1 __last1, + _IIter2 __first2, _Tp __init) + { + typedef iterator_traits<_IIter1> _TraitsType1; + typedef typename _TraitsType1::value_type _ValueType1; + typedef iterator_traits<_IIter2> _TraitsType2; + typedef typename _TraitsType2::value_type _ValueType2; + + typedef typename + __gnu_parallel::_Multiplies<_ValueType1, _ValueType2>::result_type + _MultipliesResultType; + return __gnu_parallel::inner_product(__first1, __last1, __first2, __init, + __gnu_parallel::_Plus<_Tp, _MultipliesResultType>(), + __gnu_parallel:: + _Multiplies<_ValueType1, _ValueType2>()); + } + + // Sequential fallback. + template + inline _OutputIterator + partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result, + __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result); } + + // Sequential fallback. + template + inline _OutputIterator + partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result, + _BinaryOperation __bin_op, __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result, __bin_op); } + + // Sequential fallback for input iterator case. + template + inline _OutputIterator + __partial_sum_switch(_IIter __begin, _IIter __end, + _OutputIterator __result, _BinaryOperation __bin_op, + _IteratorTag1, _IteratorTag2) + { return _GLIBCXX_STD_A::partial_sum(__begin, __end, __result, __bin_op); } + + // Parallel algorithm for random access iterators. + template + _OutputIterator + __partial_sum_switch(_IIter __begin, _IIter __end, + _OutputIterator __result, _BinaryOperation __bin_op, + random_access_iterator_tag, + random_access_iterator_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) + >= __gnu_parallel::_Settings::get().partial_sum_minimal_n)) + return __gnu_parallel::__parallel_partial_sum(__begin, __end, + __result, __bin_op); + else + return partial_sum(__begin, __end, __result, __bin_op, + __gnu_parallel::sequential_tag()); + } + + // Public interface. + template + inline _OutputIterator + partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result) + { + typedef typename iterator_traits<_IIter>::value_type _ValueType; + return __gnu_parallel::partial_sum(__begin, __end, + __result, std::plus<_ValueType>()); + } + + // Public interface + template + inline _OutputIterator + partial_sum(_IIter __begin, _IIter __end, _OutputIterator __result, + _BinaryOperation __binary_op) + { + typedef iterator_traits<_IIter> _ITraitsType; + typedef typename _ITraitsType::iterator_category _IIteratorCategory; + + typedef iterator_traits<_OutputIterator> _OTraitsType; + typedef typename _OTraitsType::iterator_category _OIterCategory; + + return __partial_sum_switch(__begin, __end, __result, __binary_op, + _IIteratorCategory(), _OIterCategory()); + } + + // Sequential fallback. + template + inline _OutputIterator + adjacent_difference(_IIter __begin, _IIter __end, _OutputIterator __result, + __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::adjacent_difference(__begin, __end, __result); } + + // Sequential fallback. + template + inline _OutputIterator + adjacent_difference(_IIter __begin, _IIter __end, + _OutputIterator __result, _BinaryOperation __bin_op, + __gnu_parallel::sequential_tag) + { return _GLIBCXX_STD_A::adjacent_difference(__begin, __end, + __result, __bin_op); } + + // Sequential fallback for input iterator case. + template + inline _OutputIterator + __adjacent_difference_switch(_IIter __begin, _IIter __end, + _OutputIterator __result, + _BinaryOperation __bin_op, _IteratorTag1, + _IteratorTag2) + { return adjacent_difference(__begin, __end, __result, __bin_op, + __gnu_parallel::sequential_tag()); } + + // Parallel algorithm for random access iterators. + template + _OutputIterator + __adjacent_difference_switch(_IIter __begin, _IIter __end, + _OutputIterator __result, + _BinaryOperation __bin_op, + random_access_iterator_tag, + random_access_iterator_tag, + __gnu_parallel::_Parallelism + __parallelism_tag) + { + if (_GLIBCXX_PARALLEL_CONDITION( + static_cast<__gnu_parallel::_SequenceIndex>(__end - __begin) + >= __gnu_parallel::_Settings::get().adjacent_difference_minimal_n + && __gnu_parallel::__is_parallel(__parallelism_tag))) + { + bool __dummy = true; + typedef __gnu_parallel::_IteratorPair<_IIter, _OutputIterator, + random_access_iterator_tag> _ItTrip; + *__result = *__begin; + _ItTrip __begin_pair(__begin + 1, __result + 1), + __end_pair(__end, __result + (__end - __begin)); + __gnu_parallel::__adjacent_difference_selector<_ItTrip> + __functionality; + __gnu_parallel:: + __for_each_template_random_access_ed( + __begin_pair, __end_pair, __bin_op, __functionality, + __gnu_parallel::_DummyReduct(), __dummy, __dummy, -1); + return __functionality._M_finish_iterator; + } + else + return adjacent_difference(__begin, __end, __result, __bin_op, + __gnu_parallel::sequential_tag()); + } + + // Public interface. + template + inline _OutputIterator + adjacent_difference(_IIter __begin, _IIter __end, + _OutputIterator __result, + __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_IIter> _TraitsType; + typedef typename _TraitsType::value_type _ValueType; + return adjacent_difference(__begin, __end, __result, + std::minus<_ValueType>(), + __parallelism_tag); + } + + template + inline _OutputIterator + adjacent_difference(_IIter __begin, _IIter __end, + _OutputIterator __result) + { + typedef iterator_traits<_IIter> _TraitsType; + typedef typename _TraitsType::value_type _ValueType; + return adjacent_difference(__begin, __end, __result, + std::minus<_ValueType>()); + } + + template + inline _OutputIterator + adjacent_difference(_IIter __begin, _IIter __end, + _OutputIterator __result, _BinaryOperation __binary_op, + __gnu_parallel::_Parallelism __parallelism_tag) + { + typedef iterator_traits<_IIter> _ITraitsType; + typedef typename _ITraitsType::iterator_category _IIteratorCategory; + + typedef iterator_traits<_OutputIterator> _OTraitsType; + typedef typename _OTraitsType::iterator_category _OIterCategory; + + return __adjacent_difference_switch(__begin, __end, __result, + __binary_op, + _IIteratorCategory(), + _OIterCategory(), + __parallelism_tag); + } + + template + inline _OutputIterator + adjacent_difference(_IIter __begin, _IIter __end, + _OutputIterator __result, _BinaryOperation __binary_op) + { + typedef iterator_traits<_IIter> _ITraitsType; + typedef typename _ITraitsType::iterator_category _IIteratorCategory; + + typedef iterator_traits<_OutputIterator> _OTraitsType; + typedef typename _OTraitsType::iterator_category _OIterCategory; + + return __adjacent_difference_switch(__begin, __end, __result, + __binary_op, + _IIteratorCategory(), + _OIterCategory()); + } +} // end namespace +} // end namespace + +#endif /* _GLIBCXX_NUMERIC_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/numericfwd.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/numericfwd.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/numericfwd.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/numericfwd.h index 55d64c9a3..4a3c6cf76 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/numericfwd.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/numericfwd.h @@ -1,6 +1,6 @@ // Forward declarations -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/omp_loop.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/omp_loop.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/omp_loop.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/omp_loop.h index d4db5b354..c6f8e91ba 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/omp_loop.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/omp_loop.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/omp_loop_static.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/omp_loop_static.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/omp_loop_static.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/omp_loop_static.h index 03b745d74..4852621b7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/omp_loop_static.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/omp_loop_static.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/par_loop.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/par_loop.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/par_loop.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/par_loop.h index 1e8f519b9..24b8b7c64 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/par_loop.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/par_loop.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/parallel.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/parallel.h similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/parallel.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/parallel.h index 77a23ea6a..b4ed0daa3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/parallel.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/parallel.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/partial_sum.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/partial_sum.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/partial_sum.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/partial_sum.h index 828c40c1f..38860485c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/partial_sum.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/partial_sum.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/partition.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/partition.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/partition.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/partition.h index 42ee40ded..9f6f7750d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/partition.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/partition.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/queue.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/queue.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/queue.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/queue.h index 94da5883b..337848f28 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/queue.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/queue.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/quicksort.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/quicksort.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/quicksort.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/quicksort.h index 761f09e9a..0d8d43821 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/quicksort.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/quicksort.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/random_number.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/random_number.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/random_number.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/random_number.h index f2f8a57a4..b52a048f7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/random_number.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/random_number.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/random_shuffle.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/random_shuffle.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/random_shuffle.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/random_shuffle.h index 36b54cefe..02237c5d4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/random_shuffle.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/random_shuffle.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/search.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/search.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/search.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/search.h index 4b7c5403c..68185fbf8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/search.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/search.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/set_operations.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/set_operations.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/set_operations.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/set_operations.h index b9a72b926..e8822078b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/set_operations.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/set_operations.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/settings.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/settings.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/settings.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/settings.h index f0a37dc6c..e3dbfceed 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/settings.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/settings.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/sort.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/sort.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/sort.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/sort.h index 338595286..677650ab4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/sort.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/sort.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/tags.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/tags.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/tags.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/tags.h index a4f2c5973..eec2a9355 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/tags.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/tags.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/types.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/types.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/types.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/types.h index 1610d96b6..8d19cf986 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/types.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/types.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/unique_copy.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/unique_copy.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/unique_copy.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/unique_copy.h index 8e7b5a74d..f1a8ee9a1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/unique_copy.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/unique_copy.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/workstealing.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/workstealing.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/workstealing.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/workstealing.h index 90afcffb3..451812195 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/parallel/workstealing.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/parallel/workstealing.h @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2007-2017 Free Software Foundation, Inc. +// Copyright (C) 2007-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/array new file mode 100644 index 000000000..362a74826 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/array @@ -0,0 +1,281 @@ +// Profile array implementation -*- C++ -*- + +// Copyright (C) 2012-2018 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 +// . + +/** @file profile/array + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_PROFILE_ARRAY +#define _GLIBCXX_PROFILE_ARRAY 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + template + struct array + { + typedef _Tp value_type; + typedef value_type* pointer; + typedef const value_type* const_pointer; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // Support for zero-sized arrays mandatory. + typedef _GLIBCXX_STD_C::__array_traits<_Tp, _Nm> _AT_Type; + typename _AT_Type::_Type _M_elems; + + // No explicit construct/copy/destroy for aggregate type. + + // DR 776. + void + fill(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + noexcept(_AT_Type::_Is_nothrow_swappable::value) + { std::swap_ranges(begin(), end(), __other.begin()); } + + // Iterators. + _GLIBCXX17_CONSTEXPR iterator + begin() noexcept + { return iterator(data()); } + + _GLIBCXX17_CONSTEXPR const_iterator + begin() const noexcept + { return const_iterator(data()); } + + _GLIBCXX17_CONSTEXPR iterator + end() noexcept + { return iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR const_iterator + end() const noexcept + { return const_iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR reverse_iterator + rbegin() noexcept + { return reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR reverse_iterator + rend() noexcept + { return reverse_iterator(begin()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(begin()); } + + _GLIBCXX17_CONSTEXPR const_iterator + cbegin() const noexcept + { return const_iterator(data()); } + + _GLIBCXX17_CONSTEXPR const_iterator + cend() const noexcept + { return const_iterator(data() + _Nm); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + _GLIBCXX17_CONSTEXPR const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } + + // Capacity. + constexpr size_type + size() const noexcept { return _Nm; } + + constexpr size_type + max_size() const noexcept { return _Nm; } + + constexpr bool + empty() const noexcept { return size() == 0; } + + // Element access. + reference + operator[](size_type __n) noexcept + { return _AT_Type::_S_ref(_M_elems, __n); } + + constexpr const_reference + operator[](size_type __n) const noexcept + { return _AT_Type::_S_ref(_M_elems, __n); } + + _GLIBCXX17_CONSTEXPR reference + at(size_type __n) + { + if (__n >= _Nm) + std::__throw_out_of_range_fmt(__N("array::at: __n " + "(which is %zu) >= _Nm " + "(which is %zu)"), + __n, _Nm); + return _AT_Type::_S_ref(_M_elems, __n); + } + + constexpr const_reference + at(size_type __n) const + { + // Result of conditional expression must be an lvalue so use + // boolean ? lvalue : (throw-expr, lvalue) + return __n < _Nm ? _AT_Type::_S_ref(_M_elems, __n) + : (std::__throw_out_of_range_fmt(__N("array::at: __n (which is %zu) " + ">= _Nm (which is %zu)"), + __n, _Nm), + _AT_Type::_S_ref(_M_elems, 0)); + } + + _GLIBCXX17_CONSTEXPR reference + front() noexcept + { return *begin(); } + + constexpr const_reference + front() const noexcept + { return _AT_Type::_S_ref(_M_elems, 0); } + + _GLIBCXX17_CONSTEXPR reference + back() noexcept + { return _Nm ? *(end() - 1) : *end(); } + + constexpr const_reference + back() const noexcept + { + return _Nm ? _AT_Type::_S_ref(_M_elems, _Nm - 1) + : _AT_Type::_S_ref(_M_elems, 0); + } + + _GLIBCXX17_CONSTEXPR pointer + data() noexcept + { return _AT_Type::_S_ptr(_M_elems); } + + _GLIBCXX17_CONSTEXPR const_pointer + data() const noexcept + { return _AT_Type::_S_ptr(_M_elems); } + }; + + // Array comparisons. + template + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template + inline bool + operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) + { + return std::lexicographical_compare(__a.begin(), __a.end(), + __b.begin(), __b.end()); + } + + template + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + // Specialized algorithms. + template + inline void + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + noexcept(noexcept(__one.swap(__two))) + { __one.swap(__two); } + + template + constexpr _Tp& + get(array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } + + template + constexpr _Tp&& + get(array<_Tp, _Nm>&& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return std::move(__profile::get<_Int>(__arr)); + } + + template + constexpr const _Tp& + get(const array<_Tp, _Nm>& __arr) noexcept + { + static_assert(_Int < _Nm, "index is out of bounds"); + return _GLIBCXX_STD_C::__array_traits<_Tp, _Nm>:: + _S_ref(__arr._M_elems, _Int); + } +} // namespace __profile + +_GLIBCXX_BEGIN_NAMESPACE_VERSION + // Tuple interface to class template array. + + /// tuple_size + template + struct tuple_size> + : public integral_constant { }; + + /// tuple_element + template + struct tuple_element<_Int, std::__profile::array<_Tp, _Nm>> + { + static_assert(_Int < _Nm, "index is out of bounds"); + typedef _Tp type; + }; + + template + struct __is_tuple_like_impl> : true_type + { }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _GLIBCXX_PROFILE_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/base.h new file mode 100644 index 000000000..039f285a8 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/base.h @@ -0,0 +1,58 @@ +// -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/base.h + * @brief Sequential helper functions. + * This file is a GNU profile extension to the Standard C++ Library. + */ + +// Written by Lixia Liu + +#ifndef _GLIBCXX_PROFILE_BASE_H +#define _GLIBCXX_PROFILE_BASE_H 1 + +#include + +// Profiling mode namespaces. + +/** + * @namespace std::__profile + * @brief GNU profile code, replaces standard behavior with profile behavior. + */ +namespace std _GLIBCXX_VISIBILITY(default) +{ + namespace __profile { } +} + +/** + * @namespace __gnu_profile + * @brief GNU profile code for public use. + */ +namespace __gnu_profile +{ + // Import all the profile versions of components in namespace std. + using namespace std::__profile; +} + + +#endif /* _GLIBCXX_PROFILE_BASE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/bitset new file mode 100644 index 000000000..a13898e25 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/bitset @@ -0,0 +1,245 @@ +// Profiling bitset implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file profile/bitset + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_BITSET +#define _GLIBCXX_PROFILE_BITSET + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::bitset wrapper with performance instrumentation, none at the + /// moment. + template + class bitset + : public _GLIBCXX_STD_C::bitset<_Nb> + { + typedef _GLIBCXX_STD_C::bitset<_Nb> _Base; + + public: + // 23.3.5.1 constructors: +#if __cplusplus < 201103L + bitset() + : _Base() { } +#else + constexpr bitset() = default; +#endif + +#if __cplusplus >= 201103L + constexpr bitset(unsigned long long __val) noexcept +#else + bitset(unsigned long __val) +#endif + : _Base(__val) { } + + template + explicit + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __pos = 0, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __n = (std::basic_string<_CharT, _Traits, _Alloc>::npos)) + : _Base(__str, __pos, __n) { } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 396. what are characters zero and one. + template + bitset(const std::basic_string<_CharT, _Traits, _Alloc>& __str, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __pos, + typename std::basic_string<_CharT, _Traits, _Alloc>::size_type + __n, + _CharT __zero, _CharT __one = _CharT('1')) + : _Base(__str, __pos, __n, __zero, __one) { } + + bitset(const _Base& __x) : _Base(__x) { } + +#if __cplusplus >= 201103L + template + explicit + bitset(const _CharT* __str, + typename std::basic_string<_CharT>::size_type __n + = std::basic_string<_CharT>::npos, + _CharT __zero = _CharT('0'), _CharT __one = _CharT('1')) + : _Base(__str, __n, __zero, __one) { } +#endif + + // 23.3.5.2 bitset operations: + bitset<_Nb>& + operator&=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() &= __rhs; + return *this; + } + + bitset<_Nb>& + operator|=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() |= __rhs; + return *this; + } + + bitset<_Nb>& + operator^=(const bitset<_Nb>& __rhs) _GLIBCXX_NOEXCEPT + { + _M_base() ^= __rhs; + return *this; + } + + bitset<_Nb>& + operator<<=(size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_base() <<= __pos; + return *this; + } + + bitset<_Nb>& + operator>>=(size_t __pos) _GLIBCXX_NOEXCEPT + { + _M_base() >>= __pos; + return *this; + } + + bitset<_Nb>& + set() _GLIBCXX_NOEXCEPT + { + _Base::set(); + return *this; + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 186. bitset::set() second parameter should be bool + bitset<_Nb>& + set(size_t __pos, bool __val = true) + { + _Base::set(__pos, __val); + return *this; + } + + bitset<_Nb>& + reset() _GLIBCXX_NOEXCEPT + { + _Base::reset(); + return *this; + } + + bitset<_Nb>& + reset(size_t __pos) + { + _Base::reset(__pos); + return *this; + } + + bitset<_Nb> + operator~() const _GLIBCXX_NOEXCEPT + { return bitset(~_M_base()); } + + bitset<_Nb>& + flip() _GLIBCXX_NOEXCEPT + { + _Base::flip(); + return *this; + } + + bitset<_Nb>& + flip(size_t __pos) + { + _Base::flip(__pos); + return *this; + } + + bool + operator==(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return _M_base() == __rhs; } + + bool + operator!=(const bitset<_Nb>& __rhs) const _GLIBCXX_NOEXCEPT + { return _M_base() != __rhs; } + + bitset<_Nb> + operator<<(size_t __pos) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(_M_base() << __pos); } + + bitset<_Nb> + operator>>(size_t __pos) const _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(_M_base() >> __pos); } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT + { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT + { return *this; } + }; + + template + bitset<_Nb> + operator&(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) &= __y; } + + template + bitset<_Nb> + operator|(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) |= __y; } + + template + bitset<_Nb> + operator^(const bitset<_Nb>& __x, const bitset<_Nb>& __y) _GLIBCXX_NOEXCEPT + { return bitset<_Nb>(__x) ^= __y; } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, bitset<_Nb>& __x) + { return __is >> __x._M_base(); } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bitset<_Nb>& __x) + { return __os << __x._M_base(); } +} // namespace __profile + +#if __cplusplus >= 201103L + // DR 1182. + /// std::hash specialization for bitset. + template + struct hash<__profile::bitset<_Nb>> + : public __hash_base> + { + size_t + operator()(const __profile::bitset<_Nb>& __b) const noexcept + { return std::hash<_GLIBCXX_STD_C::bitset<_Nb>>()(__b._M_base()); } + }; +#endif + +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/deque b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/deque new file mode 100644 index 000000000..01b68966f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/deque @@ -0,0 +1,188 @@ +// Profiling deque implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file profile/deque + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_DEQUE +#define _GLIBCXX_PROFILE_DEQUE 1 + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::deque wrapper with performance instrumentation. + template > + class deque + : public _GLIBCXX_STD_C::deque<_Tp, _Allocator> + { + typedef _GLIBCXX_STD_C::deque<_Tp, _Allocator> _Base; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::value_type value_type; + + // 23.2.1.1 construct/copy/destroy: + +#if __cplusplus < 201103L + deque() + : _Base() { } + deque(const deque& __x) + : _Base(__x) { } + + ~deque() { } +#else + deque() = default; + deque(const deque&) = default; + deque(deque&&) = default; + + deque(const deque& __d, const _Allocator& __a) + : _Base(__d, __a) { } + + deque(deque&& __d, const _Allocator& __a) + : _Base(std::move(__d), __a) { } + + ~deque() = default; + + deque(initializer_list __l, + const _Allocator& __a = _Allocator()) + : _Base(__l, __a) { } +#endif + + explicit + deque(const _Allocator& __a) + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + deque(size_type __n, const _Allocator& __a = _Allocator()) + : _Base(__n, __a) { } + + deque(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + deque(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + deque(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __a) + { } + + deque(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + deque& + operator=(const deque& __x) + { + _M_base() = __x; + return *this; + } +#else + deque& + operator=(const deque&) = default; + + deque& + operator=(deque&&) = default; + + deque& + operator=(initializer_list __l) + { + _M_base() = __l; + return *this; + } +#endif + + void + swap(deque& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { _Base::swap(__x); } + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + }; + + template + inline bool + operator==(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const deque<_Tp, _Alloc>& __lhs, + const deque<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __profile +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/forward_list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/forward_list new file mode 100644 index 000000000..6569edcc4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/forward_list @@ -0,0 +1,219 @@ +// -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file profile/forward_list + * This file is a GNU debug extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_FORWARD_LIST +#define _GLIBCXX_PROFILE_FORWARD_LIST 1 + +#if __cplusplus < 201103L +# include +#else + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::forward_list wrapper with performance instrumentation. + template > + class forward_list + : public _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> + { + typedef _GLIBCXX_STD_C::forward_list<_Tp, _Alloc> _Base; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::const_iterator const_iterator; + + // 23.2.3.1 construct/copy/destroy: + + forward_list() = default; + + explicit + forward_list(const _Alloc& __al) noexcept + : _Base(__al) { } + + forward_list(const forward_list& __list, const _Alloc& __al) + : _Base(__list, __al) + { } + + forward_list(forward_list&& __list, const _Alloc& __al) + : _Base(std::move(__list), __al) + { } + + explicit + forward_list(size_type __n, const _Alloc& __al = _Alloc()) + : _Base(__n, __al) + { } + + forward_list(size_type __n, const _Tp& __value, + const _Alloc& __al = _Alloc()) + : _Base(__n, __value, __al) + { } + + template> + forward_list(_InputIterator __first, _InputIterator __last, + const _Alloc& __al = _Alloc()) + : _Base(__first, __last, __al) + { } + + forward_list(const forward_list&) = default; + forward_list(forward_list&&) = default; + + forward_list(std::initializer_list<_Tp> __il, + const _Alloc& __al = _Alloc()) + : _Base(__il, __al) + { } + + ~forward_list() = default; + + forward_list& + operator=(const forward_list&) = default; + + forward_list& + operator=(forward_list&&) = default; + + forward_list& + operator=(std::initializer_list<_Tp> __il) + { + _M_base() = __il; + return *this; + } + + void + swap(forward_list& __fl) + noexcept( noexcept(declval<_Base&>().swap(__fl)) ) + { _Base::swap(__fl); } + + void + splice_after(const_iterator __pos, forward_list&& __fl) + { _Base::splice_after(__pos, std::move(__fl)); } + + void + splice_after(const_iterator __pos, forward_list& __list) + { _Base::splice_after(__pos, __list); } + + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __i) + { _Base::splice_after(__pos, std::move(__list), __i); } + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __i) + { _Base::splice_after(__pos, __list, __i); } + + void + splice_after(const_iterator __pos, forward_list&& __list, + const_iterator __before, const_iterator __last) + { _Base::splice_after(__pos, std::move(__list), __before, __last); } + + void + splice_after(const_iterator __pos, forward_list& __list, + const_iterator __before, const_iterator __last) + { _Base::splice_after(__pos, __list, __before, __last); } + + void + merge(forward_list&& __list) + { _Base::merge(std::move(__list)); } + + void + merge(forward_list& __list) + { _Base::merge(__list); } + + template + void + merge(forward_list&& __list, _Comp __comp) + { _Base::merge(std::move(__list), __comp); } + + template + void + merge(forward_list& __list, _Comp __comp) + { _Base::merge(__list, __comp); } + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + }; + + template + inline bool + operator==(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return __lx._M_base() == __ly._M_base(); } + + template + inline bool + operator<(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return __lx._M_base() < __ly._M_base(); } + + template + inline bool + operator!=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx == __ly); } + + /// Based on operator< + template + inline bool + operator>(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return (__ly < __lx); } + + /// Based on operator< + template + inline bool + operator>=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__lx < __ly); } + + /// Based on operator< + template + inline bool + operator<=(const forward_list<_Tp, _Alloc>& __lx, + const forward_list<_Tp, _Alloc>& __ly) + { return !(__ly < __lx); } + + /// See std::forward_list::swap(). + template + inline void + swap(forward_list<_Tp, _Alloc>& __lx, + forward_list<_Tp, _Alloc>& __ly) + noexcept(noexcept(__lx.swap(__ly))) + { __lx.swap(__ly); } + +} // namespace __profile +} // namespace std + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler.h index 89898ee57..4f0761a48 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_algos.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_algos.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_algos.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_algos.h index 702c4793f..b84f4593d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_algos.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_algos.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_container_size.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_container_size.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_container_size.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_container_size.h index 9ea636b01..fdbf6adb9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_container_size.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_container_size.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_hash_func.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_hash_func.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_hash_func.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_hash_func.h index 02f765e26..91c7e68f5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_hash_func.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_hash_func.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_hashtable_size.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_hashtable_size.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_hashtable_size.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_hashtable_size.h index a4963df6e..8ede36e82 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_hashtable_size.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_hashtable_size.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_list_to_slist.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_list_to_slist.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_list_to_slist.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_list_to_slist.h index d7acc4bbb..8f6ec184e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_list_to_slist.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_list_to_slist.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_list_to_vector.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_list_to_vector.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_list_to_vector.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_list_to_vector.h index b3203ac09..87f54d445 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_list_to_vector.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_list_to_vector.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_map_to_unordered_map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_map_to_unordered_map.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_map_to_unordered_map.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_map_to_unordered_map.h index 180519041..1954190a8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_map_to_unordered_map.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_map_to_unordered_map.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_node.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_node.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_node.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_node.h index 1d9b9a941..8274e90f5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_node.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_node.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_state.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_state.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_state.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_state.h index dd760db23..5ab0e6228 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_state.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_state.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_trace.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_trace.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_trace.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_trace.h index 59756fabd..41f8854f8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_trace.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_trace.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_vector_size.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_vector_size.h similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_vector_size.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_vector_size.h index de09a666b..99c0e647d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_vector_size.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_vector_size.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_vector_to_list.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_vector_to_list.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_vector_to_list.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_vector_to_list.h index 06416f348..347b21d5b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/impl/profiler_vector_to_list.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/impl/profiler_vector_to_list.h @@ -1,6 +1,6 @@ // -*- C++ -*- // -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/iterator_tracker.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/iterator_tracker.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/iterator_tracker.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/iterator_tracker.h index cdb782231..a467bf908 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/iterator_tracker.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/iterator_tracker.h @@ -1,6 +1,6 @@ // Profiling iterator implementation -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/list b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/list new file mode 100644 index 000000000..fe0765354 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/list @@ -0,0 +1,650 @@ +// Profiling list implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file profile/list + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_LIST +#define _GLIBCXX_PROFILE_LIST 1 + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + template + class _List_profile + { + _List& + _M_conjure() + { return *static_cast<_List*>(this); } + + public: + __gnu_profile::__list2slist_info* _M_list2slist_info; + __gnu_profile::__list2vector_info* _M_list2vector_info; + + _List_profile() _GLIBCXX_NOEXCEPT + { _M_profile_construct(); } + + void + _M_profile_construct() _GLIBCXX_NOEXCEPT + { + _M_list2slist_info = __profcxx_list2slist_construct(); + _M_list2vector_info = __profcxx_list2vector_construct(); + } + + void + _M_profile_destruct() _GLIBCXX_NOEXCEPT + { + __profcxx_list2vector_destruct(_M_list2vector_info); + _M_list2vector_info = 0; + __profcxx_list2slist_destruct(_M_list2slist_info); + _M_list2slist_info = 0; + } + + void + _M_swap(_List_profile& __other) + { + std::swap(_M_list2slist_info, __other._M_list2slist_info); + std::swap(_M_list2vector_info, __other._M_list2vector_info); + } + +#if __cplusplus >= 201103L + _List_profile(const _List_profile&) noexcept + : _List_profile() { } + _List_profile(_List_profile&& __other) noexcept + : _List_profile() + { _M_swap(__other); } + + _List_profile& + operator=(const _List_profile&) noexcept + { + _M_profile_destruct(); + _M_profile_construct(); + } + + _List_profile& + operator=(_List_profile&& __other) noexcept + { + _M_swap(__other); + __other._M_profile_destruct(); + __other._M_profile_construct(); + } +#endif + + ~_List_profile() + { _M_profile_destruct(); } + }; + + /** @brief List wrapper with performance instrumentation. */ + template > + class list + : public _GLIBCXX_STD_C::list<_Tp, _Allocator>, + public _List_profile > + { + typedef _GLIBCXX_STD_C::list<_Tp, _Allocator> _Base; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __iterator_tracker + iterator; + typedef __iterator_tracker + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // 23.2.2.1 construct/copy/destroy: + +#if __cplusplus < 201103L + list() { } + list(const list& __x) + : _Base(__x) { } + + ~list() { } +#else + list() = default; + list(const list&) = default; + list(list&&) = default; + ~list() = default; + + list(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } + + list(const list& __x, const allocator_type& __a) + : _Base(__x, __a) { } + + list(list&& __x, const allocator_type& __a) + : _Base(std::move(__x), __a) { } +#endif + + explicit + list(const _Allocator& __a) _GLIBCXX_NOEXCEPT + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + list(size_type __n, const allocator_type& __a = allocator_type()) + : _Base(__n, __a) { } + + list(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + list(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + list(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __a) { } + + list(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + list& + operator=(const list& __x) + { + this->_M_profile_destruct(); + _M_base() = __x; + this->_M_profile_construct(); + return *this; + } +#else + list& + operator=(const list&) = default; + + list& + operator=(list&&) = default; + + list& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } +#endif + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_rewind(this->_M_list2slist_info); + return iterator(_Base::end(), this); + } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_rewind(this->_M_list2slist_info); + return const_iterator(_Base::end(), this); + } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_rewind(this->_M_list2slist_info); + return reverse_iterator(end()); + } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_rewind(this->_M_list2slist_info); + return const_reverse_iterator(end()); + } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 23.2.2.2 capacity: + reference + back() _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_rewind(this->_M_list2slist_info); + return _Base::back(); + } + + const_reference + back() const _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_rewind(this->_M_list2slist_info); + return _Base::back(); + } + + // 23.2.2.3 modifiers: + void + push_front(const value_type& __x) + { + __profcxx_list2vector_invalid_operator(this->_M_list2vector_info); + __profcxx_list2slist_operation(this->_M_list2slist_info); + _Base::push_front(__x); + } + + void + pop_front() _GLIBCXX_NOEXCEPT + { + __profcxx_list2slist_operation(this->_M_list2slist_info); + _Base::pop_front(); + } + + void + pop_back() _GLIBCXX_NOEXCEPT + { + _Base::pop_back(); + __profcxx_list2slist_rewind(this->_M_list2slist_info); + } + +#if __cplusplus >= 201103L + template + iterator + emplace(const_iterator __position, _Args&&... __args) + { + return iterator(_Base::emplace(__position.base(), + std::forward<_Args>(__args)...), + this); + } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __pos, const _Tp& __x) +#else + insert(iterator __pos, const _Tp& __x) +#endif + { + _M_profile_insert(__pos, this->size()); + return iterator(_Base::insert(__pos.base(), __x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __pos, _Tp&& __x) + { + _M_profile_insert(__pos, this->size()); + return iterator(_Base::emplace(__pos.base(), std::move(__x)), + this); + } + + iterator + insert(const_iterator __pos, initializer_list __l) + { + _M_profile_insert(__pos, this->size()); + return iterator(_Base::insert(__pos.base(), __l), this); + } +#endif + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __pos, size_type __n, const _Tp& __x) + { + _M_profile_insert(__pos, this->size()); + return iterator(_Base::insert(__pos.base(), __n, __x), this); + } +#else + void + insert(iterator __pos, size_type __n, const _Tp& __x) + { + _M_profile_insert(__pos, this->size()); + _Base::insert(__pos.base(), __n, __x); + } +#endif + +#if __cplusplus >= 201103L + template> + iterator + insert(const_iterator __pos, _InputIterator __first, + _InputIterator __last) + { + _M_profile_insert(__pos, this->size()); + return iterator(_Base::insert(__pos.base(), __first, __last), + this); + } +#else + template + void + insert(iterator __pos, _InputIterator __first, + _InputIterator __last) + { + _M_profile_insert(__pos, this->size()); + _Base::insert(__pos.base(), __first, __last); + } +#endif + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __pos) noexcept +#else + erase(iterator __pos) +#endif + { return iterator(_Base::erase(__pos.base()), this); } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __pos, const_iterator __last) noexcept +#else + erase(iterator __pos, iterator __last) +#endif + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 151. can't currently clear() empty container + return iterator(_Base::erase(__pos.base(), __last.base()), this); + } + + void + swap(list& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + // 23.2.2.4 list operations: + void +#if __cplusplus >= 201103L + splice(const_iterator __pos, list&& __x) noexcept +#else + splice(iterator __pos, list& __x) +#endif + { this->splice(__pos, _GLIBCXX_MOVE(__x), __x.begin(), __x.end()); } + +#if __cplusplus >= 201103L + void + splice(const_iterator __pos, list& __x) noexcept + { this->splice(__pos, std::move(__x)); } + + void + splice(const_iterator __pos, list& __x, const_iterator __i) + { this->splice(__pos, std::move(__x), __i); } +#endif + + void +#if __cplusplus >= 201103L + splice(const_iterator __pos, list&& __x, const_iterator __i) noexcept +#else + splice(iterator __pos, list& __x, iterator __i) +#endif + { + // We used to perform the splice_alloc check: not anymore, redundant + // after implementing the relevant bits of N1599. + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + _Base::splice(__pos.base(), _GLIBCXX_MOVE(__x._M_base()), + __i.base()); + } + + void +#if __cplusplus >= 201103L + splice(const_iterator __pos, list&& __x, const_iterator __first, + const_iterator __last) noexcept +#else + splice(iterator __pos, list& __x, iterator __first, + iterator __last) +#endif + { + _Base::splice(__pos.base(), _GLIBCXX_MOVE(__x._M_base()), + __first.base(), __last.base()); + } + +#if __cplusplus >= 201103L + void + splice(const_iterator __pos, list& __x, + const_iterator __first, const_iterator __last) noexcept + { this->splice(__pos, std::move(__x), __first, __last); } +#endif + + void + remove(const _Tp& __value) + { + for (iterator __x = begin(); __x != end(); ) + { + if (*__x == __value) + __x = erase(__x); + else + ++__x; + } + } + + template + void + remove_if(_Predicate __pred) + { + for (iterator __x = begin(); __x != end(); ) + { + __profcxx_list2slist_operation(this->_M_list2slist_info); + if (__pred(*__x)) + __x = erase(__x); + else + ++__x; + } + } + + void + unique() + { + iterator __first = begin(); + iterator __last = end(); + if (__first == __last) + return; + iterator __next = __first; + while (++__next != __last) + { + __profcxx_list2slist_operation(this->_M_list2slist_info); + if (*__first == *__next) + erase(__next); + else + __first = __next; + __next = __first; + } + } + + template + void + unique(_BinaryPredicate __binary_pred) + { + iterator __first = begin(); + iterator __last = end(); + if (__first == __last) + return; + iterator __next = __first; + while (++__next != __last) + { + __profcxx_list2slist_operation(this->_M_list2slist_info); + if (__binary_pred(*__first, *__next)) + erase(__next); + else + __first = __next; + __next = __first; + } + } + + void +#if __cplusplus >= 201103L + merge(list&& __x) +#else + merge(list& __x) +#endif + { _Base::merge(_GLIBCXX_MOVE(__x._M_base())); } + +#if __cplusplus >= 201103L + void + merge(list& __x) + { this->merge(std::move(__x)); } +#endif + + template + void +#if __cplusplus >= 201103L + merge(list&& __x, _Compare __comp) +#else + merge(list& __x, _Compare __comp) +#endif + { _Base::merge(_GLIBCXX_MOVE(__x._M_base()), __comp); } + +#if __cplusplus >= 201103L + template + void + merge(list& __x, _Compare __comp) + { this->merge(std::move(__x), __comp); } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + void _M_profile_iterate(int __rewind = 0) const + { + __profcxx_list2slist_operation(this->_M_list2slist_info); + __profcxx_list2vector_iterate(this->_M_list2vector_info, __rewind); + if (__rewind) + __profcxx_list2slist_rewind(this->_M_list2slist_info); + } + + private: + size_type + _M_profile_insert(const_iterator __pos, size_type __size) + { + size_type __shift = 0; + typename _Base::const_iterator __it = __pos.base(); + for (; __it != _Base::end(); ++__it) + __shift++; + __profcxx_list2slist_rewind(this->_M_list2slist_info); + __profcxx_list2slist_operation(this->_M_list2slist_info); + __profcxx_list2vector_insert(this->_M_list2vector_info, __shift, __size); + } + }; + + template + inline bool + operator==(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const list<_Tp, _Alloc>& __lhs, + const list<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(list<_Tp, _Alloc>& __lhs, list<_Tp, _Alloc>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __profile +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/map new file mode 100644 index 000000000..acfef13e2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/map @@ -0,0 +1,35 @@ +// Profiling map/multimap implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/map + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_MAP +#define _GLIBCXX_PROFILE_MAP 1 + +#include +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/map.h new file mode 100644 index 000000000..56011f7ae --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/map.h @@ -0,0 +1,705 @@ +// Profiling map implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/map.h + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_MAP_H +#define _GLIBCXX_PROFILE_MAP_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::map wrapper with performance instrumentation. + template, + typename _Allocator = std::allocator > > + class map + : public _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator>, + public _Ordered_profile > + { + typedef _GLIBCXX_STD_C::map<_Key, _Tp, _Compare, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + public: + // types: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef typename _Base::value_type value_type; + typedef _Compare key_compare; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __iterator_tracker<_Base_iterator, map> iterator; + typedef __iterator_tracker<_Base_const_iterator, + map> const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + // 23.3.1.1 construct/copy/destroy: + +#if __cplusplus < 201103L + map() + : _Base() { } + map(const map& __x) + : _Base(__x) { } + ~map() + { } +#else + map() = default; + map(const map&) = default; + map(map&&) = default; + ~map() = default; +#endif + + explicit + map(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + map(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __comp, __a) { } + + map(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + map(initializer_list __l, + const _Compare& __c = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__l, __c, __a) { } + + explicit + map(const _Allocator& __a) + : _Base(__a) { } + + map(const map& __x, const _Allocator& __a) + : _Base(__x, __a) { } + + map(map&& __x, const _Allocator& __a) + noexcept( noexcept(_Base(std::move(__x), __a)) ) + : _Base(std::move(__x), __a) { } + + map(initializer_list __l, const _Allocator& __a) + : _Base(__l, __a) { } + + template + map(_InputIterator __first, _InputIterator __last, + const _Allocator& __a) + : _Base(__first, __last, __a) { } +#endif + +#if __cplusplus < 201103L + map& + operator=(const map& __x) + { + this->_M_profile_destruct(); + _M_base() = __x; + this->_M_profile_construct(); + return *this; + } +#else + map& + operator=(const map&) = default; + + map& + operator=(map&&) = default; + + map& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } +#endif + + // iterators + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } +#endif + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(end()); + } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(end()); + } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(begin()); + } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(begin()); + } + +#if __cplusplus >= 201103L + const_reverse_iterator + crbegin() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cend()); + } + + const_reverse_iterator + crend() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cbegin()); + } +#endif + + // 23.3.1.2 element access: + mapped_type& + operator[](const key_type& __k) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::operator[](__k); + } + +#if __cplusplus >= 201103L + mapped_type& + operator[](key_type&& __k) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::operator[](std::move(__k)); + } +#endif + + mapped_type& + at(const key_type& __k) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::at(__k); + } + + const mapped_type& + at(const key_type& __k) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::at(__k); + } + + // modifiers: +#if __cplusplus >= 201103L + template + std::pair + emplace(_Args&&... __args) + { + // The cost is the same whether or not the element is inserted so we + // always report insertion of 1 element. + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + auto __base_ret = _Base::emplace(std::forward<_Args>(__args)...); + return std::make_pair(iterator(__base_ret.first, this), + __base_ret.second); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + auto size_before = this->size(); + auto __res + = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + + std::pair + insert(const value_type& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + std::pair<_Base_iterator, bool> __base_ret = _Base::insert(__x); + return std::make_pair(iterator(__base_ret.first, this), + __base_ret.second); + } + +#if __cplusplus >= 201103L + template::value>::type> + std::pair + insert(_Pair&& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + auto __base_ret= _Base::insert(std::forward<_Pair>(__x)); + return std::make_pair(iterator(__base_ret.first, this), + __base_ret.second); + } +#endif + +#if __cplusplus >= 201103L + void + insert(std::initializer_list __list) + { insert(__list.begin(), __list.end()); } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __pos, const value_type& __x) +#else + insert(iterator __pos, const value_type& __x) +#endif + { + size_type size_before = this->size(); + _Base_iterator __res = _Base::insert(__pos.base(), __x); + + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(const_iterator __pos, _Pair&& __x) + { + size_type size_before = this->size(); + auto __res = _Base::insert(__pos.base(), std::forward<_Pair>(__x)); + + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + for (; __first != __last; ++__first) + insert(*__first); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::erase(__pos.base()), this); + } + + iterator + erase(iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::erase(__pos.base()), this); + } +#else + void + erase(iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + _Base::erase(__pos.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return _Base::erase(__x); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + if (__first != __last) + { + iterator __ret; + for (; __first != __last;) + __ret = erase(__first++); + return __ret; + } + else + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + for (; __first != __last;) + erase(__first++); + } +#endif + + void + swap(map& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + // 23.3.1.3 map operations: + iterator + find(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return iterator(_Base::find(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } +#endif + + const_iterator + find(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return const_iterator(_Base::find(__x), this); + } + +#if __cplusplus > 201103L + template::type> + const_iterator + find(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } +#endif + + size_type + count(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } + +#if __cplusplus > 201103L + template::type> + size_type + count(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } +#endif + + iterator + lower_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::lower_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } +#endif + + const_iterator + lower_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::lower_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } +#endif + + iterator + upper_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::upper_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } +#endif + + const_iterator + upper_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::upper_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } +#endif + + std::pair + equal_range(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_iterator, _Base_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(iterator(__base_ret.first, this), + iterator(__base_ret.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + std::pair + equal_range(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(const_iterator(__base_ret.first, this), + const_iterator(__base_ret.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + /** If hint is used we consider that the map and unordered_map + * operations have equivalent insertion cost so we do not update metrics + * about it. + * Note that to find out if hint has been used is libstdc++ + * implementation dependent. + */ + bool + _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) + { + return (__hint == __res + || (__hint == _M_base().end() && ++__res == _M_base().end()) + || (__hint != _M_base().end() && (++__hint == __res + || ++__res == --__hint))); + } + + + template + friend bool + operator==(const map<_K1, _T1, _C1, _A1>&, + const map<_K1, _T1, _C1, _A1>&); + + template + friend bool + operator<(const map<_K1, _T1, _C1, _A1>&, + const map<_K1, _T1, _C1, _A1>&); + }; + + template + inline bool + operator==(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() == __rhs._M_base(); + } + + template + inline bool + operator<(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() < __rhs._M_base(); + } + + template + inline bool + operator!=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return !(__lhs == __rhs); } + + template + inline bool + operator<=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return !(__rhs < __lhs); } + + template + inline bool + operator>=(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return !(__lhs < __rhs); } + + template + inline bool + operator>(const map<_Key, _Tp, _Compare, _Allocator>& __lhs, + const map<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __rhs < __lhs; } + + template + inline void + swap(map<_Key, _Tp, _Compare, _Allocator>& __lhs, + map<_Key, _Tp, _Compare, _Allocator>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __profile +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/multimap.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/multimap.h new file mode 100644 index 000000000..1155e3d28 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/multimap.h @@ -0,0 +1,663 @@ +// Profiling multimap implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file profile/multimap.h + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_MULTIMAP_H +#define _GLIBCXX_PROFILE_MULTIMAP_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::multimap wrapper with performance instrumentation. + template, + typename _Allocator = std::allocator > > + class multimap + : public _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator>, + public _Ordered_profile > + { + typedef _GLIBCXX_STD_C::multimap<_Key, _Tp, _Compare, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + public: + // types: + typedef _Key key_type; + typedef _Tp mapped_type; + typedef std::pair value_type; + typedef _Compare key_compare; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __iterator_tracker<_Base_iterator, + multimap> iterator; + typedef __iterator_tracker<_Base_const_iterator, + multimap> const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + // 23.3.1.1 construct/copy/destroy: + +#if __cplusplus < 201103L + multimap() + : _Base() { } + multimap(const multimap& __x) + : _Base(__x) { } + ~multimap() { } +#else + multimap() = default; + multimap(const multimap&) = default; + multimap(multimap&&) = default; + ~multimap() = default; +#endif + + explicit multimap(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + multimap(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __comp, __a) { } + +#if __cplusplus >= 201103L + multimap(initializer_list __l, + const _Compare& __c = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__l, __c, __a) { } + + explicit + multimap(const _Allocator& __a) + : _Base(__a) { } + + multimap(const multimap& __x, const _Allocator& __a) + : _Base(__x, __a) { } + + multimap(multimap&& __x, const _Allocator& __a) + noexcept( noexcept(_Base(std::move(__x), __a)) ) + : _Base(std::move(__x), __a) { } + + multimap(initializer_list __l, const _Allocator& __a) + : _Base(__l, __a) { } + + template + multimap(_InputIterator __first, _InputIterator __last, + const _Allocator& __a) + : _Base(__first, __last, __a) { } +#endif + + multimap(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + multimap& + operator=(const multimap& __x) + { + this->_M_profile_destruct(); + _M_base() = __x; + this->_M_profile_construct(); + return *this; + } +#else + multimap& + operator=(const multimap&) = default; + + multimap& + operator=(multimap&&) = default; + + multimap& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } +#endif + + // iterators + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } +#endif + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(end()); + } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(end()); + } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(begin()); + } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(begin()); + } + +#if __cplusplus >= 201103L + const_reverse_iterator + crbegin() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cend()); + } + + const_reverse_iterator + crend() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cbegin()); + } +#endif + + // modifiers: +#if __cplusplus >= 201103L + template + iterator + emplace(_Args&&... __args) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + auto size_before = this->size(); + auto __res + = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + + iterator + insert(const value_type& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::insert(__x), this); + } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(_Pair&& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::insert(std::forward<_Pair>(__x)), this); + } +#endif + +#if __cplusplus >= 201103L + void + insert(std::initializer_list __list) + { insert(__list.begin(), __list.end()); } +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __pos, const value_type& __x) +#else + insert(iterator __pos, const value_type& __x) +#endif + { + size_type size_before = this->size(); + _Base_iterator __res = _Base::insert(__pos.base(), __x); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + template::value>::type> + iterator + insert(const_iterator __pos, _Pair&& __x) + { + size_type size_before = this->size(); + auto __res = _Base::insert(__pos.base(), std::forward<_Pair>(__x)); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + for (; __first != __last; ++__first) + insert(*__first); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::erase(__pos.base()), this); + } + + iterator + erase(iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::erase(__pos.base()), this); + } +#else + void + erase(iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + _Base::erase(__pos.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return _Base::erase(__x); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + if (__first != __last) + { + iterator __ret; + for (; __first != __last;) + __ret = erase(__first++); + return __ret; + } + else + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + for (; __first != __last;) + erase(__first++); + } +#endif + + void + swap(multimap& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + std::swap(this->_M_map2umap_info, __x._M_map2umap_info); + _Base::swap(__x); + } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + // 23.3.1.3 multimap operations: + iterator + find(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return iterator(_Base::find(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } +#endif + + const_iterator + find(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return const_iterator(_Base::find(__x), this); + } + +#if __cplusplus > 201103L + template::type> + const_iterator + find(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } +#endif + + size_type + count(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } + +#if __cplusplus > 201103L + template::type> + size_type + count(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } +#endif + + iterator + lower_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::lower_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } +#endif + + const_iterator + lower_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::lower_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } +#endif + + iterator + upper_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::upper_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } +#endif + + const_iterator + upper_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::upper_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } +#endif + + std::pair + equal_range(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_iterator, _Base_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(iterator(__base_ret.first, this), + iterator(__base_ret.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + std::pair + equal_range(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(const_iterator(__base_ret.first, this), + const_iterator(__base_ret.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + /** If hint is used we consider that the map and unordered_map + * operations have equivalent insertion cost so we do not update metrics + * about it. + * Note that to find out if hint has been used is libstdc++ + * implementation dependent. + */ + bool + _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) + { + return (__hint == __res + || (__hint == _M_base().end() && ++__res == _M_base().end()) + || (__hint != _M_base().end() && (++__hint == __res + || ++__res == --__hint))); + } + + template + friend bool + operator==(const multimap<_K1, _T1, _C1, _A1>&, + const multimap<_K1, _T1, _C1, _A1>&); + + template + friend bool + operator<(const multimap<_K1, _T1, _C1, _A1>&, + const multimap<_K1, _T1, _C1, _A1>&); + }; + + template + inline bool + operator==(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() == __rhs._M_base(); + } + + template + inline bool + operator<(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() < __rhs._M_base(); + } + + template + inline bool + operator!=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return !(__lhs == __rhs); } + + template + inline bool + operator<=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return !(__rhs < __lhs); } + + template + inline bool + operator>=(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return !(__lhs < __rhs); } + + template + inline bool + operator>(const multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + const multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + { return __rhs < __lhs; } + + template + inline void + swap(multimap<_Key, _Tp, _Compare, _Allocator>& __lhs, + multimap<_Key, _Tp, _Compare, _Allocator>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __profile +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/multiset.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/multiset.h new file mode 100644 index 000000000..d1fe9321d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/multiset.h @@ -0,0 +1,647 @@ +// Profiling multiset implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file profile/multiset.h + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_MULTISET_H +#define _GLIBCXX_PROFILE_MULTISET_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::multiset wrapper with performance instrumentation. + template, + typename _Allocator = std::allocator<_Key> > + class multiset + : public _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator>, + public _Ordered_profile > + { + typedef _GLIBCXX_STD_C::multiset<_Key, _Compare, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + public: + // types: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef _Allocator allocator_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __iterator_tracker<_Base_iterator, + multiset> iterator; + typedef __iterator_tracker<_Base_const_iterator, + multiset> const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + // 23.3.3.1 construct/copy/destroy: + +#if __cplusplus < 201103L + multiset() + : _Base() { } + multiset(const multiset& __x) + : _Base(__x) { } + ~multiset() { } +#else + multiset() = default; + multiset(const multiset&) = default; + multiset(multiset&&) = default; + ~multiset() = default; +#endif + + explicit multiset(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + multiset(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __comp, __a) { } + +#if __cplusplus >= 201103L + multiset(initializer_list __l, + const _Compare& __comp = _Compare(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __comp, __a) { } + + explicit + multiset(const allocator_type& __a) + : _Base(__a) { } + + multiset(const multiset& __x, const allocator_type& __a) + : _Base(__x, __a) { } + + multiset(multiset&& __x, const allocator_type& __a) + noexcept( noexcept(_Base(std::move(__x), __a)) ) + : _Base(std::move(__x), __a) { } + + multiset(initializer_list __l, const allocator_type& __a) + : _Base(__l, __a) { } + + template + multiset(_InputIterator __first, _InputIterator __last, + const allocator_type& __a) + : _Base(__first, __last, __a) { } +#endif + + multiset(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + multiset& + operator=(const multiset& __x) + { + this->_M_profile_destruct(); + _M_base() = __x; + this->_M_profile_construct(); + return *this; + } +#else + multiset& + operator=(const multiset&) = default; + + multiset& + operator=(multiset&&) = default; + + multiset& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } +#endif + + // iterators + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } +#endif + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(end()); + } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(end()); + } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(begin()); + } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(begin()); + } + +#if __cplusplus >= 201103L + const_reverse_iterator + crbegin() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cend()); + } + + const_reverse_iterator + crend() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cbegin()); + } +#endif + + void + swap(multiset& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + // modifiers: +#if __cplusplus >= 201103L + template + iterator + emplace(_Args&&... __args) + { + // The cost is the same whether or not the element is inserted so we + // always report insertion of 1 element. + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::emplace(std::forward<_Args>(__args)...), this); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + auto size_before = this->size(); + auto __res + = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + + iterator + insert(const value_type& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::insert(__x), this); + } + +#if __cplusplus >= 201103L + iterator + insert(value_type&& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::insert(std::move(__x)), this); + } +#endif + + iterator + insert(const_iterator __pos, const value_type& __x) + { + size_type size_before = this->size(); + _Base_iterator __res = _Base::insert(__pos.base(), __x); + + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __pos, value_type&& __x) + { + auto size_before = this->size(); + auto __res = _Base::insert(__pos.base(), std::move(__x)); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + void + insert(_InputIterator __first, _InputIterator __last) + { + for (; __first != __last; ++__first) + insert(*__first); + } + +#if __cplusplus >= 201103L + void + insert(initializer_list __l) + { insert(__l.begin(), __l.end()); } +#endif + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::erase(__pos.base()), this); + } +#else + void + erase(iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + _Base::erase(__pos.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return _Base::erase(__x); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + if (__first != __last) + { + iterator __ret; + for (; __first != __last;) + __ret = erase(__first++); + return __ret; + } + else + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + for (; __first != __last;) + erase(__first++); + } +#endif + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + size_type + count(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } + +#if __cplusplus > 201103L + template::type> + size_type + count(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } +#endif + + // multiset operations: + iterator + find(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return iterator(_Base::find(__x), this); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + find(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return const_iterator(_Base::find(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } + + template::type> + const_iterator + find(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } +#endif + + iterator + lower_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return iterator(_Base::lower_bound(__x), this); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + lower_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::lower_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } + + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } +#endif + + iterator + upper_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::upper_bound(__x), this); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + const_iterator + upper_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::upper_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } + + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } +#endif + + std::pair + equal_range(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_iterator, _Base_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(iterator(__base_ret.first, this), + iterator(__base_ret.second, this)); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 214. set::find() missing const overload + std::pair + equal_range(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(const_iterator(__base_ret.first, this), + const_iterator(__base_ret.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } + + template::type> + std::pair + equal_range(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + /** If hint is used we consider that the map and unordered_map + * operations have equivalent insertion cost so we do not update metrics + * about it. + * Note that to find out if hint has been used is libstdc++ + * implementation dependent. + */ + bool + _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) + { + return (__hint == __res + || (__hint == _M_base().end() && ++__res == _M_base().end()) + || (__hint != _M_base().end() && (++__hint == __res + || ++__res == --__hint))); + } + + template + friend bool + operator==(const multiset<_K1, _C1, _A1>&, + const multiset<_K1, _C1, _A1>&); + + template + friend bool + operator< (const multiset<_K1, _C1, _A1>&, + const multiset<_K1, _C1, _A1>&); + }; + + template + inline bool + operator==(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() == __rhs._M_base(); + } + + template + inline bool + operator<(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() < __rhs._M_base(); + } + + template + inline bool + operator!=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return !(__lhs == __rhs); } + + template + inline bool + operator<=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return !(__rhs < __lhs); } + + template + inline bool + operator>=(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return !(__lhs < __rhs); } + + template + inline bool + operator>(const multiset<_Key, _Compare, _Allocator>& __lhs, + const multiset<_Key, _Compare, _Allocator>& __rhs) + { return __rhs < __lhs; } + + template + void + swap(multiset<_Key, _Compare, _Allocator>& __x, + multiset<_Key, _Compare, _Allocator>& __y) + _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) + { return __x.swap(__y); } + +} // namespace __profile +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/ordered_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/ordered_base.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/ordered_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/ordered_base.h index d35b82f1c..78282718a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/ordered_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/ordered_base.h @@ -1,6 +1,6 @@ // Profiling unordered containers implementation details -*- C++ -*- -// Copyright (C) 2014-2017 Free Software Foundation, Inc. +// Copyright (C) 2014-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/set new file mode 100644 index 000000000..3ed4d5416 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/set @@ -0,0 +1,35 @@ +// Profiling set/multiset implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/set + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_SET +#define _GLIBCXX_PROFILE_SET 1 + +#include +#include +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/set.h new file mode 100644 index 000000000..52a4a220b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/set.h @@ -0,0 +1,628 @@ +// Profiling set implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** @file profile/set.h + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_SET_H +#define _GLIBCXX_PROFILE_SET_H 1 + +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::set wrapper with performance instrumentation. + template, + typename _Allocator = std::allocator<_Key> > + class set + : public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>, + public _Ordered_profile > + { + typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + public: + // types: + typedef _Key key_type; + typedef _Key value_type; + typedef _Compare key_compare; + typedef _Compare value_compare; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __iterator_tracker<_Base_iterator, set> iterator; + typedef __iterator_tracker<_Base_const_iterator, + set> const_iterator; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + // 23.3.3.1 construct/copy/destroy: +#if __cplusplus < 201103L + set() + : _Base() { } + set(const set& __x) + : _Base(__x) { } + ~set() { } +#else + set() = default; + set(const set&) = default; + set(set&&) = default; + ~set() = default; +#endif + + explicit set(const _Compare& __comp, + const _Allocator& __a = _Allocator()) + : _Base(__comp, __a) { } + +#if __cplusplus >= 201103L + template> +#else + template +#endif + set(_InputIterator __first, _InputIterator __last, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __comp, __a) { } + +#if __cplusplus >= 201103L + set(initializer_list __l, + const _Compare& __comp = _Compare(), + const _Allocator& __a = _Allocator()) + : _Base(__l, __comp, __a) { } + + explicit + set(const _Allocator& __a) + : _Base(__a) { } + + set(const set& __x, const _Allocator& __a) + : _Base(__x, __a) { } + + set(set&& __x, const _Allocator& __a) + noexcept( noexcept(_Base(std::move(__x), __a)) ) + : _Base(std::move(__x), __a) { } + + set(initializer_list __l, const _Allocator& __a) + : _Base(__l, __a) { } + + template + set(_InputIterator __first, _InputIterator __last, + const _Allocator& __a) + : _Base(__first, __last, __a) { } +#endif + + set(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus < 201103L + set& + operator=(const set& __x) + { + this->_M_profile_destruct(); + _M_base() = __x; + this->_M_profile_construct(); + return *this; + } +#else + set& + operator=(const set&) = default; + + set& + operator=(set&&) = default; + + set& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } +#endif + + // iterators + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::cbegin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::cend(), this); } +#endif + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(end()); + } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(end()); + } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return reverse_iterator(begin()); + } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(begin()); + } + +#if __cplusplus >= 201103L + const_reverse_iterator + crbegin() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cend()); + } + + const_reverse_iterator + crend() const noexcept + { + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_reverse_iterator(cbegin()); + } +#endif + + void + swap(set& __x) + _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) ) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + // modifiers: +#if __cplusplus >= 201103L + template + std::pair + emplace(_Args&&... __args) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + auto __base_ret = _Base::emplace(std::forward<_Args>(__args)...); + return std::make_pair(iterator(__base_ret.first, this), + __base_ret.second); + } + + template + iterator + emplace_hint(const_iterator __pos, _Args&&... __args) + { + auto size_before = this->size(); + auto __res + = _Base::emplace_hint(__pos.base(), std::forward<_Args>(__args)...); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } +#endif + + std::pair + insert(const value_type& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + std::pair<_Base_iterator, bool> __base_ret = _Base::insert(__x); + return std::make_pair(iterator(__base_ret.first, this), + __base_ret.second); + } + +#if __cplusplus >= 201103L + std::pair + insert(value_type&& __x) + { + __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1); + std::pair<_Base_iterator, bool> __base_ret + = _Base::insert(std::move(__x)); + return std::make_pair(iterator(__base_ret.first, this), + __base_ret.second); + } +#endif + + iterator + insert(const_iterator __pos, const value_type& __x) + { + size_type size_before = this->size(); + _Base_iterator __res = _Base::insert(__pos.base(), __x); + __profcxx_map2umap_insert(this->_M_map2umap_info, + size_before, _M_hint_used(__pos.base(), __res) ? 0 : 1); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __pos, value_type&& __x) + { return iterator(_Base::insert(__pos.base(), std::move(__x)), this); } +#endif + + template + void + insert(_InputIterator __first, _InputIterator __last) + { + for (; __first != __last; ++__first) + insert(*__first); + } + +#if __cplusplus >= 201103L + void + insert(initializer_list __l) + { insert(__l.begin(), __l.end()); } +#endif + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return iterator(_Base::erase(__pos.base()), this); + } +#else + void + erase(iterator __pos) + { + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + _Base::erase(__pos.base()); + } +#endif + + size_type + erase(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1); + return _Base::erase(__x); + } + +#if __cplusplus >= 201103L + iterator + erase(const_iterator __first, const_iterator __last) + { + if (__first != __last) + { + iterator __ret; + for (; __first != __last;) + __ret = erase(__first++); + return __ret; + } + + return iterator(_Base::erase(__first.base(), __last.base()), this); + } +#else + void + erase(iterator __first, iterator __last) + { + for (; __first != __last;) + erase(__first++); + } +#endif + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + size_type + count(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } + +#if __cplusplus > 201103L + template::type> + size_type + count(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return _Base::count(__x); + } +#endif + + // set operations: + iterator + find(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return iterator(_Base::find(__x), this); + } + + const_iterator + find(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return const_iterator(_Base::find(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + find(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } + + template::type> + const_iterator + find(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + return { _Base::find(__x), this }; + } +#endif + + iterator + lower_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::lower_bound(__x), this); + } + + const_iterator + lower_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::lower_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + lower_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } + + template::type> + const_iterator + lower_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::lower_bound(__x), this }; + } +#endif + + iterator + upper_bound(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return iterator(_Base::upper_bound(__x), this); + } + + const_iterator + upper_bound(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return const_iterator(_Base::upper_bound(__x), this); + } + +#if __cplusplus > 201103L + template::type> + iterator + upper_bound(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } + + template::type> + const_iterator + upper_bound(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + __profcxx_map2umap_invalidate(this->_M_map2umap_info); + return { _Base::upper_bound(__x), this }; + } +#endif + + std::pair + equal_range(const key_type& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_iterator, _Base_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(iterator(__base_ret.first, this), + iterator(__base_ret.second, this)); + } + + std::pair + equal_range(const key_type& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + std::pair<_Base_const_iterator, _Base_const_iterator> __base_ret + = _Base::equal_range(__x); + return std::make_pair(const_iterator(__base_ret.first, this), + const_iterator(__base_ret.second, this)); + } + +#if __cplusplus > 201103L + template::type> + std::pair + equal_range(const _Kt& __x) + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } + + template::type> + std::pair + equal_range(const _Kt& __x) const + { + __profcxx_map2umap_find(this->_M_map2umap_info, this->size()); + auto __res = _Base::equal_range(__x); + return { { __res.first, this }, { __res.second, this } }; + } +#endif + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + private: + /** If hint is used we consider that the map and unordered_map + * operations have equivalent insertion cost so we do not update metrics + * about it. + * Note that to find out if hint has been used is libstdc++ + * implementation dependent. + */ + bool + _M_hint_used(_Base_const_iterator __hint, _Base_iterator __res) + { + return (__hint == __res + || (__hint == _M_base().end() && ++__res == _M_base().end()) + || (__hint != _M_base().end() && (++__hint == __res + || ++__res == --__hint))); + } + + template + friend bool + operator==(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); + + template + friend bool + operator<(const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&); + }; + + template + inline bool + operator==(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() == __rhs._M_base(); + } + + template + inline bool + operator<(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { + __profcxx_map2umap_invalidate(__lhs._M_map2umap_info); + __profcxx_map2umap_invalidate(__rhs._M_map2umap_info); + return __lhs._M_base() < __rhs._M_base(); + } + + template + inline bool + operator!=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return !(__lhs == __rhs); } + + template + inline bool + operator<=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return !(__rhs < __lhs); } + + template + inline bool + operator>=(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return !(__lhs < __rhs); } + + template + inline bool + operator>(const set<_Key, _Compare, _Allocator>& __lhs, + const set<_Key, _Compare, _Allocator>& __rhs) + { return __rhs < __lhs; } + + template + void + swap(set<_Key, _Compare, _Allocator>& __x, + set<_Key, _Compare, _Allocator>& __y) + _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y))) + { return __x.swap(__y); } + +} // namespace __profile +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_base.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_base.h similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_base.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_base.h index f50111afb..dd46dc623 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/profile/unordered_base.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_base.h @@ -1,6 +1,6 @@ // Profiling unordered containers implementation details -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_map new file mode 100644 index 000000000..b4cd28a7c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_map @@ -0,0 +1,586 @@ +// Profiling unordered_map/unordered_multimap implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/unordered_map + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_UNORDERED_MAP +#define _GLIBCXX_PROFILE_UNORDERED_MAP 1 + +#if __cplusplus < 201103L +# include +#else +# include + +#include +#include + +#define _GLIBCXX_BASE unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> +#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /// Class std::unordered_map wrapper with performance instrumentation. + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator > > + class unordered_map + : public _GLIBCXX_STD_BASE, + public _Unordered_profile, + true> + { + typedef typename _GLIBCXX_STD_BASE _Base; + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + typedef typename _Base::mapped_type mapped_type; + + typedef typename _Base::iterator iterator; + typedef typename _Base::const_iterator const_iterator; + + unordered_map() = default; + + explicit + unordered_map(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_map(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) { } + + unordered_map(const unordered_map&) = default; + + unordered_map(const _Base& __x) + : _Base(__x) { } + + unordered_map(unordered_map&&) = default; + + explicit + unordered_map(const allocator_type& __a) + : _Base(__a) { } + + unordered_map(const unordered_map& __umap, + const allocator_type& __a) + : _Base(__umap, __a) { } + + unordered_map(unordered_map&& __umap, + const allocator_type& __a) + : _Base(std::move(__umap._M_base()), __a) { } + + unordered_map(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + unordered_map(size_type __n, const allocator_type& __a) + : unordered_map(__n, hasher(), key_equal(), __a) + { } + + unordered_map(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_map(__n, __hf, key_equal(), __a) + { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_map(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_map(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_map(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_map(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_map(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_map(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_map(__l, __n, __hf, key_equal(), __a) + { } + + unordered_map& + operator=(const unordered_map&) = default; + + unordered_map& + operator=(unordered_map&&) = default; + + unordered_map& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } + + void + clear() noexcept + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + template + std::pair + emplace(_Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + std::pair __res + = _Base::emplace(std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + template + iterator + emplace_hint(const_iterator __it, _Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + iterator __res + = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + void + insert(std::initializer_list __l) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__l); + this->_M_profile_resize(__old_size); + } + + std::pair + insert(const value_type& __obj) + { + size_type __old_size = _Base::bucket_count(); + std::pair __res = _Base::insert(__obj); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(const_iterator __iter, const value_type& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, __v); + this->_M_profile_resize(__old_size); + return __res; + } + + template::value>::type> + std::pair + insert(_Pair&& __obj) + { + size_type __old_size = _Base::bucket_count(); + std::pair __res + = _Base::insert(std::forward<_Pair>(__obj)); + this->_M_profile_resize(__old_size); + return __res; + } + + template::value>::type> + iterator + insert(const_iterator __iter, _Pair&& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, std::forward<_Pair>(__v)); + this->_M_profile_resize(__old_size); + return __res; + } + + template + void + insert(_InputIter __first, _InputIter __last) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__first, __last); + this->_M_profile_resize(__old_size); + } + + // operator[] + mapped_type& + operator[](const _Key& __k) + { + size_type __old_size = _Base::bucket_count(); + mapped_type& __res = _M_base()[__k]; + this->_M_profile_resize(__old_size); + return __res; + } + + mapped_type& + operator[](_Key&& __k) + { + size_type __old_size = _Base::bucket_count(); + mapped_type& __res = _M_base()[std::move(__k)]; + this->_M_profile_resize(__old_size); + return __res; + } + + void + swap(unordered_map& __x) + noexcept( noexcept(__x._M_base().swap(__x)) ) + { + _Base::swap(__x._M_base()); + this->_M_swap(__x); + } + + void rehash(size_type __n) + { + size_type __old_size = _Base::bucket_count(); + _Base::rehash(__n); + this->_M_profile_resize(__old_size); + } + }; + + template + inline void + swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return static_cast(__x) == __y; } + + template + inline bool + operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +#undef _GLIBCXX_BASE +#undef _GLIBCXX_STD_BASE +#define _GLIBCXX_BASE unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> +#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE + + /// Class std::unordered_multimap wrapper with performance instrumentation. + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator > > + class unordered_multimap + : public _GLIBCXX_STD_BASE, + public _Unordered_profile, + false> + { + typedef typename _GLIBCXX_STD_BASE _Base; + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef typename _Base::iterator iterator; + typedef typename _Base::const_iterator const_iterator; + + unordered_multimap() = default; + + explicit + unordered_multimap(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) { } + + template + unordered_multimap(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) { } + + unordered_multimap(const unordered_multimap&) = default; + + unordered_multimap(const _Base& __x) + : _Base(__x) { } + + unordered_multimap(unordered_multimap&&) = default; + + explicit + unordered_multimap(const allocator_type& __a) + : _Base(__a) { } + + unordered_multimap(const unordered_multimap& __ummap, + const allocator_type& __a) + : _Base(__ummap._M_base(), __a) { } + + unordered_multimap(unordered_multimap&& __ummap, + const allocator_type& __a) + : _Base(std::move(__ummap._M_base()), __a) { } + + unordered_multimap(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) { } + + unordered_multimap(size_type __n, const allocator_type& __a) + : unordered_multimap(__n, hasher(), key_equal(), __a) + { } + + unordered_multimap(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__n, __hf, key_equal(), __a) + { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_multimap(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_multimap(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_multimap(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_multimap(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_multimap(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multimap(__l, __n, __hf, key_equal(), __a) + { } + + unordered_multimap& + operator=(const unordered_multimap&) = default; + + unordered_multimap& + operator=(unordered_multimap&&) = default; + + unordered_multimap& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } + + void + clear() noexcept + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + template + iterator + emplace(_Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + iterator __res + = _Base::emplace(std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + template + iterator + emplace_hint(const_iterator __it, _Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + iterator __res + = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + void + insert(std::initializer_list __l) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__l); + this->_M_profile_resize(__old_size); + } + + iterator + insert(const value_type& __obj) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__obj); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(const_iterator __iter, const value_type& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, __v); + this->_M_profile_resize(__old_size); + return __res; + } + + template::value>::type> + iterator + insert(_Pair&& __obj) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(std::forward<_Pair>(__obj)); + this->_M_profile_resize(__old_size); + return __res; + } + + template::value>::type> + iterator + insert(const_iterator __iter, _Pair&& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, std::forward<_Pair>(__v)); + this->_M_profile_resize(__old_size); + return __res; + } + + template + void + insert(_InputIter __first, _InputIter __last) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__first, __last); + this->_M_profile_resize(__old_size); + } + + void + swap(unordered_multimap& __x) + noexcept( noexcept(__x._M_base().swap(__x)) ) + { + _Base::swap(__x._M_base()); + this->_M_swap(__x); + } + + void + rehash(size_type __n) + { + size_type __old_size = _Base::bucket_count(); + _Base::rehash(__n); + this->_M_profile_resize(__old_size); + } + }; + + template + inline void + swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return static_cast(__x) == __y; } + + template + inline bool + operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +} // namespace __profile +} // namespace std + +#undef _GLIBCXX_BASE +#undef _GLIBCXX_STD_BASE + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_set new file mode 100644 index 000000000..7284f8eb2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/unordered_set @@ -0,0 +1,561 @@ +// Profiling unordered_set/unordered_multiset implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/unordered_set + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_UNORDERED_SET +#define _GLIBCXX_PROFILE_UNORDERED_SET 1 + +#if __cplusplus < 201103L +# include +#else +# include + +#include +#include + +#define _GLIBCXX_BASE unordered_set<_Key, _Hash, _Pred, _Alloc> +#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + /** @brief Unordered_set wrapper with performance instrumentation. */ + template, + typename _Pred = std::equal_to<_Key>, + typename _Alloc = std::allocator<_Key> > + class unordered_set + : public _GLIBCXX_STD_BASE, + public _Unordered_profile, + true> + { + typedef _GLIBCXX_STD_BASE _Base; + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef typename _Base::iterator iterator; + typedef typename _Base::const_iterator const_iterator; + + unordered_set() = default; + + explicit + unordered_set(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) + { } + + template + unordered_set(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) + { } + + unordered_set(const unordered_set&) = default; + + unordered_set(const _Base& __x) + : _Base(__x) + { } + + unordered_set(unordered_set&&) = default; + + explicit + unordered_set(const allocator_type& __a) + : _Base(__a) + { } + + unordered_set(const unordered_set& __uset, + const allocator_type& __a) + : _Base(__uset._M_base(), __a) + { } + + unordered_set(unordered_set&& __uset, + const allocator_type& __a) + : _Base(std::move(__uset._M_base()), __a) + { } + + unordered_set(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) + { } + + unordered_set(size_type __n, const allocator_type& __a) + : unordered_set(__n, hasher(), key_equal(), __a) + { } + + unordered_set(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__n, __hf, key_equal(), __a) + { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_set(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_set(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_set(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_set(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_set(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_set(__l, __n, __hf, key_equal(), __a) + { } + + unordered_set& + operator=(const unordered_set&) = default; + + unordered_set& + operator=(unordered_set&&) = default; + + unordered_set& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } + + void + swap(unordered_set& __x) + noexcept( noexcept(__x._M_base().swap(__x)) ) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() noexcept + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + template + std::pair + emplace(_Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + std::pair __res + = _Base::emplace(std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + template + iterator + emplace_hint(const_iterator __it, _Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + iterator __res + = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + void + insert(std::initializer_list __l) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__l); + this->_M_profile_resize(__old_size); + } + + std::pair + insert(const value_type& __obj) + { + size_type __old_size = _Base::bucket_count(); + std::pair __res = _Base::insert(__obj); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(const_iterator __iter, const value_type& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, __v); + this->_M_profile_resize(__old_size); + return __res; + } + + std::pair + insert(value_type&& __obj) + { + size_type __old_size = _Base::bucket_count(); + std::pair __res = _Base::insert(std::move(__obj)); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(const_iterator __iter, value_type&& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, std::move(__v)); + this->_M_profile_resize(__old_size); + return __res; + } + + template + void + insert(_InputIter __first, _InputIter __last) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__first, __last); + this->_M_profile_resize(__old_size); + } + + void + rehash(size_type __n) + { + size_type __old_size = _Base::bucket_count(); + _Base::rehash(__n); + this->_M_profile_resize(__old_size); + } + }; + + template + inline void + swap(unordered_set<_Key, _Hash, _Pred, _Alloc>& __x, + unordered_set<_Key, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_set<_Key, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Key, _Hash, _Pred, _Alloc>& __y) + { return static_cast(__x) == __y; } + + template + inline bool + operator!=(const unordered_set<_Key, _Hash, _Pred, _Alloc>& __x, + const unordered_set<_Key, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +#undef _GLIBCXX_BASE +#undef _GLIBCXX_STD_BASE +#define _GLIBCXX_STD_BASE _GLIBCXX_STD_C::_GLIBCXX_BASE +#define _GLIBCXX_BASE unordered_multiset<_Value, _Hash, _Pred, _Alloc> + + /** @brief Unordered_multiset wrapper with performance instrumentation. */ + template, + typename _Pred = std::equal_to<_Value>, + typename _Alloc = std::allocator<_Value> > + class unordered_multiset + : public _GLIBCXX_STD_BASE, + public _Unordered_profile, + false> + { + typedef _GLIBCXX_STD_BASE _Base; + + _Base& + _M_base() noexcept { return *this; } + + const _Base& + _M_base() const noexcept { return *this; } + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + typedef typename _Base::key_type key_type; + typedef typename _Base::value_type value_type; + typedef typename _Base::difference_type difference_type; + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef typename _Base::iterator iterator; + typedef typename _Base::const_iterator const_iterator; + + unordered_multiset() = default; + + explicit + unordered_multiset(size_type __n, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) + { } + + template + unordered_multiset(_InputIterator __f, _InputIterator __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) + { } + + unordered_multiset(const unordered_multiset&) = default; + + unordered_multiset(const _Base& __x) + : _Base(__x) + { } + + unordered_multiset(unordered_multiset&&) = default; + + explicit + unordered_multiset(const allocator_type& __a) + : _Base(__a) + { } + + unordered_multiset(const unordered_multiset& __umset, + const allocator_type& __a) + : _Base(__umset._M_base(), __a) + { } + + unordered_multiset(unordered_multiset&& __umset, + const allocator_type& __a) + : _Base(std::move(__umset._M_base()), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__l, __n, __hf, __eql, __a) + { } + + unordered_multiset(size_type __n, const allocator_type& __a) + : unordered_multiset(__n, hasher(), key_equal(), __a) + { } + + unordered_multiset(size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__n, __hf, key_equal(), __a) + { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n, + const allocator_type& __a) + : unordered_multiset(__first, __last, __n, hasher(), key_equal(), __a) + { } + + template + unordered_multiset(_InputIterator __first, _InputIterator __last, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__first, __last, __n, __hf, key_equal(), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n, + const allocator_type& __a) + : unordered_multiset(__l, __n, hasher(), key_equal(), __a) + { } + + unordered_multiset(initializer_list __l, + size_type __n, const hasher& __hf, + const allocator_type& __a) + : unordered_multiset(__l, __n, __hf, key_equal(), __a) + { } + + unordered_multiset& + operator=(const unordered_multiset&) = default; + + unordered_multiset& + operator=(unordered_multiset&&) = default; + + unordered_multiset& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } + + void + swap(unordered_multiset& __x) + noexcept( noexcept(__x._M_base().swap(__x)) ) + { + _Base::swap(__x); + this->_M_swap(__x); + } + + void + clear() noexcept + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + template + iterator + emplace(_Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::emplace(std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + template + iterator + emplace_hint(const_iterator __it, _Args&&... __args) + { + size_type __old_size = _Base::bucket_count(); + iterator __res + = _Base::emplace_hint(__it, std::forward<_Args>(__args)...); + this->_M_profile_resize(__old_size); + return __res; + } + + void + insert(std::initializer_list __l) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__l); + this->_M_profile_resize(__old_size); + } + + iterator + insert(const value_type& __obj) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__obj); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(const_iterator __iter, const value_type& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, __v); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(value_type&& __obj) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(std::move(__obj)); + this->_M_profile_resize(__old_size); + return __res; + } + + iterator + insert(const_iterator __iter, value_type&& __v) + { + size_type __old_size = _Base::bucket_count(); + iterator __res = _Base::insert(__iter, std::move(__v)); + this->_M_profile_resize(__old_size); + return __res; + } + + template + void + insert(_InputIter __first, _InputIter __last) + { + size_type __old_size = _Base::bucket_count(); + _Base::insert(__first, __last); + this->_M_profile_resize(__old_size); + } + + void + rehash(size_type __n) + { + size_type __old_size = _Base::bucket_count(); + _Base::rehash(__n); + this->_M_profile_resize(__old_size); + } + }; + + template + inline void + swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + + template + inline bool + operator==(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return static_cast(__x) == __y; } + + template + inline bool + operator!=(const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + const unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { return !(__x == __y); } + +} // namespace __profile +} // namespace std + +#undef _GLIBCXX_BASE +#undef _GLIBCXX_STD_BASE + +#endif // C++11 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/vector new file mode 100644 index 000000000..b2c397f3c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/profile/vector @@ -0,0 +1,572 @@ +// Profiling vector implementation -*- C++ -*- + +// Copyright (C) 2009-2018 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 along +// with this library; see the file COPYING3. If not see +// . + +/** @file profile/vector + * This file is a GNU profile extension to the Standard C++ Library. + */ + +#ifndef _GLIBCXX_PROFILE_VECTOR +#define _GLIBCXX_PROFILE_VECTOR 1 + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace __profile +{ + template + class _Vector_profile_pre + { + _Vector& + _M_conjure() + { return *static_cast<_Vector*>(this); } + + public: +#if __cplusplus >= 201103L + _Vector_profile_pre() = default; + _Vector_profile_pre(const _Vector_profile_pre&) = default; + _Vector_profile_pre(_Vector_profile_pre&&) = default; + + _Vector_profile_pre& + operator=(const _Vector_profile_pre&) + { _M_conjure()._M_profile_destruct(); } + + _Vector_profile_pre& + operator=(_Vector_profile_pre&&) noexcept + { _M_conjure()._M_profile_destruct(); } +#endif + }; + + template + class _Vector_profile_post + { + _Vector& + _M_conjure() + { return *static_cast<_Vector*>(this); } + + protected: + __gnu_profile::__container_size_info* _M_size_info; + __gnu_profile::__vector2list_info* _M_vect2list_info; + + _Vector_profile_post() _GLIBCXX_NOEXCEPT + { _M_profile_construct(); } + +#if __cplusplus >= 201103L + _Vector_profile_post(const _Vector_profile_post&) noexcept + : _Vector_profile_post() { } + _Vector_profile_post(_Vector_profile_post&& __other) noexcept + : _Vector_profile_post() + { _M_swap(__other); } + + _Vector_profile_post& + operator=(const _Vector_profile_post&) noexcept + { _M_profile_construct(); } + + _Vector_profile_post& + operator=(_Vector_profile_post&& __other) noexcept + { + _M_swap(__other); + __other._M_profile_construct(); + } +#endif + + ~_Vector_profile_post() + { _M_conjure()._M_profile_destruct(); } + + public: + void + _M_profile_construct() _GLIBCXX_NOEXCEPT + { + _M_size_info = + __profcxx_vector_size_construct(_M_conjure().capacity()); + _M_vect2list_info = __profcxx_vector2list_construct(); + } + + void + _M_profile_destruct() _GLIBCXX_NOEXCEPT + { + __profcxx_vector2list_destruct(_M_vect2list_info); + _M_vect2list_info = 0; + __profcxx_vector_size_destruct(_M_size_info, + _M_conjure().capacity(), + _M_conjure().size()); + _M_size_info = 0; + } + + void + _M_swap(_Vector_profile_post& __other) _GLIBCXX_NOEXCEPT + { + std::swap(_M_size_info, __other._M_size_info); + std::swap(_M_vect2list_info, __other._M_vect2list_info); + } + }; + + template > + class vector + : public _Vector_profile_pre >, + public _GLIBCXX_STD_C::vector<_Tp, _Allocator>, + public _Vector_profile_post > + { + typedef _GLIBCXX_STD_C::vector<_Tp, _Allocator> _Base; + + typedef typename _Base::iterator _Base_iterator; + typedef typename _Base::const_iterator _Base_const_iterator; + + public: + typedef typename _Base::reference reference; + typedef typename _Base::const_reference const_reference; + + typedef __iterator_tracker<_Base_iterator, vector> + iterator; + typedef __iterator_tracker<_Base_const_iterator, vector> + const_iterator; + + typedef typename _Base::size_type size_type; + typedef typename _Base::difference_type difference_type; + + typedef _Tp value_type; + typedef _Allocator allocator_type; + typedef typename _Base::pointer pointer; + typedef typename _Base::const_pointer const_pointer; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + _Base& + _M_base() _GLIBCXX_NOEXCEPT { return *this; } + + const _Base& + _M_base() const _GLIBCXX_NOEXCEPT { return *this; } + + // 23.2.4.1 construct/copy/destroy: + +#if __cplusplus < 201103L + vector() + { } + + vector(const vector& __x) + : _Base(__x) { } +#else + vector() = default; + vector(const vector&) = default; + vector(vector&&) = default; +#endif + + explicit + vector(const _Allocator& __a) _GLIBCXX_NOEXCEPT + : _Base(__a) { } + +#if __cplusplus >= 201103L + explicit + vector(size_type __n, const _Allocator& __a = _Allocator()) + : _Base(__n, __a) { } + + vector(size_type __n, const _Tp& __value, + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#else + explicit + vector(size_type __n, const _Tp& __value = _Tp(), + const _Allocator& __a = _Allocator()) + : _Base(__n, __value, __a) { } +#endif + +#if __cplusplus >= 201103L + template> +#else + template +#endif + vector(_InputIterator __first, _InputIterator __last, + const _Allocator& __a = _Allocator()) + : _Base(__first, __last, __a) { } + + /// Construction from a normal-mode vector + vector(const _Base& __x) + : _Base(__x) { } + +#if __cplusplus >= 201103L + vector(const _Base& __x, const _Allocator& __a) + : _Base(__x, __a) { } + + vector(vector&& __x, const _Allocator& __a) + : _Base(std::move(__x), __a) { } + + vector(initializer_list __l, + const allocator_type& __a = allocator_type()) + : _Base(__l, __a) { } +#endif + +#if __cplusplus < 201103L + vector& + operator=(const vector& __x) + { + this->_M_profile_destruct(); + _M_base() = __x; + this->_M_profile_construct(); + return *this; + } +#else + vector& + operator=(const vector&) = default; + + vector& + operator=(vector&&) = default; + + vector& + operator=(initializer_list __l) + { + this->_M_profile_destruct(); + _M_base() = __l; + this->_M_profile_construct(); + return *this; + } +#endif + + // iterators: + iterator + begin() _GLIBCXX_NOEXCEPT + { return iterator(_Base::begin(), this); } + + const_iterator + begin() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::begin(), this); } + + iterator + end() _GLIBCXX_NOEXCEPT + { return iterator(_Base::end(), this); } + + const_iterator + end() const _GLIBCXX_NOEXCEPT + { return const_iterator(_Base::end(), this); } + + reverse_iterator + rbegin() _GLIBCXX_NOEXCEPT + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() _GLIBCXX_NOEXCEPT + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const _GLIBCXX_NOEXCEPT + { return const_reverse_iterator(begin()); } + +#if __cplusplus >= 201103L + const_iterator + cbegin() const noexcept + { return const_iterator(_Base::begin(), this); } + + const_iterator + cend() const noexcept + { return const_iterator(_Base::end(), this); } + + const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(end()); } + + const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(begin()); } +#endif + + // 23.2.4.2 capacity: + +#if __cplusplus >= 201103L + void + resize(size_type __sz) + { + __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); + _M_profile_resize(this->capacity(), __sz); + _Base::resize(__sz); + } + + void + resize(size_type __sz, const _Tp& __c) + { + __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); + _M_profile_resize(this->capacity(), __sz); + _Base::resize(__sz, __c); + } +#else + void + resize(size_type __sz, _Tp __c = _Tp()) + { + __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); + _M_profile_resize(this->capacity(), __sz); + _Base::resize(__sz, __c); + } +#endif + + // element access: + reference + operator[](size_type __n) _GLIBCXX_NOEXCEPT + { + __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); + return _M_base()[__n]; + } + const_reference + operator[](size_type __n) const _GLIBCXX_NOEXCEPT + { + __profcxx_vector2list_invalid_operator(this->_M_vect2list_info); + return _M_base()[__n]; + } + + // 23.2.4.3 modifiers: + void + push_back(const _Tp& __x) + { + size_type __old_size = this->capacity(); + _Base::push_back(__x); + _M_profile_resize(__old_size, this->capacity()); + } + +#if __cplusplus >= 201103L + void + push_back(_Tp&& __x) + { + size_type __old_size = this->capacity(); + _Base::push_back(std::move(__x)); + _M_profile_resize(__old_size, this->capacity()); + } + +#endif + + iterator +#if __cplusplus >= 201103L + insert(const_iterator __pos, const _Tp& __x) +#else + insert(iterator __pos, const _Tp& __x) +#endif + { + __profcxx_vector2list_insert(this->_M_vect2list_info, + __pos.base() - _Base::begin(), + this->size()); + size_type __old_size = this->capacity(); + _Base_iterator __res = _Base::insert(__pos.base(), __x); + _M_profile_resize(__old_size, this->capacity()); + return iterator(__res, this); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __pos, _Tp&& __x) + { + __profcxx_vector2list_insert(this->_M_vect2list_info, + __pos.base() - _Base::cbegin(), + this->size()); + size_type __old_size = this->capacity(); + _Base_iterator __res = _Base::insert(__pos.base(), __x); + _M_profile_resize(__old_size, this->capacity()); + return iterator(__res, this); + } + + template + iterator + emplace(const_iterator __pos, _Args&&... __args) + { + _Base_iterator __res = _Base::emplace(__pos.base(), + std::forward<_Args>(__args)...); + return iterator(__res, this); + } + + iterator + insert(const_iterator __pos, initializer_list __l) + { return this->insert(__pos, __l.begin(), __l.end()); } +#endif + + void + swap(vector& __x) +#if __cplusplus >= 201103L + noexcept( noexcept(declval<_Base>().swap(__x)) ) +#endif + { + _Base::swap(__x); + this->_M_swap(__x); + } + +#if __cplusplus >= 201103L + iterator + insert(const_iterator __pos, size_type __n, const _Tp& __x) + { + __profcxx_vector2list_insert(this->_M_vect2list_info, + __pos.base() - _Base::cbegin(), + this->size()); + size_type __old_size = this->capacity(); + _Base_iterator __res = _Base::insert(__pos, __n, __x); + _M_profile_resize(__old_size, this->capacity()); + return iterator(__res, this); + } +#else + void + insert(iterator __pos, size_type __n, const _Tp& __x) + { + __profcxx_vector2list_insert(this->_M_vect2list_info, + __pos.base() - _Base::begin(), + this->size()); + size_type __old_size = this->capacity(); + _Base::insert(__pos, __n, __x); + _M_profile_resize(__old_size, this->capacity()); + } +#endif + +#if __cplusplus >= 201103L + template> + iterator + insert(const_iterator __pos, + _InputIterator __first, _InputIterator __last) + { + __profcxx_vector2list_insert(this->_M_vect2list_info, + __pos.base() - _Base::cbegin(), + this->size()); + size_type __old_size = this->capacity(); + _Base_iterator __res = _Base::insert(__pos, __first, __last); + _M_profile_resize(__old_size, this->capacity()); + return iterator(__res, this); + } +#else + template + void + insert(iterator __pos, + _InputIterator __first, _InputIterator __last) + { + __profcxx_vector2list_insert(this->_M_vect2list_info, + __pos.base() - _Base::begin(), + this->size()); + size_type __old_size = this->capacity(); + _Base::insert(__pos, __first, __last); + _M_profile_resize(__old_size, this->capacity()); + } +#endif + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __pos) +#else + erase(iterator __pos) +#endif + { return iterator(_Base::erase(__pos.base()), this); } + + iterator +#if __cplusplus >= 201103L + erase(const_iterator __first, const_iterator __last) +#else + erase(iterator __first, iterator __last) +#endif + { return iterator(_Base::erase(__first.base(), __last.base()), this); } + + void + clear() _GLIBCXX_NOEXCEPT + { + this->_M_profile_destruct(); + _Base::clear(); + this->_M_profile_construct(); + } + + inline void + _M_profile_iterate(int __rewind = 0) const + { __profcxx_vector2list_iterate(this->_M_vect2list_info, __rewind); } + + private: + void _M_profile_resize(size_type __old_size, size_type __new_size) + { + if (__old_size < __new_size) + { + __profcxx_vector_size_resize(this->_M_size_info, + this->size(), __new_size); + __profcxx_vector2list_resize(this->_M_vect2list_info, + this->size(), __new_size); + } + } + }; + + template + inline bool + operator==(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() == __rhs._M_base(); } + + template + inline bool + operator!=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() != __rhs._M_base(); } + + template + inline bool + operator<(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() < __rhs._M_base(); } + + template + inline bool + operator<=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() <= __rhs._M_base(); } + + template + inline bool + operator>=(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() >= __rhs._M_base(); } + + template + inline bool + operator>(const vector<_Tp, _Alloc>& __lhs, + const vector<_Tp, _Alloc>& __rhs) + { return __lhs._M_base() > __rhs._M_base(); } + + template + inline void + swap(vector<_Tp, _Alloc>& __lhs, vector<_Tp, _Alloc>& __rhs) + _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs))) + { __lhs.swap(__rhs); } + +} // namespace __profile + +#if __cplusplus >= 201103L + // DR 1182. + /// std::hash specialization for vector. + template + struct hash<__profile::vector> + : public __hash_base> + { + size_t + operator()(const __profile::vector& __b) const noexcept + { + return std::hash<_GLIBCXX_STD_C::vector>()(__b._M_base()); + } + }; +#endif + +} // namespace std + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/queue b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/queue similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/queue rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/queue index 28e9c4405..c9a4832e0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/queue +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/queue @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/random new file mode 100644 index 000000000..f762b13e3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/random @@ -0,0 +1,57 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/random + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_RANDOM +#define _GLIBCXX_RANDOM 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include +#include +#include +#include + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +#include // For uint_fast32_t, uint_fast64_t, uint_least32_t +#include +#include +#include + +#endif // _GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif // _GLIBCXX_RANDOM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ratio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ratio new file mode 100644 index 000000000..9593a1a38 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/ratio @@ -0,0 +1,555 @@ +// ratio -*- C++ -*- + +// Copyright (C) 2008-2018 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 +// . + +/** @file include/ratio + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_RATIO +#define _GLIBCXX_RATIO 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @defgroup ratio Rational Arithmetic + * @ingroup utilities + * + * Compile time representation of finite rational numbers. + * @{ + */ + + template + struct __static_sign + : integral_constant + { }; + + template + struct __static_abs + : integral_constant::value> + { }; + + template + struct __static_gcd + : __static_gcd<_Qn, (_Pn % _Qn)> + { }; + + template + struct __static_gcd<_Pn, 0> + : integral_constant::value> + { }; + + template + struct __static_gcd<0, _Qn> + : integral_constant::value> + { }; + + // Let c = 2^(half # of bits in an intmax_t) + // then we find a1, a0, b1, b0 s.t. N = a1*c + a0, M = b1*c + b0 + // The multiplication of N and M becomes, + // N * M = (a1 * b1)c^2 + (a0 * b1 + b0 * a1)c + a0 * b0 + // Multiplication is safe if each term and the sum of the terms + // is representable by intmax_t. + template + struct __safe_multiply + { + private: + static const uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); + + static const uintmax_t __a0 = __static_abs<_Pn>::value % __c; + static const uintmax_t __a1 = __static_abs<_Pn>::value / __c; + static const uintmax_t __b0 = __static_abs<_Qn>::value % __c; + static const uintmax_t __b1 = __static_abs<_Qn>::value / __c; + + static_assert(__a1 == 0 || __b1 == 0, + "overflow in multiplication"); + static_assert(__a0 * __b1 + __b0 * __a1 < (__c >> 1), + "overflow in multiplication"); + static_assert(__b0 * __a0 <= __INTMAX_MAX__, + "overflow in multiplication"); + static_assert((__a0 * __b1 + __b0 * __a1) * __c + <= __INTMAX_MAX__ - __b0 * __a0, + "overflow in multiplication"); + + public: + static const intmax_t value = _Pn * _Qn; + }; + + // Some double-precision utilities, where numbers are represented as + // __hi*2^(8*sizeof(uintmax_t)) + __lo. + template + struct __big_less + : integral_constant + { }; + + template + struct __big_add + { + static constexpr uintmax_t __lo = __lo1 + __lo2; + static constexpr uintmax_t __hi = (__hi1 + __hi2 + + (__lo1 + __lo2 < __lo1)); // carry + }; + + // Subtract a number from a bigger one. + template + struct __big_sub + { + static_assert(!__big_less<__hi1, __lo1, __hi2, __lo2>::value, + "Internal library error"); + static constexpr uintmax_t __lo = __lo1 - __lo2; + static constexpr uintmax_t __hi = (__hi1 - __hi2 - + (__lo1 < __lo2)); // carry + }; + + // Same principle as __safe_multiply. + template + struct __big_mul + { + private: + static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); + static constexpr uintmax_t __x0 = __x % __c; + static constexpr uintmax_t __x1 = __x / __c; + static constexpr uintmax_t __y0 = __y % __c; + static constexpr uintmax_t __y1 = __y / __c; + static constexpr uintmax_t __x0y0 = __x0 * __y0; + static constexpr uintmax_t __x0y1 = __x0 * __y1; + static constexpr uintmax_t __x1y0 = __x1 * __y0; + static constexpr uintmax_t __x1y1 = __x1 * __y1; + static constexpr uintmax_t __mix = __x0y1 + __x1y0; // possible carry... + static constexpr uintmax_t __mix_lo = __mix * __c; + static constexpr uintmax_t __mix_hi + = __mix / __c + ((__mix < __x0y1) ? __c : 0); // ... added here + typedef __big_add<__mix_hi, __mix_lo, __x1y1, __x0y0> _Res; + public: + static constexpr uintmax_t __hi = _Res::__hi; + static constexpr uintmax_t __lo = _Res::__lo; + }; + + // Adapted from __udiv_qrnnd_c in longlong.h + // This version assumes that the high bit of __d is 1. + template + struct __big_div_impl + { + private: + static_assert(__d >= (uintmax_t(1) << (sizeof(intmax_t) * 8 - 1)), + "Internal library error"); + static_assert(__n1 < __d, "Internal library error"); + static constexpr uintmax_t __c = uintmax_t(1) << (sizeof(intmax_t) * 4); + static constexpr uintmax_t __d1 = __d / __c; + static constexpr uintmax_t __d0 = __d % __c; + + static constexpr uintmax_t __q1x = __n1 / __d1; + static constexpr uintmax_t __r1x = __n1 % __d1; + static constexpr uintmax_t __m = __q1x * __d0; + static constexpr uintmax_t __r1y = __r1x * __c + __n0 / __c; + static constexpr uintmax_t __r1z = __r1y + __d; + static constexpr uintmax_t __r1 + = ((__r1y < __m) ? ((__r1z >= __d) && (__r1z < __m)) + ? (__r1z + __d) : __r1z : __r1y) - __m; + static constexpr uintmax_t __q1 + = __q1x - ((__r1y < __m) + ? ((__r1z >= __d) && (__r1z < __m)) ? 2 : 1 : 0); + static constexpr uintmax_t __q0x = __r1 / __d1; + static constexpr uintmax_t __r0x = __r1 % __d1; + static constexpr uintmax_t __n = __q0x * __d0; + static constexpr uintmax_t __r0y = __r0x * __c + __n0 % __c; + static constexpr uintmax_t __r0z = __r0y + __d; + static constexpr uintmax_t __r0 + = ((__r0y < __n) ? ((__r0z >= __d) && (__r0z < __n)) + ? (__r0z + __d) : __r0z : __r0y) - __n; + static constexpr uintmax_t __q0 + = __q0x - ((__r0y < __n) ? ((__r0z >= __d) + && (__r0z < __n)) ? 2 : 1 : 0); + + public: + static constexpr uintmax_t __quot = __q1 * __c + __q0; + static constexpr uintmax_t __rem = __r0; + + private: + typedef __big_mul<__quot, __d> _Prod; + typedef __big_add<_Prod::__hi, _Prod::__lo, 0, __rem> _Sum; + static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, + "Internal library error"); + }; + + template + struct __big_div + { + private: + static_assert(__d != 0, "Internal library error"); + static_assert(sizeof (uintmax_t) == sizeof (unsigned long long), + "This library calls __builtin_clzll on uintmax_t, which " + "is unsafe on your platform. Please complain to " + "http://gcc.gnu.org/bugzilla/"); + static constexpr int __shift = __builtin_clzll(__d); + static constexpr int __coshift_ = sizeof(uintmax_t) * 8 - __shift; + static constexpr int __coshift = (__shift != 0) ? __coshift_ : 0; + static constexpr uintmax_t __c1 = uintmax_t(1) << __shift; + static constexpr uintmax_t __c2 = uintmax_t(1) << __coshift; + static constexpr uintmax_t __new_d = __d * __c1; + static constexpr uintmax_t __new_n0 = __n0 * __c1; + static constexpr uintmax_t __n1_shifted = (__n1 % __d) * __c1; + static constexpr uintmax_t __n0_top = (__shift != 0) ? (__n0 / __c2) : 0; + static constexpr uintmax_t __new_n1 = __n1_shifted + __n0_top; + typedef __big_div_impl<__new_n1, __new_n0, __new_d> _Res; + + public: + static constexpr uintmax_t __quot_hi = __n1 / __d; + static constexpr uintmax_t __quot_lo = _Res::__quot; + static constexpr uintmax_t __rem = _Res::__rem / __c1; + + private: + typedef __big_mul<__quot_lo, __d> _P0; + typedef __big_mul<__quot_hi, __d> _P1; + typedef __big_add<_P0::__hi, _P0::__lo, _P1::__lo, __rem> _Sum; + // No overflow. + static_assert(_P1::__hi == 0, "Internal library error"); + static_assert(_Sum::__hi >= _P0::__hi, "Internal library error"); + // Matches the input data. + static_assert(_Sum::__hi == __n1 && _Sum::__lo == __n0, + "Internal library error"); + static_assert(__rem < __d, "Internal library error"); + }; + + /** + * @brief Provides compile-time rational arithmetic. + * + * This class template represents any finite rational number with a + * numerator and denominator representable by compile-time constants of + * type intmax_t. The ratio is simplified when instantiated. + * + * For example: + * @code + * std::ratio<7,-21>::num == -1; + * std::ratio<7,-21>::den == 3; + * @endcode + * + */ + template + struct ratio + { + static_assert(_Den != 0, "denominator cannot be zero"); + static_assert(_Num >= -__INTMAX_MAX__ && _Den >= -__INTMAX_MAX__, + "out of range"); + + // Note: sign(N) * abs(N) == N + static constexpr intmax_t num = + _Num * __static_sign<_Den>::value / __static_gcd<_Num, _Den>::value; + + static constexpr intmax_t den = + __static_abs<_Den>::value / __static_gcd<_Num, _Den>::value; + + typedef ratio type; + }; + + template + constexpr intmax_t ratio<_Num, _Den>::num; + + template + constexpr intmax_t ratio<_Num, _Den>::den; + + template + struct __ratio_multiply + { + private: + static const intmax_t __gcd1 = + __static_gcd<_R1::num, _R2::den>::value; + static const intmax_t __gcd2 = + __static_gcd<_R2::num, _R1::den>::value; + + public: + typedef ratio< + __safe_multiply<(_R1::num / __gcd1), + (_R2::num / __gcd2)>::value, + __safe_multiply<(_R1::den / __gcd2), + (_R2::den / __gcd1)>::value> type; + + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; + }; + + template + constexpr intmax_t __ratio_multiply<_R1, _R2>::num; + + template + constexpr intmax_t __ratio_multiply<_R1, _R2>::den; + + /// ratio_multiply + template + using ratio_multiply = typename __ratio_multiply<_R1, _R2>::type; + + template + struct __ratio_divide + { + static_assert(_R2::num != 0, "division by 0"); + + typedef typename __ratio_multiply< + _R1, + ratio<_R2::den, _R2::num>>::type type; + + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; + }; + + template + constexpr intmax_t __ratio_divide<_R1, _R2>::num; + + template + constexpr intmax_t __ratio_divide<_R1, _R2>::den; + + /// ratio_divide + template + using ratio_divide = typename __ratio_divide<_R1, _R2>::type; + + /// ratio_equal + template + struct ratio_equal + : integral_constant + { }; + + /// ratio_not_equal + template + struct ratio_not_equal + : integral_constant::value> + { }; + + // Both numbers are positive. + template, + typename _Right = __big_mul<_R2::num,_R1::den> > + struct __ratio_less_impl_1 + : integral_constant::value> + { }; + + template::value + != __static_sign<_R2::num>::value)), + bool = (__static_sign<_R1::num>::value == -1 + && __static_sign<_R2::num>::value == -1)> + struct __ratio_less_impl + : __ratio_less_impl_1<_R1, _R2>::type + { }; + + template + struct __ratio_less_impl<_R1, _R2, true, false> + : integral_constant + { }; + + template + struct __ratio_less_impl<_R1, _R2, false, true> + : __ratio_less_impl_1, + ratio<-_R1::num, _R1::den> >::type + { }; + + /// ratio_less + template + struct ratio_less + : __ratio_less_impl<_R1, _R2>::type + { }; + + /// ratio_less_equal + template + struct ratio_less_equal + : integral_constant::value> + { }; + + /// ratio_greater + template + struct ratio_greater + : integral_constant::value> + { }; + + /// ratio_greater_equal + template + struct ratio_greater_equal + : integral_constant::value> + { }; + +#if __cplusplus > 201402L + template + inline constexpr bool ratio_equal_v = ratio_equal<_R1, _R2>::value; + template + inline constexpr bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; + template + inline constexpr bool ratio_less_v = ratio_less<_R1, _R2>::value; + template + inline constexpr bool ratio_less_equal_v = + ratio_less_equal<_R1, _R2>::value; + template + inline constexpr bool ratio_greater_v = ratio_greater<_R1, _R2>::value; + template + inline constexpr bool ratio_greater_equal_v + = ratio_greater_equal<_R1, _R2>::value; +#endif // C++17 + + template= 0), + bool = (_R2::num >= 0), + bool = ratio_less::value, _R1::den>, + ratio<__static_abs<_R2::num>::value, _R2::den> >::value> + struct __ratio_add_impl + { + private: + typedef typename __ratio_add_impl< + ratio<-_R1::num, _R1::den>, + ratio<-_R2::num, _R2::den> >::type __t; + public: + typedef ratio<-__t::num, __t::den> type; + }; + + // True addition of nonnegative numbers. + template + struct __ratio_add_impl<_R1, _R2, true, true, __b> + { + private: + static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; + static constexpr uintmax_t __d2 = _R2::den / __g; + typedef __big_mul<_R1::den, __d2> __d; + typedef __big_mul<_R1::num, _R2::den / __g> __x; + typedef __big_mul<_R2::num, _R1::den / __g> __y; + typedef __big_add<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; + static_assert(__n::__hi >= __x::__hi, "Internal library error"); + typedef __big_div<__n::__hi, __n::__lo, __g> __ng; + static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; + typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; + static_assert(__n_final::__rem == 0, "Internal library error"); + static_assert(__n_final::__quot_hi == 0 && + __n_final::__quot_lo <= __INTMAX_MAX__, "overflow in addition"); + typedef __big_mul<_R1::den / __g2, __d2> __d_final; + static_assert(__d_final::__hi == 0 && + __d_final::__lo <= __INTMAX_MAX__, "overflow in addition"); + public: + typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; + }; + + template + struct __ratio_add_impl<_R1, _R2, false, true, true> + : __ratio_add_impl<_R2, _R1> + { }; + + // True subtraction of nonnegative numbers yielding a nonnegative result. + template + struct __ratio_add_impl<_R1, _R2, true, false, false> + { + private: + static constexpr uintmax_t __g = __static_gcd<_R1::den, _R2::den>::value; + static constexpr uintmax_t __d2 = _R2::den / __g; + typedef __big_mul<_R1::den, __d2> __d; + typedef __big_mul<_R1::num, _R2::den / __g> __x; + typedef __big_mul<-_R2::num, _R1::den / __g> __y; + typedef __big_sub<__x::__hi, __x::__lo, __y::__hi, __y::__lo> __n; + typedef __big_div<__n::__hi, __n::__lo, __g> __ng; + static constexpr uintmax_t __g2 = __static_gcd<__ng::__rem, __g>::value; + typedef __big_div<__n::__hi, __n::__lo, __g2> __n_final; + static_assert(__n_final::__rem == 0, "Internal library error"); + static_assert(__n_final::__quot_hi == 0 && + __n_final::__quot_lo <= __INTMAX_MAX__, "overflow in addition"); + typedef __big_mul<_R1::den / __g2, __d2> __d_final; + static_assert(__d_final::__hi == 0 && + __d_final::__lo <= __INTMAX_MAX__, "overflow in addition"); + public: + typedef ratio<__n_final::__quot_lo, __d_final::__lo> type; + }; + + template + struct __ratio_add + { + typedef typename __ratio_add_impl<_R1, _R2>::type type; + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; + }; + + template + constexpr intmax_t __ratio_add<_R1, _R2>::num; + + template + constexpr intmax_t __ratio_add<_R1, _R2>::den; + + /// ratio_add + template + using ratio_add = typename __ratio_add<_R1, _R2>::type; + + template + struct __ratio_subtract + { + typedef typename __ratio_add< + _R1, + ratio<-_R2::num, _R2::den>>::type type; + + static constexpr intmax_t num = type::num; + static constexpr intmax_t den = type::den; + }; + + template + constexpr intmax_t __ratio_subtract<_R1, _R2>::num; + + template + constexpr intmax_t __ratio_subtract<_R1, _R2>::den; + + /// ratio_subtract + template + using ratio_subtract = typename __ratio_subtract<_R1, _R2>::type; + + + typedef ratio<1, 1000000000000000000> atto; + typedef ratio<1, 1000000000000000> femto; + typedef ratio<1, 1000000000000> pico; + typedef ratio<1, 1000000000> nano; + typedef ratio<1, 1000000> micro; + typedef ratio<1, 1000> milli; + typedef ratio<1, 100> centi; + typedef ratio<1, 10> deci; + typedef ratio< 10, 1> deca; + typedef ratio< 100, 1> hecto; + typedef ratio< 1000, 1> kilo; + typedef ratio< 1000000, 1> mega; + typedef ratio< 1000000000, 1> giga; + typedef ratio< 1000000000000, 1> tera; + typedef ratio< 1000000000000000, 1> peta; + typedef ratio< 1000000000000000000, 1> exa; + + // @} group ratio +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif //_GLIBCXX_USE_C99_STDINT_TR1 + +#endif // C++11 + +#endif //_GLIBCXX_RATIO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/regex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/regex new file mode 100644 index 000000000..7e4564a37 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/regex @@ -0,0 +1,67 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/regex + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_REGEX +#define _GLIBCXX_REGEX 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#ifdef _GLIBCXX_DEBUG +# include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // C++11 + +#endif // _GLIBCXX_REGEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/scoped_allocator b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/scoped_allocator similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/scoped_allocator rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/scoped_allocator index 725f54714..195db397a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/scoped_allocator +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/scoped_allocator @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2011-2017 Free Software Foundation, Inc. +// Copyright (C) 2011-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/set new file mode 100644 index 000000000..732c6d33f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/set @@ -0,0 +1,73 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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/set + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_SET +#define _GLIBCXX_SET 1 + +#pragma GCC system_header + +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_SET */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/shared_mutex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/shared_mutex similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/shared_mutex rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/shared_mutex index 295fdc711..6a81e7510 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/shared_mutex +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/shared_mutex @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2013-2017 Free Software Foundation, Inc. +// Copyright (C) 2013-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/sstream b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/sstream similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/sstream rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/sstream index 7690252b3..8ad18d00f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/sstream +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/sstream @@ -1,6 +1,6 @@ // String based streams -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -112,7 +112,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 explicit basic_stringbuf(const __string_type& __str, ios_base::openmode __mode = ios_base::in | ios_base::out) - : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size()) + : __streambuf_type(), _M_mode(), + _M_string(__str.data(), __str.size(), __str.get_allocator()) { _M_stringbuf_init(__mode); } #if __cplusplus >= 201103L @@ -165,14 +166,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CXX11 __string_type str() const { - __string_type __ret; + __string_type __ret(_M_string.get_allocator()); if (this->pptr()) { // The current egptr() may not be the actual string end. if (this->pptr() > this->egptr()) - __ret = __string_type(this->pbase(), this->pptr()); + __ret.assign(this->pbase(), this->pptr()); else - __ret = __string_type(this->pbase(), this->egptr()); + __ret.assign(this->pbase(), this->egptr()); } else __ret = _M_string; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stack b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stack similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stack rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stack index 465c71f6d..e368cea43 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stack +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stack @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stdexcept b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stdexcept similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stdexcept rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stdexcept index 2f0fdb9d4..ddc056f75 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/stdexcept +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stdexcept @@ -1,6 +1,6 @@ // Standard exception classes -*- C++ -*- -// Copyright (C) 2001-2017 Free Software Foundation, Inc. +// Copyright (C) 2001-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stdlib.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stdlib.h new file mode 100644 index 000000000..cd5f5a0e9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/stdlib.h @@ -0,0 +1,86 @@ +// -*- C++ -*- compatibility header. + +// Copyright (C) 2002-2018 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 +// . + +/** @file stdlib.h + * This is a Standard C++ Library header. + */ + +#if !defined __cplusplus || defined _GLIBCXX_INCLUDE_NEXT_C_HEADERS +# include_next +#else + +#ifndef _GLIBCXX_STDLIB_H +#define _GLIBCXX_STDLIB_H 1 + +# include + +using std::abort; +using std::atexit; +using std::exit; +#if __cplusplus >= 201103L +# ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT + using std::at_quick_exit; +# endif +# ifdef _GLIBCXX_HAVE_QUICK_EXIT + using std::quick_exit; +# endif +#endif + +#if _GLIBCXX_HOSTED +using std::div_t; +using std::ldiv_t; + +using std::abs; +using std::atof; +using std::atoi; +using std::atol; +using std::bsearch; +using std::calloc; +using std::div; +using std::free; +using std::getenv; +using std::labs; +using std::ldiv; +using std::malloc; +#ifdef _GLIBCXX_HAVE_MBSTATE_T +using std::mblen; +using std::mbstowcs; +using std::mbtowc; +#endif // _GLIBCXX_HAVE_MBSTATE_T +using std::qsort; +using std::rand; +using std::realloc; +using std::srand; +using std::strtod; +using std::strtol; +using std::strtoul; +using std::system; +#ifdef _GLIBCXX_USE_WCHAR_T +using std::wcstombs; +using std::wctomb; +#endif // _GLIBCXX_USE_WCHAR_T +#endif + +#endif // _GLIBCXX_STDLIB_H +#endif // __cplusplus diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/streambuf b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/streambuf similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/streambuf rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/streambuf index 862c4fdbe..33f8f17af 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/streambuf +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/streambuf @@ -1,6 +1,6 @@ // Stream buffer classes -*- C++ -*- -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 @@ -46,6 +46,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION +#define _IsUnused __attribute__ ((__unused__)) + template streamsize __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*, @@ -159,6 +161,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>, const _CharT2&); + template + friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value, + void>::__type + advance(istreambuf_iterator<_CharT2>&, _Distance); + template friend basic_istream<_CharT2, _Traits2>& operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*); @@ -573,7 +580,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @note Base class version does nothing. */ virtual void - imbue(const locale& __loc) + imbue(const locale& __loc _IsUnused) { } // [27.5.2.4.2] buffer management and positioning @@ -721,7 +728,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @note Base class version does nothing, returns eof(). */ virtual int_type - pbackfail(int_type __c = traits_type::eof()) + pbackfail(int_type __c _IsUnused = traits_type::eof()) { return traits_type::eof(); } // Put area: @@ -765,11 +772,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * @note Base class version does nothing, returns eof(). */ virtual int_type - overflow(int_type __c = traits_type::eof()) + overflow(int_type __c _IsUnused = traits_type::eof()) { return traits_type::eof(); } -#if _GLIBCXX_USE_DEPRECATED - // Annex D.6 +#if _GLIBCXX_USE_DEPRECATED && __cplusplus <= 201402L + // Annex D.6 (removed in C++17) public: /** * @brief Tosses a character. @@ -779,6 +786,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION * * See http://gcc.gnu.org/ml/libstdc++/2002-05/msg00168.html */ +#if __cplusplus >= 201103L + [[__deprecated__("stossc is deprecated, use sbumpc instead")]] +#endif void stossc() { @@ -844,6 +854,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION basic_streambuf* __sbout, bool& __ineof); #endif +#undef _IsUnused + _GLIBCXX_END_NAMESPACE_VERSION } // namespace diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/string b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/string new file mode 100644 index 000000000..2fceead30 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/string @@ -0,0 +1,55 @@ +// Components for manipulating sequences of characters -*- C++ -*- + +// Copyright (C) 1997-2018 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 +// . + +/** @file include/string + * This is a Standard C++ Library header. + */ + +// +// ISO C++ 14882: 21 Strings library +// + +#ifndef _GLIBCXX_STRING +#define _GLIBCXX_STRING 1 + +#pragma GCC system_header + +#include +#include +#include // NB: In turn includes stl_algobase.h +#include +#include +#include // For operators >>, <<, and getline. +#include +#include +#include +#include +#include // For less +#include +#include +#include +#include +#include + +#endif /* _GLIBCXX_STRING */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/string_view b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/string_view new file mode 100644 index 000000000..96962e39b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/string_view @@ -0,0 +1,661 @@ +// Components for manipulating non-owning sequences of characters -*- C++ -*- + +// Copyright (C) 2013-2018 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 +// . + +/** @file string_view + * This is a Standard C++ Library header. + */ + +// +// N3762 basic_string_view library +// + +#ifndef _GLIBCXX_STRING_VIEW +#define _GLIBCXX_STRING_VIEW 1 + +#pragma GCC system_header + +#if __cplusplus >= 201703L + +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#define __cpp_lib_string_view 201603 + + /** + * @class basic_string_view + * @brief A non-owning reference to a string. + * + * @ingroup strings + * @ingroup sequences + * + * @tparam _CharT Type of character + * @tparam _Traits Traits for character type, defaults to + * char_traits<_CharT>. + * + * A basic_string_view looks like this: + * + * @code + * _CharT* _M_str + * size_t _M_len + * @endcode + */ + template> + class basic_string_view + { + public: + + // types + using traits_type = _Traits; + using value_type = _CharT; + using pointer = const _CharT*; + using const_pointer = const _CharT*; + using reference = const _CharT&; + using const_reference = const _CharT&; + using const_iterator = const _CharT*; + using iterator = const_iterator; + using const_reverse_iterator = std::reverse_iterator; + using reverse_iterator = const_reverse_iterator; + using size_type = size_t; + using difference_type = ptrdiff_t; + static constexpr size_type npos = size_type(-1); + + // [string.view.cons], construct/copy + + constexpr + basic_string_view() noexcept + : _M_len{0}, _M_str{nullptr} + { } + + constexpr basic_string_view(const basic_string_view&) noexcept = default; + + constexpr basic_string_view(const _CharT* __str) noexcept + : _M_len{__str == nullptr ? 0 : traits_type::length(__str)}, + _M_str{__str} + { } + + constexpr + basic_string_view(const _CharT* __str, size_type __len) noexcept + : _M_len{__len}, _M_str{__str} + { } + + constexpr basic_string_view& + operator=(const basic_string_view&) noexcept = default; + + // [string.view.iterators], iterators + + constexpr const_iterator + begin() const noexcept + { return this->_M_str; } + + constexpr const_iterator + end() const noexcept + { return this->_M_str + this->_M_len; } + + constexpr const_iterator + cbegin() const noexcept + { return this->_M_str; } + + constexpr const_iterator + cend() const noexcept + { return this->_M_str + this->_M_len; } + + constexpr const_reverse_iterator + rbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + constexpr const_reverse_iterator + rend() const noexcept + { return const_reverse_iterator(this->begin()); } + + constexpr const_reverse_iterator + crbegin() const noexcept + { return const_reverse_iterator(this->end()); } + + constexpr const_reverse_iterator + crend() const noexcept + { return const_reverse_iterator(this->begin()); } + + // [string.view.capacity], capacity + + constexpr size_type + size() const noexcept + { return this->_M_len; } + + constexpr size_type + length() const noexcept + { return _M_len; } + + constexpr size_type + max_size() const noexcept + { + return (npos - sizeof(size_type) - sizeof(void*)) + / sizeof(value_type) / 4; + } + + [[nodiscard]] constexpr bool + empty() const noexcept + { return this->_M_len == 0; } + + // [string.view.access], element access + + constexpr const _CharT& + operator[](size_type __pos) const noexcept + { + // TODO: Assert to restore in a way compatible with the constexpr. + // __glibcxx_assert(__pos < this->_M_len); + return *(this->_M_str + __pos); + } + + constexpr const _CharT& + at(size_type __pos) const + { + if (__pos >= _M_len) + __throw_out_of_range_fmt(__N("basic_string_view::at: __pos " + "(which is %zu) >= this->size() " + "(which is %zu)"), __pos, this->size()); + return *(this->_M_str + __pos); + } + + constexpr const _CharT& + front() const noexcept + { + // TODO: Assert to restore in a way compatible with the constexpr. + // __glibcxx_assert(this->_M_len > 0); + return *this->_M_str; + } + + constexpr const _CharT& + back() const noexcept + { + // TODO: Assert to restore in a way compatible with the constexpr. + // __glibcxx_assert(this->_M_len > 0); + return *(this->_M_str + this->_M_len - 1); + } + + constexpr const _CharT* + data() const noexcept + { return this->_M_str; } + + // [string.view.modifiers], modifiers: + + constexpr void + remove_prefix(size_type __n) noexcept + { + __glibcxx_assert(this->_M_len >= __n); + this->_M_str += __n; + this->_M_len -= __n; + } + + constexpr void + remove_suffix(size_type __n) noexcept + { this->_M_len -= __n; } + + constexpr void + swap(basic_string_view& __sv) noexcept + { + auto __tmp = *this; + *this = __sv; + __sv = __tmp; + } + + + // [string.view.ops], string operations: + + size_type + copy(_CharT* __str, size_type __n, size_type __pos = 0) const + { + __glibcxx_requires_string_len(__str, __n); + __pos = _M_check(__pos, "basic_string_view::copy"); + const size_type __rlen = std::min(__n, _M_len - __pos); + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2777. basic_string_view::copy should use char_traits::copy + traits_type::copy(__str, data() + __pos, __rlen); + return __rlen; + } + + constexpr basic_string_view + substr(size_type __pos = 0, size_type __n = npos) const noexcept(false) + { + __pos = _M_check(__pos, "basic_string_view::substr"); + const size_type __rlen = std::min(__n, _M_len - __pos); + return basic_string_view{_M_str + __pos, __rlen}; + } + + constexpr int + compare(basic_string_view __str) const noexcept + { + const size_type __rlen = std::min(this->_M_len, __str._M_len); + int __ret = traits_type::compare(this->_M_str, __str._M_str, __rlen); + if (__ret == 0) + __ret = _S_compare(this->_M_len, __str._M_len); + return __ret; + } + + constexpr int + compare(size_type __pos1, size_type __n1, basic_string_view __str) const + { return this->substr(__pos1, __n1).compare(__str); } + + constexpr int + compare(size_type __pos1, size_type __n1, + basic_string_view __str, size_type __pos2, size_type __n2) const + { + return this->substr(__pos1, __n1).compare(__str.substr(__pos2, __n2)); + } + + constexpr int + compare(const _CharT* __str) const noexcept + { return this->compare(basic_string_view{__str}); } + + constexpr int + compare(size_type __pos1, size_type __n1, const _CharT* __str) const + { return this->substr(__pos1, __n1).compare(basic_string_view{__str}); } + + constexpr int + compare(size_type __pos1, size_type __n1, + const _CharT* __str, size_type __n2) const noexcept(false) + { + return this->substr(__pos1, __n1) + .compare(basic_string_view(__str, __n2)); + } + + constexpr size_type + find(basic_string_view __str, size_type __pos = 0) const noexcept + { return this->find(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find(_CharT __c, size_type __pos = 0) const noexcept; + + constexpr size_type + find(const _CharT* __str, size_type __pos, size_type __n) const noexcept; + + constexpr size_type + find(const _CharT* __str, size_type __pos = 0) const noexcept + { return this->find(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + rfind(basic_string_view __str, size_type __pos = npos) const noexcept + { return this->rfind(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + rfind(_CharT __c, size_type __pos = npos) const noexcept; + + constexpr size_type + rfind(const _CharT* __str, size_type __pos, size_type __n) const noexcept; + + constexpr size_type + rfind(const _CharT* __str, size_type __pos = npos) const noexcept + { return this->rfind(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + find_first_of(basic_string_view __str, size_type __pos = 0) const noexcept + { return this->find_first_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_first_of(_CharT __c, size_type __pos = 0) const noexcept + { return this->find(__c, __pos); } + + constexpr size_type + find_first_of(const _CharT* __str, size_type __pos, size_type __n) const noexcept; + + constexpr size_type + find_first_of(const _CharT* __str, size_type __pos = 0) const noexcept + { return this->find_first_of(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + find_last_of(basic_string_view __str, + size_type __pos = npos) const noexcept + { return this->find_last_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_last_of(_CharT __c, size_type __pos=npos) const noexcept + { return this->rfind(__c, __pos); } + + constexpr size_type + find_last_of(const _CharT* __str, size_type __pos, + size_type __n) const noexcept; + + constexpr size_type + find_last_of(const _CharT* __str, size_type __pos = npos) const noexcept + { return this->find_last_of(__str, __pos, traits_type::length(__str)); } + + constexpr size_type + find_first_not_of(basic_string_view __str, + size_type __pos = 0) const noexcept + { return this->find_first_not_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_first_not_of(_CharT __c, size_type __pos = 0) const noexcept; + + constexpr size_type + find_first_not_of(const _CharT* __str, + size_type __pos, size_type __n) const noexcept; + + constexpr size_type + find_first_not_of(const _CharT* __str, size_type __pos = 0) const noexcept + { + return this->find_first_not_of(__str, __pos, + traits_type::length(__str)); + } + + constexpr size_type + find_last_not_of(basic_string_view __str, + size_type __pos = npos) const noexcept + { return this->find_last_not_of(__str._M_str, __pos, __str._M_len); } + + constexpr size_type + find_last_not_of(_CharT __c, size_type __pos = npos) const noexcept; + + constexpr size_type + find_last_not_of(const _CharT* __str, + size_type __pos, size_type __n) const noexcept; + + constexpr size_type + find_last_not_of(const _CharT* __str, + size_type __pos = npos) const noexcept + { + return this->find_last_not_of(__str, __pos, + traits_type::length(__str)); + } + + constexpr size_type + _M_check(size_type __pos, const char* __s) const noexcept(false) + { + if (__pos > this->size()) + __throw_out_of_range_fmt(__N("%s: __pos (which is %zu) > " + "this->size() (which is %zu)"), + __s, __pos, this->size()); + return __pos; + } + + // NB: _M_limit doesn't check for a bad __pos value. + constexpr size_type + _M_limit(size_type __pos, size_type __off) const noexcept + { + const bool __testoff = __off < this->size() - __pos; + return __testoff ? __off : this->size() - __pos; + } + + private: + + static constexpr int + _S_compare(size_type __n1, size_type __n2) noexcept + { + const difference_type __diff = __n1 - __n2; + if (__diff > std::numeric_limits::max()) + return std::numeric_limits::max(); + if (__diff < std::numeric_limits::min()) + return std::numeric_limits::min(); + return static_cast(__diff); + } + + size_t _M_len; + const _CharT* _M_str; + }; + + // [string.view.comparison], non-member basic_string_view comparison function + + namespace __detail + { + // Identity transform to create a non-deduced context, so that only one + // argument participates in template argument deduction and the other + // argument gets implicitly converted to the deduced type. See n3766.html. + template + using __idt = common_type_t<_Tp>; + } + + template + constexpr bool + operator==(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.size() == __y.size() && __x.compare(__y) == 0; } + + template + constexpr bool + operator==(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.size() == __y.size() && __x.compare(__y) == 0; } + + template + constexpr bool + operator==(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.size() == __y.size() && __x.compare(__y) == 0; } + + template + constexpr bool + operator!=(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return !(__x == __y); } + + template + constexpr bool + operator!=(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return !(__x == __y); } + + template + constexpr bool + operator!=(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return !(__x == __y); } + + template + constexpr bool + operator< (basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) < 0; } + + template + constexpr bool + operator< (basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) < 0; } + + template + constexpr bool + operator< (__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) < 0; } + + template + constexpr bool + operator> (basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) > 0; } + + template + constexpr bool + operator> (basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) > 0; } + + template + constexpr bool + operator> (__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) > 0; } + + template + constexpr bool + operator<=(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) <= 0; } + + template + constexpr bool + operator<=(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) <= 0; } + + template + constexpr bool + operator<=(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) <= 0; } + + template + constexpr bool + operator>=(basic_string_view<_CharT, _Traits> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) >= 0; } + + template + constexpr bool + operator>=(basic_string_view<_CharT, _Traits> __x, + __detail::__idt> __y) noexcept + { return __x.compare(__y) >= 0; } + + template + constexpr bool + operator>=(__detail::__idt> __x, + basic_string_view<_CharT, _Traits> __y) noexcept + { return __x.compare(__y) >= 0; } + + // [string.view.io], Inserters and extractors + template + inline basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, + basic_string_view<_CharT,_Traits> __str) + { return __ostream_insert(__os, __str.data(), __str.size()); } + + + // basic_string_view typedef names + + using string_view = basic_string_view; +#ifdef _GLIBCXX_USE_WCHAR_T + using wstring_view = basic_string_view; +#endif +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + using u16string_view = basic_string_view; + using u32string_view = basic_string_view; +#endif + + // [string.view.hash], hash support: + + template + struct hash; + + template<> + struct hash + : public __hash_base + { + size_t + operator()(const string_view& __str) const noexcept + { return std::_Hash_impl::hash(__str.data(), __str.length()); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + struct hash + : public __hash_base + { + size_t + operator()(const wstring_view& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(wchar_t)); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; +#endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + template<> + struct hash + : public __hash_base + { + size_t + operator()(const u16string_view& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(char16_t)); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; + + template<> + struct hash + : public __hash_base + { + size_t + operator()(const u32string_view& __s) const noexcept + { return std::_Hash_impl::hash(__s.data(), + __s.length() * sizeof(char32_t)); } + }; + + template<> + struct __is_fast_hash> : std::false_type + { }; +#endif + + inline namespace literals + { + inline namespace string_view_literals + { +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wliteral-suffix" + inline constexpr basic_string_view + operator""sv(const char* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } + +#ifdef _GLIBCXX_USE_WCHAR_T + inline constexpr basic_string_view + operator""sv(const wchar_t* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } +#endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + inline constexpr basic_string_view + operator""sv(const char16_t* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } + + inline constexpr basic_string_view + operator""sv(const char32_t* __str, size_t __len) noexcept + { return basic_string_view{__str, __len}; } +#endif +#pragma GCC diagnostic pop + } // namespace string_literals + } // namespace literals + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#include + +#endif // __cplusplus <= 201402L + +#endif // _GLIBCXX_EXPERIMENTAL_STRING_VIEW diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/system_error b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/system_error new file mode 100644 index 000000000..4918ef363 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/system_error @@ -0,0 +1,419 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/system_error + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_SYSTEM_ERROR +#define _GLIBCXX_SYSTEM_ERROR 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + class error_code; + class error_condition; + class system_error; + + /// is_error_code_enum + template + struct is_error_code_enum : public false_type { }; + + /// is_error_condition_enum + template + struct is_error_condition_enum : public false_type { }; + + template<> + struct is_error_condition_enum + : public true_type { }; + +#if __cplusplus > 201402L + template + inline constexpr bool is_error_code_enum_v = + is_error_code_enum<_Tp>::value; + template + inline constexpr bool is_error_condition_enum_v = + is_error_condition_enum<_Tp>::value; +#endif // C++17 + inline namespace _V2 { + + /// error_category + class error_category + { + public: + constexpr error_category() noexcept = default; + + virtual ~error_category(); + + error_category(const error_category&) = delete; + error_category& operator=(const error_category&) = delete; + + virtual const char* + name() const noexcept = 0; + + // We need two different virtual functions here, one returning a + // COW string and one returning an SSO string. Their positions in the + // vtable must be consistent for dynamic dispatch to work, but which one + // the name "message()" finds depends on which ABI the caller is using. +#if _GLIBCXX_USE_CXX11_ABI + private: + _GLIBCXX_DEFAULT_ABI_TAG + virtual __cow_string + _M_message(int) const; + + public: + _GLIBCXX_DEFAULT_ABI_TAG + virtual string + message(int) const = 0; +#else + virtual string + message(int) const = 0; + + private: + virtual __sso_string + _M_message(int) const; +#endif + + public: + virtual error_condition + default_error_condition(int __i) const noexcept; + + virtual bool + equivalent(int __i, const error_condition& __cond) const noexcept; + + virtual bool + equivalent(const error_code& __code, int __i) const noexcept; + + bool + operator<(const error_category& __other) const noexcept + { return less()(this, &__other); } + + bool + operator==(const error_category& __other) const noexcept + { return this == &__other; } + + bool + operator!=(const error_category& __other) const noexcept + { return this != &__other; } + }; + + // DR 890. + _GLIBCXX_CONST const error_category& system_category() noexcept; + _GLIBCXX_CONST const error_category& generic_category() noexcept; + + } // end inline namespace + + error_code make_error_code(errc) noexcept; + + template + struct hash; + + /// error_code + // Implementation-specific error identification + struct error_code + { + error_code() noexcept + : _M_value(0), _M_cat(&system_category()) { } + + error_code(int __v, const error_category& __cat) noexcept + : _M_value(__v), _M_cat(&__cat) { } + + template::value>::type> + error_code(_ErrorCodeEnum __e) noexcept + { *this = make_error_code(__e); } + + void + assign(int __v, const error_category& __cat) noexcept + { + _M_value = __v; + _M_cat = &__cat; + } + + void + clear() noexcept + { assign(0, system_category()); } + + // DR 804. + template + typename enable_if::value, + error_code&>::type + operator=(_ErrorCodeEnum __e) noexcept + { return *this = make_error_code(__e); } + + int + value() const noexcept { return _M_value; } + + const error_category& + category() const noexcept { return *_M_cat; } + + error_condition + default_error_condition() const noexcept; + + _GLIBCXX_DEFAULT_ABI_TAG + string + message() const + { return category().message(value()); } + + explicit operator bool() const noexcept + { return _M_value != 0; } + + // DR 804. + private: + friend class hash; + + int _M_value; + const error_category* _M_cat; + }; + + // 19.4.2.6 non-member functions + inline error_code + make_error_code(errc __e) noexcept + { return error_code(static_cast(__e), generic_category()); } + + inline bool + operator<(const error_code& __lhs, const error_code& __rhs) noexcept + { + return (__lhs.category() < __rhs.category() + || (__lhs.category() == __rhs.category() + && __lhs.value() < __rhs.value())); + } + + template + basic_ostream<_CharT, _Traits>& + operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e) + { return (__os << __e.category().name() << ':' << __e.value()); } + + error_condition make_error_condition(errc) noexcept; + + /// error_condition + // Portable error identification + struct error_condition + { + error_condition() noexcept + : _M_value(0), _M_cat(&generic_category()) { } + + error_condition(int __v, const error_category& __cat) noexcept + : _M_value(__v), _M_cat(&__cat) { } + + template::value>::type> + error_condition(_ErrorConditionEnum __e) noexcept + { *this = make_error_condition(__e); } + + void + assign(int __v, const error_category& __cat) noexcept + { + _M_value = __v; + _M_cat = &__cat; + } + + // DR 804. + template + typename enable_if::value, error_condition&>::type + operator=(_ErrorConditionEnum __e) noexcept + { return *this = make_error_condition(__e); } + + void + clear() noexcept + { assign(0, generic_category()); } + + // 19.4.3.4 observers + int + value() const noexcept { return _M_value; } + + const error_category& + category() const noexcept { return *_M_cat; } + + _GLIBCXX_DEFAULT_ABI_TAG + string + message() const + { return category().message(value()); } + + explicit operator bool() const noexcept + { return _M_value != 0; } + + // DR 804. + private: + int _M_value; + const error_category* _M_cat; + }; + + // 19.4.3.6 non-member functions + inline error_condition + make_error_condition(errc __e) noexcept + { return error_condition(static_cast(__e), generic_category()); } + + inline bool + operator<(const error_condition& __lhs, + const error_condition& __rhs) noexcept + { + return (__lhs.category() < __rhs.category() + || (__lhs.category() == __rhs.category() + && __lhs.value() < __rhs.value())); + } + + // 19.4.4 Comparison operators + inline bool + operator==(const error_code& __lhs, const error_code& __rhs) noexcept + { return (__lhs.category() == __rhs.category() + && __lhs.value() == __rhs.value()); } + + inline bool + operator==(const error_code& __lhs, const error_condition& __rhs) noexcept + { + return (__lhs.category().equivalent(__lhs.value(), __rhs) + || __rhs.category().equivalent(__lhs, __rhs.value())); + } + + inline bool + operator==(const error_condition& __lhs, const error_code& __rhs) noexcept + { + return (__rhs.category().equivalent(__rhs.value(), __lhs) + || __lhs.category().equivalent(__rhs, __lhs.value())); + } + + inline bool + operator==(const error_condition& __lhs, + const error_condition& __rhs) noexcept + { + return (__lhs.category() == __rhs.category() + && __lhs.value() == __rhs.value()); + } + + inline bool + operator!=(const error_code& __lhs, const error_code& __rhs) noexcept + { return !(__lhs == __rhs); } + + inline bool + operator!=(const error_code& __lhs, const error_condition& __rhs) noexcept + { return !(__lhs == __rhs); } + + inline bool + operator!=(const error_condition& __lhs, const error_code& __rhs) noexcept + { return !(__lhs == __rhs); } + + inline bool + operator!=(const error_condition& __lhs, + const error_condition& __rhs) noexcept + { return !(__lhs == __rhs); } + + + /** + * @brief Thrown to indicate error code of underlying system. + * + * @ingroup exceptions + */ + class system_error : public std::runtime_error + { + private: + error_code _M_code; + + public: + system_error(error_code __ec = error_code()) + : runtime_error(__ec.message()), _M_code(__ec) { } + + system_error(error_code __ec, const string& __what) + : runtime_error(__what + ": " + __ec.message()), _M_code(__ec) { } + + system_error(error_code __ec, const char* __what) + : runtime_error(__what + (": " + __ec.message())), _M_code(__ec) { } + + system_error(int __v, const error_category& __ecat, const char* __what) + : system_error(error_code(__v, __ecat), __what) { } + + system_error(int __v, const error_category& __ecat) + : runtime_error(error_code(__v, __ecat).message()), + _M_code(__v, __ecat) { } + + system_error(int __v, const error_category& __ecat, const string& __what) + : runtime_error(__what + ": " + error_code(__v, __ecat).message()), + _M_code(__v, __ecat) { } + + virtual ~system_error() noexcept; + + const error_code& + code() const noexcept { return _M_code; } + }; + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +#ifndef _GLIBCXX_COMPATIBILITY_CXX0X + // DR 1182. + /// std::hash specialization for error_code. + template<> + struct hash + : public __hash_base + { + size_t + operator()(const error_code& __e) const noexcept + { + const size_t __tmp = std::_Hash_impl::hash(__e._M_value); + return std::_Hash_impl::__hash_combine(__e._M_cat, __tmp); + } + }; +#endif // _GLIBCXX_COMPATIBILITY_CXX0X + +#if __cplusplus > 201402L + // DR 2686. + /// std::hash specialization for error_condition. + template<> + struct hash + : public __hash_base + { + size_t + operator()(const error_condition& __e) const noexcept + { + const size_t __tmp = std::_Hash_impl::hash(__e.value()); + return std::_Hash_impl::__hash_combine(__e.category(), __tmp); + } + }; +#endif + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif // C++11 + +#endif // _GLIBCXX_SYSTEM_ERROR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tgmath.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tgmath.h new file mode 100644 index 000000000..3650b8c3b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tgmath.h @@ -0,0 +1,42 @@ +// -*- C++ -*- compatibility header. + +// Copyright (C) 2007-2018 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 +// . + +/** @file tgmath.h + * This is a Standard C++ Library header. + */ + +#include + +#if __cplusplus >= 201103L +# include +#else +# if _GLIBCXX_HAVE_TGMATH_H +# include_next +# endif +#endif + +#ifndef _GLIBCXX_TGMATH_H +#define _GLIBCXX_TGMATH_H 1 + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/thread b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/thread similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/thread rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/thread index 6e850bb8d..8dba04fa8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/thread +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/thread @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2008-2017 Free Software Foundation, Inc. +// Copyright (C) 2008-2018 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 @@ -102,21 +102,26 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION private: id _M_id; - public: - thread() noexcept = default; // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2097. packaged_task constructors should be constrained - thread(thread&) = delete; - thread(const thread&) = delete; - thread(const thread&&) = delete; + template + using __not_same = __not_::type>::type, + thread>>; - thread(thread&& __t) noexcept - { swap(__t); } + public: + thread() noexcept = default; - template + template>> explicit thread(_Callable&& __f, _Args&&... __args) { + static_assert( __is_invocable::type, + typename decay<_Args>::type...>::value, + "std::thread arguments must be invocable after conversion to rvalues" + ); + #ifdef GTHR_ACTIVE_PROXY // Create a reference to pthread_create, not just the gthr weak symbol. auto __depend = reinterpret_cast(&pthread_create); @@ -135,6 +140,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::terminate(); } + thread(const thread&) = delete; + + thread(thread&& __t) noexcept + { swap(__t); } + thread& operator=(const thread&) = delete; thread& operator=(thread&& __t) noexcept @@ -318,16 +328,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return __out << __id._M_thread; } -_GLIBCXX_END_NAMESPACE_VERSION - /** @namespace std::this_thread * @brief ISO C++ 2011 entities sub-namespace for thread. * 30.3.2 Namespace this_thread. */ namespace this_thread { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /// get_id inline thread::id get_id() noexcept @@ -395,12 +401,11 @@ _GLIBCXX_END_NAMESPACE_VERSION __now = _Clock::now(); } } - - _GLIBCXX_END_NAMESPACE_VERSION } // @} group threads +_GLIBCXX_END_NAMESPACE_VERSION } // namespace #endif // _GLIBCXX_HAS_GTHREADS && _GLIBCXX_USE_C99_STDINT_TR1 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/array b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/array new file mode 100644 index 000000000..55fedfcfa --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/array @@ -0,0 +1,251 @@ +// class template array -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file tr1/array + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_ARRAY +#define _GLIBCXX_TR1_ARRAY 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /** + * @brief A standard container for storing a fixed size sequence of elements. + * + * @ingroup sequences + * + * Meets the requirements of a container, a + * reversible container, and a + * sequence. + * + * Sets support random access iterators. + * + * @param Tp Type of element. Required to be a complete type. + * @param N Number of elements. + */ + template + struct array + { + typedef _Tp value_type; + typedef value_type& reference; + typedef const value_type& const_reference; + typedef value_type* iterator; + typedef const value_type* const_iterator; + typedef std::size_t size_type; + typedef std::ptrdiff_t difference_type; + typedef std::reverse_iterator reverse_iterator; + typedef std::reverse_iterator const_reverse_iterator; + + // Support for zero-sized arrays mandatory. + value_type _M_instance[_Nm ? _Nm : 1]; + + // No explicit construct/copy/destroy for aggregate type. + + void + assign(const value_type& __u) + { std::fill_n(begin(), size(), __u); } + + void + swap(array& __other) + { std::swap_ranges(begin(), end(), __other.begin()); } + + // Iterators. + iterator + begin() + { return iterator(std::__addressof(_M_instance[0])); } + + const_iterator + begin() const + { return const_iterator(std::__addressof(_M_instance[0])); } + + iterator + end() + { return iterator(std::__addressof(_M_instance[_Nm])); } + + const_iterator + end() const + { return const_iterator(std::__addressof(_M_instance[_Nm])); } + + reverse_iterator + rbegin() + { return reverse_iterator(end()); } + + const_reverse_iterator + rbegin() const + { return const_reverse_iterator(end()); } + + reverse_iterator + rend() + { return reverse_iterator(begin()); } + + const_reverse_iterator + rend() const + { return const_reverse_iterator(begin()); } + + // Capacity. + size_type + size() const { return _Nm; } + + size_type + max_size() const { return _Nm; } + + bool + empty() const { return size() == 0; } + + // Element access. + reference + operator[](size_type __n) + { return _M_instance[__n]; } + + const_reference + operator[](size_type __n) const + { return _M_instance[__n]; } + + reference + at(size_type __n) + { + if (__n >= _Nm) + std::__throw_out_of_range(__N("array::at")); + return _M_instance[__n]; + } + + const_reference + at(size_type __n) const + { + if (__n >= _Nm) + std::__throw_out_of_range(__N("array::at")); + return _M_instance[__n]; + } + + reference + front() + { return *begin(); } + + const_reference + front() const + { return *begin(); } + + reference + back() + { return _Nm ? *(end() - 1) : *end(); } + + const_reference + back() const + { return _Nm ? *(end() - 1) : *end(); } + + _Tp* + data() + { return std::__addressof(_M_instance[0]); } + + const _Tp* + data() const + { return std::__addressof(_M_instance[0]); } + }; + + // Array comparisons. + template + inline bool + operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return std::equal(__one.begin(), __one.end(), __two.begin()); } + + template + inline bool + operator!=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one == __two); } + + template + inline bool + operator<(const array<_Tp, _Nm>& __a, const array<_Tp, _Nm>& __b) + { + return std::lexicographical_compare(__a.begin(), __a.end(), + __b.begin(), __b.end()); + } + + template + inline bool + operator>(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return __two < __one; } + + template + inline bool + operator<=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one > __two); } + + template + inline bool + operator>=(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) + { return !(__one < __two); } + + // Specialized algorithms [6.2.2.2]. + template + inline void + swap(array<_Tp, _Nm>& __one, array<_Tp, _Nm>& __two) + { __one.swap(__two); } + + // Tuple interface to class template array [6.2.2.5]. + + /// tuple_size + template + class tuple_size; + + /// tuple_element + template + class tuple_element; + + template + struct tuple_size > + { static const int value = _Nm; }; + + template + const int + tuple_size >::value; + + template + struct tuple_element<_Int, array<_Tp, _Nm> > + { typedef _Tp type; }; + + template + inline _Tp& + get(array<_Tp, _Nm>& __arr) + { return __arr[_Int]; } + + template + inline const _Tp& + get(const array<_Tp, _Nm>& __arr) + { return __arr[_Int]; } +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_ARRAY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/bessel_function.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/bessel_function.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/bessel_function.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/bessel_function.tcc index 7ba4c8a7f..26c66cabe 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/bessel_function.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/bessel_function.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -50,6 +50,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -64,8 +66,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Compute the gamma functions required by the Temme series * expansions of @f$ N_\nu(x) @f$ and @f$ K_\nu(x) @f$. @@ -626,13 +626,13 @@ namespace tr1 return __n_n; } } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_BESSEL_FUNCTION_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/beta_function.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/beta_function.tcc similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/beta_function.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/beta_function.tcc index 2770eef3c..b39f90176 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/beta_function.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/beta_function.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -48,6 +48,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -62,8 +64,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Return the beta function: \f$B(x,y)\f$. * @@ -195,13 +195,13 @@ namespace tr1 else return __beta_lgamma(__x, __y); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_BETA_FUNCTION_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ccomplex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ccomplex new file mode 100644 index 000000000..74c8161b2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ccomplex @@ -0,0 +1,34 @@ +// TR1 ccomplex -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file tr1/ccomplex + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CCOMPLEX +#define _GLIBCXX_TR1_CCOMPLEX 1 + +#include + +#endif // _GLIBCXX_TR1_CCOMPLEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cctype new file mode 100644 index 000000000..3048b21d2 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cctype @@ -0,0 +1,49 @@ +// TR1 cctype -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cctype + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CCTYPE +#define _GLIBCXX_TR1_CCTYPE 1 + +#include +#include + +#ifdef _GLIBCXX_USE_C99_CTYPE_TR1 + +#undef isblank + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ + using ::isblank; +} +} + +#endif + +#endif // _GLIBCXX_TR1_CCTYPE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cfenv b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cfenv new file mode 100644 index 000000000..2330d9750 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cfenv @@ -0,0 +1,81 @@ +// TR1 cfenv -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cfenv + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CFENV +#define _GLIBCXX_TR1_CFENV 1 + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HAVE_FENV_H +# include +#endif + +#ifdef _GLIBCXX_USE_C99_FENV_TR1 + +#undef feclearexcept +#undef fegetexceptflag +#undef feraiseexcept +#undef fesetexceptflag +#undef fetestexcept +#undef fegetround +#undef fesetround +#undef fegetenv +#undef feholdexcept +#undef fesetenv +#undef feupdateenv + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ + // types + using ::fenv_t; + using ::fexcept_t; + + // functions + using ::feclearexcept; + using ::fegetexceptflag; + using ::feraiseexcept; + using ::fesetexceptflag; + using ::fetestexcept; + + using ::fegetround; + using ::fesetround; + + using ::fegetenv; + using ::feholdexcept; + using ::fesetenv; + using ::feupdateenv; +} +} + +#endif // _GLIBCXX_USE_C99_FENV_TR1 + +#endif // _GLIBCXX_TR1_CFENV diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cfloat b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cfloat new file mode 100644 index 000000000..1564f5a49 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cfloat @@ -0,0 +1,42 @@ +// TR1 cfloat -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cfloat + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CFLOAT +#define _GLIBCXX_TR1_CFLOAT 1 + +#include + +#ifndef DECIMAL_DIG +#define DECIMAL_DIG __DECIMAL_DIG__ +#endif + +#ifndef FLT_EVAL_METHOD +#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__ +#endif + +#endif //_GLIBCXX_TR1_CFLOAT diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cinttypes b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cinttypes new file mode 100644 index 000000000..74944bcad --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cinttypes @@ -0,0 +1,84 @@ +// TR1 cinttypes -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cinttypes + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CINTTYPES +#define _GLIBCXX_TR1_CINTTYPES 1 + +#pragma GCC system_header + +#include + +// For 8.11.1/1 (see C99, Note 184) +#if _GLIBCXX_HAVE_INTTYPES_H +# ifndef __STDC_FORMAT_MACROS +# define _UNDEF__STDC_FORMAT_MACROS +# define __STDC_FORMAT_MACROS +# endif +# include +# ifdef _UNDEF__STDC_FORMAT_MACROS +# undef __STDC_FORMAT_MACROS +# undef _UNDEF__STDC_FORMAT_MACROS +# endif +#endif + +#ifdef _GLIBCXX_USE_C99_INTTYPES_TR1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ + // types + using ::imaxdiv_t; + + // functions + using ::imaxabs; + + // May collide with _Longlong abs(_Longlong), and is not described + // anywhere outside the synopsis. Likely, a defect. + // + // intmax_t abs(intmax_t) + + using ::imaxdiv; + + // Likewise, with lldiv_t div(_Longlong, _Longlong). + // + // imaxdiv_t div(intmax_t, intmax_t) + + using ::strtoimax; + using ::strtoumax; + +#if defined(_GLIBCXX_USE_WCHAR_T) && _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 + using ::wcstoimax; + using ::wcstoumax; +#endif +} +} + +#endif // _GLIBCXX_USE_C99_INTTYPES_TR1 + +#endif // _GLIBCXX_TR1_CINTTYPES diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/climits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/climits new file mode 100644 index 000000000..377171658 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/climits @@ -0,0 +1,46 @@ +// TR1 climits -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/climits + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CLIMITS +#define _GLIBCXX_TR1_CLIMITS 1 + +#include + +#ifndef LLONG_MIN +#define LLONG_MIN (-__LONG_LONG_MAX__ - 1) +#endif + +#ifndef LLONG_MAX +#define LLONG_MAX __LONG_LONG_MAX__ +#endif + +#ifndef ULLONG_MAX +#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1) +#endif + +#endif // _GLIBCXX_TR1_CLIMITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cmath new file mode 100644 index 000000000..c07dd5c73 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cmath @@ -0,0 +1,1701 @@ +// TR1 cmath -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cmath + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CMATH +#define _GLIBCXX_TR1_CMATH 1 + +#pragma GCC system_header + +#include + +#ifdef _GLIBCXX_USE_C99_MATH_TR1 + +#undef acosh +#undef acoshf +#undef acoshl +#undef asinh +#undef asinhf +#undef asinhl +#undef atanh +#undef atanhf +#undef atanhl +#undef cbrt +#undef cbrtf +#undef cbrtl +#undef copysign +#undef copysignf +#undef copysignl +#undef erf +#undef erff +#undef erfl +#undef erfc +#undef erfcf +#undef erfcl +#undef exp2 +#undef exp2f +#undef exp2l +#undef expm1 +#undef expm1f +#undef expm1l +#undef fdim +#undef fdimf +#undef fdiml +#undef fma +#undef fmaf +#undef fmal +#undef fmax +#undef fmaxf +#undef fmaxl +#undef fmin +#undef fminf +#undef fminl +#undef hypot +#undef hypotf +#undef hypotl +#undef ilogb +#undef ilogbf +#undef ilogbl +#undef lgamma +#undef lgammaf +#undef lgammal +#undef llrint +#undef llrintf +#undef llrintl +#undef llround +#undef llroundf +#undef llroundl +#undef log1p +#undef log1pf +#undef log1pl +#undef log2 +#undef log2f +#undef log2l +#undef logb +#undef logbf +#undef logbl +#undef lrint +#undef lrintf +#undef lrintl +#undef lround +#undef lroundf +#undef lroundl +#undef nan +#undef nanf +#undef nanl +#undef nearbyint +#undef nearbyintf +#undef nearbyintl +#undef nextafter +#undef nextafterf +#undef nextafterl +#undef nexttoward +#undef nexttowardf +#undef nexttowardl +#undef remainder +#undef remainderf +#undef remainderl +#undef remquo +#undef remquof +#undef remquol +#undef rint +#undef rintf +#undef rintl +#undef round +#undef roundf +#undef roundl +#undef scalbln +#undef scalblnf +#undef scalblnl +#undef scalbn +#undef scalbnf +#undef scalbnl +#undef tgamma +#undef tgammaf +#undef tgammal +#undef trunc +#undef truncf +#undef truncl + +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ +#if _GLIBCXX_USE_C99_MATH_TR1 + + // Using declarations to bring names from libc's into std::tr1. + + // types + using ::double_t; + using ::float_t; + + // functions + using ::acosh; + using ::acoshf; + using ::acoshl; + + using ::asinh; + using ::asinhf; + using ::asinhl; + + using ::atanh; + using ::atanhf; + using ::atanhl; + + using ::cbrt; + using ::cbrtf; + using ::cbrtl; + + using ::copysign; + using ::copysignf; + using ::copysignl; + + using ::erf; + using ::erff; + using ::erfl; + + using ::erfc; + using ::erfcf; + using ::erfcl; + + using ::exp2; + using ::exp2f; + using ::exp2l; + + using ::expm1; + using ::expm1f; + using ::expm1l; + + using ::fdim; + using ::fdimf; + using ::fdiml; + + using ::fma; + using ::fmaf; + using ::fmal; + + using ::fmax; + using ::fmaxf; + using ::fmaxl; + + using ::fmin; + using ::fminf; + using ::fminl; + + using ::hypot; + using ::hypotf; + using ::hypotl; + + using ::ilogb; + using ::ilogbf; + using ::ilogbl; + + using ::lgamma; + using ::lgammaf; + using ::lgammal; + + using ::llrint; + using ::llrintf; + using ::llrintl; + + using ::llround; + using ::llroundf; + using ::llroundl; + + using ::log1p; + using ::log1pf; + using ::log1pl; + + using ::log2; + using ::log2f; + using ::log2l; + + using ::logb; + using ::logbf; + using ::logbl; + + using ::lrint; + using ::lrintf; + using ::lrintl; + + using ::lround; + using ::lroundf; + using ::lroundl; + + using ::nan; + using ::nanf; + using ::nanl; + + using ::nearbyint; + using ::nearbyintf; + using ::nearbyintl; + + using ::nextafter; + using ::nextafterf; + using ::nextafterl; + + using ::nexttoward; + using ::nexttowardf; + using ::nexttowardl; + + using ::remainder; + using ::remainderf; + using ::remainderl; + + using ::remquo; + using ::remquof; + using ::remquol; + + using ::rint; + using ::rintf; + using ::rintl; + + using ::round; + using ::roundf; + using ::roundl; + + using ::scalbln; + using ::scalblnf; + using ::scalblnl; + + using ::scalbn; + using ::scalbnf; + using ::scalbnl; + + using ::tgamma; + using ::tgammaf; + using ::tgammal; + + using ::trunc; + using ::truncf; + using ::truncl; + +#endif + +#if _GLIBCXX_USE_C99_MATH +#if !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC + + /// Function template definitions [8.16.3]. + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + fpclassify(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_fpclassify(FP_NAN, FP_INFINITE, FP_NORMAL, + FP_SUBNORMAL, FP_ZERO, __type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isfinite(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isfinite(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isinf(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isinf(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isnan(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isnan(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isnormal(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isnormal(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + signbit(_Tp __f) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_signbit(__type(__f)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isgreater(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isgreater(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isgreaterequal(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isgreaterequal(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isless(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isless(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + islessequal(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_islessequal(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + islessgreater(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_islessgreater(__type(__f1), __type(__f2)); + } + + template + inline typename __gnu_cxx::__enable_if<__is_arithmetic<_Tp>::__value, + int>::__type + isunordered(_Tp __f1, _Tp __f2) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __builtin_isunordered(__type(__f1), __type(__f2)); + } + +#endif +#endif + +#if _GLIBCXX_USE_C99_MATH_TR1 + + /** Additional overloads [8.16.4]. + * @{ + */ + + // For functions defined in C++03 the additional overloads are already + // declared in so we can just re-declare them in std::tr1. + + using std::acos; + using std::asin; + using std::atan; + using std::atan2; + using std::ceil; + using std::cos; + using std::cosh; + using std::exp; + using std::floor; + using std::fmod; + using std::frexp; + using std::ldexp; + using std::log; + using std::log10; + using std::sin; + using std::sinh; + using std::sqrt; + using std::tan; + using std::tanh; + +#if __cplusplus >= 201103L + + // Since C++11, defines additional overloads for these functions + // in namespace std. + + using std::acosh; + using std::asinh; + using std::atanh; + using std::cbrt; + using std::copysign; + using std::erf; + using std::erfc; + using std::exp2; + using std::expm1; + using std::fdim; + using std::fma; + using std::fmax; + using std::fmin; + using std::hypot; + using std::ilogb; + using std::lgamma; + using std::llrint; + using std::llround; + using std::log1p; + using std::log2; + using std::logb; + using std::lrint; + using std::lround; + using std::nan; + using std::nearbyint; + using std::nextafter; + using std::nexttoward; + using std::remainder; + using std::remquo; + using std::rint; + using std::round; + using std::scalbln; + using std::scalbn; + using std::tgamma; + using std::trunc; + +#else // __cplusplus < 201103L + + // In C++03 we need to provide the additional overloads. + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + acosh(float __x) + { return __builtin_acoshf(__x); } + + inline long double + acosh(long double __x) + { return __builtin_acoshl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + acosh(_Tp __x) + { return __builtin_acosh(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + asinh(float __x) + { return __builtin_asinhf(__x); } + + inline long double + asinh(long double __x) + { return __builtin_asinhl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + asinh(_Tp __x) + { return __builtin_asinh(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + atanh(float __x) + { return __builtin_atanhf(__x); } + + inline long double + atanh(long double __x) + { return __builtin_atanhl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + atanh(_Tp __x) + { return __builtin_atanh(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + cbrt(float __x) + { return __builtin_cbrtf(__x); } + + inline long double + cbrt(long double __x) + { return __builtin_cbrtl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + cbrt(_Tp __x) + { return __builtin_cbrt(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + copysign(float __x, float __y) + { return __builtin_copysignf(__x, __y); } + + inline long double + copysign(long double __x, long double __y) + { return __builtin_copysignl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + copysign(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return copysign(__type(__x), __type(__y)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + erf(float __x) + { return __builtin_erff(__x); } + + inline long double + erf(long double __x) + { return __builtin_erfl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erf(_Tp __x) + { return __builtin_erf(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + erfc(float __x) + { return __builtin_erfcf(__x); } + + inline long double + erfc(long double __x) + { return __builtin_erfcl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + erfc(_Tp __x) + { return __builtin_erfc(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + exp2(float __x) + { return __builtin_exp2f(__x); } + + inline long double + exp2(long double __x) + { return __builtin_exp2l(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + exp2(_Tp __x) + { return __builtin_exp2(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + expm1(float __x) + { return __builtin_expm1f(__x); } + + inline long double + expm1(long double __x) + { return __builtin_expm1l(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + expm1(_Tp __x) + { return __builtin_expm1(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + fdim(float __x, float __y) + { return __builtin_fdimf(__x, __y); } + + inline long double + fdim(long double __x, long double __y) + { return __builtin_fdiml(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fdim(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fdim(__type(__x), __type(__y)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + fma(float __x, float __y, float __z) + { return __builtin_fmaf(__x, __y, __z); } + + inline long double + fma(long double __x, long double __y, long double __z) + { return __builtin_fmal(__x, __y, __z); } +#endif + + template + inline typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type + fma(_Tp __x, _Up __y, _Vp __z) + { + typedef typename __gnu_cxx::__promote_3<_Tp, _Up, _Vp>::__type __type; + return fma(__type(__x), __type(__y), __type(__z)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + fmax(float __x, float __y) + { return __builtin_fmaxf(__x, __y); } + + inline long double + fmax(long double __x, long double __y) + { return __builtin_fmaxl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmax(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmax(__type(__x), __type(__y)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + fmin(float __x, float __y) + { return __builtin_fminf(__x, __y); } + + inline long double + fmin(long double __x, long double __y) + { return __builtin_fminl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + fmin(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return fmin(__type(__x), __type(__y)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + hypot(float __x, float __y) + { return __builtin_hypotf(__x, __y); } + + inline long double + hypot(long double __x, long double __y) + { return __builtin_hypotl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + hypot(_Tp __y, _Up __x) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return hypot(__type(__y), __type(__x)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline int + ilogb(float __x) + { return __builtin_ilogbf(__x); } + + inline int + ilogb(long double __x) + { return __builtin_ilogbl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + int>::__type + ilogb(_Tp __x) + { return __builtin_ilogb(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + lgamma(float __x) + { return __builtin_lgammaf(__x); } + + inline long double + lgamma(long double __x) + { return __builtin_lgammal(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + lgamma(_Tp __x) + { return __builtin_lgamma(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline long long + llrint(float __x) + { return __builtin_llrintf(__x); } + + inline long long + llrint(long double __x) + { return __builtin_llrintl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llrint(_Tp __x) + { return __builtin_llrint(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline long long + llround(float __x) + { return __builtin_llroundf(__x); } + + inline long long + llround(long double __x) + { return __builtin_llroundl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long long>::__type + llround(_Tp __x) + { return __builtin_llround(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + log1p(float __x) + { return __builtin_log1pf(__x); } + + inline long double + log1p(long double __x) + { return __builtin_log1pl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log1p(_Tp __x) + { return __builtin_log1p(__x); } + + // DR 568. +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + log2(float __x) + { return __builtin_log2f(__x); } + + inline long double + log2(long double __x) + { return __builtin_log2l(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + log2(_Tp __x) + { return __builtin_log2(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + logb(float __x) + { return __builtin_logbf(__x); } + + inline long double + logb(long double __x) + { return __builtin_logbl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + logb(_Tp __x) + { + return __builtin_logb(__x); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline long + lrint(float __x) + { return __builtin_lrintf(__x); } + + inline long + lrint(long double __x) + { return __builtin_lrintl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lrint(_Tp __x) + { return __builtin_lrint(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline long + lround(float __x) + { return __builtin_lroundf(__x); } + + inline long + lround(long double __x) + { return __builtin_lroundl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + long>::__type + lround(_Tp __x) + { return __builtin_lround(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + nearbyint(float __x) + { return __builtin_nearbyintf(__x); } + + inline long double + nearbyint(long double __x) + { return __builtin_nearbyintl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nearbyint(_Tp __x) + { return __builtin_nearbyint(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + nextafter(float __x, float __y) + { return __builtin_nextafterf(__x, __y); } + + inline long double + nextafter(long double __x, long double __y) + { return __builtin_nextafterl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + nextafter(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return nextafter(__type(__x), __type(__y)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + nexttoward(float __x, long double __y) + { return __builtin_nexttowardf(__x, __y); } + + inline long double + nexttoward(long double __x, long double __y) + { return __builtin_nexttowardl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + nexttoward(_Tp __x, long double __y) + { return __builtin_nexttoward(__x, __y); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + remainder(float __x, float __y) + { return __builtin_remainderf(__x, __y); } + + inline long double + remainder(long double __x, long double __y) + { return __builtin_remainderl(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remainder(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remainder(__type(__x), __type(__y)); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + remquo(float __x, float __y, int* __pquo) + { return __builtin_remquof(__x, __y, __pquo); } + + inline long double + remquo(long double __x, long double __y, int* __pquo) + { return __builtin_remquol(__x, __y, __pquo); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + remquo(_Tp __x, _Up __y, int* __pquo) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return remquo(__type(__x), __type(__y), __pquo); + } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + rint(float __x) + { return __builtin_rintf(__x); } + + inline long double + rint(long double __x) + { return __builtin_rintl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + rint(_Tp __x) + { return __builtin_rint(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + round(float __x) + { return __builtin_roundf(__x); } + + inline long double + round(long double __x) + { return __builtin_roundl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + round(_Tp __x) + { return __builtin_round(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + scalbln(float __x, long __ex) + { return __builtin_scalblnf(__x, __ex); } + + inline long double + scalbln(long double __x, long __ex) + { return __builtin_scalblnl(__x, __ex); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbln(_Tp __x, long __ex) + { return __builtin_scalbln(__x, __ex); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + scalbn(float __x, int __ex) + { return __builtin_scalbnf(__x, __ex); } + + inline long double + scalbn(long double __x, int __ex) + { return __builtin_scalbnl(__x, __ex); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + scalbn(_Tp __x, int __ex) + { return __builtin_scalbn(__x, __ex); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + tgamma(float __x) + { return __builtin_tgammaf(__x); } + + inline long double + tgamma(long double __x) + { return __builtin_tgammal(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + tgamma(_Tp __x) + { return __builtin_tgamma(__x); } + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + trunc(float __x) + { return __builtin_truncf(__x); } + + inline long double + trunc(long double __x) + { return __builtin_truncl(__x); } +#endif + + template + inline typename __gnu_cxx::__enable_if<__is_integer<_Tp>::__value, + double>::__type + trunc(_Tp __x) + { return __builtin_trunc(__x); } + +#endif // __cplusplus < 201103L + + // @} + +#endif /* _GLIBCXX_USE_C99_MATH_TR1 */ + + // DR 550. What should the return type of pow(float,int) be? + // NB: C++11 and TR1 != C++03. + + // We cannot do "using std::pow;" because that would bring in unwanted + // pow(*, int) overloads in C++03, with the wrong return type. Instead we + // define all the necessary overloads, but the std::tr1::pow(double, double) + // overload cannot be provided here, because would add it to + // the global namespace where it would clash with ::pow(double,double) from + // libc (revealed by the fix of PR c++/54537). + // The solution is to forward std::tr1::pow(double,double) to + // std::pow(double,double) via the function template below. See + // the discussion about this issue here: + // http://gcc.gnu.org/ml/gcc-patches/2012-09/msg01278.html + +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + pow(float __x, float __y) + { return std::pow(__x, __y); } + + inline long double + pow(long double __x, long double __y) + { return std::pow(__x, __y); } +#endif + + template + inline typename __gnu_cxx::__promote_2<_Tp, _Up>::__type + pow(_Tp __x, _Up __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(__type(__x), __type(__y)); + } + +#if __cplusplus >= 201103L + // We also deal with fabs in a special way, because "using std::fabs;" + // could bring in C++11's std::fabs(const std::complex&) with a + // different return type from std::tr1::fabs(const std::complex&). + // We define the necessary overloads, except std::tr1::fabs(double) which + // could clash with ::fabs(double) from libc. + // The function template handles double as well as integers, forwarding + // to std::fabs. + +#ifndef __CORRECT_ISO_CPP_MATH_H_PROTO +#ifndef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP + inline float + fabs(float __x) + { return __builtin_fabsf(__x); } + + inline long double + fabs(long double __x) + { return __builtin_fabsl(__x); } +#endif +#endif + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + fabs(_Tp __x) + { return std::fabs(__x); } + +#else // ! C++11 + + // For C++03 just use std::fabs as there is no overload for std::complex<>. + using std::fabs; + +#endif // C++11 + +#if _GLIBCXX_USE_STD_SPEC_FUNCS + + /** + * @defgroup tr1_math_spec_func Mathematical Special Functions + * @ingroup numerics + * + * A collection of advanced mathematical special functions. + * @{ + */ + + using std::assoc_laguerref; + using std::assoc_laguerrel; + using std::assoc_laguerre; + + using std::assoc_legendref; + using std::assoc_legendrel; + using std::assoc_legendre; + + using std::betaf; + using std::betal; + using std::beta; + + using std::comp_ellint_1f; + using std::comp_ellint_1l; + using std::comp_ellint_1; + + using std::comp_ellint_2f; + using std::comp_ellint_2l; + using std::comp_ellint_2; + + using std::comp_ellint_3f; + using std::comp_ellint_3l; + using std::comp_ellint_3; + + using std::cyl_bessel_if; + using std::cyl_bessel_il; + using std::cyl_bessel_i; + + using std::cyl_bessel_jf; + using std::cyl_bessel_jl; + using std::cyl_bessel_j; + + using std::cyl_bessel_kf; + using std::cyl_bessel_kl; + using std::cyl_bessel_k; + + using std::cyl_neumannf; + using std::cyl_neumannl; + using std::cyl_neumann; + + using std::ellint_1f; + using std::ellint_1l; + using std::ellint_1; + + using std::ellint_2f; + using std::ellint_2l; + using std::ellint_2; + + using std::ellint_3f; + using std::ellint_3l; + using std::ellint_3; + + using std::expintf; + using std::expintl; + using std::expint; + + using std::hermitef; + using std::hermitel; + using std::hermite; + + using std::laguerref; + using std::laguerrel; + using std::laguerre; + + using std::legendref; + using std::legendrel; + using std::legendre; + + using std::riemann_zetaf; + using std::riemann_zetal; + using std::riemann_zeta; + + using std::sph_besself; + using std::sph_bessell; + using std::sph_bessel; + + using std::sph_legendref; + using std::sph_legendrel; + using std::sph_legendre; + + using std::sph_neumannf; + using std::sph_neumannl; + using std::sph_neumann; + + /* @} */ // tr1_math_spec_func + +#else // ! _GLIBCXX_USE_STD_SPEC_FUNCS + +} // namespace tr1 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /** + * @defgroup tr1_math_spec_func Mathematical Special Functions + * @ingroup numerics + * + * A collection of advanced mathematical special functions. + * @{ + */ + + inline float + assoc_laguerref(unsigned int __n, unsigned int __m, float __x) + { return __detail::__assoc_laguerre(__n, __m, __x); } + + inline long double + assoc_laguerrel(unsigned int __n, unsigned int __m, long double __x) + { + return __detail::__assoc_laguerre(__n, __m, __x); + } + + /// 5.2.1.1 Associated Laguerre polynomials. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + assoc_laguerre(unsigned int __n, unsigned int __m, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__assoc_laguerre<__type>(__n, __m, __x); + } + + inline float + assoc_legendref(unsigned int __l, unsigned int __m, float __x) + { return __detail::__assoc_legendre_p(__l, __m, __x); } + + inline long double + assoc_legendrel(unsigned int __l, unsigned int __m, long double __x) + { return __detail::__assoc_legendre_p(__l, __m, __x); } + + /// 5.2.1.2 Associated Legendre functions. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + assoc_legendre(unsigned int __l, unsigned int __m, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__assoc_legendre_p<__type>(__l, __m, __x); + } + + inline float + betaf(float __x, float __y) + { return __detail::__beta(__x, __y); } + + inline long double + betal(long double __x, long double __y) + { return __detail::__beta(__x, __y); } + + /// 5.2.1.3 Beta functions. + template + inline typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type + beta(_Tpx __x, _Tpy __y) + { + typedef typename __gnu_cxx::__promote_2<_Tpx, _Tpy>::__type __type; + return __detail::__beta<__type>(__x, __y); + } + + inline float + comp_ellint_1f(float __k) + { return __detail::__comp_ellint_1(__k); } + + inline long double + comp_ellint_1l(long double __k) + { return __detail::__comp_ellint_1(__k); } + + /// 5.2.1.4 Complete elliptic integrals of the first kind. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + comp_ellint_1(_Tp __k) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__comp_ellint_1<__type>(__k); + } + + inline float + comp_ellint_2f(float __k) + { return __detail::__comp_ellint_2(__k); } + + inline long double + comp_ellint_2l(long double __k) + { return __detail::__comp_ellint_2(__k); } + + /// 5.2.1.5 Complete elliptic integrals of the second kind. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + comp_ellint_2(_Tp __k) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__comp_ellint_2<__type>(__k); + } + + inline float + comp_ellint_3f(float __k, float __nu) + { return __detail::__comp_ellint_3(__k, __nu); } + + inline long double + comp_ellint_3l(long double __k, long double __nu) + { return __detail::__comp_ellint_3(__k, __nu); } + + /// 5.2.1.6 Complete elliptic integrals of the third kind. + template + inline typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type + comp_ellint_3(_Tp __k, _Tpn __nu) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Tpn>::__type __type; + return __detail::__comp_ellint_3<__type>(__k, __nu); + } + + inline float + cyl_bessel_if(float __nu, float __x) + { return __detail::__cyl_bessel_i(__nu, __x); } + + inline long double + cyl_bessel_il(long double __nu, long double __x) + { return __detail::__cyl_bessel_i(__nu, __x); } + + /// 5.2.1.8 Regular modified cylindrical Bessel functions. + template + inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type + cyl_bessel_i(_Tpnu __nu, _Tp __x) + { + typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; + return __detail::__cyl_bessel_i<__type>(__nu, __x); + } + + inline float + cyl_bessel_jf(float __nu, float __x) + { return __detail::__cyl_bessel_j(__nu, __x); } + + inline long double + cyl_bessel_jl(long double __nu, long double __x) + { return __detail::__cyl_bessel_j(__nu, __x); } + + /// 5.2.1.9 Cylindrical Bessel functions (of the first kind). + template + inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type + cyl_bessel_j(_Tpnu __nu, _Tp __x) + { + typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; + return __detail::__cyl_bessel_j<__type>(__nu, __x); + } + + inline float + cyl_bessel_kf(float __nu, float __x) + { return __detail::__cyl_bessel_k(__nu, __x); } + + inline long double + cyl_bessel_kl(long double __nu, long double __x) + { return __detail::__cyl_bessel_k(__nu, __x); } + + /// 5.2.1.10 Irregular modified cylindrical Bessel functions. + template + inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type + cyl_bessel_k(_Tpnu __nu, _Tp __x) + { + typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; + return __detail::__cyl_bessel_k<__type>(__nu, __x); + } + + inline float + cyl_neumannf(float __nu, float __x) + { return __detail::__cyl_neumann_n(__nu, __x); } + + inline long double + cyl_neumannl(long double __nu, long double __x) + { return __detail::__cyl_neumann_n(__nu, __x); } + + /// 5.2.1.11 Cylindrical Neumann functions. + template + inline typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type + cyl_neumann(_Tpnu __nu, _Tp __x) + { + typedef typename __gnu_cxx::__promote_2<_Tpnu, _Tp>::__type __type; + return __detail::__cyl_neumann_n<__type>(__nu, __x); + } + + inline float + ellint_1f(float __k, float __phi) + { return __detail::__ellint_1(__k, __phi); } + + inline long double + ellint_1l(long double __k, long double __phi) + { return __detail::__ellint_1(__k, __phi); } + + /// 5.2.1.12 Incomplete elliptic integrals of the first kind. + template + inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type + ellint_1(_Tp __k, _Tpp __phi) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; + return __detail::__ellint_1<__type>(__k, __phi); + } + + inline float + ellint_2f(float __k, float __phi) + { return __detail::__ellint_2(__k, __phi); } + + inline long double + ellint_2l(long double __k, long double __phi) + { return __detail::__ellint_2(__k, __phi); } + + /// 5.2.1.13 Incomplete elliptic integrals of the second kind. + template + inline typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type + ellint_2(_Tp __k, _Tpp __phi) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Tpp>::__type __type; + return __detail::__ellint_2<__type>(__k, __phi); + } + + inline float + ellint_3f(float __k, float __nu, float __phi) + { return __detail::__ellint_3(__k, __nu, __phi); } + + inline long double + ellint_3l(long double __k, long double __nu, long double __phi) + { return __detail::__ellint_3(__k, __nu, __phi); } + + /// 5.2.1.14 Incomplete elliptic integrals of the third kind. + template + inline typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type + ellint_3(_Tp __k, _Tpn __nu, _Tpp __phi) + { + typedef typename __gnu_cxx::__promote_3<_Tp, _Tpn, _Tpp>::__type __type; + return __detail::__ellint_3<__type>(__k, __nu, __phi); + } + + inline float + expintf(float __x) + { return __detail::__expint(__x); } + + inline long double + expintl(long double __x) + { return __detail::__expint(__x); } + + /// 5.2.1.15 Exponential integrals. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + expint(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__expint<__type>(__x); + } + + inline float + hermitef(unsigned int __n, float __x) + { return __detail::__poly_hermite(__n, __x); } + + inline long double + hermitel(unsigned int __n, long double __x) + { return __detail::__poly_hermite(__n, __x); } + + /// 5.2.1.16 Hermite polynomials. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + hermite(unsigned int __n, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__poly_hermite<__type>(__n, __x); + } + + inline float + laguerref(unsigned int __n, float __x) + { return __detail::__laguerre(__n, __x); } + + inline long double + laguerrel(unsigned int __n, long double __x) + { return __detail::__laguerre(__n, __x); } + + /// 5.2.1.18 Laguerre polynomials. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + laguerre(unsigned int __n, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__laguerre<__type>(__n, __x); + } + + inline float + legendref(unsigned int __n, float __x) + { return __detail::__poly_legendre_p(__n, __x); } + + inline long double + legendrel(unsigned int __n, long double __x) + { return __detail::__poly_legendre_p(__n, __x); } + + /// 5.2.1.19 Legendre polynomials. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + legendre(unsigned int __n, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__poly_legendre_p<__type>(__n, __x); + } + + inline float + riemann_zetaf(float __x) + { return __detail::__riemann_zeta(__x); } + + inline long double + riemann_zetal(long double __x) + { return __detail::__riemann_zeta(__x); } + + /// 5.2.1.20 Riemann zeta function. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + riemann_zeta(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__riemann_zeta<__type>(__x); + } + + inline float + sph_besself(unsigned int __n, float __x) + { return __detail::__sph_bessel(__n, __x); } + + inline long double + sph_bessell(unsigned int __n, long double __x) + { return __detail::__sph_bessel(__n, __x); } + + /// 5.2.1.21 Spherical Bessel functions. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + sph_bessel(unsigned int __n, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__sph_bessel<__type>(__n, __x); + } + + inline float + sph_legendref(unsigned int __l, unsigned int __m, float __theta) + { return __detail::__sph_legendre(__l, __m, __theta); } + + inline long double + sph_legendrel(unsigned int __l, unsigned int __m, long double __theta) + { return __detail::__sph_legendre(__l, __m, __theta); } + + /// 5.2.1.22 Spherical associated Legendre functions. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + sph_legendre(unsigned int __l, unsigned int __m, _Tp __theta) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__sph_legendre<__type>(__l, __m, __theta); + } + + inline float + sph_neumannf(unsigned int __n, float __x) + { return __detail::__sph_neumann(__n, __x); } + + inline long double + sph_neumannl(unsigned int __n, long double __x) + { return __detail::__sph_neumann(__n, __x); } + + /// 5.2.1.23 Spherical Neumann functions. + template + inline typename __gnu_cxx::__promote<_Tp>::__type + sph_neumann(unsigned int __n, _Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __detail::__sph_neumann<__type>(__n, __x); + } + + /* @} */ // tr1_math_spec_func +#endif // _GLIBCXX_USE_STD_SPEC_FUNCS + +} // namespace tr1 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#if _GLIBCXX_USE_STD_SPEC_FUNCS && !defined(__STRICT_ANSI__) +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + using __gnu_cxx::conf_hypergf; + using __gnu_cxx::conf_hypergl; + using __gnu_cxx::conf_hyperg; + + using __gnu_cxx::hypergf; + using __gnu_cxx::hypergl; + using __gnu_cxx::hyperg; +} // namespace tr1 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#else // ! (_GLIBCXX_USE_STD_SPEC_FUNCS && !defined(__STRICT_ANSI__)) + +#include +#include +#include + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + inline float + conf_hypergf(float __a, float __c, float __x) + { return __detail::__conf_hyperg(__a, __c, __x); } + + inline long double + conf_hypergl(long double __a, long double __c, long double __x) + { return __detail::__conf_hyperg(__a, __c, __x); } + + /// 5.2.1.7 Confluent hypergeometric functions. + template + inline typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type + conf_hyperg(_Tpa __a, _Tpc __c, _Tp __x) + { + typedef typename __gnu_cxx::__promote_3<_Tpa, _Tpc, _Tp>::__type __type; + return __detail::__conf_hyperg<__type>(__a, __c, __x); + } + + inline float + hypergf(float __a, float __b, float __c, float __x) + { return __detail::__hyperg(__a, __b, __c, __x); } + + inline long double + hypergl(long double __a, long double __b, long double __c, long double __x) + { return __detail::__hyperg(__a, __b, __c, __x); } + + /// 5.2.1.17 Hypergeometric functions. + template + inline typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type + hyperg(_Tpa __a, _Tpb __b, _Tpc __c, _Tp __x) + { + typedef typename __gnu_cxx::__promote_4<_Tpa, _Tpb, _Tpc, _Tp>::__type __type; + return __detail::__hyperg<__type>(__a, __b, __c, __x); + } + +} // namespace tr1 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std +#endif // _GLIBCXX_USE_STD_SPEC_FUNCS && !defined(__STRICT_ANSI__) + +#endif // _GLIBCXX_TR1_CMATH diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/complex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/complex new file mode 100644 index 000000000..e7b3c4650 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/complex @@ -0,0 +1,420 @@ +// TR1 complex -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/complex + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_COMPLEX +#define _GLIBCXX_TR1_COMPLEX 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /** + * @addtogroup complex_numbers + * @{ + */ + +#if __cplusplus >= 201103L + using std::acos; + using std::asin; + using std::atan; + using std::acosh; + using std::asinh; + using std::atanh; +#else + template std::complex<_Tp> acos(const std::complex<_Tp>&); + template std::complex<_Tp> asin(const std::complex<_Tp>&); + template std::complex<_Tp> atan(const std::complex<_Tp>&); + template std::complex<_Tp> acosh(const std::complex<_Tp>&); + template std::complex<_Tp> asinh(const std::complex<_Tp>&); + template std::complex<_Tp> atanh(const std::complex<_Tp>&); +#endif + + // The std::fabs return type in C++11 mode is different (just _Tp). + template std::complex<_Tp> fabs(const std::complex<_Tp>&); + +#if __cplusplus < 201103L + template + inline std::complex<_Tp> + __complex_acos(const std::complex<_Tp>& __z) + { + const std::complex<_Tp> __t = std::tr1::asin(__z); + const _Tp __pi_2 = 1.5707963267948966192313216916397514L; + return std::complex<_Tp>(__pi_2 - __t.real(), -__t.imag()); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_acos(__complex__ float __z) + { return __builtin_cacosf(__z); } + + inline __complex__ double + __complex_acos(__complex__ double __z) + { return __builtin_cacos(__z); } + + inline __complex__ long double + __complex_acos(const __complex__ long double& __z) + { return __builtin_cacosl(__z); } + + template + inline std::complex<_Tp> + acos(const std::complex<_Tp>& __z) + { return __complex_acos(__z.__rep()); } +#else + /// acos(__z) [8.1.2]. + // Effects: Behaves the same as C99 function cacos, defined + // in subclause 7.3.5.1. + template + inline std::complex<_Tp> + acos(const std::complex<_Tp>& __z) + { return __complex_acos(__z); } +#endif + + template + inline std::complex<_Tp> + __complex_asin(const std::complex<_Tp>& __z) + { + std::complex<_Tp> __t(-__z.imag(), __z.real()); + __t = std::tr1::asinh(__t); + return std::complex<_Tp>(__t.imag(), -__t.real()); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_asin(__complex__ float __z) + { return __builtin_casinf(__z); } + + inline __complex__ double + __complex_asin(__complex__ double __z) + { return __builtin_casin(__z); } + + inline __complex__ long double + __complex_asin(const __complex__ long double& __z) + { return __builtin_casinl(__z); } + + template + inline std::complex<_Tp> + asin(const std::complex<_Tp>& __z) + { return __complex_asin(__z.__rep()); } +#else + /// asin(__z) [8.1.3]. + // Effects: Behaves the same as C99 function casin, defined + // in subclause 7.3.5.2. + template + inline std::complex<_Tp> + asin(const std::complex<_Tp>& __z) + { return __complex_asin(__z); } +#endif + + template + std::complex<_Tp> + __complex_atan(const std::complex<_Tp>& __z) + { + const _Tp __r2 = __z.real() * __z.real(); + const _Tp __x = _Tp(1.0) - __r2 - __z.imag() * __z.imag(); + + _Tp __num = __z.imag() + _Tp(1.0); + _Tp __den = __z.imag() - _Tp(1.0); + + __num = __r2 + __num * __num; + __den = __r2 + __den * __den; + + return std::complex<_Tp>(_Tp(0.5) * atan2(_Tp(2.0) * __z.real(), __x), + _Tp(0.25) * log(__num / __den)); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_atan(__complex__ float __z) + { return __builtin_catanf(__z); } + + inline __complex__ double + __complex_atan(__complex__ double __z) + { return __builtin_catan(__z); } + + inline __complex__ long double + __complex_atan(const __complex__ long double& __z) + { return __builtin_catanl(__z); } + + template + inline std::complex<_Tp> + atan(const std::complex<_Tp>& __z) + { return __complex_atan(__z.__rep()); } +#else + /// atan(__z) [8.1.4]. + // Effects: Behaves the same as C99 function catan, defined + // in subclause 7.3.5.3. + template + inline std::complex<_Tp> + atan(const std::complex<_Tp>& __z) + { return __complex_atan(__z); } +#endif + + template + std::complex<_Tp> + __complex_acosh(const std::complex<_Tp>& __z) + { + // Kahan's formula. + return _Tp(2.0) * std::log(std::sqrt(_Tp(0.5) * (__z + _Tp(1.0))) + + std::sqrt(_Tp(0.5) * (__z - _Tp(1.0)))); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_acosh(__complex__ float __z) + { return __builtin_cacoshf(__z); } + + inline __complex__ double + __complex_acosh(__complex__ double __z) + { return __builtin_cacosh(__z); } + + inline __complex__ long double + __complex_acosh(const __complex__ long double& __z) + { return __builtin_cacoshl(__z); } + + template + inline std::complex<_Tp> + acosh(const std::complex<_Tp>& __z) + { return __complex_acosh(__z.__rep()); } +#else + /// acosh(__z) [8.1.5]. + // Effects: Behaves the same as C99 function cacosh, defined + // in subclause 7.3.6.1. + template + inline std::complex<_Tp> + acosh(const std::complex<_Tp>& __z) + { return __complex_acosh(__z); } +#endif + + template + std::complex<_Tp> + __complex_asinh(const std::complex<_Tp>& __z) + { + std::complex<_Tp> __t((__z.real() - __z.imag()) + * (__z.real() + __z.imag()) + _Tp(1.0), + _Tp(2.0) * __z.real() * __z.imag()); + __t = std::sqrt(__t); + + return std::log(__t + __z); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_asinh(__complex__ float __z) + { return __builtin_casinhf(__z); } + + inline __complex__ double + __complex_asinh(__complex__ double __z) + { return __builtin_casinh(__z); } + + inline __complex__ long double + __complex_asinh(const __complex__ long double& __z) + { return __builtin_casinhl(__z); } + + template + inline std::complex<_Tp> + asinh(const std::complex<_Tp>& __z) + { return __complex_asinh(__z.__rep()); } +#else + /// asinh(__z) [8.1.6]. + // Effects: Behaves the same as C99 function casin, defined + // in subclause 7.3.6.2. + template + inline std::complex<_Tp> + asinh(const std::complex<_Tp>& __z) + { return __complex_asinh(__z); } +#endif + + template + std::complex<_Tp> + __complex_atanh(const std::complex<_Tp>& __z) + { + const _Tp __i2 = __z.imag() * __z.imag(); + const _Tp __x = _Tp(1.0) - __i2 - __z.real() * __z.real(); + + _Tp __num = _Tp(1.0) + __z.real(); + _Tp __den = _Tp(1.0) - __z.real(); + + __num = __i2 + __num * __num; + __den = __i2 + __den * __den; + + return std::complex<_Tp>(_Tp(0.25) * (log(__num) - log(__den)), + _Tp(0.5) * atan2(_Tp(2.0) * __z.imag(), __x)); + } + +#if _GLIBCXX_USE_C99_COMPLEX_TR1 + inline __complex__ float + __complex_atanh(__complex__ float __z) + { return __builtin_catanhf(__z); } + + inline __complex__ double + __complex_atanh(__complex__ double __z) + { return __builtin_catanh(__z); } + + inline __complex__ long double + __complex_atanh(const __complex__ long double& __z) + { return __builtin_catanhl(__z); } + + template + inline std::complex<_Tp> + atanh(const std::complex<_Tp>& __z) + { return __complex_atanh(__z.__rep()); } +#else + /// atanh(__z) [8.1.7]. + // Effects: Behaves the same as C99 function catanh, defined + // in subclause 7.3.6.3. + template + inline std::complex<_Tp> + atanh(const std::complex<_Tp>& __z) + { return __complex_atanh(__z); } +#endif + +#endif // C++11 + + template + inline std::complex<_Tp> + /// fabs(__z) [8.1.8]. + // Effects: Behaves the same as C99 function cabs, defined + // in subclause 7.3.8.1. + fabs(const std::complex<_Tp>& __z) + { return std::abs(__z); } + + /// Additional overloads [8.1.9]. +#if __cplusplus < 201103L + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + arg(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; +#if (_GLIBCXX_USE_C99_MATH && !_GLIBCXX_USE_C99_FP_MACROS_DYNAMIC) + return std::signbit(__x) ? __type(3.1415926535897932384626433832795029L) + : __type(); +#else + return std::arg(std::complex<__type>(__x)); +#endif + } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + imag(_Tp) + { return _Tp(); } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + norm(_Tp __x) + { + typedef typename __gnu_cxx::__promote<_Tp>::__type __type; + return __type(__x) * __type(__x); + } + + template + inline typename __gnu_cxx::__promote<_Tp>::__type + real(_Tp __x) + { return __x; } + +#endif + + template + inline std::complex::__type> + pow(const std::complex<_Tp>& __x, const _Up& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(std::complex<__type>(__x), __type(__y)); + } + + template + inline std::complex::__type> + pow(const _Tp& __x, const std::complex<_Up>& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(__type(__x), std::complex<__type>(__y)); + } + + template + inline std::complex::__type> + pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::pow(std::complex<__type>(__x), + std::complex<__type>(__y)); + } + + using std::arg; + + template + inline std::complex<_Tp> + conj(const std::complex<_Tp>& __z) + { return std::conj(__z); } + + template + inline std::complex::__type> + conj(_Tp __x) + { return __x; } + + using std::imag; + using std::norm; + using std::polar; + + template + inline std::complex::__type> + polar(const _Tp& __rho, const _Up& __theta) + { + typedef typename __gnu_cxx::__promote_2<_Tp, _Up>::__type __type; + return std::polar(__type(__rho), __type(__theta)); + } + + using std::real; + + template + inline std::complex<_Tp> + pow(const std::complex<_Tp>& __x, const _Tp& __y) + { return std::pow(__x, __y); } + + template + inline std::complex<_Tp> + pow(const _Tp& __x, const std::complex<_Tp>& __y) + { return std::pow(__x, __y); } + + template + inline std::complex<_Tp> + pow(const std::complex<_Tp>& __x, const std::complex<_Tp>& __y) + { return std::pow(__x, __y); } + +// @} group complex_numbers +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_COMPLEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/complex.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/complex.h new file mode 100644 index 000000000..50d30bc0f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/complex.h @@ -0,0 +1,34 @@ +// TR1 complex.h -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file tr1/complex.h + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_COMPLEX_H +#define _GLIBCXX_TR1_COMPLEX_H 1 + +#include + +#endif // _GLIBCXX_TR1_COMPLEX_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdarg b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdarg new file mode 100644 index 000000000..290b17016 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdarg @@ -0,0 +1,34 @@ +// TR1 cstdarg -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cstdarg + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CSTDARG +#define _GLIBCXX_TR1_CSTDARG 1 + +#include + +#endif // _GLIBCXX_TR1_CSTDARG diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdbool b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdbool new file mode 100644 index 000000000..059d7aa72 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdbool @@ -0,0 +1,40 @@ +// TR1 cstdbool -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cstdbool + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CSTDBOOL +#define _GLIBCXX_TR1_CSTDBOOL 1 + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HAVE_STDBOOL_H +#include +#endif + +#endif // _GLIBCXX_TR1_CSTDBOOL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdint b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdint new file mode 100644 index 000000000..b915e884f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdint @@ -0,0 +1,104 @@ +// TR1 cstdint -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cstdint + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CSTDINT +#define _GLIBCXX_TR1_CSTDINT 1 + +#pragma GCC system_header + +#include + +// For 8.22.1/1 (see C99, Notes 219, 220, 222) +# if _GLIBCXX_HAVE_STDINT_H +# ifndef __STDC_LIMIT_MACROS +# define _UNDEF__STDC_LIMIT_MACROS +# define __STDC_LIMIT_MACROS +# endif +# ifndef __STDC_CONSTANT_MACROS +# define _UNDEF__STDC_CONSTANT_MACROS +# define __STDC_CONSTANT_MACROS +# endif +# include +# ifdef _UNDEF__STDC_LIMIT_MACROS +# undef __STDC_LIMIT_MACROS +# undef _UNDEF__STDC_LIMIT_MACROS +# endif +# ifdef _UNDEF__STDC_CONSTANT_MACROS +# undef __STDC_CONSTANT_MACROS +# undef _UNDEF__STDC_CONSTANT_MACROS +# endif +# endif + +#ifdef _GLIBCXX_USE_C99_STDINT_TR1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace 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; +} +} + +#endif // _GLIBCXX_USE_C99_STDINT_TR1 + +#endif // _GLIBCXX_TR1_CSTDINT + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdio new file mode 100644 index 000000000..10e51b145 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdio @@ -0,0 +1,53 @@ +// TR1 cstdio -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cstdio + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CSTDIO +#define _GLIBCXX_TR1_CSTDIO 1 + +#pragma GCC system_header + +#include + +#if _GLIBCXX_USE_C99_STDIO + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ + using std::snprintf; + using std::vsnprintf; + + using std::vfscanf; + using std::vscanf; + using std::vsscanf; +} +} + +#endif + +#endif // _GLIBCXX_TR1_CSTDIO diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdlib b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdlib new file mode 100644 index 000000000..aa2262f58 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cstdlib @@ -0,0 +1,72 @@ +// TR1 cstdlib -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cstdlib + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CSTDLIB +#define _GLIBCXX_TR1_CSTDLIB 1 + +#pragma GCC system_header + +#include + +#if _GLIBCXX_HOSTED + +#if _GLIBCXX_USE_C99_STDLIB + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + // types + using std::lldiv_t; + + // functions + using std::llabs; + using std::lldiv; +#endif + + using std::atoll; + using std::strtoll; + using std::strtoull; + + using std::strtof; + using std::strtold; + + // overloads + using std::abs; +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC + using std::div; +#endif +} +} + +#endif // _GLIBCXX_USE_C99_STDLIB + +#endif // _GLIBCXX_HOSTED + +#endif // _GLIBCXX_TR1_CSTDLIB diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctgmath b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctgmath new file mode 100644 index 000000000..33db2df0f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctgmath @@ -0,0 +1,34 @@ +// TR1 ctgmath -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/ctgmath + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CTGMATH +#define _GLIBCXX_TR1_CTGMATH 1 + +#include + +#endif // _GLIBCXX_TR1_CTGMATH diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctime b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctime new file mode 100644 index 000000000..c8aa55845 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctime @@ -0,0 +1,34 @@ +// TR1 ctime -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/ctime + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CTIME +#define _GLIBCXX_TR1_CTIME 1 + +#include + +#endif // _GLIBCXX_TR1_CTIME diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctype.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctype.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctype.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctype.h index 1d6a55ccf..be58dd3b4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ctype.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ctype.h @@ -1,6 +1,6 @@ // TR1 ctype.h -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cwchar b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cwchar new file mode 100644 index 000000000..f6780421c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cwchar @@ -0,0 +1,65 @@ +// TR1 cwchar -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cwchar + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CWCHAR +#define _GLIBCXX_TR1_CWCHAR 1 + +#pragma GCC system_header + +#include + +#ifdef _GLIBCXX_USE_WCHAR_T + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ +#if _GLIBCXX_HAVE_WCSTOF + using std::wcstof; +#endif +#if _GLIBCXX_HAVE_VFWSCANF + using std::vfwscanf; +#endif +#if _GLIBCXX_HAVE_VSWSCANF + using std::vswscanf; +#endif +#if _GLIBCXX_HAVE_VWSCANF + using std::vwscanf; +#endif + +#if _GLIBCXX_USE_C99_WCHAR + using std::wcstold; + using std::wcstoll; + using std::wcstoull; +#endif +} +} + +#endif // _GLIBCXX_USE_WCHAR_T + +#endif // _GLIBCXX_TR1_CWCHAR diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cwctype b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cwctype new file mode 100644 index 000000000..7a332dde9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/cwctype @@ -0,0 +1,50 @@ +// TR1 cwctype -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/cwctype + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_CWCTYPE +#define _GLIBCXX_TR1_CWCTYPE 1 + +#pragma GCC system_header + +#include + +#ifdef _GLIBCXX_USE_WCHAR_T + +namespace std _GLIBCXX_VISIBILITY(default) +{ +namespace tr1 +{ +#if _GLIBCXX_HAVE_ISWBLANK + using std::iswblank; +#endif +} +} + +#endif // _GLIBCXX_USE_WCHAR_T + +#endif // _GLIBCXX_TR1_CWCTYPE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ell_integral.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ell_integral.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ell_integral.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ell_integral.tcc index 99a6b9ce6..c44847423 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/ell_integral.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/ell_integral.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -44,6 +44,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS #elif defined(_GLIBCXX_TR1_CMATH) namespace tr1 @@ -56,8 +58,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Return the Carlson elliptic function @f$ R_F(x,y,z) @f$ * of the first kind. @@ -745,12 +745,12 @@ namespace tr1 return __Pi + _Tp(2) * __n * __comp_ellint_3(__k, __nu); } } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_ELL_INTEGRAL_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/exp_integral.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/exp_integral.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/exp_integral.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/exp_integral.tcc index 8e6f55178..ca1cffb1c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/exp_integral.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/exp_integral.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -49,6 +49,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS #elif defined(_GLIBCXX_TR1_CMATH) namespace tr1 @@ -61,8 +63,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - template _Tp __expint_E1(_Tp); /** @@ -522,12 +522,12 @@ namespace tr1 else return __expint_Ei(__x); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_EXP_INTEGRAL_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/fenv.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/fenv.h new file mode 100644 index 000000000..ea3b08eed --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/fenv.h @@ -0,0 +1,34 @@ +// TR1 fenv.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/fenv.h + * This is a TR1 C++ Library header. + */ + +#ifndef _TR1_FENV_H +#define _TR1_FENV_H 1 + +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/float.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/float.h new file mode 100644 index 000000000..f3f5f7ef1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/float.h @@ -0,0 +1,34 @@ +// TR1 float.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/float.h + * This is a TR1 C++ Library header. + */ + +#ifndef _TR1_FLOAT_H +#define _TR1_FLOAT_H 1 + +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/functional b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/functional new file mode 100644 index 000000000..98ab610e9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/functional @@ -0,0 +1,2297 @@ +// TR1 functional header -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file tr1/functional + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_FUNCTIONAL +#define _GLIBCXX_TR1_FUNCTIONAL 1 + +#pragma GCC system_header + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include // for std::__addressof +#if __cplusplus >= 201103L +# include // for integral_constant, true_type, false_type +#endif + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION +#if __cplusplus >= 201103L + template struct _Placeholder; + template class _Bind; + template class _Bind_result; +#endif + +namespace tr1 +{ + template + class _Mem_fn; + template + _Mem_fn<_Tp _Class::*> + mem_fn(_Tp _Class::*); + + /** + * Actual implementation of _Has_result_type, which uses SFINAE to + * determine if the type _Tp has a publicly-accessible member type + * result_type. + */ + template + class _Has_result_type_helper : __sfinae_types + { + template + struct _Wrap_type + { }; + + template + static __one __test(_Wrap_type*); + + template + static __two __test(...); + + public: + static const bool value = sizeof(__test<_Tp>(0)) == 1; + }; + + template + struct _Has_result_type + : integral_constant::type>::value> + { }; + + /** + * + */ + /// If we have found a result_type, extract it. + template + struct _Maybe_get_result_type + { }; + + template + struct _Maybe_get_result_type + { + typedef typename _Functor::result_type result_type; + }; + + /** + * Base class for any function object that has a weak result type, as + * defined in 3.3/3 of TR1. + */ + template + struct _Weak_result_type_impl + : _Maybe_get_result_type<_Has_result_type<_Functor>::value, _Functor> + { + }; + + /// Retrieve the result type for a function type. + template + struct _Weak_result_type_impl<_Res(_ArgTypes...)> + { + typedef _Res result_type; + }; + + /// Retrieve the result type for a function reference. + template + struct _Weak_result_type_impl<_Res(&)(_ArgTypes...)> + { + typedef _Res result_type; + }; + + /// Retrieve the result type for a function pointer. + template + struct _Weak_result_type_impl<_Res(*)(_ArgTypes...)> + { + typedef _Res result_type; + }; + + /// Retrieve result type for a member function pointer. + template + struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)> + { + typedef _Res result_type; + }; + + /// Retrieve result type for a const member function pointer. + template + struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) const> + { + typedef _Res result_type; + }; + + /// Retrieve result type for a volatile member function pointer. + template + struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...) volatile> + { + typedef _Res result_type; + }; + + /// Retrieve result type for a const volatile member function pointer. + template + struct _Weak_result_type_impl<_Res (_Class::*)(_ArgTypes...)const volatile> + { + typedef _Res result_type; + }; + + /** + * Strip top-level cv-qualifiers from the function object and let + * _Weak_result_type_impl perform the real work. + */ + template + struct _Weak_result_type + : _Weak_result_type_impl::type> + { + }; + + template + class result_of; + + /** + * Actual implementation of result_of. When _Has_result_type is + * true, gets its result from _Weak_result_type. Otherwise, uses + * the function object's member template result to extract the + * result type. + */ + template + struct _Result_of_impl; + + // Handle member data pointers using _Mem_fn's logic + template + struct _Result_of_impl + { + typedef typename _Mem_fn<_Res _Class::*> + ::template _Result_type<_T1>::type type; + }; + + /** + * Determine whether we can determine a result type from @c Functor + * alone. + */ + template + class result_of<_Functor(_ArgTypes...)> + : public _Result_of_impl< + _Has_result_type<_Weak_result_type<_Functor> >::value, + _Functor(_ArgTypes...)> + { + }; + + /// We already know the result type for @c Functor; use it. + template + struct _Result_of_impl + { + typedef typename _Weak_result_type<_Functor>::result_type type; + }; + + /** + * We need to compute the result type for this invocation the hard + * way. + */ + template + struct _Result_of_impl + { + typedef typename _Functor + ::template result<_Functor(_ArgTypes...)>::type type; + }; + + /** + * It is unsafe to access ::result when there are zero arguments, so we + * return @c void instead. + */ + template + struct _Result_of_impl + { + typedef void type; + }; + + /// Determines if the type _Tp derives from unary_function. + template + struct _Derives_from_unary_function : __sfinae_types + { + private: + template + static __one __test(const volatile unary_function<_T1, _Res>*); + + // It's tempting to change "..." to const volatile void*, but + // that fails when _Tp is a function type. + static __two __test(...); + + public: + static const bool value = sizeof(__test((_Tp*)0)) == 1; + }; + + /// Determines if the type _Tp derives from binary_function. + template + struct _Derives_from_binary_function : __sfinae_types + { + private: + template + static __one __test(const volatile binary_function<_T1, _T2, _Res>*); + + // It's tempting to change "..." to const volatile void*, but + // that fails when _Tp is a function type. + static __two __test(...); + + public: + static const bool value = sizeof(__test((_Tp*)0)) == 1; + }; + + /// Turns a function type into a function pointer type + template::value> + struct _Function_to_function_pointer + { + typedef _Tp type; + }; + + template + struct _Function_to_function_pointer<_Tp, true> + { + typedef _Tp* type; + }; + + /** + * Invoke a function object, which may be either a member pointer or a + * function object. The first parameter will tell which. + */ + template + inline + typename __gnu_cxx::__enable_if< + (!is_member_pointer<_Functor>::value + && !is_function<_Functor>::value + && !is_function::type>::value), + typename result_of<_Functor(_Args...)>::type + >::__type + __invoke(_Functor& __f, _Args&... __args) + { + return __f(__args...); + } + + template + inline + typename __gnu_cxx::__enable_if< + (is_member_pointer<_Functor>::value + && !is_function<_Functor>::value + && !is_function::type>::value), + typename result_of<_Functor(_Args...)>::type + >::__type + __invoke(_Functor& __f, _Args&... __args) + { + return mem_fn(__f)(__args...); + } + + // To pick up function references (that will become function pointers) + template + inline + typename __gnu_cxx::__enable_if< + (is_pointer<_Functor>::value + && is_function::type>::value), + typename result_of<_Functor(_Args...)>::type + >::__type + __invoke(_Functor __f, _Args&... __args) + { + return __f(__args...); + } + + /** + * Knowing which of unary_function and binary_function _Tp derives + * from, derives from the same and ensures that reference_wrapper + * will have a weak result type. See cases below. + */ + template + struct _Reference_wrapper_base_impl; + + // Not a unary_function or binary_function, so try a weak result type. + template + struct _Reference_wrapper_base_impl + : _Weak_result_type<_Tp> + { }; + + // unary_function but not binary_function + template + struct _Reference_wrapper_base_impl + : unary_function + { }; + + // binary_function but not unary_function + template + struct _Reference_wrapper_base_impl + : binary_function + { }; + + // Both unary_function and binary_function. Import result_type to + // avoid conflicts. + template + struct _Reference_wrapper_base_impl + : unary_function, + binary_function + { + typedef typename _Tp::result_type result_type; + }; + + /** + * Derives from unary_function or binary_function when it + * can. Specializations handle all of the easy cases. The primary + * template determines what to do with a class type, which may + * derive from both unary_function and binary_function. + */ + template + struct _Reference_wrapper_base + : _Reference_wrapper_base_impl< + _Derives_from_unary_function<_Tp>::value, + _Derives_from_binary_function<_Tp>::value, + _Tp> + { }; + + // - a function type (unary) + template + struct _Reference_wrapper_base<_Res(_T1)> + : unary_function<_T1, _Res> + { }; + + // - a function type (binary) + template + struct _Reference_wrapper_base<_Res(_T1, _T2)> + : binary_function<_T1, _T2, _Res> + { }; + + // - a function pointer type (unary) + template + struct _Reference_wrapper_base<_Res(*)(_T1)> + : unary_function<_T1, _Res> + { }; + + // - a function pointer type (binary) + template + struct _Reference_wrapper_base<_Res(*)(_T1, _T2)> + : binary_function<_T1, _T2, _Res> + { }; + + // - a pointer to member function type (unary, no qualifiers) + template + struct _Reference_wrapper_base<_Res (_T1::*)()> + : unary_function<_T1*, _Res> + { }; + + // - a pointer to member function type (binary, no qualifiers) + template + struct _Reference_wrapper_base<_Res (_T1::*)(_T2)> + : binary_function<_T1*, _T2, _Res> + { }; + + // - a pointer to member function type (unary, const) + template + struct _Reference_wrapper_base<_Res (_T1::*)() const> + : unary_function + { }; + + // - a pointer to member function type (binary, const) + template + struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const> + : binary_function + { }; + + // - a pointer to member function type (unary, volatile) + template + struct _Reference_wrapper_base<_Res (_T1::*)() volatile> + : unary_function + { }; + + // - a pointer to member function type (binary, volatile) + template + struct _Reference_wrapper_base<_Res (_T1::*)(_T2) volatile> + : binary_function + { }; + + // - a pointer to member function type (unary, const volatile) + template + struct _Reference_wrapper_base<_Res (_T1::*)() const volatile> + : unary_function + { }; + + // - a pointer to member function type (binary, const volatile) + template + struct _Reference_wrapper_base<_Res (_T1::*)(_T2) const volatile> + : binary_function + { }; + + /// reference_wrapper + template + class reference_wrapper + : public _Reference_wrapper_base::type> + { + // If _Tp is a function type, we can't form result_of<_Tp(...)>, + // so turn it into a function pointer type. + typedef typename _Function_to_function_pointer<_Tp>::type + _M_func_type; + + _Tp* _M_data; + public: + typedef _Tp type; + + explicit + reference_wrapper(_Tp& __indata) + : _M_data(std::__addressof(__indata)) + { } + + reference_wrapper(const reference_wrapper<_Tp>& __inref): + _M_data(__inref._M_data) + { } + + reference_wrapper& + operator=(const reference_wrapper<_Tp>& __inref) + { + _M_data = __inref._M_data; + return *this; + } + + operator _Tp&() const + { return this->get(); } + + _Tp& + get() const + { return *_M_data; } + + template + typename result_of<_M_func_type(_Args...)>::type + operator()(_Args&... __args) const + { + return __invoke(get(), __args...); + } + }; + + + // Denotes a reference should be taken to a variable. + template + inline reference_wrapper<_Tp> + ref(_Tp& __t) + { return reference_wrapper<_Tp>(__t); } + + // Denotes a const reference should be taken to a variable. + template + inline reference_wrapper + cref(const _Tp& __t) + { return reference_wrapper(__t); } + + template + inline reference_wrapper<_Tp> + ref(reference_wrapper<_Tp> __t) + { return ref(__t.get()); } + + template + inline reference_wrapper + cref(reference_wrapper<_Tp> __t) + { return cref(__t.get()); } + + template + struct _Mem_fn_const_or_non + { + typedef const _Tp& type; + }; + + template + struct _Mem_fn_const_or_non<_Tp, false> + { + typedef _Tp& type; + }; + + /** + * Derives from @c unary_function or @c binary_function, or perhaps + * nothing, depending on the number of arguments provided. The + * primary template is the basis case, which derives nothing. + */ + template + struct _Maybe_unary_or_binary_function { }; + + /// Derives from @c unary_function, as appropriate. + template + struct _Maybe_unary_or_binary_function<_Res, _T1> + : std::unary_function<_T1, _Res> { }; + + /// Derives from @c binary_function, as appropriate. + template + struct _Maybe_unary_or_binary_function<_Res, _T1, _T2> + : std::binary_function<_T1, _T2, _Res> { }; + + /// Implementation of @c mem_fn for member function pointers. + template + class _Mem_fn<_Res (_Class::*)(_ArgTypes...)> + : public _Maybe_unary_or_binary_function<_Res, _Class*, _ArgTypes...> + { + typedef _Res (_Class::*_Functor)(_ArgTypes...); + + template + _Res + _M_call(_Tp& __object, const volatile _Class *, + _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + template + _Res + _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const + { return ((*__ptr).*__pmf)(__args...); } + + public: + typedef _Res result_type; + + explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } + + // Handle objects + _Res + operator()(_Class& __object, _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + // Handle pointers + _Res + operator()(_Class* __object, _ArgTypes... __args) const + { return (__object->*__pmf)(__args...); } + + // Handle smart pointers, references and pointers to derived + template + _Res + operator()(_Tp& __object, _ArgTypes... __args) const + { return _M_call(__object, &__object, __args...); } + + private: + _Functor __pmf; + }; + + /// Implementation of @c mem_fn for const member function pointers. + template + class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const> + : public _Maybe_unary_or_binary_function<_Res, const _Class*, + _ArgTypes...> + { + typedef _Res (_Class::*_Functor)(_ArgTypes...) const; + + template + _Res + _M_call(_Tp& __object, const volatile _Class *, + _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + template + _Res + _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const + { return ((*__ptr).*__pmf)(__args...); } + + public: + typedef _Res result_type; + + explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } + + // Handle objects + _Res + operator()(const _Class& __object, _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + // Handle pointers + _Res + operator()(const _Class* __object, _ArgTypes... __args) const + { return (__object->*__pmf)(__args...); } + + // Handle smart pointers, references and pointers to derived + template + _Res operator()(_Tp& __object, _ArgTypes... __args) const + { return _M_call(__object, &__object, __args...); } + + private: + _Functor __pmf; + }; + + /// Implementation of @c mem_fn for volatile member function pointers. + template + class _Mem_fn<_Res (_Class::*)(_ArgTypes...) volatile> + : public _Maybe_unary_or_binary_function<_Res, volatile _Class*, + _ArgTypes...> + { + typedef _Res (_Class::*_Functor)(_ArgTypes...) volatile; + + template + _Res + _M_call(_Tp& __object, const volatile _Class *, + _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + template + _Res + _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const + { return ((*__ptr).*__pmf)(__args...); } + + public: + typedef _Res result_type; + + explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } + + // Handle objects + _Res + operator()(volatile _Class& __object, _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + // Handle pointers + _Res + operator()(volatile _Class* __object, _ArgTypes... __args) const + { return (__object->*__pmf)(__args...); } + + // Handle smart pointers, references and pointers to derived + template + _Res + operator()(_Tp& __object, _ArgTypes... __args) const + { return _M_call(__object, &__object, __args...); } + + private: + _Functor __pmf; + }; + + /// Implementation of @c mem_fn for const volatile member function pointers. + template + class _Mem_fn<_Res (_Class::*)(_ArgTypes...) const volatile> + : public _Maybe_unary_or_binary_function<_Res, const volatile _Class*, + _ArgTypes...> + { + typedef _Res (_Class::*_Functor)(_ArgTypes...) const volatile; + + template + _Res + _M_call(_Tp& __object, const volatile _Class *, + _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + template + _Res + _M_call(_Tp& __ptr, const volatile void *, _ArgTypes... __args) const + { return ((*__ptr).*__pmf)(__args...); } + + public: + typedef _Res result_type; + + explicit _Mem_fn(_Functor __pmf) : __pmf(__pmf) { } + + // Handle objects + _Res + operator()(const volatile _Class& __object, _ArgTypes... __args) const + { return (__object.*__pmf)(__args...); } + + // Handle pointers + _Res + operator()(const volatile _Class* __object, _ArgTypes... __args) const + { return (__object->*__pmf)(__args...); } + + // Handle smart pointers, references and pointers to derived + template + _Res operator()(_Tp& __object, _ArgTypes... __args) const + { return _M_call(__object, &__object, __args...); } + + private: + _Functor __pmf; + }; + + + template + class _Mem_fn<_Res _Class::*> + { + // This bit of genius is due to Peter Dimov, improved slightly by + // Douglas Gregor. + template + _Res& + _M_call(_Tp& __object, _Class *) const + { return __object.*__pm; } + + template + _Res& + _M_call(_Tp& __object, _Up * const *) const + { return (*__object).*__pm; } + + template + const _Res& + _M_call(_Tp& __object, const _Up * const *) const + { return (*__object).*__pm; } + + template + const _Res& + _M_call(_Tp& __object, const _Class *) const + { return __object.*__pm; } + + template + const _Res& + _M_call(_Tp& __ptr, const volatile void*) const + { return (*__ptr).*__pm; } + + template static _Tp& __get_ref(); + + template + static __sfinae_types::__one __check_const(_Tp&, _Class*); + template + static __sfinae_types::__one __check_const(_Tp&, _Up * const *); + template + static __sfinae_types::__two __check_const(_Tp&, const _Up * const *); + template + static __sfinae_types::__two __check_const(_Tp&, const _Class*); + template + static __sfinae_types::__two __check_const(_Tp&, const volatile void*); + + public: + template + struct _Result_type + : _Mem_fn_const_or_non<_Res, + (sizeof(__sfinae_types::__two) + == sizeof(__check_const<_Tp>(__get_ref<_Tp>(), (_Tp*)0)))> + { }; + + template + struct result; + + template + struct result<_CVMem(_Tp)> + : public _Result_type<_Tp> { }; + + template + struct result<_CVMem(_Tp&)> + : public _Result_type<_Tp> { }; + + explicit + _Mem_fn(_Res _Class::*__pm) : __pm(__pm) { } + + // Handle objects + _Res& + operator()(_Class& __object) const + { return __object.*__pm; } + + const _Res& + operator()(const _Class& __object) const + { return __object.*__pm; } + + // Handle pointers + _Res& + operator()(_Class* __object) const + { return __object->*__pm; } + + const _Res& + operator()(const _Class* __object) const + { return __object->*__pm; } + + // Handle smart pointers and derived + template + typename _Result_type<_Tp>::type + operator()(_Tp& __unknown) const + { return _M_call(__unknown, &__unknown); } + + private: + _Res _Class::*__pm; + }; + + /** + * @brief Returns a function object that forwards to the member + * pointer @a pm. + */ + template + inline _Mem_fn<_Tp _Class::*> + mem_fn(_Tp _Class::* __pm) + { + return _Mem_fn<_Tp _Class::*>(__pm); + } + + /** + * @brief Determines if the given type _Tp is a function object + * should be treated as a subexpression when evaluating calls to + * function objects returned by bind(). [TR1 3.6.1] + */ + template + struct is_bind_expression + { static const bool value = false; }; + + template + const bool is_bind_expression<_Tp>::value; + + /** + * @brief Determines if the given type _Tp is a placeholder in a + * bind() expression and, if so, which placeholder it is. [TR1 3.6.2] + */ + template + struct is_placeholder + { static const int value = 0; }; + + template + const int is_placeholder<_Tp>::value; + + /// The type of placeholder objects defined by libstdc++. + template struct _Placeholder { }; + + /** @namespace std::tr1::placeholders + * @brief Sub-namespace for tr1/functional. + */ + namespace placeholders + { + /* Define a large number of placeholders. There is no way to + * simplify this with variadic templates, because we're introducing + * unique names for each. + */ + namespace + { + _Placeholder<1> _1; + _Placeholder<2> _2; + _Placeholder<3> _3; + _Placeholder<4> _4; + _Placeholder<5> _5; + _Placeholder<6> _6; + _Placeholder<7> _7; + _Placeholder<8> _8; + _Placeholder<9> _9; + _Placeholder<10> _10; + _Placeholder<11> _11; + _Placeholder<12> _12; + _Placeholder<13> _13; + _Placeholder<14> _14; + _Placeholder<15> _15; + _Placeholder<16> _16; + _Placeholder<17> _17; + _Placeholder<18> _18; + _Placeholder<19> _19; + _Placeholder<20> _20; + _Placeholder<21> _21; + _Placeholder<22> _22; + _Placeholder<23> _23; + _Placeholder<24> _24; + _Placeholder<25> _25; + _Placeholder<26> _26; + _Placeholder<27> _27; + _Placeholder<28> _28; + _Placeholder<29> _29; + } + } + + /** + * Partial specialization of is_placeholder that provides the placeholder + * number for the placeholder objects defined by libstdc++. + */ + template + struct is_placeholder<_Placeholder<_Num> > + { static const int value = _Num; }; + + template + const int is_placeholder<_Placeholder<_Num> >::value; + +#if __cplusplus >= 201103L + template + struct is_placeholder> + : std::integral_constant + { }; + + template + struct is_placeholder> + : std::integral_constant + { }; +#endif + + /** + * Stores a tuple of indices. Used by bind() to extract the elements + * in a tuple. + */ + template + struct _Index_tuple { }; + + /// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>. + template > + struct _Build_index_tuple; + + template + struct _Build_index_tuple<_Num, _Index_tuple<_Indexes...> > + : _Build_index_tuple<_Num - 1, + _Index_tuple<_Indexes..., sizeof...(_Indexes)> > + { + }; + + template + struct _Build_index_tuple<0, _Index_tuple<_Indexes...> > + { + typedef _Index_tuple<_Indexes...> __type; + }; + + /** + * Used by _Safe_tuple_element to indicate that there is no tuple + * element at this position. + */ + struct _No_tuple_element; + + /** + * Implementation helper for _Safe_tuple_element. This primary + * template handles the case where it is safe to use @c + * tuple_element. + */ + template + struct _Safe_tuple_element_impl + : tuple_element<__i, _Tuple> { }; + + /** + * Implementation helper for _Safe_tuple_element. This partial + * specialization handles the case where it is not safe to use @c + * tuple_element. We just return @c _No_tuple_element. + */ + template + struct _Safe_tuple_element_impl<__i, _Tuple, false> + { + typedef _No_tuple_element type; + }; + + /** + * Like tuple_element, but returns @c _No_tuple_element when + * tuple_element would return an error. + */ + template + struct _Safe_tuple_element + : _Safe_tuple_element_impl<__i, _Tuple, + (__i >= 0 && __i < tuple_size<_Tuple>::value)> + { + }; + + /** + * Maps an argument to bind() into an actual argument to the bound + * function object [TR1 3.6.3/5]. Only the first parameter should + * be specified: the rest are used to determine among the various + * implementations. Note that, although this class is a function + * object, it isn't entirely normal because it takes only two + * parameters regardless of the number of parameters passed to the + * bind expression. The first parameter is the bound argument and + * the second parameter is a tuple containing references to the + * rest of the arguments. + */ + template::value, + bool _IsPlaceholder = (is_placeholder<_Arg>::value > 0)> + class _Mu; + + /** + * If the argument is reference_wrapper<_Tp>, returns the + * underlying reference. [TR1 3.6.3/5 bullet 1] + */ + template + class _Mu, false, false> + { + public: + typedef _Tp& result_type; + + /* Note: This won't actually work for const volatile + * reference_wrappers, because reference_wrapper::get() is const + * but not volatile-qualified. This might be a defect in the TR. + */ + template + result_type + operator()(_CVRef& __arg, const _Tuple&) const volatile + { return __arg.get(); } + }; + + /** + * If the argument is a bind expression, we invoke the underlying + * function object with the same cv-qualifiers as we are given and + * pass along all of our arguments (unwrapped). [TR1 3.6.3/5 bullet 2] + */ + template + class _Mu<_Arg, true, false> + { + public: + template class result; + + // Determine the result type when we pass the arguments along. This + // involves passing along the cv-qualifiers placed on _Mu and + // unwrapping the argument bundle. + template + class result<_CVMu(_CVArg, tuple<_Args...>)> + : public result_of<_CVArg(_Args...)> { }; + + template + typename result_of<_CVArg(_Args...)>::type + operator()(_CVArg& __arg, + const tuple<_Args...>& __tuple) const volatile + { + // Construct an index tuple and forward to __call + typedef typename _Build_index_tuple::__type + _Indexes; + return this->__call(__arg, __tuple, _Indexes()); + } + + private: + // Invokes the underlying function object __arg by unpacking all + // of the arguments in the tuple. + template + typename result_of<_CVArg(_Args...)>::type + __call(_CVArg& __arg, const tuple<_Args...>& __tuple, + const _Index_tuple<_Indexes...>&) const volatile + { + return __arg(tr1::get<_Indexes>(__tuple)...); + } + }; + + /** + * If the argument is a placeholder for the Nth argument, returns + * a reference to the Nth argument to the bind function object. + * [TR1 3.6.3/5 bullet 3] + */ + template + class _Mu<_Arg, false, true> + { + public: + template class result; + + template + class result<_CVMu(_CVArg, _Tuple)> + { + // Add a reference, if it hasn't already been done for us. + // This allows us to be a little bit sloppy in constructing + // the tuple that we pass to result_of<...>. + typedef typename _Safe_tuple_element<(is_placeholder<_Arg>::value + - 1), _Tuple>::type + __base_type; + + public: + typedef typename add_reference<__base_type>::type type; + }; + + template + typename result<_Mu(_Arg, _Tuple)>::type + operator()(const volatile _Arg&, const _Tuple& __tuple) const volatile + { + return ::std::tr1::get<(is_placeholder<_Arg>::value - 1)>(__tuple); + } + }; + + /** + * If the argument is just a value, returns a reference to that + * value. The cv-qualifiers on the reference are the same as the + * cv-qualifiers on the _Mu object. [TR1 3.6.3/5 bullet 4] + */ + template + class _Mu<_Arg, false, false> + { + public: + template struct result; + + template + struct result<_CVMu(_CVArg, _Tuple)> + { + typedef typename add_reference<_CVArg>::type type; + }; + + // Pick up the cv-qualifiers of the argument + template + _CVArg& + operator()(_CVArg& __arg, const _Tuple&) const volatile + { return __arg; } + }; + + /** + * Maps member pointers into instances of _Mem_fn but leaves all + * other function objects untouched. Used by tr1::bind(). The + * primary template handles the non--member-pointer case. + */ + template + struct _Maybe_wrap_member_pointer + { + typedef _Tp type; + + static const _Tp& + __do_wrap(const _Tp& __x) + { return __x; } + }; + + /** + * Maps member pointers into instances of _Mem_fn but leaves all + * other function objects untouched. Used by tr1::bind(). This + * partial specialization handles the member pointer case. + */ + template + struct _Maybe_wrap_member_pointer<_Tp _Class::*> + { + typedef _Mem_fn<_Tp _Class::*> type; + + static type + __do_wrap(_Tp _Class::* __pm) + { return type(__pm); } + }; + + /// Type of the function object returned from bind(). + template + struct _Bind; + + template + class _Bind<_Functor(_Bound_args...)> + : public _Weak_result_type<_Functor> + { + typedef _Bind __self_type; + typedef typename _Build_index_tuple::__type + _Bound_indexes; + + _Functor _M_f; + tuple<_Bound_args...> _M_bound_args; + + // Call unqualified + template + typename result_of< + _Functor(typename result_of<_Mu<_Bound_args> + (_Bound_args, tuple<_Args...>)>::type...) + >::type + __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const + template + typename result_of< + const _Functor(typename result_of<_Mu<_Bound_args> + (const _Bound_args, tuple<_Args...>) + >::type...)>::type + __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as volatile + template + typename result_of< + volatile _Functor(typename result_of<_Mu<_Bound_args> + (volatile _Bound_args, tuple<_Args...>) + >::type...)>::type + __call(const tuple<_Args...>& __args, + _Index_tuple<_Indexes...>) volatile + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const volatile + template + typename result_of< + const volatile _Functor(typename result_of<_Mu<_Bound_args> + (const volatile _Bound_args, + tuple<_Args...>) + >::type...)>::type + __call(const tuple<_Args...>& __args, + _Index_tuple<_Indexes...>) const volatile + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + public: + explicit _Bind(_Functor __f, _Bound_args... __bound_args) + : _M_f(__f), _M_bound_args(__bound_args...) { } + + // Call unqualified + template + typename result_of< + _Functor(typename result_of<_Mu<_Bound_args> + (_Bound_args, tuple<_Args...>)>::type...) + >::type + operator()(_Args&... __args) + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + + // Call as const + template + typename result_of< + const _Functor(typename result_of<_Mu<_Bound_args> + (const _Bound_args, tuple<_Args...>)>::type...) + >::type + operator()(_Args&... __args) const + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + + + // Call as volatile + template + typename result_of< + volatile _Functor(typename result_of<_Mu<_Bound_args> + (volatile _Bound_args, tuple<_Args...>)>::type...) + >::type + operator()(_Args&... __args) volatile + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + + + // Call as const volatile + template + typename result_of< + const volatile _Functor(typename result_of<_Mu<_Bound_args> + (const volatile _Bound_args, + tuple<_Args...>)>::type...) + >::type + operator()(_Args&... __args) const volatile + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + }; + + /// Type of the function object returned from bind(). + template + struct _Bind_result; + + template + class _Bind_result<_Result, _Functor(_Bound_args...)> + { + typedef _Bind_result __self_type; + typedef typename _Build_index_tuple::__type + _Bound_indexes; + + _Functor _M_f; + tuple<_Bound_args...> _M_bound_args; + + // Call unqualified + template + _Result + __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const + template + _Result + __call(const tuple<_Args...>& __args, _Index_tuple<_Indexes...>) const + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as volatile + template + _Result + __call(const tuple<_Args...>& __args, + _Index_tuple<_Indexes...>) volatile + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + // Call as const volatile + template + _Result + __call(const tuple<_Args...>& __args, + _Index_tuple<_Indexes...>) const volatile + { + return _M_f(_Mu<_Bound_args>() + (tr1::get<_Indexes>(_M_bound_args), __args)...); + } + + public: + typedef _Result result_type; + + explicit + _Bind_result(_Functor __f, _Bound_args... __bound_args) + : _M_f(__f), _M_bound_args(__bound_args...) { } + + // Call unqualified + template + result_type + operator()(_Args&... __args) + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + + // Call as const + template + result_type + operator()(_Args&... __args) const + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + + // Call as volatile + template + result_type + operator()(_Args&... __args) volatile + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + + // Call as const volatile + template + result_type + operator()(_Args&... __args) const volatile + { + return this->__call(tr1::tie(__args...), _Bound_indexes()); + } + }; + + /// Class template _Bind is always a bind expression. + template + struct is_bind_expression<_Bind<_Signature> > + { static const bool value = true; }; + + template + const bool is_bind_expression<_Bind<_Signature> >::value; + + /// Class template _Bind is always a bind expression. + template + struct is_bind_expression > + { static const bool value = true; }; + + template + const bool is_bind_expression >::value; + + /// Class template _Bind is always a bind expression. + template + struct is_bind_expression > + { static const bool value = true; }; + + template + const bool is_bind_expression >::value; + + /// Class template _Bind is always a bind expression. + template + struct is_bind_expression > + { static const bool value = true; }; + + template + const bool is_bind_expression >::value; + + /// Class template _Bind_result is always a bind expression. + template + struct is_bind_expression<_Bind_result<_Result, _Signature> > + { static const bool value = true; }; + + template + const bool is_bind_expression<_Bind_result<_Result, _Signature> >::value; + + /// Class template _Bind_result is always a bind expression. + template + struct is_bind_expression > + { static const bool value = true; }; + + template + const bool + is_bind_expression >::value; + + /// Class template _Bind_result is always a bind expression. + template + struct is_bind_expression > + { static const bool value = true; }; + + template + const bool + is_bind_expression >::value; + + /// Class template _Bind_result is always a bind expression. + template + struct + is_bind_expression > + { static const bool value = true; }; + + template + const bool + is_bind_expression >::value; + +#if __cplusplus >= 201103L + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; +#endif + + /// bind + template + inline + _Bind::type(_ArgTypes...)> + bind(_Functor __f, _ArgTypes... __args) + { + typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type; + typedef typename __maybe_type::type __functor_type; + typedef _Bind<__functor_type(_ArgTypes...)> __result_type; + return __result_type(__maybe_type::__do_wrap(__f), __args...); + } + + template + inline + _Bind_result<_Result, + typename _Maybe_wrap_member_pointer<_Functor>::type + (_ArgTypes...)> + bind(_Functor __f, _ArgTypes... __args) + { + typedef _Maybe_wrap_member_pointer<_Functor> __maybe_type; + typedef typename __maybe_type::type __functor_type; + typedef _Bind_result<_Result, __functor_type(_ArgTypes...)> + __result_type; + return __result_type(__maybe_type::__do_wrap(__f), __args...); + } + + /** + * @brief Exception class thrown when class template function's + * operator() is called with an empty target. + * @ingroup exceptions + */ + class bad_function_call : public std::exception { }; + + /** + * The integral constant expression 0 can be converted into a + * pointer to this type. It is used by the function template to + * accept NULL pointers. + */ + struct _M_clear_type; + + /** + * Trait identifying @a location-invariant types, meaning that the + * address of the object (or any of its members) will not escape. + * Also implies a trivial copy constructor and assignment operator. + */ + template + struct __is_location_invariant + : integral_constant::value + || is_member_pointer<_Tp>::value)> + { + }; + + class _Undefined_class; + + union _Nocopy_types + { + void* _M_object; + const void* _M_const_object; + void (*_M_function_pointer)(); + void (_Undefined_class::*_M_member_pointer)(); + }; + + union _Any_data + { + void* _M_access() { return &_M_pod_data[0]; } + const void* _M_access() const { return &_M_pod_data[0]; } + + template + _Tp& + _M_access() + { return *static_cast<_Tp*>(_M_access()); } + + template + const _Tp& + _M_access() const + { return *static_cast(_M_access()); } + + _Nocopy_types _M_unused; + char _M_pod_data[sizeof(_Nocopy_types)]; + }; + + enum _Manager_operation + { + __get_type_info, + __get_functor_ptr, + __clone_functor, + __destroy_functor + }; + + // Simple type wrapper that helps avoid annoying const problems + // when casting between void pointers and pointers-to-pointers. + template + struct _Simple_type_wrapper + { + _Simple_type_wrapper(_Tp __value) : __value(__value) { } + + _Tp __value; + }; + + template + struct __is_location_invariant<_Simple_type_wrapper<_Tp> > + : __is_location_invariant<_Tp> + { + }; + + // Converts a reference to a function object into a callable + // function object. + template + inline _Functor& + __callable_functor(_Functor& __f) + { return __f; } + + template + inline _Mem_fn<_Member _Class::*> + __callable_functor(_Member _Class::* &__p) + { return mem_fn(__p); } + + template + inline _Mem_fn<_Member _Class::*> + __callable_functor(_Member _Class::* const &__p) + { return mem_fn(__p); } + + template + class function; + + /// Base class of all polymorphic function object wrappers. + class _Function_base + { + public: + static const std::size_t _M_max_size = sizeof(_Nocopy_types); + static const std::size_t _M_max_align = __alignof__(_Nocopy_types); + + template + class _Base_manager + { + protected: + static const bool __stored_locally = + (__is_location_invariant<_Functor>::value + && sizeof(_Functor) <= _M_max_size + && __alignof__(_Functor) <= _M_max_align + && (_M_max_align % __alignof__(_Functor) == 0)); + + typedef integral_constant _Local_storage; + + // Retrieve a pointer to the function object + static _Functor* + _M_get_pointer(const _Any_data& __source) + { + const _Functor* __ptr = + __stored_locally? std::__addressof(__source._M_access<_Functor>()) + /* have stored a pointer */ : __source._M_access<_Functor*>(); + return const_cast<_Functor*>(__ptr); + } + + // Clone a location-invariant function object that fits within + // an _Any_data structure. + static void + _M_clone(_Any_data& __dest, const _Any_data& __source, true_type) + { + new (__dest._M_access()) _Functor(__source._M_access<_Functor>()); + } + + // Clone a function object that is not location-invariant or + // that cannot fit into an _Any_data structure. + static void + _M_clone(_Any_data& __dest, const _Any_data& __source, false_type) + { + __dest._M_access<_Functor*>() = + new _Functor(*__source._M_access<_Functor*>()); + } + + // Destroying a location-invariant object may still require + // destruction. + static void + _M_destroy(_Any_data& __victim, true_type) + { + __victim._M_access<_Functor>().~_Functor(); + } + + // Destroying an object located on the heap. + static void + _M_destroy(_Any_data& __victim, false_type) + { + delete __victim._M_access<_Functor*>(); + } + + public: + static bool + _M_manager(_Any_data& __dest, const _Any_data& __source, + _Manager_operation __op) + { + switch (__op) + { +#if __cpp_rtti + case __get_type_info: + __dest._M_access() = &typeid(_Functor); + break; +#endif + case __get_functor_ptr: + __dest._M_access<_Functor*>() = _M_get_pointer(__source); + break; + + case __clone_functor: + _M_clone(__dest, __source, _Local_storage()); + break; + + case __destroy_functor: + _M_destroy(__dest, _Local_storage()); + break; + } + return false; + } + + static void + _M_init_functor(_Any_data& __functor, const _Functor& __f) + { _M_init_functor(__functor, __f, _Local_storage()); } + + template + static bool + _M_not_empty_function(const function<_Signature>& __f) + { return static_cast(__f); } + + template + static bool + _M_not_empty_function(const _Tp*& __fp) + { return __fp; } + + template + static bool + _M_not_empty_function(_Tp _Class::* const& __mp) + { return __mp; } + + template + static bool + _M_not_empty_function(const _Tp&) + { return true; } + + private: + static void + _M_init_functor(_Any_data& __functor, const _Functor& __f, true_type) + { new (__functor._M_access()) _Functor(__f); } + + static void + _M_init_functor(_Any_data& __functor, const _Functor& __f, false_type) + { __functor._M_access<_Functor*>() = new _Functor(__f); } + }; + + template + class _Ref_manager : public _Base_manager<_Functor*> + { + typedef _Function_base::_Base_manager<_Functor*> _Base; + + public: + static bool + _M_manager(_Any_data& __dest, const _Any_data& __source, + _Manager_operation __op) + { + switch (__op) + { +#if __cpp_rtti + case __get_type_info: + __dest._M_access() = &typeid(_Functor); + break; +#endif + case __get_functor_ptr: + __dest._M_access<_Functor*>() = *_Base::_M_get_pointer(__source); + return is_const<_Functor>::value; + break; + + default: + _Base::_M_manager(__dest, __source, __op); + } + return false; + } + + static void + _M_init_functor(_Any_data& __functor, reference_wrapper<_Functor> __f) + { + _Base::_M_init_functor(__functor, std::__addressof(__f.get())); + } + }; + + _Function_base() : _M_manager(0) { } + + ~_Function_base() + { + if (_M_manager) + _M_manager(_M_functor, _M_functor, __destroy_functor); + } + + + bool _M_empty() const { return !_M_manager; } + + typedef bool (*_Manager_type)(_Any_data&, const _Any_data&, + _Manager_operation); + + _Any_data _M_functor; + _Manager_type _M_manager; + }; + + template + class _Function_handler; + + template + class _Function_handler<_Res(_ArgTypes...), _Functor> + : public _Function_base::_Base_manager<_Functor> + { + typedef _Function_base::_Base_manager<_Functor> _Base; + + public: + static _Res + _M_invoke(const _Any_data& __functor, _ArgTypes... __args) + { + return (*_Base::_M_get_pointer(__functor))(__args...); + } + }; + + template + class _Function_handler + : public _Function_base::_Base_manager<_Functor> + { + typedef _Function_base::_Base_manager<_Functor> _Base; + + public: + static void + _M_invoke(const _Any_data& __functor, _ArgTypes... __args) + { + (*_Base::_M_get_pointer(__functor))(__args...); + } + }; + + template + class _Function_handler<_Res(_ArgTypes...), reference_wrapper<_Functor> > + : public _Function_base::_Ref_manager<_Functor> + { + typedef _Function_base::_Ref_manager<_Functor> _Base; + + public: + static _Res + _M_invoke(const _Any_data& __functor, _ArgTypes... __args) + { + return + __callable_functor(**_Base::_M_get_pointer(__functor))(__args...); + } + }; + + template + class _Function_handler > + : public _Function_base::_Ref_manager<_Functor> + { + typedef _Function_base::_Ref_manager<_Functor> _Base; + + public: + static void + _M_invoke(const _Any_data& __functor, _ArgTypes... __args) + { + __callable_functor(**_Base::_M_get_pointer(__functor))(__args...); + } + }; + + template + class _Function_handler<_Res(_ArgTypes...), _Member _Class::*> + : public _Function_handler + { + typedef _Function_handler + _Base; + + public: + static _Res + _M_invoke(const _Any_data& __functor, _ArgTypes... __args) + { + return tr1:: + mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...); + } + }; + + template + class _Function_handler + : public _Function_base::_Base_manager< + _Simple_type_wrapper< _Member _Class::* > > + { + typedef _Member _Class::* _Functor; + typedef _Simple_type_wrapper<_Functor> _Wrapper; + typedef _Function_base::_Base_manager<_Wrapper> _Base; + + public: + static bool + _M_manager(_Any_data& __dest, const _Any_data& __source, + _Manager_operation __op) + { + switch (__op) + { +#if __cpp_rtti + case __get_type_info: + __dest._M_access() = &typeid(_Functor); + break; +#endif + case __get_functor_ptr: + __dest._M_access<_Functor*>() = + &_Base::_M_get_pointer(__source)->__value; + break; + + default: + _Base::_M_manager(__dest, __source, __op); + } + return false; + } + + static void + _M_invoke(const _Any_data& __functor, _ArgTypes... __args) + { + tr1::mem_fn(_Base::_M_get_pointer(__functor)->__value)(__args...); + } + }; + + /// class function + template + class function<_Res(_ArgTypes...)> + : public _Maybe_unary_or_binary_function<_Res, _ArgTypes...>, + private _Function_base + { +#if __cplusplus < 201103L + /// This class is used to implement the safe_bool idiom. + struct _Hidden_type + { + _Hidden_type* _M_bool; + }; + + /// This typedef is used to implement the safe_bool idiom. + typedef _Hidden_type* _Hidden_type::* _Safe_bool; +#endif + + typedef _Res _Signature_type(_ArgTypes...); + + struct _Useless { }; + + public: + typedef _Res result_type; + + // [3.7.2.1] construct/copy/destroy + + /** + * @brief Default construct creates an empty function call wrapper. + * @post @c !(bool)*this + */ + function() : _Function_base() { } + + /** + * @brief Default construct creates an empty function call wrapper. + * @post @c !(bool)*this + */ + function(_M_clear_type*) : _Function_base() { } + + /** + * @brief %Function copy constructor. + * @param x A %function object with identical call signature. + * @post @c (bool)*this == (bool)x + * + * The newly-created %function contains a copy of the target of @a + * x (if it has one). + */ + function(const function& __x); + + /** + * @brief Builds a %function that targets a copy of the incoming + * function object. + * @param f A %function object that is callable with parameters of + * type @c T1, @c T2, ..., @c TN and returns a value convertible + * to @c Res. + * + * The newly-created %function object will target a copy of @a + * f. If @a f is @c reference_wrapper, then this function + * object will contain a reference to the function object @c + * f.get(). If @a f is a NULL function pointer or NULL + * pointer-to-member, the newly-created object will be empty. + * + * If @a f is a non-NULL function pointer or an object of type @c + * reference_wrapper, this function will not throw. + */ + template + function(_Functor __f, + typename __gnu_cxx::__enable_if< + !is_integral<_Functor>::value, _Useless>::__type + = _Useless()); + + /** + * @brief %Function assignment operator. + * @param x A %function with identical call signature. + * @post @c (bool)*this == (bool)x + * @returns @c *this + * + * The target of @a x is copied to @c *this. If @a x has no + * target, then @c *this will be empty. + * + * If @a x targets a function pointer or a reference to a function + * object, then this operation will not throw an %exception. + */ + function& + operator=(const function& __x) + { + function(__x).swap(*this); + return *this; + } + + /** + * @brief %Function assignment to zero. + * @post @c !(bool)*this + * @returns @c *this + * + * The target of @c *this is deallocated, leaving it empty. + */ + function& + operator=(_M_clear_type*) + { + if (_M_manager) + { + _M_manager(_M_functor, _M_functor, __destroy_functor); + _M_manager = 0; + _M_invoker = 0; + } + return *this; + } + + /** + * @brief %Function assignment to a new target. + * @param f A %function object that is callable with parameters of + * type @c T1, @c T2, ..., @c TN and returns a value convertible + * to @c Res. + * @return @c *this + * + * This %function object wrapper will target a copy of @a + * f. If @a f is @c reference_wrapper, then this function + * object will contain a reference to the function object @c + * f.get(). If @a f is a NULL function pointer or NULL + * pointer-to-member, @c this object will be empty. + * + * If @a f is a non-NULL function pointer or an object of type @c + * reference_wrapper, this function will not throw. + */ + template + typename __gnu_cxx::__enable_if::value, + function&>::__type + operator=(_Functor __f) + { + function(__f).swap(*this); + return *this; + } + + // [3.7.2.2] function modifiers + + /** + * @brief Swap the targets of two %function objects. + * @param f A %function with identical call signature. + * + * Swap the targets of @c this function object and @a f. This + * function will not throw an %exception. + */ + void swap(function& __x) + { + std::swap(_M_functor, __x._M_functor); + std::swap(_M_manager, __x._M_manager); + std::swap(_M_invoker, __x._M_invoker); + } + + // [3.7.2.3] function capacity + + /** + * @brief Determine if the %function wrapper has a target. + * + * @return @c true when this %function object contains a target, + * or @c false when it is empty. + * + * This function will not throw an %exception. + */ +#if __cplusplus >= 201103L + explicit operator bool() const + { return !_M_empty(); } +#else + operator _Safe_bool() const + { + if (_M_empty()) + return 0; + else + return &_Hidden_type::_M_bool; + } +#endif + + // [3.7.2.4] function invocation + + /** + * @brief Invokes the function targeted by @c *this. + * @returns the result of the target. + * @throws bad_function_call when @c !(bool)*this + * + * The function call operator invokes the target function object + * stored by @c this. + */ + _Res operator()(_ArgTypes... __args) const; + +#if __cpp_rtti + // [3.7.2.5] function target access + /** + * @brief Determine the type of the target of this function object + * wrapper. + * + * @returns the type identifier of the target function object, or + * @c typeid(void) if @c !(bool)*this. + * + * This function will not throw an %exception. + */ + const type_info& target_type() const; + + /** + * @brief Access the stored target function object. + * + * @return Returns a pointer to the stored target function object, + * if @c typeid(Functor).equals(target_type()); otherwise, a NULL + * pointer. + * + * This function will not throw an %exception. + */ + template _Functor* target(); + + /// @overload + template const _Functor* target() const; +#endif + + private: + // [3.7.2.6] undefined operators + template + void operator==(const function<_Function>&) const; + template + void operator!=(const function<_Function>&) const; + + typedef _Res (*_Invoker_type)(const _Any_data&, _ArgTypes...); + _Invoker_type _M_invoker; + }; + + template + function<_Res(_ArgTypes...)>:: + function(const function& __x) + : _Function_base() + { + if (static_cast(__x)) + { + __x._M_manager(_M_functor, __x._M_functor, __clone_functor); + _M_invoker = __x._M_invoker; + _M_manager = __x._M_manager; + } + } + + template + template + function<_Res(_ArgTypes...)>:: + function(_Functor __f, + typename __gnu_cxx::__enable_if< + !is_integral<_Functor>::value, _Useless>::__type) + : _Function_base() + { + typedef _Function_handler<_Signature_type, _Functor> _My_handler; + + if (_My_handler::_M_not_empty_function(__f)) + { + _My_handler::_M_init_functor(_M_functor, __f); + _M_invoker = &_My_handler::_M_invoke; + _M_manager = &_My_handler::_M_manager; + } + } + + template + _Res + function<_Res(_ArgTypes...)>:: + operator()(_ArgTypes... __args) const + { + if (_M_empty()) + _GLIBCXX_THROW_OR_ABORT(bad_function_call()); + return _M_invoker(_M_functor, __args...); + } + +#if __cpp_rtti + template + const type_info& + function<_Res(_ArgTypes...)>:: + target_type() const + { + if (_M_manager) + { + _Any_data __typeinfo_result; + _M_manager(__typeinfo_result, _M_functor, __get_type_info); + return *__typeinfo_result._M_access(); + } + else + return typeid(void); + } + + template + template + _Functor* + function<_Res(_ArgTypes...)>:: + target() + { + if (typeid(_Functor) == target_type() && _M_manager) + { + _Any_data __ptr; + if (_M_manager(__ptr, _M_functor, __get_functor_ptr) + && !is_const<_Functor>::value) + return 0; + else + return __ptr._M_access<_Functor*>(); + } + else + return 0; + } + + template + template + const _Functor* + function<_Res(_ArgTypes...)>:: + target() const + { + if (typeid(_Functor) == target_type() && _M_manager) + { + _Any_data __ptr; + _M_manager(__ptr, _M_functor, __get_functor_ptr); + return __ptr._M_access(); + } + else + return 0; + } +#endif + + // [3.7.2.7] null pointer comparisons + + /** + * @brief Compares a polymorphic function object wrapper against 0 + * (the NULL pointer). + * @returns @c true if the wrapper has no target, @c false otherwise + * + * This function will not throw an %exception. + */ + template + inline bool + operator==(const function<_Signature>& __f, _M_clear_type*) + { return !static_cast(__f); } + + /// @overload + template + inline bool + operator==(_M_clear_type*, const function<_Signature>& __f) + { return !static_cast(__f); } + + /** + * @brief Compares a polymorphic function object wrapper against 0 + * (the NULL pointer). + * @returns @c false if the wrapper has no target, @c true otherwise + * + * This function will not throw an %exception. + */ + template + inline bool + operator!=(const function<_Signature>& __f, _M_clear_type*) + { return static_cast(__f); } + + /// @overload + template + inline bool + operator!=(_M_clear_type*, const function<_Signature>& __f) + { return static_cast(__f); } + + // [3.7.2.8] specialized algorithms + + /** + * @brief Swap the targets of two polymorphic function object wrappers. + * + * This function will not throw an %exception. + */ + template + inline void + swap(function<_Signature>& __x, function<_Signature>& __y) + { __x.swap(__y); } +} + +#if __cplusplus >= 201103L + + template struct is_placeholder; + + template + struct is_placeholder> + : integral_constant + { }; + + template + struct is_placeholder> + : integral_constant + { }; + + template struct is_bind_expression; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + + template + struct is_bind_expression> + : true_type { }; + +#endif // C++11 +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_FUNCTIONAL diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/functional_hash.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/functional_hash.h new file mode 100644 index 000000000..1d9a9630e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/functional_hash.h @@ -0,0 +1,200 @@ +// TR1 functional_hash.h header -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file tr1/functional_hash.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{tr1/functional} + */ + +#ifndef _GLIBCXX_TR1_FUNCTIONAL_HASH_H +#define _GLIBCXX_TR1_FUNCTIONAL_HASH_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /// Class template hash. + // Declaration of default hash functor std::tr1::hash. The types for + // which std::tr1::hash is well-defined is in clause 6.3.3. of the PDTR. + template + struct hash : public std::unary_function<_Tp, size_t> + { + size_t + operator()(_Tp __val) const; + }; + + /// Partial specializations for pointer types. + template + struct hash<_Tp*> : public std::unary_function<_Tp*, size_t> + { + size_t + operator()(_Tp* __p) const + { return reinterpret_cast(__p); } + }; + + /// Explicit specializations for integer types. +#define _TR1_hashtable_define_trivial_hash(_Tp) \ + template<> \ + inline size_t \ + hash<_Tp>::operator()(_Tp __val) const \ + { return static_cast(__val); } + + _TR1_hashtable_define_trivial_hash(bool); + _TR1_hashtable_define_trivial_hash(char); + _TR1_hashtable_define_trivial_hash(signed char); + _TR1_hashtable_define_trivial_hash(unsigned char); + _TR1_hashtable_define_trivial_hash(wchar_t); + _TR1_hashtable_define_trivial_hash(short); + _TR1_hashtable_define_trivial_hash(int); + _TR1_hashtable_define_trivial_hash(long); + _TR1_hashtable_define_trivial_hash(long long); + _TR1_hashtable_define_trivial_hash(unsigned short); + _TR1_hashtable_define_trivial_hash(unsigned int); + _TR1_hashtable_define_trivial_hash(unsigned long); + _TR1_hashtable_define_trivial_hash(unsigned long long); + +#undef _TR1_hashtable_define_trivial_hash + + // Fowler / Noll / Vo (FNV) Hash (type FNV-1a) + // (Used by the next specializations of std::tr1::hash.) + + // N.B. These functions should work on unsigned char, otherwise they do not + // correctly implement the FNV-1a algorithm (see PR59406). + // The existing behaviour is retained for backwards compatibility. + + /// Dummy generic implementation (for sizeof(size_t) != 4, 8). + template + struct _Fnv_hash_base + { + template + static size_t + hash(const _Tp* __ptr, size_t __clength) + { + size_t __result = 0; + const char* __cptr = reinterpret_cast(__ptr); + for (; __clength; --__clength) + __result = (__result * 131) + *__cptr++; + return __result; + } + }; + + template<> + struct _Fnv_hash_base<4> + { + template + static size_t + hash(const _Tp* __ptr, size_t __clength) + { + size_t __result = static_cast(2166136261UL); + const char* __cptr = reinterpret_cast(__ptr); + for (; __clength; --__clength) + { + __result ^= static_cast(*__cptr++); + __result *= static_cast(16777619UL); + } + return __result; + } + }; + + template<> + struct _Fnv_hash_base<8> + { + template + static size_t + hash(const _Tp* __ptr, size_t __clength) + { + size_t __result + = static_cast(14695981039346656037ULL); + const char* __cptr = reinterpret_cast(__ptr); + for (; __clength; --__clength) + { + __result ^= static_cast(*__cptr++); + __result *= static_cast(1099511628211ULL); + } + return __result; + } + }; + + struct _Fnv_hash + : public _Fnv_hash_base + { + using _Fnv_hash_base::hash; + + template + static size_t + hash(const _Tp& __val) + { return hash(&__val, sizeof(__val)); } + }; + + /// Explicit specializations for float. + template<> + inline size_t + hash::operator()(float __val) const + { + // 0 and -0 both hash to zero. + return __val != 0.0f ? std::tr1::_Fnv_hash::hash(__val) : 0; + } + + /// Explicit specializations for double. + template<> + inline size_t + hash::operator()(double __val) const + { + // 0 and -0 both hash to zero. + return __val != 0.0 ? std::tr1::_Fnv_hash::hash(__val) : 0; + } + + /// Explicit specializations for long double. + template<> + _GLIBCXX_PURE size_t + hash::operator()(long double __val) const; + + /// Explicit specialization of member operator for non-builtin types. + template<> + _GLIBCXX_PURE size_t + hash::operator()(string) const; + + template<> + _GLIBCXX_PURE size_t + hash::operator()(const string&) const; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + _GLIBCXX_PURE size_t + hash::operator()(wstring) const; + + template<> + _GLIBCXX_PURE size_t + hash::operator()(const wstring&) const; +#endif +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_FUNCTIONAL_HASH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/gamma.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/gamma.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/gamma.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/gamma.tcc index dbbca1e9e..232edba49 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/gamma.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/gamma.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -50,6 +50,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -62,8 +64,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief This returns Bernoulli numbers from a table or by summation * for larger values. @@ -466,13 +466,13 @@ namespace tr1 return __result; } } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } // namespace std #endif // _GLIBCXX_TR1_GAMMA_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hashtable.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hashtable.h new file mode 100644 index 000000000..1eaaa99fc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hashtable.h @@ -0,0 +1,1181 @@ +// TR1 hashtable.h header -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file tr1/hashtable.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. + * @headername{tr1/unordered_set, tr1/unordered_map} + */ + +#ifndef _GLIBCXX_TR1_HASHTABLE_H +#define _GLIBCXX_TR1_HASHTABLE_H 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + // Class template _Hashtable, class definition. + + // Meaning of class template _Hashtable's template parameters + + // _Key and _Value: arbitrary CopyConstructible types. + + // _Allocator: an allocator type ([lib.allocator.requirements]) whose + // value type is Value. As a conforming extension, we allow for + // value type != Value. + + // _ExtractKey: function object that takes a object of type Value + // and returns a value of type _Key. + + // _Equal: function object that takes two objects of type k and returns + // a bool-like value that is true if the two objects are considered equal. + + // _H1: the hash function. A unary function object with argument type + // Key and result type size_t. Return values should be distributed + // over the entire range [0, numeric_limits:::max()]. + + // _H2: the range-hashing function (in the terminology of Tavori and + // Dreizin). A binary function object whose argument types and result + // type are all size_t. Given arguments r and N, the return value is + // in the range [0, N). + + // _Hash: the ranged hash function (Tavori and Dreizin). A binary function + // whose argument types are _Key and size_t and whose result type is + // size_t. Given arguments k and N, the return value is in the range + // [0, N). Default: hash(k, N) = h2(h1(k), N). If _Hash is anything other + // than the default, _H1 and _H2 are ignored. + + // _RehashPolicy: Policy class with three members, all of which govern + // the bucket count. _M_next_bkt(n) returns a bucket count no smaller + // than n. _M_bkt_for_elements(n) returns a bucket count appropriate + // for an element count of n. _M_need_rehash(n_bkt, n_elt, n_ins) + // determines whether, if the current bucket count is n_bkt and the + // current element count is n_elt, we need to increase the bucket + // count. If so, returns make_pair(true, n), where n is the new + // bucket count. If not, returns make_pair(false, ). + + // ??? Right now it is hard-wired that the number of buckets never + // shrinks. Should we allow _RehashPolicy to change that? + + // __cache_hash_code: bool. true if we store the value of the hash + // function along with the value. This is a time-space tradeoff. + // Storing it may improve lookup speed by reducing the number of times + // we need to call the Equal function. + + // __constant_iterators: bool. true if iterator and const_iterator are + // both constant iterator types. This is true for unordered_set and + // unordered_multiset, false for unordered_map and unordered_multimap. + + // __unique_keys: bool. true if the return value of _Hashtable::count(k) + // is always at most one, false if it may be an arbitrary number. This + // true for unordered_set and unordered_map, false for unordered_multiset + // and unordered_multimap. + + template + class _Hashtable + : public __detail::_Rehash_base<_RehashPolicy, + _Hashtable<_Key, _Value, _Allocator, + _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, + __cache_hash_code, + __constant_iterators, + __unique_keys> >, + public __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, __cache_hash_code>, + public __detail::_Map_base<_Key, _Value, _ExtractKey, __unique_keys, + _Hashtable<_Key, _Value, _Allocator, + _ExtractKey, + _Equal, _H1, _H2, _Hash, + _RehashPolicy, + __cache_hash_code, + __constant_iterators, + __unique_keys> > + { + public: + typedef _Allocator allocator_type; + typedef _Value value_type; + typedef _Key key_type; + typedef _Equal key_equal; + // mapped_type, if present, comes from _Map_base. + // hasher, if present, comes from _Hash_code_base. + typedef typename _Allocator::difference_type difference_type; + typedef typename _Allocator::size_type size_type; + typedef typename _Allocator::pointer pointer; + typedef typename _Allocator::const_pointer const_pointer; + typedef typename _Allocator::reference reference; + typedef typename _Allocator::const_reference const_reference; + + typedef __detail::_Node_iterator + local_iterator; + typedef __detail::_Node_const_iterator + const_local_iterator; + + typedef __detail::_Hashtable_iterator + iterator; + typedef __detail::_Hashtable_const_iterator + const_iterator; + + template + friend struct __detail::_Map_base; + + private: + typedef __detail::_Hash_node<_Value, __cache_hash_code> _Node; + typedef typename _Allocator::template rebind<_Node>::other + _Node_allocator_type; + typedef typename _Allocator::template rebind<_Node*>::other + _Bucket_allocator_type; + + typedef typename _Allocator::template rebind<_Value>::other + _Value_allocator_type; + + _Node_allocator_type _M_node_allocator; + _Node** _M_buckets; + size_type _M_bucket_count; + size_type _M_element_count; + _RehashPolicy _M_rehash_policy; + + _Node* + _M_allocate_node(const value_type& __v); + + void + _M_deallocate_node(_Node* __n); + + void + _M_deallocate_nodes(_Node**, size_type); + + _Node** + _M_allocate_buckets(size_type __n); + + void + _M_deallocate_buckets(_Node**, size_type __n); + + public: + // Constructor, destructor, assignment, swap + _Hashtable(size_type __bucket_hint, + const _H1&, const _H2&, const _Hash&, + const _Equal&, const _ExtractKey&, + const allocator_type&); + + template + _Hashtable(_InputIterator __first, _InputIterator __last, + size_type __bucket_hint, + const _H1&, const _H2&, const _Hash&, + const _Equal&, const _ExtractKey&, + const allocator_type&); + + _Hashtable(const _Hashtable&); + + _Hashtable& + operator=(const _Hashtable&); + + ~_Hashtable(); + + void swap(_Hashtable&); + + // Basic container operations + iterator + begin() + { + iterator __i(_M_buckets); + if (!__i._M_cur_node) + __i._M_incr_bucket(); + return __i; + } + + const_iterator + begin() const + { + const_iterator __i(_M_buckets); + if (!__i._M_cur_node) + __i._M_incr_bucket(); + return __i; + } + + iterator + end() + { return iterator(_M_buckets + _M_bucket_count); } + + const_iterator + end() const + { return const_iterator(_M_buckets + _M_bucket_count); } + + size_type + size() const + { return _M_element_count; } + + bool + empty() const + { return size() == 0; } + + allocator_type + get_allocator() const + { return allocator_type(_M_node_allocator); } + + _Value_allocator_type + _M_get_Value_allocator() const + { return _Value_allocator_type(_M_node_allocator); } + + size_type + max_size() const + { return _M_node_allocator.max_size(); } + + // Observers + key_equal + key_eq() const + { return this->_M_eq; } + + // hash_function, if present, comes from _Hash_code_base. + + // Bucket operations + size_type + bucket_count() const + { return _M_bucket_count; } + + size_type + max_bucket_count() const + { return max_size(); } + + size_type + bucket_size(size_type __n) const + { return std::distance(begin(__n), end(__n)); } + + size_type + bucket(const key_type& __k) const + { + return this->_M_bucket_index(__k, this->_M_hash_code(__k), + bucket_count()); + } + + local_iterator + begin(size_type __n) + { return local_iterator(_M_buckets[__n]); } + + local_iterator + end(size_type) + { return local_iterator(0); } + + const_local_iterator + begin(size_type __n) const + { return const_local_iterator(_M_buckets[__n]); } + + const_local_iterator + end(size_type) const + { return const_local_iterator(0); } + + float + load_factor() const + { + return static_cast(size()) / static_cast(bucket_count()); + } + + // max_load_factor, if present, comes from _Rehash_base. + + // Generalization of max_load_factor. Extension, not found in TR1. Only + // useful if _RehashPolicy is something other than the default. + const _RehashPolicy& + __rehash_policy() const + { return _M_rehash_policy; } + + void + __rehash_policy(const _RehashPolicy&); + + // Lookup. + iterator + find(const key_type& __k); + + const_iterator + find(const key_type& __k) const; + + size_type + count(const key_type& __k) const; + + std::pair + equal_range(const key_type& __k); + + std::pair + equal_range(const key_type& __k) const; + + private: // Find, insert and erase helper functions + // ??? This dispatching is a workaround for the fact that we don't + // have partial specialization of member templates; it would be + // better to just specialize insert on __unique_keys. There may be a + // cleaner workaround. + typedef typename __gnu_cxx::__conditional_type<__unique_keys, + std::pair, iterator>::__type + _Insert_Return_Type; + + typedef typename __gnu_cxx::__conditional_type<__unique_keys, + std::_Select1st<_Insert_Return_Type>, + std::_Identity<_Insert_Return_Type> + >::__type + _Insert_Conv_Type; + + _Node* + _M_find_node(_Node*, const key_type&, + typename _Hashtable::_Hash_code_type) const; + + iterator + _M_insert_bucket(const value_type&, size_type, + typename _Hashtable::_Hash_code_type); + + std::pair + _M_insert(const value_type&, std::tr1::true_type); + + iterator + _M_insert(const value_type&, std::tr1::false_type); + + void + _M_erase_node(_Node*, _Node**); + + public: + // Insert and erase + _Insert_Return_Type + insert(const value_type& __v) + { return _M_insert(__v, std::tr1::integral_constant()); } + + iterator + insert(iterator, const value_type& __v) + { return iterator(_Insert_Conv_Type()(this->insert(__v))); } + + const_iterator + insert(const_iterator, const value_type& __v) + { return const_iterator(_Insert_Conv_Type()(this->insert(__v))); } + + template + void + insert(_InputIterator __first, _InputIterator __last); + + iterator + erase(iterator); + + const_iterator + erase(const_iterator); + + size_type + erase(const key_type&); + + iterator + erase(iterator, iterator); + + const_iterator + erase(const_iterator, const_iterator); + + void + clear(); + + // Set number of buckets to be appropriate for container of n element. + void rehash(size_type __n); + + private: + // Unconditionally change size of bucket array to n. + void _M_rehash(size_type __n); + }; + + + // Definitions of class template _Hashtable's out-of-line member functions. + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::_Node* + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_allocate_node(const value_type& __v) + { + _Node* __n = _M_node_allocator.allocate(1); + __try + { + _M_get_Value_allocator().construct(&__n->_M_v, __v); + __n->_M_next = 0; + return __n; + } + __catch(...) + { + _M_node_allocator.deallocate(__n, 1); + __throw_exception_again; + } + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_deallocate_node(_Node* __n) + { + _M_get_Value_allocator().destroy(&__n->_M_v); + _M_node_allocator.deallocate(__n, 1); + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_deallocate_nodes(_Node** __array, size_type __n) + { + for (size_type __i = 0; __i < __n; ++__i) + { + _Node* __p = __array[__i]; + while (__p) + { + _Node* __tmp = __p; + __p = __p->_M_next; + _M_deallocate_node(__tmp); + } + __array[__i] = 0; + } + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::_Node** + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_allocate_buckets(size_type __n) + { + _Bucket_allocator_type __alloc(_M_node_allocator); + + // We allocate one extra bucket to hold a sentinel, an arbitrary + // non-null pointer. Iterator increment relies on this. + _Node** __p = __alloc.allocate(__n + 1); + std::fill(__p, __p + __n, (_Node*) 0); + __p[__n] = reinterpret_cast<_Node*>(0x1000); + return __p; + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_deallocate_buckets(_Node** __p, size_type __n) + { + _Bucket_allocator_type __alloc(_M_node_allocator); + __alloc.deallocate(__p, __n + 1); + } + + template + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _Hashtable(size_type __bucket_hint, + const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(), + __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, __chc>(__exk, __eq, + __h1, __h2, __h), + __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(), + _M_node_allocator(__a), + _M_bucket_count(0), + _M_element_count(0), + _M_rehash_policy() + { + _M_bucket_count = _M_rehash_policy._M_next_bkt(__bucket_hint); + _M_buckets = _M_allocate_buckets(_M_bucket_count); + } + + template + template + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _Hashtable(_InputIterator __f, _InputIterator __l, + size_type __bucket_hint, + const _H1& __h1, const _H2& __h2, const _Hash& __h, + const _Equal& __eq, const _ExtractKey& __exk, + const allocator_type& __a) + : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(), + __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, __chc>(__exk, __eq, + __h1, __h2, __h), + __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(), + _M_node_allocator(__a), + _M_bucket_count(0), + _M_element_count(0), + _M_rehash_policy() + { + _M_bucket_count = std::max(_M_rehash_policy._M_next_bkt(__bucket_hint), + _M_rehash_policy. + _M_bkt_for_elements(__detail:: + __distance_fw(__f, + __l))); + _M_buckets = _M_allocate_buckets(_M_bucket_count); + __try + { + for (; __f != __l; ++__f) + this->insert(*__f); + } + __catch(...) + { + clear(); + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + __throw_exception_again; + } + } + + template + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _Hashtable(const _Hashtable& __ht) + : __detail::_Rehash_base<_RehashPolicy, _Hashtable>(__ht), + __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, __chc>(__ht), + __detail::_Map_base<_Key, _Value, _ExtractKey, __uk, _Hashtable>(__ht), + _M_node_allocator(__ht._M_node_allocator), + _M_bucket_count(__ht._M_bucket_count), + _M_element_count(__ht._M_element_count), + _M_rehash_policy(__ht._M_rehash_policy) + { + _M_buckets = _M_allocate_buckets(_M_bucket_count); + __try + { + for (size_type __i = 0; __i < __ht._M_bucket_count; ++__i) + { + _Node* __n = __ht._M_buckets[__i]; + _Node** __tail = _M_buckets + __i; + while (__n) + { + *__tail = _M_allocate_node(__n->_M_v); + this->_M_copy_code(*__tail, __n); + __tail = &((*__tail)->_M_next); + __n = __n->_M_next; + } + } + } + __catch(...) + { + clear(); + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + __throw_exception_again; + } + } + + template + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>& + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + operator=(const _Hashtable& __ht) + { + _Hashtable __tmp(__ht); + this->swap(__tmp); + return *this; + } + + template + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + ~_Hashtable() + { + clear(); + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + swap(_Hashtable& __x) + { + // The only base class with member variables is hash_code_base. We + // define _Hash_code_base::_M_swap because different specializations + // have different members. + __detail::_Hash_code_base<_Key, _Value, _ExtractKey, _Equal, + _H1, _H2, _Hash, __chc>::_M_swap(__x); + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 431. Swapping containers with unequal allocators. + std::__alloc_swap<_Node_allocator_type>::_S_do_it(_M_node_allocator, + __x._M_node_allocator); + + std::swap(_M_rehash_policy, __x._M_rehash_policy); + std::swap(_M_buckets, __x._M_buckets); + std::swap(_M_bucket_count, __x._M_bucket_count); + std::swap(_M_element_count, __x._M_element_count); + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + __rehash_policy(const _RehashPolicy& __pol) + { + _M_rehash_policy = __pol; + size_type __n_bkt = __pol._M_bkt_for_elements(_M_element_count); + if (__n_bkt > _M_bucket_count) + _M_rehash(__n_bkt); + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + find(const key_type& __k) + { + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + _Node* __p = _M_find_node(_M_buckets[__n], __k, __code); + return __p ? iterator(__p, _M_buckets + __n) : this->end(); + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::const_iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + find(const key_type& __k) const + { + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + _Node* __p = _M_find_node(_M_buckets[__n], __k, __code); + return __p ? const_iterator(__p, _M_buckets + __n) : this->end(); + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::size_type + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + count(const key_type& __k) const + { + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + std::size_t __result = 0; + for (_Node* __p = _M_buckets[__n]; __p; __p = __p->_M_next) + if (this->_M_compare(__k, __code, __p)) + ++__result; + return __result; + } + + template + std::pair::iterator, + typename _Hashtable<_Key, _Value, _Allocator, + _ExtractKey, _Equal, _H1, + _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::iterator> + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + equal_range(const key_type& __k) + { + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + _Node** __head = _M_buckets + __n; + _Node* __p = _M_find_node(*__head, __k, __code); + + if (__p) + { + _Node* __p1 = __p->_M_next; + for (; __p1; __p1 = __p1->_M_next) + if (!this->_M_compare(__k, __code, __p1)) + break; + + iterator __first(__p, __head); + iterator __last(__p1, __head); + if (!__p1) + __last._M_incr_bucket(); + return std::make_pair(__first, __last); + } + else + return std::make_pair(this->end(), this->end()); + } + + template + std::pair::const_iterator, + typename _Hashtable<_Key, _Value, _Allocator, + _ExtractKey, _Equal, _H1, + _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::const_iterator> + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + equal_range(const key_type& __k) const + { + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + _Node** __head = _M_buckets + __n; + _Node* __p = _M_find_node(*__head, __k, __code); + + if (__p) + { + _Node* __p1 = __p->_M_next; + for (; __p1; __p1 = __p1->_M_next) + if (!this->_M_compare(__k, __code, __p1)) + break; + + const_iterator __first(__p, __head); + const_iterator __last(__p1, __head); + if (!__p1) + __last._M_incr_bucket(); + return std::make_pair(__first, __last); + } + else + return std::make_pair(this->end(), this->end()); + } + + // Find the node whose key compares equal to k, beginning the search + // at p (usually the head of a bucket). Return zero if no node is found. + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, + _Equal, _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::_Node* + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_find_node(_Node* __p, const key_type& __k, + typename _Hashtable::_Hash_code_type __code) const + { + for (; __p; __p = __p->_M_next) + if (this->_M_compare(__k, __code, __p)) + return __p; + return 0; + } + + // Insert v in bucket n (assumes no element with its key already present). + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_insert_bucket(const value_type& __v, size_type __n, + typename _Hashtable::_Hash_code_type __code) + { + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, + _M_element_count, 1); + + // Allocate the new node before doing the rehash so that we don't + // do a rehash if the allocation throws. + _Node* __new_node = _M_allocate_node(__v); + + __try + { + if (__do_rehash.first) + { + const key_type& __k = this->_M_extract(__v); + __n = this->_M_bucket_index(__k, __code, __do_rehash.second); + _M_rehash(__do_rehash.second); + } + + __new_node->_M_next = _M_buckets[__n]; + this->_M_store_code(__new_node, __code); + _M_buckets[__n] = __new_node; + ++_M_element_count; + return iterator(__new_node, _M_buckets + __n); + } + __catch(...) + { + _M_deallocate_node(__new_node); + __throw_exception_again; + } + } + + // Insert v if no element with its key is already present. + template + std::pair::iterator, bool> + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_insert(const value_type& __v, std::tr1::true_type) + { + const key_type& __k = this->_M_extract(__v); + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + + if (_Node* __p = _M_find_node(_M_buckets[__n], __k, __code)) + return std::make_pair(iterator(__p, _M_buckets + __n), false); + return std::make_pair(_M_insert_bucket(__v, __n, __code), true); + } + + // Insert v unconditionally. + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_insert(const value_type& __v, std::tr1::false_type) + { + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, + _M_element_count, 1); + if (__do_rehash.first) + _M_rehash(__do_rehash.second); + + const key_type& __k = this->_M_extract(__v); + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + size_type __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + + // First find the node, avoid leaking new_node if compare throws. + _Node* __prev = _M_find_node(_M_buckets[__n], __k, __code); + _Node* __new_node = _M_allocate_node(__v); + + if (__prev) + { + __new_node->_M_next = __prev->_M_next; + __prev->_M_next = __new_node; + } + else + { + __new_node->_M_next = _M_buckets[__n]; + _M_buckets[__n] = __new_node; + } + this->_M_store_code(__new_node, __code); + + ++_M_element_count; + return iterator(__new_node, _M_buckets + __n); + } + + // For erase(iterator) and erase(const_iterator). + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_erase_node(_Node* __p, _Node** __b) + { + _Node* __cur = *__b; + if (__cur == __p) + *__b = __cur->_M_next; + else + { + _Node* __next = __cur->_M_next; + while (__next != __p) + { + __cur = __next; + __next = __cur->_M_next; + } + __cur->_M_next = __next->_M_next; + } + + _M_deallocate_node(__p); + --_M_element_count; + } + + template + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + insert(_InputIterator __first, _InputIterator __last) + { + size_type __n_elt = __detail::__distance_fw(__first, __last); + std::pair __do_rehash + = _M_rehash_policy._M_need_rehash(_M_bucket_count, + _M_element_count, __n_elt); + if (__do_rehash.first) + _M_rehash(__do_rehash.second); + + for (; __first != __last; ++__first) + this->insert(*__first); + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + erase(iterator __it) + { + iterator __result = __it; + ++__result; + _M_erase_node(__it._M_cur_node, __it._M_cur_bucket); + return __result; + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::const_iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + erase(const_iterator __it) + { + const_iterator __result = __it; + ++__result; + _M_erase_node(__it._M_cur_node, __it._M_cur_bucket); + return __result; + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::size_type + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + erase(const key_type& __k) + { + typename _Hashtable::_Hash_code_type __code = this->_M_hash_code(__k); + std::size_t __n = this->_M_bucket_index(__k, __code, _M_bucket_count); + size_type __result = 0; + + _Node** __slot = _M_buckets + __n; + while (*__slot && !this->_M_compare(__k, __code, *__slot)) + __slot = &((*__slot)->_M_next); + + _Node** __saved_slot = 0; + while (*__slot && this->_M_compare(__k, __code, *__slot)) + { + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 526. Is it undefined if a function in the standard changes + // in parameters? + if (&this->_M_extract((*__slot)->_M_v) != &__k) + { + _Node* __p = *__slot; + *__slot = __p->_M_next; + _M_deallocate_node(__p); + --_M_element_count; + ++__result; + } + else + { + __saved_slot = __slot; + __slot = &((*__slot)->_M_next); + } + } + + if (__saved_slot) + { + _Node* __p = *__saved_slot; + *__saved_slot = __p->_M_next; + _M_deallocate_node(__p); + --_M_element_count; + ++__result; + } + + return __result; + } + + // ??? This could be optimized by taking advantage of the bucket + // structure, but it's not clear that it's worth doing. It probably + // wouldn't even be an optimization unless the load factor is large. + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + erase(iterator __first, iterator __last) + { + while (__first != __last) + __first = this->erase(__first); + return __last; + } + + template + typename _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, + __chc, __cit, __uk>::const_iterator + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + erase(const_iterator __first, const_iterator __last) + { + while (__first != __last) + __first = this->erase(__first); + return __last; + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + clear() + { + _M_deallocate_nodes(_M_buckets, _M_bucket_count); + _M_element_count = 0; + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + rehash(size_type __n) + { + _M_rehash(std::max(_M_rehash_policy._M_next_bkt(__n), + _M_rehash_policy._M_bkt_for_elements(_M_element_count + + 1))); + } + + template + void + _Hashtable<_Key, _Value, _Allocator, _ExtractKey, _Equal, + _H1, _H2, _Hash, _RehashPolicy, __chc, __cit, __uk>:: + _M_rehash(size_type __n) + { + _Node** __new_array = _M_allocate_buckets(__n); + __try + { + for (size_type __i = 0; __i < _M_bucket_count; ++__i) + while (_Node* __p = _M_buckets[__i]) + { + std::size_t __new_index = this->_M_bucket_index(__p, __n); + _M_buckets[__i] = __p->_M_next; + __p->_M_next = __new_array[__new_index]; + __new_array[__new_index] = __p; + } + _M_deallocate_buckets(_M_buckets, _M_bucket_count); + _M_bucket_count = __n; + _M_buckets = __new_array; + } + __catch(...) + { + // A failure here means that a hash function threw an exception. + // We can't restore the previous state without calling the hash + // function again, so the only sensible recovery is to delete + // everything. + _M_deallocate_nodes(__new_array, __n); + _M_deallocate_buckets(__new_array, __n); + _M_deallocate_nodes(_M_buckets, _M_bucket_count); + _M_element_count = 0; + __throw_exception_again; + } + } +} // namespace tr1 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // _GLIBCXX_TR1_HASHTABLE_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hashtable_policy.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hashtable_policy.h new file mode 100644 index 000000000..793880227 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hashtable_policy.h @@ -0,0 +1,779 @@ +// Internal policy header for TR1 unordered_set and unordered_map -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file tr1/hashtable_policy.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. + * @headername{tr1/unordered_map, tr1/unordered_set} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ +namespace __detail +{ + // Helper function: return distance(first, last) for forward + // iterators, or 0 for input iterators. + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last, + std::input_iterator_tag) + { return 0; } + + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last, + std::forward_iterator_tag) + { return std::distance(__first, __last); } + + template + inline typename std::iterator_traits<_Iterator>::difference_type + __distance_fw(_Iterator __first, _Iterator __last) + { + typedef typename std::iterator_traits<_Iterator>::iterator_category _Tag; + return __distance_fw(__first, __last, _Tag()); + } + + // Auxiliary types used for all instantiations of _Hashtable: nodes + // and iterators. + + // Nodes, used to wrap elements stored in the hash table. A policy + // template parameter of class template _Hashtable controls whether + // nodes also store a hash code. In some cases (e.g. strings) this + // may be a performance win. + template + struct _Hash_node; + + template + struct _Hash_node<_Value, true> + { + _Value _M_v; + std::size_t _M_hash_code; + _Hash_node* _M_next; + }; + + template + struct _Hash_node<_Value, false> + { + _Value _M_v; + _Hash_node* _M_next; + }; + + // Local iterators, used to iterate within a bucket but not between + // buckets. + template + struct _Node_iterator_base + { + _Node_iterator_base(_Hash_node<_Value, __cache>* __p) + : _M_cur(__p) { } + + void + _M_incr() + { _M_cur = _M_cur->_M_next; } + + _Hash_node<_Value, __cache>* _M_cur; + }; + + template + inline bool + operator==(const _Node_iterator_base<_Value, __cache>& __x, + const _Node_iterator_base<_Value, __cache>& __y) + { return __x._M_cur == __y._M_cur; } + + template + inline bool + operator!=(const _Node_iterator_base<_Value, __cache>& __x, + const _Node_iterator_base<_Value, __cache>& __y) + { return __x._M_cur != __y._M_cur; } + + template + struct _Node_iterator + : public _Node_iterator_base<_Value, __cache> + { + typedef _Value value_type; + typedef typename + __gnu_cxx::__conditional_type<__constant_iterators, + const _Value*, _Value*>::__type + pointer; + typedef typename + __gnu_cxx::__conditional_type<__constant_iterators, + const _Value&, _Value&>::__type + reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Node_iterator() + : _Node_iterator_base<_Value, __cache>(0) { } + + explicit + _Node_iterator(_Hash_node<_Value, __cache>* __p) + : _Node_iterator_base<_Value, __cache>(__p) { } + + reference + operator*() const + { return this->_M_cur->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur->_M_v); } + + _Node_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Node_iterator + operator++(int) + { + _Node_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + template + struct _Node_const_iterator + : public _Node_iterator_base<_Value, __cache> + { + typedef _Value value_type; + typedef const _Value* pointer; + typedef const _Value& reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Node_const_iterator() + : _Node_iterator_base<_Value, __cache>(0) { } + + explicit + _Node_const_iterator(_Hash_node<_Value, __cache>* __p) + : _Node_iterator_base<_Value, __cache>(__p) { } + + _Node_const_iterator(const _Node_iterator<_Value, __constant_iterators, + __cache>& __x) + : _Node_iterator_base<_Value, __cache>(__x._M_cur) { } + + reference + operator*() const + { return this->_M_cur->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur->_M_v); } + + _Node_const_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Node_const_iterator + operator++(int) + { + _Node_const_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + template + struct _Hashtable_iterator_base + { + _Hashtable_iterator_base(_Hash_node<_Value, __cache>* __node, + _Hash_node<_Value, __cache>** __bucket) + : _M_cur_node(__node), _M_cur_bucket(__bucket) { } + + void + _M_incr() + { + _M_cur_node = _M_cur_node->_M_next; + if (!_M_cur_node) + _M_incr_bucket(); + } + + void + _M_incr_bucket(); + + _Hash_node<_Value, __cache>* _M_cur_node; + _Hash_node<_Value, __cache>** _M_cur_bucket; + }; + + // Global iterators, used for arbitrary iteration within a hash + // table. Larger and more expensive than local iterators. + template + void + _Hashtable_iterator_base<_Value, __cache>:: + _M_incr_bucket() + { + ++_M_cur_bucket; + + // This loop requires the bucket array to have a non-null sentinel. + while (!*_M_cur_bucket) + ++_M_cur_bucket; + _M_cur_node = *_M_cur_bucket; + } + + template + inline bool + operator==(const _Hashtable_iterator_base<_Value, __cache>& __x, + const _Hashtable_iterator_base<_Value, __cache>& __y) + { return __x._M_cur_node == __y._M_cur_node; } + + template + inline bool + operator!=(const _Hashtable_iterator_base<_Value, __cache>& __x, + const _Hashtable_iterator_base<_Value, __cache>& __y) + { return __x._M_cur_node != __y._M_cur_node; } + + template + struct _Hashtable_iterator + : public _Hashtable_iterator_base<_Value, __cache> + { + typedef _Value value_type; + typedef typename + __gnu_cxx::__conditional_type<__constant_iterators, + const _Value*, _Value*>::__type + pointer; + typedef typename + __gnu_cxx::__conditional_type<__constant_iterators, + const _Value&, _Value&>::__type + reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Hashtable_iterator() + : _Hashtable_iterator_base<_Value, __cache>(0, 0) { } + + _Hashtable_iterator(_Hash_node<_Value, __cache>* __p, + _Hash_node<_Value, __cache>** __b) + : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { } + + explicit + _Hashtable_iterator(_Hash_node<_Value, __cache>** __b) + : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { } + + reference + operator*() const + { return this->_M_cur_node->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur_node->_M_v); } + + _Hashtable_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Hashtable_iterator + operator++(int) + { + _Hashtable_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + template + struct _Hashtable_const_iterator + : public _Hashtable_iterator_base<_Value, __cache> + { + typedef _Value value_type; + typedef const _Value* pointer; + typedef const _Value& reference; + typedef std::ptrdiff_t difference_type; + typedef std::forward_iterator_tag iterator_category; + + _Hashtable_const_iterator() + : _Hashtable_iterator_base<_Value, __cache>(0, 0) { } + + _Hashtable_const_iterator(_Hash_node<_Value, __cache>* __p, + _Hash_node<_Value, __cache>** __b) + : _Hashtable_iterator_base<_Value, __cache>(__p, __b) { } + + explicit + _Hashtable_const_iterator(_Hash_node<_Value, __cache>** __b) + : _Hashtable_iterator_base<_Value, __cache>(*__b, __b) { } + + _Hashtable_const_iterator(const _Hashtable_iterator<_Value, + __constant_iterators, __cache>& __x) + : _Hashtable_iterator_base<_Value, __cache>(__x._M_cur_node, + __x._M_cur_bucket) { } + + reference + operator*() const + { return this->_M_cur_node->_M_v; } + + pointer + operator->() const + { return std::__addressof(this->_M_cur_node->_M_v); } + + _Hashtable_const_iterator& + operator++() + { + this->_M_incr(); + return *this; + } + + _Hashtable_const_iterator + operator++(int) + { + _Hashtable_const_iterator __tmp(*this); + this->_M_incr(); + return __tmp; + } + }; + + + // Many of class template _Hashtable's template parameters are policy + // classes. These are defaults for the policies. + + // Default range hashing function: use division to fold a large number + // into the range [0, N). + struct _Mod_range_hashing + { + typedef std::size_t first_argument_type; + typedef std::size_t second_argument_type; + typedef std::size_t result_type; + + result_type + operator()(first_argument_type __num, second_argument_type __den) const + { return __num % __den; } + }; + + // Default ranged hash function H. In principle it should be a + // function object composed from objects of type H1 and H2 such that + // h(k, N) = h2(h1(k), N), but that would mean making extra copies of + // h1 and h2. So instead we'll just use a tag to tell class template + // hashtable to do that composition. + struct _Default_ranged_hash { }; + + // Default value for rehash policy. Bucket size is (usually) the + // smallest prime that keeps the load factor small enough. + struct _Prime_rehash_policy + { + _Prime_rehash_policy(float __z = 1.0) + : _M_max_load_factor(__z), _M_growth_factor(2.f), _M_next_resize(0) { } + + float + max_load_factor() const + { return _M_max_load_factor; } + + // Return a bucket size no smaller than n. + std::size_t + _M_next_bkt(std::size_t __n) const; + + // Return a bucket count appropriate for n elements + std::size_t + _M_bkt_for_elements(std::size_t __n) const; + + // __n_bkt is current bucket count, __n_elt is current element count, + // and __n_ins is number of elements to be inserted. Do we need to + // increase bucket count? If so, return make_pair(true, n), where n + // is the new bucket count. If not, return make_pair(false, 0). + std::pair + _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, + std::size_t __n_ins) const; + + enum { _S_n_primes = sizeof(unsigned long) != 8 ? 256 : 256 + 48 }; + + float _M_max_load_factor; + float _M_growth_factor; + mutable std::size_t _M_next_resize; + }; + + extern const unsigned long __prime_list[]; + + // XXX This is a hack. There's no good reason for any of + // _Prime_rehash_policy's member functions to be inline. + + // Return a prime no smaller than n. + inline std::size_t + _Prime_rehash_policy:: + _M_next_bkt(std::size_t __n) const + { + // Don't include the last prime in the search, so that anything + // higher than the second-to-last prime returns a past-the-end + // iterator that can be dereferenced to get the last prime. + const unsigned long* __p + = std::lower_bound(__prime_list, __prime_list + _S_n_primes - 1, __n); + _M_next_resize = + static_cast(__builtin_ceil(*__p * _M_max_load_factor)); + return *__p; + } + + // Return the smallest prime p such that alpha p >= n, where alpha + // is the load factor. + inline std::size_t + _Prime_rehash_policy:: + _M_bkt_for_elements(std::size_t __n) const + { + const float __min_bkts = __n / _M_max_load_factor; + return _M_next_bkt(__builtin_ceil(__min_bkts)); + } + + // Finds the smallest prime p such that alpha p > __n_elt + __n_ins. + // If p > __n_bkt, return make_pair(true, p); otherwise return + // make_pair(false, 0). In principle this isn't very different from + // _M_bkt_for_elements. + + // The only tricky part is that we're caching the element count at + // which we need to rehash, so we don't have to do a floating-point + // multiply for every insertion. + + inline std::pair + _Prime_rehash_policy:: + _M_need_rehash(std::size_t __n_bkt, std::size_t __n_elt, + std::size_t __n_ins) const + { + if (__n_elt + __n_ins > _M_next_resize) + { + float __min_bkts = ((float(__n_ins) + float(__n_elt)) + / _M_max_load_factor); + if (__min_bkts > __n_bkt) + { + __min_bkts = std::max(__min_bkts, _M_growth_factor * __n_bkt); + return std::make_pair(true, + _M_next_bkt(__builtin_ceil(__min_bkts))); + } + else + { + _M_next_resize = static_cast + (__builtin_ceil(__n_bkt * _M_max_load_factor)); + return std::make_pair(false, 0); + } + } + else + return std::make_pair(false, 0); + } + + // Base classes for std::tr1::_Hashtable. We define these base + // classes because in some cases we want to do different things + // depending on the value of a policy class. In some cases the + // policy class affects which member functions and nested typedefs + // are defined; we handle that by specializing base class templates. + // Several of the base class templates need to access other members + // of class template _Hashtable, so we use the "curiously recurring + // template pattern" for them. + + // class template _Map_base. If the hashtable has a value type of the + // form pair and a key extraction policy that returns the + // first part of the pair, the hashtable gets a mapped_type typedef. + // If it satisfies those criteria and also has unique keys, then it + // also gets an operator[]. + template + struct _Map_base { }; + + template + struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, false, _Hashtable> + { + typedef typename _Pair::second_type mapped_type; + }; + + template + struct _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable> + { + typedef typename _Pair::second_type mapped_type; + + mapped_type& + operator[](const _Key& __k); + }; + + template + typename _Map_base<_Key, _Pair, std::_Select1st<_Pair>, + true, _Hashtable>::mapped_type& + _Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>:: + operator[](const _Key& __k) + { + _Hashtable* __h = static_cast<_Hashtable*>(this); + typename _Hashtable::_Hash_code_type __code = __h->_M_hash_code(__k); + std::size_t __n = __h->_M_bucket_index(__k, __code, + __h->_M_bucket_count); + + typename _Hashtable::_Node* __p = + __h->_M_find_node(__h->_M_buckets[__n], __k, __code); + if (!__p) + return __h->_M_insert_bucket(std::make_pair(__k, mapped_type()), + __n, __code)->second; + return (__p->_M_v).second; + } + + // class template _Rehash_base. Give hashtable the max_load_factor + // functions iff the rehash policy is _Prime_rehash_policy. + template + struct _Rehash_base { }; + + template + struct _Rehash_base<_Prime_rehash_policy, _Hashtable> + { + float + max_load_factor() const + { + const _Hashtable* __this = static_cast(this); + return __this->__rehash_policy().max_load_factor(); + } + + void + max_load_factor(float __z) + { + _Hashtable* __this = static_cast<_Hashtable*>(this); + __this->__rehash_policy(_Prime_rehash_policy(__z)); + } + }; + + // Class template _Hash_code_base. Encapsulates two policy issues that + // aren't quite orthogonal. + // (1) the difference between using a ranged hash function and using + // the combination of a hash function and a range-hashing function. + // In the former case we don't have such things as hash codes, so + // we have a dummy type as placeholder. + // (2) Whether or not we cache hash codes. Caching hash codes is + // meaningless if we have a ranged hash function. + // We also put the key extraction and equality comparison function + // objects here, for convenience. + + // Primary template: unused except as a hook for specializations. + template + struct _Hash_code_base; + + // Specialization: ranged hash function, no caching hash codes. H1 + // and H2 are provided but ignored. We define a dummy hash code type. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, + _Hash, false> + { + protected: + _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq, + const _H1&, const _H2&, const _Hash& __h) + : _M_extract(__ex), _M_eq(__eq), _M_ranged_hash(__h) { } + + typedef void* _Hash_code_type; + + _Hash_code_type + _M_hash_code(const _Key& __key) const + { return 0; } + + std::size_t + _M_bucket_index(const _Key& __k, _Hash_code_type, + std::size_t __n) const + { return _M_ranged_hash(__k, __n); } + + std::size_t + _M_bucket_index(const _Hash_node<_Value, false>* __p, + std::size_t __n) const + { return _M_ranged_hash(_M_extract(__p->_M_v), __n); } + + bool + _M_compare(const _Key& __k, _Hash_code_type, + _Hash_node<_Value, false>* __n) const + { return _M_eq(__k, _M_extract(__n->_M_v)); } + + void + _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const + { } + + void + _M_copy_code(_Hash_node<_Value, false>*, + const _Hash_node<_Value, false>*) const + { } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract, __x._M_extract); + std::swap(_M_eq, __x._M_eq); + std::swap(_M_ranged_hash, __x._M_ranged_hash); + } + + protected: + _ExtractKey _M_extract; + _Equal _M_eq; + _Hash _M_ranged_hash; + }; + + + // No specialization for ranged hash function while caching hash codes. + // That combination is meaningless, and trying to do it is an error. + + + // Specialization: ranged hash function, cache hash codes. This + // combination is meaningless, so we provide only a declaration + // and no definition. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, + _Hash, true>; + + // Specialization: hash function and range-hashing function, no + // caching of hash codes. H is provided but ignored. Provides + // typedef and accessor required by TR1. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, + _Default_ranged_hash, false> + { + typedef _H1 hasher; + + hasher + hash_function() const + { return _M_h1; } + + protected: + _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq, + const _H1& __h1, const _H2& __h2, + const _Default_ranged_hash&) + : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { } + + typedef std::size_t _Hash_code_type; + + _Hash_code_type + _M_hash_code(const _Key& __k) const + { return _M_h1(__k); } + + std::size_t + _M_bucket_index(const _Key&, _Hash_code_type __c, + std::size_t __n) const + { return _M_h2(__c, __n); } + + std::size_t + _M_bucket_index(const _Hash_node<_Value, false>* __p, + std::size_t __n) const + { return _M_h2(_M_h1(_M_extract(__p->_M_v)), __n); } + + bool + _M_compare(const _Key& __k, _Hash_code_type, + _Hash_node<_Value, false>* __n) const + { return _M_eq(__k, _M_extract(__n->_M_v)); } + + void + _M_store_code(_Hash_node<_Value, false>*, _Hash_code_type) const + { } + + void + _M_copy_code(_Hash_node<_Value, false>*, + const _Hash_node<_Value, false>*) const + { } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract, __x._M_extract); + std::swap(_M_eq, __x._M_eq); + std::swap(_M_h1, __x._M_h1); + std::swap(_M_h2, __x._M_h2); + } + + protected: + _ExtractKey _M_extract; + _Equal _M_eq; + _H1 _M_h1; + _H2 _M_h2; + }; + + // Specialization: hash function and range-hashing function, + // caching hash codes. H is provided but ignored. Provides + // typedef and accessor required by TR1. + template + struct _Hash_code_base<_Key, _Value, _ExtractKey, _Equal, _H1, _H2, + _Default_ranged_hash, true> + { + typedef _H1 hasher; + + hasher + hash_function() const + { return _M_h1; } + + protected: + _Hash_code_base(const _ExtractKey& __ex, const _Equal& __eq, + const _H1& __h1, const _H2& __h2, + const _Default_ranged_hash&) + : _M_extract(__ex), _M_eq(__eq), _M_h1(__h1), _M_h2(__h2) { } + + typedef std::size_t _Hash_code_type; + + _Hash_code_type + _M_hash_code(const _Key& __k) const + { return _M_h1(__k); } + + std::size_t + _M_bucket_index(const _Key&, _Hash_code_type __c, + std::size_t __n) const + { return _M_h2(__c, __n); } + + std::size_t + _M_bucket_index(const _Hash_node<_Value, true>* __p, + std::size_t __n) const + { return _M_h2(__p->_M_hash_code, __n); } + + bool + _M_compare(const _Key& __k, _Hash_code_type __c, + _Hash_node<_Value, true>* __n) const + { return __c == __n->_M_hash_code && _M_eq(__k, _M_extract(__n->_M_v)); } + + void + _M_store_code(_Hash_node<_Value, true>* __n, _Hash_code_type __c) const + { __n->_M_hash_code = __c; } + + void + _M_copy_code(_Hash_node<_Value, true>* __to, + const _Hash_node<_Value, true>* __from) const + { __to->_M_hash_code = __from->_M_hash_code; } + + void + _M_swap(_Hash_code_base& __x) + { + std::swap(_M_extract, __x._M_extract); + std::swap(_M_eq, __x._M_eq); + std::swap(_M_h1, __x._M_h1); + std::swap(_M_h2, __x._M_h2); + } + + protected: + _ExtractKey _M_extract; + _Equal _M_eq; + _H1 _M_h1; + _H2 _M_h2; + }; +} // namespace __detail +} + +_GLIBCXX_END_NAMESPACE_VERSION +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hypergeometric.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hypergeometric.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hypergeometric.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hypergeometric.tcc index 49af5f98d..f87aeb534 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/hypergeometric.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/hypergeometric.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -43,6 +43,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -57,8 +59,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief This routine returns the confluent hypergeometric function * by series expansion. @@ -773,13 +773,13 @@ namespace tr1 else return __hyperg_luke(__a, __b, __c, __x); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_HYPERGEOMETRIC_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/inttypes.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/inttypes.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/inttypes.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/inttypes.h index 0fa409d8e..b6f2fc956 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/inttypes.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/inttypes.h @@ -1,6 +1,6 @@ // TR1 inttypes.h -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/legendre_function.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/legendre_function.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/legendre_function.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/legendre_function.tcc index ea2a511d9..e2d1880ec 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/legendre_function.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/legendre_function.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -48,6 +48,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -62,8 +64,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Return the Legendre polynomial by recursion on order * @f$ l @f$. @@ -301,13 +301,13 @@ namespace tr1 } } } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_LEGENDRE_FUNCTION_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/limits.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/limits.h new file mode 100644 index 000000000..85e39a37e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/limits.h @@ -0,0 +1,34 @@ +// TR1 limits.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/limits.h + * This is a TR1 C++ Library header. + */ + +#ifndef _TR1_LIMITS_H +#define _TR1_LIMITS_H 1 + +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/math.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/math.h new file mode 100644 index 000000000..a3a3a6140 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/math.h @@ -0,0 +1,186 @@ +// TR1 math.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/math.h + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_MATH_H +#define _GLIBCXX_TR1_MATH_H 1 + +#include + +#if _GLIBCXX_USE_C99_MATH_TR1 + +using std::tr1::acos; +using std::tr1::acosh; +using std::tr1::asin; +using std::tr1::asinh; +using std::tr1::atan; +using std::tr1::atan2; +using std::tr1::atanh; +using std::tr1::cbrt; +using std::tr1::ceil; +using std::tr1::copysign; +using std::tr1::cos; +using std::tr1::cosh; +using std::tr1::erf; +using std::tr1::erfc; +using std::tr1::exp; +using std::tr1::exp2; +using std::tr1::expm1; +using std::tr1::fabs; +using std::tr1::fdim; +using std::tr1::floor; +using std::tr1::fma; +using std::tr1::fmax; +using std::tr1::fmin; +using std::tr1::fmod; +using std::tr1::frexp; +using std::tr1::hypot; +using std::tr1::ilogb; +using std::tr1::ldexp; +using std::tr1::lgamma; +using std::tr1::llrint; +using std::tr1::llround; +using std::tr1::log; +using std::tr1::log10; +using std::tr1::log1p; +using std::tr1::log2; +using std::tr1::logb; +using std::tr1::lrint; +using std::tr1::lround; +using std::tr1::nearbyint; +using std::tr1::nextafter; +using std::tr1::nexttoward; +using std::tr1::pow; +using std::tr1::remainder; +using std::tr1::remquo; +using std::tr1::rint; +using std::tr1::round; +using std::tr1::scalbln; +using std::tr1::scalbn; +using std::tr1::sin; +using std::tr1::sinh; +using std::tr1::sqrt; +using std::tr1::tan; +using std::tr1::tanh; +using std::tr1::tgamma; +using std::tr1::trunc; + +#endif + +using std::tr1::assoc_laguerref; +using std::tr1::assoc_laguerre; +using std::tr1::assoc_laguerrel; + +using std::tr1::assoc_legendref; +using std::tr1::assoc_legendre; +using std::tr1::assoc_legendrel; + +using std::tr1::betaf; +using std::tr1::beta; +using std::tr1::betal; + +using std::tr1::comp_ellint_1f; +using std::tr1::comp_ellint_1; +using std::tr1::comp_ellint_1l; + +using std::tr1::comp_ellint_2f; +using std::tr1::comp_ellint_2; +using std::tr1::comp_ellint_2l; + +using std::tr1::comp_ellint_3f; +using std::tr1::comp_ellint_3; +using std::tr1::comp_ellint_3l; + +using std::tr1::conf_hypergf; +using std::tr1::conf_hyperg; +using std::tr1::conf_hypergl; + +using std::tr1::cyl_bessel_if; +using std::tr1::cyl_bessel_i; +using std::tr1::cyl_bessel_il; + +using std::tr1::cyl_bessel_jf; +using std::tr1::cyl_bessel_j; +using std::tr1::cyl_bessel_jl; + +using std::tr1::cyl_bessel_kf; +using std::tr1::cyl_bessel_k; +using std::tr1::cyl_bessel_kl; + +using std::tr1::cyl_neumannf; +using std::tr1::cyl_neumann; +using std::tr1::cyl_neumannl; + +using std::tr1::ellint_1f; +using std::tr1::ellint_1; +using std::tr1::ellint_1l; + +using std::tr1::ellint_2f; +using std::tr1::ellint_2; +using std::tr1::ellint_2l; + +using std::tr1::ellint_3f; +using std::tr1::ellint_3; +using std::tr1::ellint_3l; + +using std::tr1::expintf; +using std::tr1::expint; +using std::tr1::expintl; + +using std::tr1::hermitef; +using std::tr1::hermite; +using std::tr1::hermitel; + +using std::tr1::hypergf; +using std::tr1::hyperg; +using std::tr1::hypergl; + +using std::tr1::laguerref; +using std::tr1::laguerre; +using std::tr1::laguerrel; + +using std::tr1::legendref; +using std::tr1::legendre; +using std::tr1::legendrel; + +using std::tr1::riemann_zetaf; +using std::tr1::riemann_zeta; +using std::tr1::riemann_zetal; + +using std::tr1::sph_besself; +using std::tr1::sph_bessel; +using std::tr1::sph_bessell; + +using std::tr1::sph_legendref; +using std::tr1::sph_legendre; +using std::tr1::sph_legendrel; + +using std::tr1::sph_neumannf; +using std::tr1::sph_neumann; +using std::tr1::sph_neumannl; + +#endif // _GLIBCXX_TR1_MATH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/memory b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/memory new file mode 100644 index 000000000..ab572cb6f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/memory @@ -0,0 +1,52 @@ +// -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +/** + * @file tr1/memory + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_MEMORY +#define _GLIBCXX_TR1_MEMORY 1 + +#pragma GCC system_header + +#if defined(_GLIBCXX_INCLUDE_AS_CXX11) +# error TR1 header cannot be included from C++11 header +#endif + +#include +#include // std::exception +#include // std::type_info in get_deleter +#include // std::swap +#include // std::basic_ostream +#include +#include +#include +#include // std::less +#include +#include +#include + +#endif // _GLIBCXX_TR1_MEMORY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/modified_bessel_func.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/modified_bessel_func.tcc similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/modified_bessel_func.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/modified_bessel_func.tcc index d21e3c7de..5fc347a74 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/modified_bessel_func.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/modified_bessel_func.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -50,6 +50,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS #elif defined(_GLIBCXX_TR1_CMATH) namespace tr1 @@ -62,8 +64,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Compute the modified Bessel functions @f$ I_\nu(x) @f$ and * @f$ K_\nu(x) @f$ and their first derivatives @@ -377,8 +377,19 @@ namespace tr1 const _Tp __absx = std::abs(__x); const _Tp __rootx = std::sqrt(__absx); const _Tp __z = _Tp(2) * __absx * __rootx / _Tp(3); + const _Tp _S_NaN = std::numeric_limits<_Tp>::quiet_NaN(); + const _Tp _S_inf = std::numeric_limits<_Tp>::infinity(); - if (__x > _Tp(0)) + if (__isnan(__x)) + __Bip = __Aip = __Bi = __Ai = std::numeric_limits<_Tp>::quiet_NaN(); + else if (__z == _S_inf) + { + __Aip = __Ai = _Tp(0); + __Bip = __Bi = _S_inf; + } + else if (__z == -_S_inf) + __Bip = __Aip = __Bi = __Ai = _Tp(0); + else if (__x > _Tp(0)) { _Tp __I_nu, __Ip_nu, __K_nu, __Kp_nu; @@ -430,12 +441,12 @@ namespace tr1 return; } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_MODIFIED_BESSEL_FUNC_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/poly_hermite.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/poly_hermite.tcc similarity index 96% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/poly_hermite.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/poly_hermite.tcc index 80ea2187e..2fed8e5cf 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/poly_hermite.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/poly_hermite.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -41,6 +41,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS #elif defined(_GLIBCXX_TR1_CMATH) namespace tr1 @@ -53,8 +55,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief This routine returns the Hermite polynomial * of order n: \f$ H_n(x) \f$ by recursion on n. @@ -120,12 +120,12 @@ namespace tr1 else return __poly_hermite_recursion(__n, __x); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_POLY_HERMITE_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/poly_laguerre.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/poly_laguerre.tcc similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/poly_laguerre.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/poly_laguerre.tcc index 0c33c0320..fcfbdd26a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/poly_laguerre.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/poly_laguerre.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -43,6 +43,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -57,8 +59,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief This routine returns the associated Laguerre polynomial * of order @f$ n @f$, degree @f$ \alpha @f$ for large n. @@ -317,13 +317,13 @@ namespace tr1 inline _Tp __laguerre(unsigned int __n, _Tp __x) { return __poly_laguerre(__n, 0, __x); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_POLY_LAGUERRE_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random new file mode 100644 index 000000000..4c48d5a44 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random @@ -0,0 +1,50 @@ +// random number generation -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** + * @file tr1/random + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_RANDOM +#define _GLIBCXX_TR1_RANDOM 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#endif // _GLIBCXX_TR1_RANDOM diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random.h new file mode 100644 index 000000000..d05d43af4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random.h @@ -0,0 +1,2414 @@ +// random number generation -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + +/** + * @file tr1/random.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{tr1/random} + */ + +#ifndef _GLIBCXX_TR1_RANDOM_H +#define _GLIBCXX_TR1_RANDOM_H 1 + +#pragma GCC system_header + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + // [5.1] Random number generation + + /** + * @addtogroup tr1_random Random Number Generation + * A facility for generating random numbers on selected distributions. + * @{ + */ + + /* + * Implementation-space details. + */ + namespace __detail + { + template::digits> + struct _Shift + { static const _UIntType __value = 0; }; + + template + struct _Shift<_UIntType, __w, true> + { static const _UIntType __value = _UIntType(1) << __w; }; + + template + struct _Mod; + + // Dispatch based on modulus value to prevent divide-by-zero compile-time + // errors when m == 0. + template + inline _Tp + __mod(_Tp __x) + { return _Mod<_Tp, __a, __c, __m, __m == 0>::__calc(__x); } + + typedef __gnu_cxx::__conditional_type<(sizeof(unsigned) == 4), + unsigned, unsigned long>::__type _UInt32Type; + + /* + * An adaptor class for converting the output of any Generator into + * the input for a specific Distribution. + */ + template + struct _Adaptor + { + typedef typename remove_reference<_Engine>::type _BEngine; + typedef typename _BEngine::result_type _Engine_result_type; + typedef typename _Distribution::input_type result_type; + + public: + _Adaptor(const _Engine& __g) + : _M_g(__g) { } + + result_type + min() const + { + result_type __return_value; + if (is_integral<_Engine_result_type>::value + && is_integral::value) + __return_value = _M_g.min(); + else + __return_value = result_type(0); + return __return_value; + } + + result_type + max() const + { + result_type __return_value; + if (is_integral<_Engine_result_type>::value + && is_integral::value) + __return_value = _M_g.max(); + else if (!is_integral::value) + __return_value = result_type(1); + else + __return_value = std::numeric_limits::max() - 1; + return __return_value; + } + + /* + * Converts a value generated by the adapted random number generator + * into a value in the input domain for the dependent random number + * distribution. + * + * Because the type traits are compile time constants only the + * appropriate clause of the if statements will actually be emitted + * by the compiler. + */ + result_type + operator()() + { + result_type __return_value; + if (is_integral<_Engine_result_type>::value + && is_integral::value) + __return_value = _M_g(); + else if (!is_integral<_Engine_result_type>::value + && !is_integral::value) + __return_value = result_type(_M_g() - _M_g.min()) + / result_type(_M_g.max() - _M_g.min()); + else if (is_integral<_Engine_result_type>::value + && !is_integral::value) + __return_value = result_type(_M_g() - _M_g.min()) + / result_type(_M_g.max() - _M_g.min() + result_type(1)); + else + __return_value = (((_M_g() - _M_g.min()) + / (_M_g.max() - _M_g.min())) + * std::numeric_limits::max()); + return __return_value; + } + + private: + _Engine _M_g; + }; + + // Specialization for _Engine*. + template + struct _Adaptor<_Engine*, _Distribution> + { + typedef typename _Engine::result_type _Engine_result_type; + typedef typename _Distribution::input_type result_type; + + public: + _Adaptor(_Engine* __g) + : _M_g(__g) { } + + result_type + min() const + { + result_type __return_value; + if (is_integral<_Engine_result_type>::value + && is_integral::value) + __return_value = _M_g->min(); + else + __return_value = result_type(0); + return __return_value; + } + + result_type + max() const + { + result_type __return_value; + if (is_integral<_Engine_result_type>::value + && is_integral::value) + __return_value = _M_g->max(); + else if (!is_integral::value) + __return_value = result_type(1); + else + __return_value = std::numeric_limits::max() - 1; + return __return_value; + } + + result_type + operator()() + { + result_type __return_value; + if (is_integral<_Engine_result_type>::value + && is_integral::value) + __return_value = (*_M_g)(); + else if (!is_integral<_Engine_result_type>::value + && !is_integral::value) + __return_value = result_type((*_M_g)() - _M_g->min()) + / result_type(_M_g->max() - _M_g->min()); + else if (is_integral<_Engine_result_type>::value + && !is_integral::value) + __return_value = result_type((*_M_g)() - _M_g->min()) + / result_type(_M_g->max() - _M_g->min() + result_type(1)); + else + __return_value = ((((*_M_g)() - _M_g->min()) + / (_M_g->max() - _M_g->min())) + * std::numeric_limits::max()); + return __return_value; + } + + private: + _Engine* _M_g; + }; + } // namespace __detail + + /** + * Produces random numbers on a given distribution function using a + * non-uniform random number generation engine. + * + * @todo the engine_value_type needs to be studied more carefully. + */ + template + class variate_generator + { + // Concept requirements. + __glibcxx_class_requires(_Engine, _CopyConstructibleConcept) + // __glibcxx_class_requires(_Engine, _EngineConcept) + // __glibcxx_class_requires(_Dist, _EngineConcept) + + public: + typedef _Engine engine_type; + typedef __detail::_Adaptor<_Engine, _Dist> engine_value_type; + typedef _Dist distribution_type; + typedef typename _Dist::result_type result_type; + + // tr1:5.1.1 table 5.1 requirement + typedef typename __gnu_cxx::__enable_if< + is_arithmetic::value, result_type>::__type _IsValidType; + + /** + * Constructs a variate generator with the uniform random number + * generator @p __eng for the random distribution @p __dist. + * + * @throws Any exceptions which may thrown by the copy constructors of + * the @p _Engine or @p _Dist objects. + */ + variate_generator(engine_type __eng, distribution_type __dist) + : _M_engine(__eng), _M_dist(__dist) { } + + /** + * Gets the next generated value on the distribution. + */ + result_type + operator()() + { return _M_dist(_M_engine); } + + /** + * WTF? + */ + template + result_type + operator()(_Tp __value) + { return _M_dist(_M_engine, __value); } + + /** + * Gets a reference to the underlying uniform random number generator + * object. + */ + engine_value_type& + engine() + { return _M_engine; } + + /** + * Gets a const reference to the underlying uniform random number + * generator object. + */ + const engine_value_type& + engine() const + { return _M_engine; } + + /** + * Gets a reference to the underlying random distribution. + */ + distribution_type& + distribution() + { return _M_dist; } + + /** + * Gets a const reference to the underlying random distribution. + */ + const distribution_type& + distribution() const + { return _M_dist; } + + /** + * Gets the closed lower bound of the distribution interval. + */ + result_type + min() const + { return this->distribution().min(); } + + /** + * Gets the closed upper bound of the distribution interval. + */ + result_type + max() const + { return this->distribution().max(); } + + private: + engine_value_type _M_engine; + distribution_type _M_dist; + }; + + + /** + * @addtogroup tr1_random_generators Random Number Generators + * @ingroup tr1_random + * + * These classes define objects which provide random or pseudorandom + * numbers, either from a discrete or a continuous interval. The + * random number generator supplied as a part of this library are + * all uniform random number generators which provide a sequence of + * random number uniformly distributed over their range. + * + * A number generator is a function object with an operator() that + * takes zero arguments and returns a number. + * + * A compliant random number generator must satisfy the following + * requirements. + * + *
Random Number Generator Requirements
To be documented.
+ * + * @{ + */ + + /** + * @brief A model of a linear congruential random number generator. + * + * A random number generator that produces pseudorandom numbers using the + * linear function @f$x_{i+1}\leftarrow(ax_{i} + c) \bmod m @f$. + * + * The template parameter @p _UIntType must be an unsigned integral type + * large enough to store values up to (__m-1). If the template parameter + * @p __m is 0, the modulus @p __m used is + * std::numeric_limits<_UIntType>::max() plus 1. Otherwise, the template + * parameters @p __a and @p __c must be less than @p __m. + * + * The size of the state is @f$ 1 @f$. + */ + template + class linear_congruential + { + __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept) + // __glibcpp_class_requires(__a < __m && __c < __m) + + public: + /** The type of the generated random value. */ + typedef _UIntType result_type; + + /** The multiplier. */ + static const _UIntType multiplier = __a; + /** An increment. */ + static const _UIntType increment = __c; + /** The modulus. */ + static const _UIntType modulus = __m; + + /** + * Constructs a %linear_congruential random number generator engine with + * seed @p __s. The default seed value is 1. + * + * @param __s The initial seed value. + */ + explicit + linear_congruential(unsigned long __x0 = 1) + { this->seed(__x0); } + + /** + * Constructs a %linear_congruential random number generator engine + * seeded from the generator function @p __g. + * + * @param __g The seed generator function. + */ + template + linear_congruential(_Gen& __g) + { this->seed(__g); } + + /** + * Reseeds the %linear_congruential random number generator engine + * sequence to the seed @g __s. + * + * @param __s The new seed. + */ + void + seed(unsigned long __s = 1); + + /** + * Reseeds the %linear_congruential random number generator engine + * sequence using values from the generator function @p __g. + * + * @param __g the seed generator function. + */ + template + void + seed(_Gen& __g) + { seed(__g, typename is_fundamental<_Gen>::type()); } + + /** + * Gets the smallest possible value in the output range. + * + * The minimum depends on the @p __c parameter: if it is zero, the + * minimum generated must be > 0, otherwise 0 is allowed. + */ + result_type + min() const + { return (__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) ? 1 : 0; } + + /** + * Gets the largest possible value in the output range. + */ + result_type + max() const + { return __m - 1; } + + /** + * Gets the next random number in the sequence. + */ + result_type + operator()(); + + /** + * Compares two linear congruential random number generator + * objects of the same type for equality. + * + * @param __lhs A linear congruential random number generator object. + * @param __rhs Another linear congruential random number generator obj. + * + * @returns true if the two objects are equal, false otherwise. + */ + friend bool + operator==(const linear_congruential& __lhs, + const linear_congruential& __rhs) + { return __lhs._M_x == __rhs._M_x; } + + /** + * Compares two linear congruential random number generator + * objects of the same type for inequality. + * + * @param __lhs A linear congruential random number generator object. + * @param __rhs Another linear congruential random number generator obj. + * + * @returns true if the two objects are not equal, false otherwise. + */ + friend bool + operator!=(const linear_congruential& __lhs, + const linear_congruential& __rhs) + { return !(__lhs == __rhs); } + + /** + * Writes the textual representation of the state x(i) of x to @p __os. + * + * @param __os The output stream. + * @param __lcr A % linear_congruential random number generator. + * @returns __os. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const linear_congruential<_UIntType1, __a1, __c1, + __m1>& __lcr); + + /** + * Sets the state of the engine by reading its textual + * representation from @p __is. + * + * The textual representation must have been previously written using an + * output stream whose imbued locale and whose type's template + * specialization arguments _CharT and _Traits were the same as those of + * @p __is. + * + * @param __is The input stream. + * @param __lcr A % linear_congruential random number generator. + * @returns __is. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + linear_congruential<_UIntType1, __a1, __c1, __m1>& __lcr); + + private: + template + void + seed(_Gen& __g, true_type) + { return seed(static_cast(__g)); } + + template + void + seed(_Gen& __g, false_type); + + _UIntType _M_x; + }; + + /** + * The classic Minimum Standard rand0 of Lewis, Goodman, and Miller. + */ + typedef linear_congruential minstd_rand0; + + /** + * An alternative LCR (Lehmer Generator function) . + */ + typedef linear_congruential minstd_rand; + + + /** + * A generalized feedback shift register discrete random number generator. + * + * This algorithm avoids multiplication and division and is designed to be + * friendly to a pipelined architecture. If the parameters are chosen + * correctly, this generator will produce numbers with a very long period and + * fairly good apparent entropy, although still not cryptographically strong. + * + * The best way to use this generator is with the predefined mt19937 class. + * + * This algorithm was originally invented by Makoto Matsumoto and + * Takuji Nishimura. + * + * @var word_size The number of bits in each element of the state vector. + * @var state_size The degree of recursion. + * @var shift_size The period parameter. + * @var mask_bits The separation point bit index. + * @var parameter_a The last row of the twist matrix. + * @var output_u The first right-shift tempering matrix parameter. + * @var output_s The first left-shift tempering matrix parameter. + * @var output_b The first left-shift tempering matrix mask. + * @var output_t The second left-shift tempering matrix parameter. + * @var output_c The second left-shift tempering matrix mask. + * @var output_l The second right-shift tempering matrix parameter. + */ + template + class mersenne_twister + { + __glibcxx_class_requires(_UIntType, _UnsignedIntegerConcept) + + public: + // types + typedef _UIntType result_type; + + // parameter values + static const int word_size = __w; + static const int state_size = __n; + static const int shift_size = __m; + static const int mask_bits = __r; + static const _UIntType parameter_a = __a; + static const int output_u = __u; + static const int output_s = __s; + static const _UIntType output_b = __b; + static const int output_t = __t; + static const _UIntType output_c = __c; + static const int output_l = __l; + + // constructors and member function + mersenne_twister() + { seed(); } + + explicit + mersenne_twister(unsigned long __value) + { seed(__value); } + + template + mersenne_twister(_Gen& __g) + { seed(__g); } + + void + seed() + { seed(5489UL); } + + void + seed(unsigned long __value); + + template + void + seed(_Gen& __g) + { seed(__g, typename is_fundamental<_Gen>::type()); } + + result_type + min() const + { return 0; } + + result_type + max() const + { return __detail::_Shift<_UIntType, __w>::__value - 1; } + + result_type + operator()(); + + /** + * Compares two % mersenne_twister random number generator objects of + * the same type for equality. + * + * @param __lhs A % mersenne_twister random number generator object. + * @param __rhs Another % mersenne_twister random number generator + * object. + * + * @returns true if the two objects are equal, false otherwise. + */ + friend bool + operator==(const mersenne_twister& __lhs, + const mersenne_twister& __rhs) + { return std::equal(__lhs._M_x, __lhs._M_x + state_size, __rhs._M_x); } + + /** + * Compares two % mersenne_twister random number generator objects of + * the same type for inequality. + * + * @param __lhs A % mersenne_twister random number generator object. + * @param __rhs Another % mersenne_twister random number generator + * object. + * + * @returns true if the two objects are not equal, false otherwise. + */ + friend bool + operator!=(const mersenne_twister& __lhs, + const mersenne_twister& __rhs) + { return !(__lhs == __rhs); } + + /** + * Inserts the current state of a % mersenne_twister random number + * generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A % mersenne_twister random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1, + __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x); + + /** + * Extracts the current state of a % mersenne_twister random number + * generator engine @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A % mersenne_twister random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + mersenne_twister<_UIntType1, __w1, __n1, __m1, __r1, + __a1, __u1, __s1, __b1, __t1, __c1, __l1>& __x); + + private: + template + void + seed(_Gen& __g, true_type) + { return seed(static_cast(__g)); } + + template + void + seed(_Gen& __g, false_type); + + _UIntType _M_x[state_size]; + int _M_p; + }; + + /** + * The classic Mersenne Twister. + * + * Reference: + * M. Matsumoto and T. Nishimura, Mersenne Twister: A 623-Dimensionally + * Equidistributed Uniform Pseudo-Random Number Generator, ACM Transactions + * on Modeling and Computer Simulation, Vol. 8, No. 1, January 1998, pp 3-30. + */ + typedef mersenne_twister< + unsigned long, 32, 624, 397, 31, + 0x9908b0dful, 11, 7, + 0x9d2c5680ul, 15, + 0xefc60000ul, 18 + > mt19937; + + + /** + * @brief The Marsaglia-Zaman generator. + * + * This is a model of a Generalized Fibonacci discrete random number + * generator, sometimes referred to as the SWC generator. + * + * A discrete random number generator that produces pseudorandom + * numbers using @f$x_{i}\leftarrow(x_{i - s} - x_{i - r} - + * carry_{i-1}) \bmod m @f$. + * + * The size of the state is @f$ r @f$ + * and the maximum period of the generator is @f$ m^r - m^s -1 @f$. + * + * N1688[4.13] says the template parameter _IntType shall denote + * an integral type large enough to store values up to m. + * + * @var _M_x The state of the generator. This is a ring buffer. + * @var _M_carry The carry. + * @var _M_p Current index of x(i - r). + */ + template + class subtract_with_carry + { + __glibcxx_class_requires(_IntType, _IntegerConcept) + + public: + /** The type of the generated random value. */ + typedef _IntType result_type; + + // parameter values + static const _IntType modulus = __m; + static const int long_lag = __r; + static const int short_lag = __s; + + /** + * Constructs a default-initialized % subtract_with_carry random number + * generator. + */ + subtract_with_carry() + { this->seed(); } + + /** + * Constructs an explicitly seeded % subtract_with_carry random number + * generator. + */ + explicit + subtract_with_carry(unsigned long __value) + { this->seed(__value); } + + /** + * Constructs a %subtract_with_carry random number generator engine + * seeded from the generator function @p __g. + * + * @param __g The seed generator function. + */ + template + subtract_with_carry(_Gen& __g) + { this->seed(__g); } + + /** + * Seeds the initial state @f$ x_0 @f$ of the random number generator. + * + * N1688[4.19] modifies this as follows. If @p __value == 0, + * sets value to 19780503. In any case, with a linear + * congruential generator lcg(i) having parameters @f$ m_{lcg} = + * 2147483563, a_{lcg} = 40014, c_{lcg} = 0, and lcg(0) = value + * @f$, sets @f$ x_{-r} \dots x_{-1} @f$ to @f$ lcg(1) \bmod m + * \dots lcg(r) \bmod m @f$ respectively. If @f$ x_{-1} = 0 @f$ + * set carry to 1, otherwise sets carry to 0. + */ + void + seed(unsigned long __value = 19780503); + + /** + * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry + * random number generator. + */ + template + void + seed(_Gen& __g) + { seed(__g, typename is_fundamental<_Gen>::type()); } + + /** + * Gets the inclusive minimum value of the range of random integers + * returned by this generator. + */ + result_type + min() const + { return 0; } + + /** + * Gets the inclusive maximum value of the range of random integers + * returned by this generator. + */ + result_type + max() const + { return this->modulus - 1; } + + /** + * Gets the next random number in the sequence. + */ + result_type + operator()(); + + /** + * Compares two % subtract_with_carry random number generator objects of + * the same type for equality. + * + * @param __lhs A % subtract_with_carry random number generator object. + * @param __rhs Another % subtract_with_carry random number generator + * object. + * + * @returns true if the two objects are equal, false otherwise. + */ + friend bool + operator==(const subtract_with_carry& __lhs, + const subtract_with_carry& __rhs) + { return std::equal(__lhs._M_x, __lhs._M_x + long_lag, __rhs._M_x); } + + /** + * Compares two % subtract_with_carry random number generator objects of + * the same type for inequality. + * + * @param __lhs A % subtract_with_carry random number generator object. + * @param __rhs Another % subtract_with_carry random number generator + * object. + * + * @returns true if the two objects are not equal, false otherwise. + */ + friend bool + operator!=(const subtract_with_carry& __lhs, + const subtract_with_carry& __rhs) + { return !(__lhs == __rhs); } + + /** + * Inserts the current state of a % subtract_with_carry random number + * generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A % subtract_with_carry random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const subtract_with_carry<_IntType1, __m1, __s1, + __r1>& __x); + + /** + * Extracts the current state of a % subtract_with_carry random number + * generator engine @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A % subtract_with_carry random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + subtract_with_carry<_IntType1, __m1, __s1, __r1>& __x); + + private: + template + void + seed(_Gen& __g, true_type) + { return seed(static_cast(__g)); } + + template + void + seed(_Gen& __g, false_type); + + typedef typename __gnu_cxx::__add_unsigned<_IntType>::__type _UIntType; + + _UIntType _M_x[long_lag]; + _UIntType _M_carry; + int _M_p; + }; + + + /** + * @brief The Marsaglia-Zaman generator (floats version). + * + * @var _M_x The state of the generator. This is a ring buffer. + * @var _M_carry The carry. + * @var _M_p Current index of x(i - r). + * @var _M_npows Precomputed negative powers of 2. + */ + template + class subtract_with_carry_01 + { + public: + /** The type of the generated random value. */ + typedef _RealType result_type; + + // parameter values + static const int word_size = __w; + static const int long_lag = __r; + static const int short_lag = __s; + + /** + * Constructs a default-initialized % subtract_with_carry_01 random + * number generator. + */ + subtract_with_carry_01() + { + this->seed(); + _M_initialize_npows(); + } + + /** + * Constructs an explicitly seeded % subtract_with_carry_01 random number + * generator. + */ + explicit + subtract_with_carry_01(unsigned long __value) + { + this->seed(__value); + _M_initialize_npows(); + } + + /** + * Constructs a % subtract_with_carry_01 random number generator engine + * seeded from the generator function @p __g. + * + * @param __g The seed generator function. + */ + template + subtract_with_carry_01(_Gen& __g) + { + this->seed(__g); + _M_initialize_npows(); + } + + /** + * Seeds the initial state @f$ x_0 @f$ of the random number generator. + */ + void + seed(unsigned long __value = 19780503); + + /** + * Seeds the initial state @f$ x_0 @f$ of the % subtract_with_carry_01 + * random number generator. + */ + template + void + seed(_Gen& __g) + { seed(__g, typename is_fundamental<_Gen>::type()); } + + /** + * Gets the minimum value of the range of random floats + * returned by this generator. + */ + result_type + min() const + { return 0.0; } + + /** + * Gets the maximum value of the range of random floats + * returned by this generator. + */ + result_type + max() const + { return 1.0; } + + /** + * Gets the next random number in the sequence. + */ + result_type + operator()(); + + /** + * Compares two % subtract_with_carry_01 random number generator objects + * of the same type for equality. + * + * @param __lhs A % subtract_with_carry_01 random number + * generator object. + * @param __rhs Another % subtract_with_carry_01 random number generator + * object. + * + * @returns true if the two objects are equal, false otherwise. + */ + friend bool + operator==(const subtract_with_carry_01& __lhs, + const subtract_with_carry_01& __rhs) + { + for (int __i = 0; __i < long_lag; ++__i) + if (!std::equal(__lhs._M_x[__i], __lhs._M_x[__i] + __n, + __rhs._M_x[__i])) + return false; + return true; + } + + /** + * Compares two % subtract_with_carry_01 random number generator objects + * of the same type for inequality. + * + * @param __lhs A % subtract_with_carry_01 random number + * generator object. + * + * @param __rhs Another % subtract_with_carry_01 random number generator + * object. + * + * @returns true if the two objects are not equal, false otherwise. + */ + friend bool + operator!=(const subtract_with_carry_01& __lhs, + const subtract_with_carry_01& __rhs) + { return !(__lhs == __rhs); } + + /** + * Inserts the current state of a % subtract_with_carry_01 random number + * generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A % subtract_with_carry_01 random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const subtract_with_carry_01<_RealType1, __w1, __s1, + __r1>& __x); + + /** + * Extracts the current state of a % subtract_with_carry_01 random number + * generator engine @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A % subtract_with_carry_01 random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + subtract_with_carry_01<_RealType1, __w1, __s1, __r1>& __x); + + private: + template + void + seed(_Gen& __g, true_type) + { return seed(static_cast(__g)); } + + template + void + seed(_Gen& __g, false_type); + + void + _M_initialize_npows(); + + static const int __n = (__w + 31) / 32; + + typedef __detail::_UInt32Type _UInt32Type; + _UInt32Type _M_x[long_lag][__n]; + _RealType _M_npows[__n]; + _UInt32Type _M_carry; + int _M_p; + }; + + typedef subtract_with_carry_01 ranlux_base_01; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 508. Bad parameters for ranlux64_base_01. + typedef subtract_with_carry_01 ranlux64_base_01; + + + /** + * Produces random numbers from some base engine by discarding blocks of + * data. + * + * 0 <= @p __r <= @p __p + */ + template + class discard_block + { + // __glibcxx_class_requires(typename base_type::result_type, + // ArithmeticTypeConcept) + + public: + /** The type of the underlying generator engine. */ + typedef _UniformRandomNumberGenerator base_type; + /** The type of the generated random value. */ + typedef typename base_type::result_type result_type; + + // parameter values + static const int block_size = __p; + static const int used_block = __r; + + /** + * Constructs a default %discard_block engine. + * + * The underlying engine is default constructed as well. + */ + discard_block() + : _M_n(0) { } + + /** + * Copy constructs a %discard_block engine. + * + * Copies an existing base class random number generator. + * @param rng An existing (base class) engine object. + */ + explicit + discard_block(const base_type& __rng) + : _M_b(__rng), _M_n(0) { } + + /** + * Seed constructs a %discard_block engine. + * + * Constructs the underlying generator engine seeded with @p __s. + * @param __s A seed value for the base class engine. + */ + explicit + discard_block(unsigned long __s) + : _M_b(__s), _M_n(0) { } + + /** + * Generator construct a %discard_block engine. + * + * @param __g A seed generator function. + */ + template + discard_block(_Gen& __g) + : _M_b(__g), _M_n(0) { } + + /** + * Reseeds the %discard_block object with the default seed for the + * underlying base class generator engine. + */ + void seed() + { + _M_b.seed(); + _M_n = 0; + } + + /** + * Reseeds the %discard_block object with the given seed generator + * function. + * @param __g A seed generator function. + */ + template + void seed(_Gen& __g) + { + _M_b.seed(__g); + _M_n = 0; + } + + /** + * Gets a const reference to the underlying generator engine object. + */ + const base_type& + base() const + { return _M_b; } + + /** + * Gets the minimum value in the generated random number range. + */ + result_type + min() const + { return _M_b.min(); } + + /** + * Gets the maximum value in the generated random number range. + */ + result_type + max() const + { return _M_b.max(); } + + /** + * Gets the next value in the generated random number sequence. + */ + result_type + operator()(); + + /** + * Compares two %discard_block random number generator objects of + * the same type for equality. + * + * @param __lhs A %discard_block random number generator object. + * @param __rhs Another %discard_block random number generator + * object. + * + * @returns true if the two objects are equal, false otherwise. + */ + friend bool + operator==(const discard_block& __lhs, const discard_block& __rhs) + { return (__lhs._M_b == __rhs._M_b) && (__lhs._M_n == __rhs._M_n); } + + /** + * Compares two %discard_block random number generator objects of + * the same type for inequality. + * + * @param __lhs A %discard_block random number generator object. + * @param __rhs Another %discard_block random number generator + * object. + * + * @returns true if the two objects are not equal, false otherwise. + */ + friend bool + operator!=(const discard_block& __lhs, const discard_block& __rhs) + { return !(__lhs == __rhs); } + + /** + * Inserts the current state of a %discard_block random number + * generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %discard_block random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const discard_block<_UniformRandomNumberGenerator1, + __p1, __r1>& __x); + + /** + * Extracts the current state of a % subtract_with_carry random number + * generator engine @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %discard_block random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + discard_block<_UniformRandomNumberGenerator1, + __p1, __r1>& __x); + + private: + base_type _M_b; + int _M_n; + }; + + + /** + * James's luxury-level-3 integer adaptation of Luescher's generator. + */ + typedef discard_block< + subtract_with_carry, + 223, + 24 + > ranlux3; + + /** + * James's luxury-level-4 integer adaptation of Luescher's generator. + */ + typedef discard_block< + subtract_with_carry, + 389, + 24 + > ranlux4; + + typedef discard_block< + subtract_with_carry_01, + 223, + 24 + > ranlux3_01; + + typedef discard_block< + subtract_with_carry_01, + 389, + 24 + > ranlux4_01; + + + /** + * A random number generator adaptor class that combines two random number + * generator engines into a single output sequence. + */ + template + class xor_combine + { + // __glibcxx_class_requires(typename _UniformRandomNumberGenerator1:: + // result_type, ArithmeticTypeConcept) + // __glibcxx_class_requires(typename _UniformRandomNumberGenerator2:: + // result_type, ArithmeticTypeConcept) + + public: + /** The type of the first underlying generator engine. */ + typedef _UniformRandomNumberGenerator1 base1_type; + /** The type of the second underlying generator engine. */ + typedef _UniformRandomNumberGenerator2 base2_type; + + private: + typedef typename base1_type::result_type _Result_type1; + typedef typename base2_type::result_type _Result_type2; + + public: + /** The type of the generated random value. */ + typedef typename __gnu_cxx::__conditional_type<(sizeof(_Result_type1) + > sizeof(_Result_type2)), + _Result_type1, _Result_type2>::__type result_type; + + // parameter values + static const int shift1 = __s1; + static const int shift2 = __s2; + + // constructors and member function + xor_combine() + : _M_b1(), _M_b2() + { _M_initialize_max(); } + + xor_combine(const base1_type& __rng1, const base2_type& __rng2) + : _M_b1(__rng1), _M_b2(__rng2) + { _M_initialize_max(); } + + xor_combine(unsigned long __s) + : _M_b1(__s), _M_b2(__s + 1) + { _M_initialize_max(); } + + template + xor_combine(_Gen& __g) + : _M_b1(__g), _M_b2(__g) + { _M_initialize_max(); } + + void + seed() + { + _M_b1.seed(); + _M_b2.seed(); + } + + template + void + seed(_Gen& __g) + { + _M_b1.seed(__g); + _M_b2.seed(__g); + } + + const base1_type& + base1() const + { return _M_b1; } + + const base2_type& + base2() const + { return _M_b2; } + + result_type + min() const + { return 0; } + + result_type + max() const + { return _M_max; } + + /** + * Gets the next random number in the sequence. + */ + // NB: Not exactly the TR1 formula, per N2079 instead. + result_type + operator()() + { + return ((result_type(_M_b1() - _M_b1.min()) << shift1) + ^ (result_type(_M_b2() - _M_b2.min()) << shift2)); + } + + /** + * Compares two %xor_combine random number generator objects of + * the same type for equality. + * + * @param __lhs A %xor_combine random number generator object. + * @param __rhs Another %xor_combine random number generator + * object. + * + * @returns true if the two objects are equal, false otherwise. + */ + friend bool + operator==(const xor_combine& __lhs, const xor_combine& __rhs) + { + return (__lhs.base1() == __rhs.base1()) + && (__lhs.base2() == __rhs.base2()); + } + + /** + * Compares two %xor_combine random number generator objects of + * the same type for inequality. + * + * @param __lhs A %xor_combine random number generator object. + * @param __rhs Another %xor_combine random number generator + * object. + * + * @returns true if the two objects are not equal, false otherwise. + */ + friend bool + operator!=(const xor_combine& __lhs, const xor_combine& __rhs) + { return !(__lhs == __rhs); } + + /** + * Inserts the current state of a %xor_combine random number + * generator engine @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %xor_combine random number generator engine. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const xor_combine<_UniformRandomNumberGenerator11, __s11, + _UniformRandomNumberGenerator21, __s21>& __x); + + /** + * Extracts the current state of a %xor_combine random number + * generator engine @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %xor_combine random number generator engine. + * + * @returns The input stream with the state of @p __x extracted or in + * an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + xor_combine<_UniformRandomNumberGenerator11, __s11, + _UniformRandomNumberGenerator21, __s21>& __x); + + private: + void + _M_initialize_max(); + + result_type + _M_initialize_max_aux(result_type, result_type, int); + + base1_type _M_b1; + base2_type _M_b2; + result_type _M_max; + }; + + + /** + * A standard interface to a platform-specific non-deterministic + * random number generator (if any are available). + */ + class random_device + { + public: + // types + typedef unsigned int result_type; + + // constructors, destructors and member functions + +#ifdef _GLIBCXX_USE_RANDOM_TR1 + + explicit + random_device(const std::string& __token = "/dev/urandom") + { + if ((__token != "/dev/urandom" && __token != "/dev/random") + || !(_M_file = std::fopen(__token.c_str(), "rb"))) + std::__throw_runtime_error(__N("random_device::" + "random_device(const std::string&)")); + } + + ~random_device() + { std::fclose(_M_file); } + +#else + + explicit + random_device(const std::string& __token = "mt19937") + : _M_mt(_M_strtoul(__token)) { } + + private: + static unsigned long + _M_strtoul(const std::string& __str) + { + unsigned long __ret = 5489UL; + if (__str != "mt19937") + { + const char* __nptr = __str.c_str(); + char* __endptr; + __ret = std::strtoul(__nptr, &__endptr, 0); + if (*__nptr == '\0' || *__endptr != '\0') + std::__throw_runtime_error(__N("random_device::_M_strtoul" + "(const std::string&)")); + } + return __ret; + } + + public: + +#endif + + result_type + min() const + { return std::numeric_limits::min(); } + + result_type + max() const + { return std::numeric_limits::max(); } + + double + entropy() const + { return 0.0; } + + result_type + operator()() + { +#ifdef _GLIBCXX_USE_RANDOM_TR1 + result_type __ret; + std::fread(reinterpret_cast(&__ret), sizeof(result_type), + 1, _M_file); + return __ret; +#else + return _M_mt(); +#endif + } + + private: + random_device(const random_device&); + void operator=(const random_device&); + +#ifdef _GLIBCXX_USE_RANDOM_TR1 + FILE* _M_file; +#else + mt19937 _M_mt; +#endif + }; + + /* @} */ // group tr1_random_generators + + /** + * @addtogroup tr1_random_distributions Random Number Distributions + * @ingroup tr1_random + * @{ + */ + + /** + * @addtogroup tr1_random_distributions_discrete Discrete Distributions + * @ingroup tr1_random_distributions + * @{ + */ + + /** + * @brief Uniform discrete distribution for random numbers. + * A discrete random distribution on the range @f$[min, max]@f$ with equal + * probability throughout the range. + */ + template + class uniform_int + { + __glibcxx_class_requires(_IntType, _IntegerConcept) + + public: + /** The type of the parameters of the distribution. */ + typedef _IntType input_type; + /** The type of the range of the distribution. */ + typedef _IntType result_type; + + public: + /** + * Constructs a uniform distribution object. + */ + explicit + uniform_int(_IntType __min = 0, _IntType __max = 9) + : _M_min(__min), _M_max(__max) + { + _GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max); + } + + /** + * Gets the inclusive lower bound of the distribution range. + */ + result_type + min() const + { return _M_min; } + + /** + * Gets the inclusive upper bound of the distribution range. + */ + result_type + max() const + { return _M_max; } + + /** + * Resets the distribution state. + * + * Does nothing for the uniform integer distribution. + */ + void + reset() { } + + /** + * Gets a uniformly distributed random number in the range + * @f$(min, max)@f$. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { + typedef typename _UniformRandomNumberGenerator::result_type + _UResult_type; + return _M_call(__urng, _M_min, _M_max, + typename is_integral<_UResult_type>::type()); + } + + /** + * Gets a uniform random number in the range @f$[0, n)@f$. + * + * This function is aimed at use with std::random_shuffle. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng, result_type __n) + { + typedef typename _UniformRandomNumberGenerator::result_type + _UResult_type; + return _M_call(__urng, 0, __n - 1, + typename is_integral<_UResult_type>::type()); + } + + /** + * Inserts a %uniform_int random number distribution @p __x into the + * output stream @p os. + * + * @param __os An output stream. + * @param __x A %uniform_int random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_int<_IntType1>& __x); + + /** + * Extracts a %uniform_int random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_int random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_int<_IntType1>& __x); + + private: + template + result_type + _M_call(_UniformRandomNumberGenerator& __urng, + result_type __min, result_type __max, true_type); + + template + result_type + _M_call(_UniformRandomNumberGenerator& __urng, + result_type __min, result_type __max, false_type) + { + return result_type((__urng() - __urng.min()) + / (__urng.max() - __urng.min()) + * (__max - __min + 1)) + __min; + } + + _IntType _M_min; + _IntType _M_max; + }; + + + /** + * @brief A Bernoulli random number distribution. + * + * Generates a sequence of true and false values with likelihood @f$ p @f$ + * that true will come up and @f$ (1 - p) @f$ that false will appear. + */ + class bernoulli_distribution + { + public: + typedef int input_type; + typedef bool result_type; + + public: + /** + * Constructs a Bernoulli distribution with likelihood @p p. + * + * @param __p [IN] The likelihood of a true result being returned. Must + * be in the interval @f$ [0, 1] @f$. + */ + explicit + bernoulli_distribution(double __p = 0.5) + : _M_p(__p) + { + _GLIBCXX_DEBUG_ASSERT((_M_p >= 0.0) && (_M_p <= 1.0)); + } + + /** + * Gets the @p p parameter of the distribution. + */ + double + p() const + { return _M_p; } + + /** + * Resets the distribution state. + * + * Does nothing for a Bernoulli distribution. + */ + void + reset() { } + + /** + * Gets the next value in the Bernoullian sequence. + */ + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { + if ((__urng() - __urng.min()) < _M_p * (__urng.max() - __urng.min())) + return true; + return false; + } + + /** + * Inserts a %bernoulli_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %bernoulli_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bernoulli_distribution& __x); + + /** + * Extracts a %bernoulli_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %bernoulli_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + bernoulli_distribution& __x) + { return __is >> __x._M_p; } + + private: + double _M_p; + }; + + + /** + * @brief A discrete geometric random number distribution. + * + * The formula for the geometric probability mass function is + * @f$ p(i) = (1 - p)p^{i-1} @f$ where @f$ p @f$ is the parameter of the + * distribution. + */ + template + class geometric_distribution + { + public: + // types + typedef _RealType input_type; + typedef _IntType result_type; + + // constructors and member function + explicit + geometric_distribution(const _RealType& __p = _RealType(0.5)) + : _M_p(__p) + { + _GLIBCXX_DEBUG_ASSERT((_M_p > 0.0) && (_M_p < 1.0)); + _M_initialize(); + } + + /** + * Gets the distribution parameter @p p. + */ + _RealType + p() const + { return _M_p; } + + void + reset() { } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + /** + * Inserts a %geometric_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %geometric_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const geometric_distribution<_IntType1, _RealType1>& __x); + + /** + * Extracts a %geometric_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %geometric_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + geometric_distribution& __x) + { + __is >> __x._M_p; + __x._M_initialize(); + return __is; + } + + private: + void + _M_initialize() + { _M_log_p = std::log(_M_p); } + + _RealType _M_p; + _RealType _M_log_p; + }; + + + template + class normal_distribution; + + /** + * @brief A discrete Poisson random number distribution. + * + * The formula for the Poisson probability mass function is + * @f$ p(i) = \frac{mean^i}{i!} e^{-mean} @f$ where @f$ mean @f$ is the + * parameter of the distribution. + */ + template + class poisson_distribution + { + public: + // types + typedef _RealType input_type; + typedef _IntType result_type; + + // constructors and member function + explicit + poisson_distribution(const _RealType& __mean = _RealType(1)) + : _M_mean(__mean), _M_nd() + { + _GLIBCXX_DEBUG_ASSERT(_M_mean > 0.0); + _M_initialize(); + } + + /** + * Gets the distribution parameter @p mean. + */ + _RealType + mean() const + { return _M_mean; } + + void + reset() + { _M_nd.reset(); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + /** + * Inserts a %poisson_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %poisson_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const poisson_distribution<_IntType1, _RealType1>& __x); + + /** + * Extracts a %poisson_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %poisson_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + poisson_distribution<_IntType1, _RealType1>& __x); + + private: + void + _M_initialize(); + + // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. + normal_distribution<_RealType> _M_nd; + + _RealType _M_mean; + + // Hosts either log(mean) or the threshold of the simple method. + _RealType _M_lm_thr; +#if _GLIBCXX_USE_C99_MATH_TR1 + _RealType _M_lfm, _M_sm, _M_d, _M_scx, _M_1cx, _M_c2b, _M_cb; +#endif + }; + + + /** + * @brief A discrete binomial random number distribution. + * + * The formula for the binomial probability mass function is + * @f$ p(i) = \binom{n}{i} p^i (1 - p)^{t - i} @f$ where @f$ t @f$ + * and @f$ p @f$ are the parameters of the distribution. + */ + template + class binomial_distribution + { + public: + // types + typedef _RealType input_type; + typedef _IntType result_type; + + // constructors and member function + explicit + binomial_distribution(_IntType __t = 1, + const _RealType& __p = _RealType(0.5)) + : _M_t(__t), _M_p(__p), _M_nd() + { + _GLIBCXX_DEBUG_ASSERT((_M_t >= 0) && (_M_p >= 0.0) && (_M_p <= 1.0)); + _M_initialize(); + } + + /** + * Gets the distribution @p t parameter. + */ + _IntType + t() const + { return _M_t; } + + /** + * Gets the distribution @p p parameter. + */ + _RealType + p() const + { return _M_p; } + + void + reset() + { _M_nd.reset(); } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + /** + * Inserts a %binomial_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %binomial_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const binomial_distribution<_IntType1, _RealType1>& __x); + + /** + * Extracts a %binomial_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %binomial_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + binomial_distribution<_IntType1, _RealType1>& __x); + + private: + void + _M_initialize(); + + template + result_type + _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t); + + // NB: Unused when _GLIBCXX_USE_C99_MATH_TR1 is undefined. + normal_distribution<_RealType> _M_nd; + + _RealType _M_q; +#if _GLIBCXX_USE_C99_MATH_TR1 + _RealType _M_d1, _M_d2, _M_s1, _M_s2, _M_c, + _M_a1, _M_a123, _M_s, _M_lf, _M_lp1p; +#endif + _RealType _M_p; + _IntType _M_t; + + bool _M_easy; + }; + + /* @} */ // group tr1_random_distributions_discrete + + /** + * @addtogroup tr1_random_distributions_continuous Continuous Distributions + * @ingroup tr1_random_distributions + * @{ + */ + + /** + * @brief Uniform continuous distribution for random numbers. + * + * A continuous random distribution on the range [min, max) with equal + * probability throughout the range. The URNG should be real-valued and + * deliver number in the range [0, 1). + */ + template + class uniform_real + { + public: + // types + typedef _RealType input_type; + typedef _RealType result_type; + + public: + /** + * Constructs a uniform_real object. + * + * @param __min [IN] The lower bound of the distribution. + * @param __max [IN] The upper bound of the distribution. + */ + explicit + uniform_real(_RealType __min = _RealType(0), + _RealType __max = _RealType(1)) + : _M_min(__min), _M_max(__max) + { + _GLIBCXX_DEBUG_ASSERT(_M_min <= _M_max); + } + + result_type + min() const + { return _M_min; } + + result_type + max() const + { return _M_max; } + + void + reset() { } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return (__urng() * (_M_max - _M_min)) + _M_min; } + + /** + * Inserts a %uniform_real random number distribution @p __x into the + * output stream @p __os. + * + * @param __os An output stream. + * @param __x A %uniform_real random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_real<_RealType1>& __x); + + /** + * Extracts a %uniform_real random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %uniform_real random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_real<_RealType1>& __x); + + private: + _RealType _M_min; + _RealType _M_max; + }; + + + /** + * @brief An exponential continuous distribution for random numbers. + * + * The formula for the exponential probability mass function is + * @f$ p(x) = \lambda e^{-\lambda x} @f$. + * + * + * + * + * + * + * + * + *
Distribution Statistics
Mean@f$ \frac{1}{\lambda} @f$
Median@f$ \frac{\ln 2}{\lambda} @f$
Mode@f$ zero @f$
Range@f$[0, \infty]@f$
Standard Deviation@f$ \frac{1}{\lambda} @f$
+ */ + template + class exponential_distribution + { + public: + // types + typedef _RealType input_type; + typedef _RealType result_type; + + public: + /** + * Constructs an exponential distribution with inverse scale parameter + * @f$ \lambda @f$. + */ + explicit + exponential_distribution(const result_type& __lambda = result_type(1)) + : _M_lambda(__lambda) + { + _GLIBCXX_DEBUG_ASSERT(_M_lambda > 0); + } + + /** + * Gets the inverse scale parameter of the distribution. + */ + _RealType + lambda() const + { return _M_lambda; } + + /** + * Resets the distribution. + * + * Has no effect on exponential distributions. + */ + void + reset() { } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng) + { return -std::log(__urng()) / _M_lambda; } + + /** + * Inserts a %exponential_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %exponential_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const exponential_distribution<_RealType1>& __x); + + /** + * Extracts a %exponential_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %exponential_distribution random number + * generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + exponential_distribution& __x) + { return __is >> __x._M_lambda; } + + private: + result_type _M_lambda; + }; + + + /** + * @brief A normal continuous distribution for random numbers. + * + * The formula for the normal probability mass function is + * @f$ p(x) = \frac{1}{\sigma \sqrt{2 \pi}} + * e^{- \frac{{x - mean}^ {2}}{2 \sigma ^ {2}} } @f$. + */ + template + class normal_distribution + { + public: + // types + typedef _RealType input_type; + typedef _RealType result_type; + + public: + /** + * Constructs a normal distribution with parameters @f$ mean @f$ and + * @f$ \sigma @f$. + */ + explicit + normal_distribution(const result_type& __mean = result_type(0), + const result_type& __sigma = result_type(1)) + : _M_mean(__mean), _M_sigma(__sigma), _M_saved_available(false) + { + _GLIBCXX_DEBUG_ASSERT(_M_sigma > 0); + } + + /** + * Gets the mean of the distribution. + */ + _RealType + mean() const + { return _M_mean; } + + /** + * Gets the @f$ \sigma @f$ of the distribution. + */ + _RealType + sigma() const + { return _M_sigma; } + + /** + * Resets the distribution. + */ + void + reset() + { _M_saved_available = false; } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + /** + * Inserts a %normal_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %normal_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const normal_distribution<_RealType1>& __x); + + /** + * Extracts a %normal_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %normal_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + normal_distribution<_RealType1>& __x); + + private: + result_type _M_mean; + result_type _M_sigma; + result_type _M_saved; + bool _M_saved_available; + }; + + + /** + * @brief A gamma continuous distribution for random numbers. + * + * The formula for the gamma probability mass function is + * @f$ p(x) = \frac{1}{\Gamma(\alpha)} x^{\alpha - 1} e^{-x} @f$. + */ + template + class gamma_distribution + { + public: + // types + typedef _RealType input_type; + typedef _RealType result_type; + + public: + /** + * Constructs a gamma distribution with parameters @f$ \alpha @f$. + */ + explicit + gamma_distribution(const result_type& __alpha_val = result_type(1)) + : _M_alpha(__alpha_val) + { + _GLIBCXX_DEBUG_ASSERT(_M_alpha > 0); + _M_initialize(); + } + + /** + * Gets the @f$ \alpha @f$ of the distribution. + */ + _RealType + alpha() const + { return _M_alpha; } + + /** + * Resets the distribution. + */ + void + reset() { } + + template + result_type + operator()(_UniformRandomNumberGenerator& __urng); + + /** + * Inserts a %gamma_distribution random number distribution + * @p __x into the output stream @p __os. + * + * @param __os An output stream. + * @param __x A %gamma_distribution random number distribution. + * + * @returns The output stream with the state of @p __x inserted or in + * an error state. + */ + template + friend std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const gamma_distribution<_RealType1>& __x); + + /** + * Extracts a %gamma_distribution random number distribution + * @p __x from the input stream @p __is. + * + * @param __is An input stream. + * @param __x A %gamma_distribution random number generator engine. + * + * @returns The input stream with @p __x extracted or in an error state. + */ + template + friend std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + gamma_distribution& __x) + { + __is >> __x._M_alpha; + __x._M_initialize(); + return __is; + } + + private: + void + _M_initialize(); + + result_type _M_alpha; + + // Hosts either lambda of GB or d of modified Vaduva's. + result_type _M_l_d; + }; + + /* @} */ // group tr1_random_distributions_continuous + /* @} */ // group tr1_random_distributions + /* @} */ // group tr1_random +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_RANDOM_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random.tcc new file mode 100644 index 000000000..a8a59b89f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/random.tcc @@ -0,0 +1,1718 @@ +// random number generation (out of line) -*- C++ -*- + +// Copyright (C) 2009-2018 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 +// . + + +/** @file tr1/random.tcc + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{tr1/random} + */ + +#ifndef _GLIBCXX_TR1_RANDOM_TCC +#define _GLIBCXX_TR1_RANDOM_TCC 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /* + * (Further) implementation-space details. + */ + namespace __detail + { + // General case for x = (ax + c) mod m -- use Schrage's algorithm to avoid + // integer overflow. + // + // Because a and c are compile-time integral constants the compiler kindly + // elides any unreachable paths. + // + // Preconditions: a > 0, m > 0. + // + template + struct _Mod + { + static _Tp + __calc(_Tp __x) + { + if (__a == 1) + __x %= __m; + else + { + static const _Tp __q = __m / __a; + static const _Tp __r = __m % __a; + + _Tp __t1 = __a * (__x % __q); + _Tp __t2 = __r * (__x / __q); + if (__t1 >= __t2) + __x = __t1 - __t2; + else + __x = __m - __t2 + __t1; + } + + if (__c != 0) + { + const _Tp __d = __m - __x; + if (__d > __c) + __x += __c; + else + __x = __c - __d; + } + return __x; + } + }; + + // Special case for m == 0 -- use unsigned integer overflow as modulo + // operator. + template + struct _Mod<_Tp, __a, __c, __m, true> + { + static _Tp + __calc(_Tp __x) + { return __a * __x + __c; } + }; + } // namespace __detail + + template + const _UIntType + linear_congruential<_UIntType, __a, __c, __m>::multiplier; + + template + const _UIntType + linear_congruential<_UIntType, __a, __c, __m>::increment; + + template + const _UIntType + linear_congruential<_UIntType, __a, __c, __m>::modulus; + + /** + * Seeds the LCR with integral value @p __x0, adjusted so that the + * ring identity is never a member of the convergence set. + */ + template + void + linear_congruential<_UIntType, __a, __c, __m>:: + seed(unsigned long __x0) + { + if ((__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) + && (__detail::__mod<_UIntType, 1, 0, __m>(__x0) == 0)) + _M_x = __detail::__mod<_UIntType, 1, 0, __m>(1); + else + _M_x = __detail::__mod<_UIntType, 1, 0, __m>(__x0); + } + + /** + * Seeds the LCR engine with a value generated by @p __g. + */ + template + template + void + linear_congruential<_UIntType, __a, __c, __m>:: + seed(_Gen& __g, false_type) + { + _UIntType __x0 = __g(); + if ((__detail::__mod<_UIntType, 1, 0, __m>(__c) == 0) + && (__detail::__mod<_UIntType, 1, 0, __m>(__x0) == 0)) + _M_x = __detail::__mod<_UIntType, 1, 0, __m>(1); + else + _M_x = __detail::__mod<_UIntType, 1, 0, __m>(__x0); + } + + /** + * Gets the next generated value in sequence. + */ + template + typename linear_congruential<_UIntType, __a, __c, __m>::result_type + linear_congruential<_UIntType, __a, __c, __m>:: + operator()() + { + _M_x = __detail::__mod<_UIntType, __a, __c, __m>(_M_x); + return _M_x; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const linear_congruential<_UIntType, __a, __c, __m>& __lcr) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__os.widen(' ')); + + __os << __lcr._M_x; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + linear_congruential<_UIntType, __a, __c, __m>& __lcr) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec); + + __is >> __lcr._M_x; + + __is.flags(__flags); + return __is; + } + + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::word_size; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::state_size; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::shift_size; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::mask_bits; + + template + const _UIntType + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::parameter_a; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::output_u; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::output_s; + + template + const _UIntType + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::output_b; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::output_t; + + template + const _UIntType + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::output_c; + + template + const int + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::output_l; + + template + void + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>:: + seed(unsigned long __value) + { + _M_x[0] = __detail::__mod<_UIntType, 1, 0, + __detail::_Shift<_UIntType, __w>::__value>(__value); + + for (int __i = 1; __i < state_size; ++__i) + { + _UIntType __x = _M_x[__i - 1]; + __x ^= __x >> (__w - 2); + __x *= 1812433253ul; + __x += __i; + _M_x[__i] = __detail::__mod<_UIntType, 1, 0, + __detail::_Shift<_UIntType, __w>::__value>(__x); + } + _M_p = state_size; + } + + template + template + void + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>:: + seed(_Gen& __gen, false_type) + { + for (int __i = 0; __i < state_size; ++__i) + _M_x[__i] = __detail::__mod<_UIntType, 1, 0, + __detail::_Shift<_UIntType, __w>::__value>(__gen()); + _M_p = state_size; + } + + template + typename + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>::result_type + mersenne_twister<_UIntType, __w, __n, __m, __r, __a, __u, __s, + __b, __t, __c, __l>:: + operator()() + { + // Reload the vector - cost is O(n) amortized over n calls. + if (_M_p >= state_size) + { + const _UIntType __upper_mask = (~_UIntType()) << __r; + const _UIntType __lower_mask = ~__upper_mask; + + for (int __k = 0; __k < (__n - __m); ++__k) + { + _UIntType __y = ((_M_x[__k] & __upper_mask) + | (_M_x[__k + 1] & __lower_mask)); + _M_x[__k] = (_M_x[__k + __m] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + } + + for (int __k = (__n - __m); __k < (__n - 1); ++__k) + { + _UIntType __y = ((_M_x[__k] & __upper_mask) + | (_M_x[__k + 1] & __lower_mask)); + _M_x[__k] = (_M_x[__k + (__m - __n)] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + } + + _UIntType __y = ((_M_x[__n - 1] & __upper_mask) + | (_M_x[0] & __lower_mask)); + _M_x[__n - 1] = (_M_x[__m - 1] ^ (__y >> 1) + ^ ((__y & 0x01) ? __a : 0)); + _M_p = 0; + } + + // Calculate o(x(i)). + result_type __z = _M_x[_M_p++]; + __z ^= (__z >> __u); + __z ^= (__z << __s) & __b; + __z ^= (__z << __t) & __c; + __z ^= (__z >> __l); + + return __z; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const mersenne_twister<_UIntType, __w, __n, __m, + __r, __a, __u, __s, __b, __t, __c, __l>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (int __i = 0; __i < __n - 1; ++__i) + __os << __x._M_x[__i] << __space; + __os << __x._M_x[__n - 1]; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + mersenne_twister<_UIntType, __w, __n, __m, + __r, __a, __u, __s, __b, __t, __c, __l>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (int __i = 0; __i < __n; ++__i) + __is >> __x._M_x[__i]; + + __is.flags(__flags); + return __is; + } + + + template + const _IntType + subtract_with_carry<_IntType, __m, __s, __r>::modulus; + + template + const int + subtract_with_carry<_IntType, __m, __s, __r>::long_lag; + + template + const int + subtract_with_carry<_IntType, __m, __s, __r>::short_lag; + + template + void + subtract_with_carry<_IntType, __m, __s, __r>:: + seed(unsigned long __value) + { + if (__value == 0) + __value = 19780503; + + std::tr1::linear_congruential + __lcg(__value); + + for (int __i = 0; __i < long_lag; ++__i) + _M_x[__i] = __detail::__mod<_UIntType, 1, 0, modulus>(__lcg()); + + _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; + _M_p = 0; + } + + template + template + void + subtract_with_carry<_IntType, __m, __s, __r>:: + seed(_Gen& __gen, false_type) + { + const int __n = (std::numeric_limits<_UIntType>::digits + 31) / 32; + + for (int __i = 0; __i < long_lag; ++__i) + { + _UIntType __tmp = 0; + _UIntType __factor = 1; + for (int __j = 0; __j < __n; ++__j) + { + __tmp += __detail::__mod<__detail::_UInt32Type, 1, 0, 0> + (__gen()) * __factor; + __factor *= __detail::_Shift<_UIntType, 32>::__value; + } + _M_x[__i] = __detail::__mod<_UIntType, 1, 0, modulus>(__tmp); + } + _M_carry = (_M_x[long_lag - 1] == 0) ? 1 : 0; + _M_p = 0; + } + + template + typename subtract_with_carry<_IntType, __m, __s, __r>::result_type + subtract_with_carry<_IntType, __m, __s, __r>:: + operator()() + { + // Derive short lag index from current index. + int __ps = _M_p - short_lag; + if (__ps < 0) + __ps += long_lag; + + // Calculate new x(i) without overflow or division. + // NB: Thanks to the requirements for _IntType, _M_x[_M_p] + _M_carry + // cannot overflow. + _UIntType __xi; + if (_M_x[__ps] >= _M_x[_M_p] + _M_carry) + { + __xi = _M_x[__ps] - _M_x[_M_p] - _M_carry; + _M_carry = 0; + } + else + { + __xi = modulus - _M_x[_M_p] - _M_carry + _M_x[__ps]; + _M_carry = 1; + } + _M_x[_M_p] = __xi; + + // Adjust current index to loop around in ring buffer. + if (++_M_p >= long_lag) + _M_p = 0; + + return __xi; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const subtract_with_carry<_IntType, __m, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (int __i = 0; __i < __r; ++__i) + __os << __x._M_x[__i] << __space; + __os << __x._M_carry; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + subtract_with_carry<_IntType, __m, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (int __i = 0; __i < __r; ++__i) + __is >> __x._M_x[__i]; + __is >> __x._M_carry; + + __is.flags(__flags); + return __is; + } + + + template + const int + subtract_with_carry_01<_RealType, __w, __s, __r>::word_size; + + template + const int + subtract_with_carry_01<_RealType, __w, __s, __r>::long_lag; + + template + const int + subtract_with_carry_01<_RealType, __w, __s, __r>::short_lag; + + template + void + subtract_with_carry_01<_RealType, __w, __s, __r>:: + _M_initialize_npows() + { + for (int __j = 0; __j < __n; ++__j) +#if _GLIBCXX_USE_C99_MATH_TR1 + _M_npows[__j] = std::tr1::ldexp(_RealType(1), -__w + __j * 32); +#else + _M_npows[__j] = std::pow(_RealType(2), -__w + __j * 32); +#endif + } + + template + void + subtract_with_carry_01<_RealType, __w, __s, __r>:: + seed(unsigned long __value) + { + if (__value == 0) + __value = 19780503; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 512. Seeding subtract_with_carry_01 from a single unsigned long. + std::tr1::linear_congruential + __lcg(__value); + + this->seed(__lcg); + } + + template + template + void + subtract_with_carry_01<_RealType, __w, __s, __r>:: + seed(_Gen& __gen, false_type) + { + for (int __i = 0; __i < long_lag; ++__i) + { + for (int __j = 0; __j < __n - 1; ++__j) + _M_x[__i][__j] = __detail::__mod<_UInt32Type, 1, 0, 0>(__gen()); + _M_x[__i][__n - 1] = __detail::__mod<_UInt32Type, 1, 0, + __detail::_Shift<_UInt32Type, __w % 32>::__value>(__gen()); + } + + _M_carry = 1; + for (int __j = 0; __j < __n; ++__j) + if (_M_x[long_lag - 1][__j] != 0) + { + _M_carry = 0; + break; + } + + _M_p = 0; + } + + template + typename subtract_with_carry_01<_RealType, __w, __s, __r>::result_type + subtract_with_carry_01<_RealType, __w, __s, __r>:: + operator()() + { + // Derive short lag index from current index. + int __ps = _M_p - short_lag; + if (__ps < 0) + __ps += long_lag; + + _UInt32Type __new_carry; + for (int __j = 0; __j < __n - 1; ++__j) + { + if (_M_x[__ps][__j] > _M_x[_M_p][__j] + || (_M_x[__ps][__j] == _M_x[_M_p][__j] && _M_carry == 0)) + __new_carry = 0; + else + __new_carry = 1; + + _M_x[_M_p][__j] = _M_x[__ps][__j] - _M_x[_M_p][__j] - _M_carry; + _M_carry = __new_carry; + } + + if (_M_x[__ps][__n - 1] > _M_x[_M_p][__n - 1] + || (_M_x[__ps][__n - 1] == _M_x[_M_p][__n - 1] && _M_carry == 0)) + __new_carry = 0; + else + __new_carry = 1; + + _M_x[_M_p][__n - 1] = __detail::__mod<_UInt32Type, 1, 0, + __detail::_Shift<_UInt32Type, __w % 32>::__value> + (_M_x[__ps][__n - 1] - _M_x[_M_p][__n - 1] - _M_carry); + _M_carry = __new_carry; + + result_type __ret = 0.0; + for (int __j = 0; __j < __n; ++__j) + __ret += _M_x[_M_p][__j] * _M_npows[__j]; + + // Adjust current index to loop around in ring buffer. + if (++_M_p >= long_lag) + _M_p = 0; + + return __ret; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const subtract_with_carry_01<_RealType, __w, __s, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + for (int __i = 0; __i < __r; ++__i) + for (int __j = 0; __j < __x.__n; ++__j) + __os << __x._M_x[__i][__j] << __space; + __os << __x._M_carry; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + subtract_with_carry_01<_RealType, __w, __s, __r>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + for (int __i = 0; __i < __r; ++__i) + for (int __j = 0; __j < __x.__n; ++__j) + __is >> __x._M_x[__i][__j]; + __is >> __x._M_carry; + + __is.flags(__flags); + return __is; + } + + template + const int + discard_block<_UniformRandomNumberGenerator, __p, __r>::block_size; + + template + const int + discard_block<_UniformRandomNumberGenerator, __p, __r>::used_block; + + template + typename discard_block<_UniformRandomNumberGenerator, + __p, __r>::result_type + discard_block<_UniformRandomNumberGenerator, __p, __r>:: + operator()() + { + if (_M_n >= used_block) + { + while (_M_n < block_size) + { + _M_b(); + ++_M_n; + } + _M_n = 0; + } + ++_M_n; + return _M_b(); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const discard_block<_UniformRandomNumberGenerator, + __p, __r>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed + | __ios_base::left); + __os.fill(__space); + + __os << __x._M_b << __space << __x._M_n; + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + discard_block<_UniformRandomNumberGenerator, __p, __r>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_b >> __x._M_n; + + __is.flags(__flags); + return __is; + } + + + template + const int + xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>::shift1; + + template + const int + xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>::shift2; + + template + void + xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>:: + _M_initialize_max() + { + const int __w = std::numeric_limits::digits; + + const result_type __m1 = + std::min(result_type(_M_b1.max() - _M_b1.min()), + __detail::_Shift::__value - 1); + + const result_type __m2 = + std::min(result_type(_M_b2.max() - _M_b2.min()), + __detail::_Shift::__value - 1); + + // NB: In TR1 s1 is not required to be >= s2. + if (__s1 < __s2) + _M_max = _M_initialize_max_aux(__m2, __m1, __s2 - __s1) << __s1; + else + _M_max = _M_initialize_max_aux(__m1, __m2, __s1 - __s2) << __s2; + } + + template + typename xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>::result_type + xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>:: + _M_initialize_max_aux(result_type __a, result_type __b, int __d) + { + const result_type __two2d = result_type(1) << __d; + const result_type __c = __a * __two2d; + + if (__a == 0 || __b < __two2d) + return __c + __b; + + const result_type __t = std::max(__c, __b); + const result_type __u = std::min(__c, __b); + + result_type __ub = __u; + result_type __p; + for (__p = 0; __ub != 1; __ub >>= 1) + ++__p; + + const result_type __two2p = result_type(1) << __p; + const result_type __k = __t / __two2p; + + if (__k & 1) + return (__k + 1) * __two2p - 1; + + if (__c >= __b) + return (__k + 1) * __two2p + _M_initialize_max_aux((__t % __two2p) + / __two2d, + __u % __two2p, __d); + else + return (__k + 1) * __two2p + _M_initialize_max_aux((__u % __two2p) + / __two2d, + __t % __two2p, __d); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::dec | __ios_base::fixed | __ios_base::left); + __os.fill(__space); + + __os << __x.base1() << __space << __x.base2(); + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + xor_combine<_UniformRandomNumberGenerator1, __s1, + _UniformRandomNumberGenerator2, __s2>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + __is >> __x._M_b1 >> __x._M_b2; + + __is.flags(__flags); + return __is; + } + + + template + template + typename uniform_int<_IntType>::result_type + uniform_int<_IntType>:: + _M_call(_UniformRandomNumberGenerator& __urng, + result_type __min, result_type __max, true_type) + { + // XXX Must be fixed to work well for *arbitrary* __urng.max(), + // __urng.min(), __max, __min. Currently works fine only in the + // most common case __urng.max() - __urng.min() >= __max - __min, + // with __urng.max() > __urng.min() >= 0. + typedef typename __gnu_cxx::__add_unsigned::__type __urntype; + typedef typename __gnu_cxx::__add_unsigned::__type + __utype; + typedef typename __gnu_cxx::__conditional_type<(sizeof(__urntype) + > sizeof(__utype)), + __urntype, __utype>::__type __uctype; + + result_type __ret; + + const __urntype __urnmin = __urng.min(); + const __urntype __urnmax = __urng.max(); + const __urntype __urnrange = __urnmax - __urnmin; + const __uctype __urange = __max - __min; + const __uctype __udenom = (__urnrange <= __urange + ? 1 : __urnrange / (__urange + 1)); + do + __ret = (__urntype(__urng()) - __urnmin) / __udenom; + while (__ret > __max - __min); + + return __ret + __min; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_int<_IntType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + + __os << __x.min() << __space << __x.max(); + + __os.flags(__flags); + __os.fill(__fill); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_int<_IntType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_min >> __x._M_max; + + __is.flags(__flags); + return __is; + } + + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const bernoulli_distribution& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(__gnu_cxx::__numeric_traits::__max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + + template + template + typename geometric_distribution<_IntType, _RealType>::result_type + geometric_distribution<_IntType, _RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + // About the epsilon thing see this thread: + // http://gcc.gnu.org/ml/gcc-patches/2006-10/msg00971.html + const _RealType __naf = + (1 - std::numeric_limits<_RealType>::epsilon()) / 2; + // The largest _RealType convertible to _IntType. + const _RealType __thr = + std::numeric_limits<_IntType>::max() + __naf; + + _RealType __cand; + do + __cand = std::ceil(std::log(__urng()) / _M_log_p); + while (__cand >= __thr); + + return result_type(__cand + __naf); + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const geometric_distribution<_IntType, _RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x.p(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + + template + void + poisson_distribution<_IntType, _RealType>:: + _M_initialize() + { +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_mean >= 12) + { + const _RealType __m = std::floor(_M_mean); + _M_lm_thr = std::log(_M_mean); + _M_lfm = std::tr1::lgamma(__m + 1); + _M_sm = std::sqrt(__m); + + const _RealType __pi_4 = 0.7853981633974483096156608458198757L; + const _RealType __dx = std::sqrt(2 * __m * std::log(32 * __m + / __pi_4)); + _M_d = std::tr1::round(std::max(_RealType(6), + std::min(__m, __dx))); + const _RealType __cx = 2 * __m + _M_d; + _M_scx = std::sqrt(__cx / 2); + _M_1cx = 1 / __cx; + + _M_c2b = std::sqrt(__pi_4 * __cx) * std::exp(_M_1cx); + _M_cb = 2 * __cx * std::exp(-_M_d * _M_1cx * (1 + _M_d / 2)) / _M_d; + } + else +#endif + _M_lm_thr = std::exp(-_M_mean); + } + + /** + * A rejection algorithm when mean >= 12 and a simple method based + * upon the multiplication of uniform random variates otherwise. + * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 + * is defined. + * + * Reference: + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. X, Sects. 3.3 & 3.4 (+ Errata!). + */ + template + template + typename poisson_distribution<_IntType, _RealType>::result_type + poisson_distribution<_IntType, _RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_mean >= 12) + { + _RealType __x; + + // See comments above... + const _RealType __naf = + (1 - std::numeric_limits<_RealType>::epsilon()) / 2; + const _RealType __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const _RealType __m = std::floor(_M_mean); + // sqrt(pi / 2) + const _RealType __spi_2 = 1.2533141373155002512078826424055226L; + const _RealType __c1 = _M_sm * __spi_2; + const _RealType __c2 = _M_c2b + __c1; + const _RealType __c3 = __c2 + 1; + const _RealType __c4 = __c3 + 1; + // e^(1 / 78) + const _RealType __e178 = 1.0129030479320018583185514777512983L; + const _RealType __c5 = __c4 + __e178; + const _RealType __c = _M_cb + __c5; + const _RealType __2cx = 2 * (2 * __m + _M_d); + + bool __reject = true; + do + { + const _RealType __u = __c * __urng(); + const _RealType __e = -std::log(__urng()); + + _RealType __w = 0.0; + + if (__u <= __c1) + { + const _RealType __n = _M_nd(__urng); + const _RealType __y = -std::abs(__n) * _M_sm - 1; + __x = std::floor(__y); + __w = -__n * __n / 2; + if (__x < -__m) + continue; + } + else if (__u <= __c2) + { + const _RealType __n = _M_nd(__urng); + const _RealType __y = 1 + std::abs(__n) * _M_scx; + __x = std::ceil(__y); + __w = __y * (2 - __y) * _M_1cx; + if (__x > _M_d) + continue; + } + else if (__u <= __c3) + // NB: This case not in the book, nor in the Errata, + // but should be ok... + __x = -1; + else if (__u <= __c4) + __x = 0; + else if (__u <= __c5) + __x = 1; + else + { + const _RealType __v = -std::log(__urng()); + const _RealType __y = _M_d + __v * __2cx / _M_d; + __x = std::ceil(__y); + __w = -_M_d * _M_1cx * (1 + __y / 2); + } + + __reject = (__w - __e - __x * _M_lm_thr + > _M_lfm - std::tr1::lgamma(__x + __m + 1)); + + __reject |= __x + __m >= __thr; + + } while (__reject); + + return result_type(__x + __m + __naf); + } + else +#endif + { + _IntType __x = 0; + _RealType __prod = 1.0; + + do + { + __prod *= __urng(); + __x += 1; + } + while (__prod > _M_lm_thr); + + return __x - 1; + } + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const poisson_distribution<_IntType, _RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x.mean() << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + poisson_distribution<_IntType, _RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + __is >> __x._M_mean >> __x._M_nd; + __x._M_initialize(); + + __is.flags(__flags); + return __is; + } + + + template + void + binomial_distribution<_IntType, _RealType>:: + _M_initialize() + { + const _RealType __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; + + _M_easy = true; + +#if _GLIBCXX_USE_C99_MATH_TR1 + if (_M_t * __p12 >= 8) + { + _M_easy = false; + const _RealType __np = std::floor(_M_t * __p12); + const _RealType __pa = __np / _M_t; + const _RealType __1p = 1 - __pa; + + const _RealType __pi_4 = 0.7853981633974483096156608458198757L; + const _RealType __d1x = + std::sqrt(__np * __1p * std::log(32 * __np + / (81 * __pi_4 * __1p))); + _M_d1 = std::tr1::round(std::max(_RealType(1), __d1x)); + const _RealType __d2x = + std::sqrt(__np * __1p * std::log(32 * _M_t * __1p + / (__pi_4 * __pa))); + _M_d2 = std::tr1::round(std::max(_RealType(1), __d2x)); + + // sqrt(pi / 2) + const _RealType __spi_2 = 1.2533141373155002512078826424055226L; + _M_s1 = std::sqrt(__np * __1p) * (1 + _M_d1 / (4 * __np)); + _M_s2 = std::sqrt(__np * __1p) * (1 + _M_d2 / (4 * _M_t * __1p)); + _M_c = 2 * _M_d1 / __np; + _M_a1 = std::exp(_M_c) * _M_s1 * __spi_2; + const _RealType __a12 = _M_a1 + _M_s2 * __spi_2; + const _RealType __s1s = _M_s1 * _M_s1; + _M_a123 = __a12 + (std::exp(_M_d1 / (_M_t * __1p)) + * 2 * __s1s / _M_d1 + * std::exp(-_M_d1 * _M_d1 / (2 * __s1s))); + const _RealType __s2s = _M_s2 * _M_s2; + _M_s = (_M_a123 + 2 * __s2s / _M_d2 + * std::exp(-_M_d2 * _M_d2 / (2 * __s2s))); + _M_lf = (std::tr1::lgamma(__np + 1) + + std::tr1::lgamma(_M_t - __np + 1)); + _M_lp1p = std::log(__pa / __1p); + + _M_q = -std::log(1 - (__p12 - __pa) / __1p); + } + else +#endif + _M_q = -std::log(1 - __p12); + } + + template + template + typename binomial_distribution<_IntType, _RealType>::result_type + binomial_distribution<_IntType, _RealType>:: + _M_waiting(_UniformRandomNumberGenerator& __urng, _IntType __t) + { + _IntType __x = 0; + _RealType __sum = 0; + + do + { + const _RealType __e = -std::log(__urng()); + __sum += __e / (__t - __x); + __x += 1; + } + while (__sum <= _M_q); + + return __x - 1; + } + + /** + * A rejection algorithm when t * p >= 8 and a simple waiting time + * method - the second in the referenced book - otherwise. + * NB: The former is available only if _GLIBCXX_USE_C99_MATH_TR1 + * is defined. + * + * Reference: + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. X, Sect. 4 (+ Errata!). + */ + template + template + typename binomial_distribution<_IntType, _RealType>::result_type + binomial_distribution<_IntType, _RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __ret; + const _RealType __p12 = _M_p <= 0.5 ? _M_p : 1.0 - _M_p; + +#if _GLIBCXX_USE_C99_MATH_TR1 + if (!_M_easy) + { + _RealType __x; + + // See comments above... + const _RealType __naf = + (1 - std::numeric_limits<_RealType>::epsilon()) / 2; + const _RealType __thr = + std::numeric_limits<_IntType>::max() + __naf; + + const _RealType __np = std::floor(_M_t * __p12); + const _RealType __pa = __np / _M_t; + + // sqrt(pi / 2) + const _RealType __spi_2 = 1.2533141373155002512078826424055226L; + const _RealType __a1 = _M_a1; + const _RealType __a12 = __a1 + _M_s2 * __spi_2; + const _RealType __a123 = _M_a123; + const _RealType __s1s = _M_s1 * _M_s1; + const _RealType __s2s = _M_s2 * _M_s2; + + bool __reject; + do + { + const _RealType __u = _M_s * __urng(); + + _RealType __v; + + if (__u <= __a1) + { + const _RealType __n = _M_nd(__urng); + const _RealType __y = _M_s1 * std::abs(__n); + __reject = __y >= _M_d1; + if (!__reject) + { + const _RealType __e = -std::log(__urng()); + __x = std::floor(__y); + __v = -__e - __n * __n / 2 + _M_c; + } + } + else if (__u <= __a12) + { + const _RealType __n = _M_nd(__urng); + const _RealType __y = _M_s2 * std::abs(__n); + __reject = __y >= _M_d2; + if (!__reject) + { + const _RealType __e = -std::log(__urng()); + __x = std::floor(-__y); + __v = -__e - __n * __n / 2; + } + } + else if (__u <= __a123) + { + const _RealType __e1 = -std::log(__urng()); + const _RealType __e2 = -std::log(__urng()); + + const _RealType __y = _M_d1 + 2 * __s1s * __e1 / _M_d1; + __x = std::floor(__y); + __v = (-__e2 + _M_d1 * (1 / (_M_t - __np) + -__y / (2 * __s1s))); + __reject = false; + } + else + { + const _RealType __e1 = -std::log(__urng()); + const _RealType __e2 = -std::log(__urng()); + + const _RealType __y = _M_d2 + 2 * __s2s * __e1 / _M_d2; + __x = std::floor(-__y); + __v = -__e2 - _M_d2 * __y / (2 * __s2s); + __reject = false; + } + + __reject = __reject || __x < -__np || __x > _M_t - __np; + if (!__reject) + { + const _RealType __lfx = + std::tr1::lgamma(__np + __x + 1) + + std::tr1::lgamma(_M_t - (__np + __x) + 1); + __reject = __v > _M_lf - __lfx + __x * _M_lp1p; + } + + __reject |= __x + __np >= __thr; + } + while (__reject); + + __x += __np + __naf; + + const _IntType __z = _M_waiting(__urng, _M_t - _IntType(__x)); + __ret = _IntType(__x) + __z; + } + else +#endif + __ret = _M_waiting(__urng, _M_t); + + if (__p12 != _M_p) + __ret = _M_t - __ret; + return __ret; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const binomial_distribution<_IntType, _RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x.t() << __space << __x.p() + << __space << __x._M_nd; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + binomial_distribution<_IntType, _RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_t >> __x._M_p >> __x._M_nd; + __x._M_initialize(); + + __is.flags(__flags); + return __is; + } + + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const uniform_real<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x.min() << __space << __x.max(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + uniform_real<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::skipws); + + __is >> __x._M_min >> __x._M_max; + + __is.flags(__flags); + return __is; + } + + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const exponential_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x.lambda(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + + /** + * Polar method due to Marsaglia. + * + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. V, Sect. 4.4. + */ + template + template + typename normal_distribution<_RealType>::result_type + normal_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __ret; + + if (_M_saved_available) + { + _M_saved_available = false; + __ret = _M_saved; + } + else + { + result_type __x, __y, __r2; + do + { + __x = result_type(2.0) * __urng() - 1.0; + __y = result_type(2.0) * __urng() - 1.0; + __r2 = __x * __x + __y * __y; + } + while (__r2 > 1.0 || __r2 == 0.0); + + const result_type __mult = std::sqrt(-2 * std::log(__r2) / __r2); + _M_saved = __x * __mult; + _M_saved_available = true; + __ret = __y * __mult; + } + + __ret = __ret * _M_sigma + _M_mean; + return __ret; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const normal_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + const _CharT __space = __os.widen(' '); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__space); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x._M_saved_available << __space + << __x.mean() << __space + << __x.sigma(); + if (__x._M_saved_available) + __os << __space << __x._M_saved; + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } + + template + std::basic_istream<_CharT, _Traits>& + operator>>(std::basic_istream<_CharT, _Traits>& __is, + normal_distribution<_RealType>& __x) + { + typedef std::basic_istream<_CharT, _Traits> __istream_type; + typedef typename __istream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __is.flags(); + __is.flags(__ios_base::dec | __ios_base::skipws); + + __is >> __x._M_saved_available >> __x._M_mean + >> __x._M_sigma; + if (__x._M_saved_available) + __is >> __x._M_saved; + + __is.flags(__flags); + return __is; + } + + + template + void + gamma_distribution<_RealType>:: + _M_initialize() + { + if (_M_alpha >= 1) + _M_l_d = std::sqrt(2 * _M_alpha - 1); + else + _M_l_d = (std::pow(_M_alpha, _M_alpha / (1 - _M_alpha)) + * (1 - _M_alpha)); + } + + /** + * Cheng's rejection algorithm GB for alpha >= 1 and a modification + * of Vaduva's rejection from Weibull algorithm due to Devroye for + * alpha < 1. + * + * References: + * Cheng, R. C. The Generation of Gamma Random Variables with Non-integral + * Shape Parameter. Applied Statistics, 26, 71-75, 1977. + * + * Vaduva, I. Computer Generation of Gamma Gandom Variables by Rejection + * and Composition Procedures. Math. Operationsforschung and Statistik, + * Series in Statistics, 8, 545-576, 1977. + * + * Devroye, L. Non-Uniform Random Variates Generation. Springer-Verlag, + * New York, 1986, Ch. IX, Sect. 3.4 (+ Errata!). + */ + template + template + typename gamma_distribution<_RealType>::result_type + gamma_distribution<_RealType>:: + operator()(_UniformRandomNumberGenerator& __urng) + { + result_type __x; + + bool __reject; + if (_M_alpha >= 1) + { + // alpha - log(4) + const result_type __b = _M_alpha + - result_type(1.3862943611198906188344642429163531L); + const result_type __c = _M_alpha + _M_l_d; + const result_type __1l = 1 / _M_l_d; + + // 1 + log(9 / 2) + const result_type __k = 2.5040773967762740733732583523868748L; + + do + { + const result_type __u = __urng(); + const result_type __v = __urng(); + + const result_type __y = __1l * std::log(__v / (1 - __v)); + __x = _M_alpha * std::exp(__y); + + const result_type __z = __u * __v * __v; + const result_type __r = __b + __c * __y - __x; + + __reject = __r < result_type(4.5) * __z - __k; + if (__reject) + __reject = __r < std::log(__z); + } + while (__reject); + } + else + { + const result_type __c = 1 / _M_alpha; + + do + { + const result_type __z = -std::log(__urng()); + const result_type __e = -std::log(__urng()); + + __x = std::pow(__z, __c); + + __reject = __z + __e < _M_l_d + __x; + } + while (__reject); + } + + return __x; + } + + template + std::basic_ostream<_CharT, _Traits>& + operator<<(std::basic_ostream<_CharT, _Traits>& __os, + const gamma_distribution<_RealType>& __x) + { + typedef std::basic_ostream<_CharT, _Traits> __ostream_type; + typedef typename __ostream_type::ios_base __ios_base; + + const typename __ios_base::fmtflags __flags = __os.flags(); + const _CharT __fill = __os.fill(); + const std::streamsize __precision = __os.precision(); + __os.flags(__ios_base::scientific | __ios_base::left); + __os.fill(__os.widen(' ')); + __os.precision(__gnu_cxx::__numeric_traits<_RealType>::__max_digits10); + + __os << __x.alpha(); + + __os.flags(__flags); + __os.fill(__fill); + __os.precision(__precision); + return __os; + } +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/regex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/regex new file mode 100644 index 000000000..f95cc04f9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/regex @@ -0,0 +1,2727 @@ +// class template regex -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** + * @file tr1/regex + * @author Stephen M. Webb + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_REGEX +#define _GLIBCXX_TR1_REGEX 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ +/** + * @defgroup tr1_regex Regular Expressions + * A facility for performing regular expression pattern matching. + */ + //@{ + +/** @namespace std::regex_constants + * @brief ISO C++ 0x entities sub namespace for regex. + */ +namespace regex_constants +{ + /** + * @name 5.1 Regular Expression Syntax Options + */ + //@{ + enum __syntax_option + { + _S_icase, + _S_nosubs, + _S_optimize, + _S_collate, + _S_ECMAScript, + _S_basic, + _S_extended, + _S_awk, + _S_grep, + _S_egrep, + _S_syntax_last + }; + + /** + * @brief This is a bitmask type indicating how to interpret the regex. + * + * The @c syntax_option_type is implementation defined but it is valid to + * perform bitwise operations on these values and expect the right thing to + * happen. + * + * A valid value of type syntax_option_type shall have exactly one of the + * elements @c ECMAScript, @c basic, @c extended, @c awk, @c grep, @c egrep + * %set. + */ + typedef unsigned int syntax_option_type; + + /** + * Specifies that the matching of regular expressions against a character + * sequence shall be performed without regard to case. + */ + static const syntax_option_type icase = 1 << _S_icase; + + /** + * Specifies that when a regular expression is matched against a character + * container sequence, no sub-expression matches are to be stored in the + * supplied match_results structure. + */ + static const syntax_option_type nosubs = 1 << _S_nosubs; + + /** + * Specifies that the regular expression engine should pay more attention to + * the speed with which regular expressions are matched, and less to the + * speed with which regular expression objects are constructed. Otherwise + * it has no detectable effect on the program output. + */ + static const syntax_option_type optimize = 1 << _S_optimize; + + /** + * Specifies that character ranges of the form [a-b] should be locale + * sensitive. + */ + static const syntax_option_type collate = 1 << _S_collate; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by ECMAScript in ECMA-262 [Ecma International, ECMAScript + * Language Specification, Standard Ecma-262, third edition, 1999], as + * modified in tr1 section [7.13]. This grammar is similar to that defined + * in the PERL scripting language but extended with elements found in the + * POSIX regular expression grammar. + */ + static const syntax_option_type ECMAScript = 1 << _S_ECMAScript; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX basic regular expressions in IEEE Std 1003.1-2001, + * Portable Operating System Interface (POSIX), Base Definitions and + * Headers, Section 9, Regular Expressions [IEEE, Information Technology -- + * Portable Operating System Interface (POSIX), IEEE Standard 1003.1-2001]. + */ + static const syntax_option_type basic = 1 << _S_basic; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX extended regular expressions in IEEE Std 1003.1-2001, + * Portable Operating System Interface (POSIX), Base Definitions and Headers, + * Section 9, Regular Expressions. + */ + static const syntax_option_type extended = 1 << _S_extended; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX utility awk in IEEE Std 1003.1-2001. This option is + * identical to syntax_option_type extended, except that C-style escape + * sequences are supported. These sequences are: + * \\\\, \\a, \\b, \\f, + * \\n, \\r, \\t , \\v, + * \\', ', and \\ddd + * (where ddd is one, two, or three octal digits). + */ + static const syntax_option_type awk = 1 << _S_awk; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX utility grep in IEEE Std 1003.1-2001. This option is + * identical to syntax_option_type basic, except that newlines are treated + * as whitespace. + */ + static const syntax_option_type grep = 1 << _S_grep; + + /** + * Specifies that the grammar recognized by the regular expression engine is + * that used by POSIX utility grep when given the -E option in + * IEEE Std 1003.1-2001. This option is identical to syntax_option_type + * extended, except that newlines are treated as whitespace. + */ + static const syntax_option_type egrep = 1 << _S_egrep; + + //@} + + /** + * @name 5.2 Matching Rules + * + * Matching a regular expression against a sequence of characters [first, + * last) proceeds according to the rules of the grammar specified for the + * regular expression object, modified according to the effects listed + * below for any bitmask elements set. + * + */ + //@{ + + enum __match_flag + { + _S_not_bol, + _S_not_eol, + _S_not_bow, + _S_not_eow, + _S_any, + _S_not_null, + _S_continuous, + _S_prev_avail, + _S_sed, + _S_no_copy, + _S_first_only, + _S_match_flag_last + }; + + /** + * @brief This is a bitmask type indicating regex matching rules. + * + * The @c match_flag_type is implementation defined but it is valid to + * perform bitwise operations on these values and expect the right thing to + * happen. + */ + typedef std::bitset<_S_match_flag_last> match_flag_type; + + /** + * The default matching rules. + */ + static const match_flag_type match_default = 0; + + /** + * The first character in the sequence [first, last) is treated as though it + * is not at the beginning of a line, so the character (^) in the regular + * expression shall not match [first, first). + */ + static const match_flag_type match_not_bol = 1 << _S_not_bol; + + /** + * The last character in the sequence [first, last) is treated as though it + * is not at the end of a line, so the character ($) in the regular + * expression shall not match [last, last). + */ + static const match_flag_type match_not_eol = 1 << _S_not_eol; + + /** + * The expression \\b is not matched against the sub-sequence + * [first,first). + */ + static const match_flag_type match_not_bow = 1 << _S_not_bow; + + /** + * The expression \\b should not be matched against the sub-sequence + * [last,last). + */ + static const match_flag_type match_not_eow = 1 << _S_not_eow; + + /** + * If more than one match is possible then any match is an acceptable + * result. + */ + static const match_flag_type match_any = 1 << _S_any; + + /** + * The expression does not match an empty sequence. + */ + static const match_flag_type match_not_null = 1 << _S_not_null; + + /** + * The expression only matches a sub-sequence that begins at first . + */ + static const match_flag_type match_continuous = 1 << _S_continuous; + + /** + * --first is a valid iterator position. When this flag is set then the + * flags match_not_bol and match_not_bow are ignored by the regular + * expression algorithms 7.11 and iterators 7.12. + */ + static const match_flag_type match_prev_avail = 1 << _S_prev_avail; + + /** + * When a regular expression match is to be replaced by a new string, the + * new string is constructed using the rules used by the ECMAScript replace + * function in ECMA- 262 [Ecma International, ECMAScript Language + * Specification, Standard Ecma-262, third edition, 1999], part 15.5.4.11 + * String.prototype.replace. In addition, during search and replace + * operations all non-overlapping occurrences of the regular expression + * are located and replaced, and sections of the input that did not match + * the expression are copied unchanged to the output string. + * + * Format strings (from ECMA-262 [15.5.4.11]): + * @li $$ The dollar-sign itself ($) + * @li $& The matched substring. + * @li $` The portion of @a string that precedes the matched substring. + * This would be match_results::prefix(). + * @li $' The portion of @a string that follows the matched substring. + * This would be match_results::suffix(). + * @li $n The nth capture, where n is in [1,9] and $n is not followed by a + * decimal digit. If n <= match_results::size() and the nth capture + * is undefined, use the empty string instead. If n > + * match_results::size(), the result is implementation-defined. + * @li $nn The nnth capture, where nn is a two-digit decimal number on + * [01, 99]. If nn <= match_results::size() and the nth capture is + * undefined, use the empty string instead. If + * nn > match_results::size(), the result is implementation-defined. + */ + static const match_flag_type format_default = 0; + + /** + * When a regular expression match is to be replaced by a new string, the + * new string is constructed using the rules used by the POSIX sed utility + * in IEEE Std 1003.1- 2001 [IEEE, Information Technology -- Portable + * Operating System Interface (POSIX), IEEE Standard 1003.1-2001]. + */ + static const match_flag_type format_sed = 1 << _S_sed; + + /** + * During a search and replace operation, sections of the character + * container sequence being searched that do not match the regular + * expression shall not be copied to the output string. + */ + static const match_flag_type format_no_copy = 1 << _S_no_copy; + + /** + * When specified during a search and replace operation, only the first + * occurrence of the regular expression shall be replaced. + */ + static const match_flag_type format_first_only = 1 << _S_first_only; + + //@} + + /** + * @name 5.3 Error Types + */ + //@{ + + enum error_type + { + _S_error_collate, + _S_error_ctype, + _S_error_escape, + _S_error_backref, + _S_error_brack, + _S_error_paren, + _S_error_brace, + _S_error_badbrace, + _S_error_range, + _S_error_space, + _S_error_badrepeat, + _S_error_complexity, + _S_error_stack, + _S_error_last + }; + + /** The expression contained an invalid collating element name. */ + static const error_type error_collate(_S_error_collate); + + /** The expression contained an invalid character class name. */ + static const error_type error_ctype(_S_error_ctype); + + /** + * The expression contained an invalid escaped character, or a trailing + * escape. + */ + static const error_type error_escape(_S_error_escape); + + /** The expression contained an invalid back reference. */ + static const error_type error_backref(_S_error_backref); + + /** The expression contained mismatched [ and ]. */ + static const error_type error_brack(_S_error_brack); + + /** The expression contained mismatched ( and ). */ + static const error_type error_paren(_S_error_paren); + + /** The expression contained mismatched { and } */ + static const error_type error_brace(_S_error_brace); + + /** The expression contained an invalid range in a {} expression. */ + static const error_type error_badbrace(_S_error_badbrace); + + /** + * The expression contained an invalid character range, + * such as [b-a] in most encodings. + */ + static const error_type error_range(_S_error_range); + + /** + * There was insufficient memory to convert the expression into a + * finite state machine. + */ + static const error_type error_space(_S_error_space); + + /** + * One of *?+{ was not preceded by a valid regular expression. + */ + static const error_type error_badrepeat(_S_error_badrepeat); + + /** + * The complexity of an attempted match against a regular expression + * exceeded a pre-set level. + */ + static const error_type error_complexity(_S_error_complexity); + + /** + * There was insufficient memory to determine whether the + * regular expression could match the specified character sequence. + */ + static const error_type error_stack(_S_error_stack); + + //@} +} + + // [7.8] Class regex_error + /** + * @brief A regular expression exception class. + * @ingroup exceptions + * + * The regular expression library throws objects of this class on error. + */ + class regex_error + : public std::runtime_error + { + public: + /** + * @brief Constructs a regex_error object. + * + * @param ecode the regex error code. + */ + explicit + regex_error(regex_constants::error_type __ecode) + : std::runtime_error("regex_error"), _M_code(__ecode) + { } + + /** + * @brief Gets the regex error code. + * + * @returns the regex error code. + */ + regex_constants::error_type + code() const + { return _M_code; } + + protected: + regex_constants::error_type _M_code; + }; + + // [7.7] Class regex_traits + /** + * @brief Describes aspects of a regular expression. + * + * A regular expression traits class that satisfies the requirements of tr1 + * section [7.2]. + * + * The class %regex is parameterized around a set of related types and + * functions used to complete the definition of its semantics. This class + * satisfies the requirements of such a traits class. + */ + template + struct regex_traits + { + public: + typedef _Ch_type char_type; + typedef std::basic_string string_type; + typedef std::locale locale_type; + typedef std::ctype_base::mask char_class_type; + + public: + /** + * @brief Constructs a default traits object. + */ + regex_traits() + { } + + /** + * @brief Gives the length of a C-style string starting at @p __p. + * + * @param __p a pointer to the start of a character sequence. + * + * @returns the number of characters between @p *__p and the first + * default-initialized value of type @p char_type. In other words, uses + * the C-string algorithm for determining the length of a sequence of + * characters. + */ + static std::size_t + length(const char_type* __p) + { return string_type::traits_type::length(__p); } + + /** + * @brief Performs the identity translation. + * + * @param c A character to the locale-specific character set. + * + * @returns c. + */ + char_type + translate(char_type __c) const + { return __c; } + + /** + * @brief Translates a character into a case-insensitive equivalent. + * + * @param c A character to the locale-specific character set. + * + * @returns the locale-specific lower-case equivalent of c. + * @throws std::bad_cast if the imbued locale does not support the ctype + * facet. + */ + char_type + translate_nocase(char_type __c) const + { + using std::ctype; + using std::use_facet; + return use_facet >(_M_locale).tolower(__c); + } + + /** + * @brief Gets a sort key for a character sequence. + * + * @param first beginning of the character sequence. + * @param last one-past-the-end of the character sequence. + * + * Returns a sort key for the character sequence designated by the + * iterator range [F1, F2) such that if the character sequence [G1, G2) + * sorts before the character sequence [H1, H2) then + * v.transform(G1, G2) < v.transform(H1, H2). + * + * What this really does is provide a more efficient way to compare a + * string to multiple other strings in locales with fancy collation + * rules and equivalence classes. + * + * @returns a locale-specific sort key equivalent to the input range. + * + * @throws std::bad_cast if the current locale does not have a collate + * facet. + */ + template + string_type + transform(_Fwd_iter __first, _Fwd_iter __last) const + { + using std::collate; + using std::use_facet; + const collate<_Ch_type>& __c(use_facet< + collate<_Ch_type> >(_M_locale)); + string_type __s(__first, __last); + return __c.transform(__s.data(), __s.data() + __s.size()); + } + + /** + * @brief Dunno. + * + * @param first beginning of the character sequence. + * @param last one-past-the-end of the character sequence. + * + * Effects: if typeid(use_facet >) == + * typeid(collate_byname<_Ch_type>) and the form of the sort key + * returned by collate_byname<_Ch_type>::transform(first, last) is known + * and can be converted into a primary sort key then returns that key, + * otherwise returns an empty string. WTF?? + * + * @todo Implement this function. + */ + template + string_type + transform_primary(_Fwd_iter __first, _Fwd_iter __last) const; + + /** + * @brief Gets a collation element by name. + * + * @param first beginning of the collation element name. + * @param last one-past-the-end of the collation element name. + * + * @returns a sequence of one or more characters that represents the + * collating element consisting of the character sequence designated by + * the iterator range [first, last). Returns an empty string if the + * character sequence is not a valid collating element. + * + * @todo Implement this function. + */ + template + string_type + lookup_collatename(_Fwd_iter __first, _Fwd_iter __last) const; + + /** + * @brief Maps one or more characters to a named character + * classification. + * + * @param first beginning of the character sequence. + * @param last one-past-the-end of the character sequence. + * + * @returns an unspecified value that represents the character + * classification named by the character sequence designated by the + * iterator range [first, last). The value returned shall be independent + * of the case of the characters in the character sequence. If the name + * is not recognized then returns a value that compares equal to 0. + * + * At least the following names (or their wide-character equivalent) are + * supported. + * - d + * - w + * - s + * - alnum + * - alpha + * - blank + * - cntrl + * - digit + * - graph + * - lower + * - print + * - punct + * - space + * - upper + * - xdigit + * + * @todo Implement this function. + */ + template + char_class_type + lookup_classname(_Fwd_iter __first, _Fwd_iter __last) const; + + /** + * @brief Determines if @p c is a member of an identified class. + * + * @param c a character. + * @param f a class type (as returned from lookup_classname). + * + * @returns true if the character @p c is a member of the classification + * represented by @p f, false otherwise. + * + * @throws std::bad_cast if the current locale does not have a ctype + * facet. + */ + bool + isctype(_Ch_type __c, char_class_type __f) const; + + /** + * @brief Converts a digit to an int. + * + * @param ch a character representing a digit. + * @param radix the radix if the numeric conversion (limited to 8, 10, + * or 16). + * + * @returns the value represented by the digit ch in base radix if the + * character ch is a valid digit in base radix; otherwise returns -1. + */ + int + value(_Ch_type __ch, int __radix) const; + + /** + * @brief Imbues the regex_traits object with a copy of a new locale. + * + * @param loc A locale. + * + * @returns a copy of the previous locale in use by the regex_traits + * object. + * + * @note Calling imbue with a different locale than the one currently in + * use invalidates all cached data held by *this. + */ + locale_type + imbue(locale_type __loc) + { + std::swap(_M_locale, __loc); + return __loc; + } + + /** + * @brief Gets a copy of the current locale in use by the regex_traits + * object. + */ + locale_type + getloc() const + { return _M_locale; } + + protected: + locale_type _M_locale; + }; + + template + bool regex_traits<_Ch_type>:: + isctype(_Ch_type __c, char_class_type __f) const + { + using std::ctype; + using std::use_facet; + const ctype<_Ch_type>& __ctype(use_facet< + ctype<_Ch_type> >(_M_locale)); + + if (__ctype.is(__c, __f)) + return true; +#if 0 + // special case of underscore in [[:w:]] + if (__c == __ctype.widen('_')) + { + const char* const __wb[] = "w"; + char_class_type __wt = this->lookup_classname(__wb, + __wb + sizeof(__wb)); + if (__f | __wt) + return true; + } + + // special case of [[:space:]] in [[:blank:]] + if (__c == __ctype.isspace(__c)) + { + const char* const __bb[] = "blank"; + char_class_type __bt = this->lookup_classname(__bb, + __bb + sizeof(__bb)); + if (__f | __bt) + return true; + } +#endif + return false; + } + + template + int regex_traits<_Ch_type>:: + value(_Ch_type __ch, int __radix) const + { + std::basic_istringstream<_Ch_type> __is(string_type(1, __ch)); + int __v; + if (__radix == 8) + __is >> std::oct; + else if (__radix == 16) + __is >> std::hex; + __is >> __v; + return __is.fail() ? -1 : __v; + } + + // [7.8] Class basic_regex + /** + * Objects of specializations of this class represent regular expressions + * constructed from sequences of character type @p _Ch_type. + * + * Storage for the regular expression is allocated and deallocated as + * necessary by the member functions of this class. + */ + template > + class basic_regex + { + public: + // types: + typedef _Ch_type value_type; + typedef regex_constants::syntax_option_type flag_type; + typedef typename _Rx_traits::locale_type locale_type; + typedef typename _Rx_traits::string_type string_type; + + /** + * @name Constants + * tr1 [7.8.1] std [28.8.1] + */ + //@{ + static const regex_constants::syntax_option_type icase + = regex_constants::icase; + static const regex_constants::syntax_option_type nosubs + = regex_constants::nosubs; + static const regex_constants::syntax_option_type optimize + = regex_constants::optimize; + static const regex_constants::syntax_option_type collate + = regex_constants::collate; + static const regex_constants::syntax_option_type ECMAScript + = regex_constants::ECMAScript; + static const regex_constants::syntax_option_type basic + = regex_constants::basic; + static const regex_constants::syntax_option_type extended + = regex_constants::extended; + static const regex_constants::syntax_option_type awk + = regex_constants::awk; + static const regex_constants::syntax_option_type grep + = regex_constants::grep; + static const regex_constants::syntax_option_type egrep + = regex_constants::egrep; + //@} + + // [7.8.2] construct/copy/destroy + /** + * Constructs a basic regular expression that does not match any + * character sequence. + */ + basic_regex() + : _M_flags(regex_constants::ECMAScript), _M_pattern(), _M_mark_count(0) + { _M_compile(); } + + /** + * @brief Constructs a basic regular expression from the sequence + * [p, p + char_traits<_Ch_type>::length(p)) interpreted according to the + * flags in @p f. + * + * @param p A pointer to the start of a C-style null-terminated string + * containing a regular expression. + * @param f Flags indicating the syntax rules and options. + * + * @throws regex_error if @p p is not a valid regular expression. + */ + explicit + basic_regex(const _Ch_type* __p, + flag_type __f = regex_constants::ECMAScript) + : _M_flags(__f), _M_pattern(__p), _M_mark_count(0) + { _M_compile(); } + + /** + * @brief Constructs a basic regular expression from the sequence + * [p, p + len) interpreted according to the flags in @p f. + * + * @param p A pointer to the start of a string containing a regular + * expression. + * @param len The length of the string containing the regular expression. + * @param f Flags indicating the syntax rules and options. + * + * @throws regex_error if @p p is not a valid regular expression. + */ + basic_regex(const _Ch_type* __p, std::size_t __len, flag_type __f) + : _M_flags(__f) , _M_pattern(__p, __len), _M_mark_count(0) + { _M_compile(); } + + /** + * @brief Copy-constructs a basic regular expression. + * + * @param rhs A @p regex object. + */ + basic_regex(const basic_regex& __rhs) + : _M_flags(__rhs._M_flags), _M_pattern(__rhs._M_pattern), + _M_mark_count(__rhs._M_mark_count) + { _M_compile(); } + + /** + * @brief Constructs a basic regular expression from the string + * @p s interpreted according to the flags in @p f. + * + * @param s A string containing a regular expression. + * @param f Flags indicating the syntax rules and options. + * + * @throws regex_error if @p s is not a valid regular expression. + */ + template + explicit + basic_regex(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, + flag_type __f = regex_constants::ECMAScript) + : _M_flags(__f), _M_pattern(__s.begin(), __s.end()), _M_mark_count(0) + { _M_compile(); } + + /** + * @brief Constructs a basic regular expression from the range + * [first, last) interpreted according to the flags in @p f. + * + * @param first The start of a range containing a valid regular + * expression. + * @param last The end of a range containing a valid regular + * expression. + * @param f The format flags of the regular expression. + * + * @throws regex_error if @p [first, last) is not a valid regular + * expression. + */ + template + basic_regex(_InputIterator __first, _InputIterator __last, + flag_type __f = regex_constants::ECMAScript) + : _M_flags(__f), _M_pattern(__first, __last), _M_mark_count(0) + { _M_compile(); } + +#ifdef _GLIBCXX_INCLUDE_AS_CXX11 + /** + * @brief Constructs a basic regular expression from an initializer list. + * + * @param l The initializer list. + * @param f The format flags of the regular expression. + * + * @throws regex_error if @p l is not a valid regular expression. + */ + basic_regex(initializer_list<_Ch_type> __l, + flag_type __f = regex_constants::ECMAScript) + : _M_flags(__f), _M_pattern(__l.begin(), __l.end()), _M_mark_count(0) + { _M_compile(); } +#endif + + /** + * @brief Destroys a basic regular expression. + */ + ~basic_regex() + { } + + /** + * @brief Assigns one regular expression to another. + */ + basic_regex& + operator=(const basic_regex& __rhs) + { return this->assign(__rhs); } + + /** + * @brief Replaces a regular expression with a new one constructed from + * a C-style null-terminated string. + * + * @param A pointer to the start of a null-terminated C-style string + * containing a regular expression. + */ + basic_regex& + operator=(const _Ch_type* __p) + { return this->assign(__p, flags()); } + + /** + * @brief Replaces a regular expression with a new one constructed from + * a string. + * + * @param A pointer to a string containing a regular expression. + */ + template + basic_regex& + operator=(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s) + { return this->assign(__s, flags()); } + + // [7.8.3] assign + /** + * @brief the real assignment operator. + * + * @param that Another regular expression object. + */ + basic_regex& + assign(const basic_regex& __that) + { + basic_regex __tmp(__that); + this->swap(__tmp); + return *this; + } + + /** + * @brief Assigns a new regular expression to a regex object from a + * C-style null-terminated string containing a regular expression + * pattern. + * + * @param p A pointer to a C-style null-terminated string containing + * a regular expression pattern. + * @param flags Syntax option flags. + * + * @throws regex_error if p does not contain a valid regular expression + * pattern interpreted according to @p flags. If regex_error is thrown, + * *this remains unchanged. + */ + basic_regex& + assign(const _Ch_type* __p, + flag_type __flags = regex_constants::ECMAScript) + { return this->assign(string_type(__p), __flags); } + + /** + * @brief Assigns a new regular expression to a regex object from a + * C-style string containing a regular expression pattern. + * + * @param p A pointer to a C-style string containing a + * regular expression pattern. + * @param len The length of the regular expression pattern string. + * @param flags Syntax option flags. + * + * @throws regex_error if p does not contain a valid regular expression + * pattern interpreted according to @p flags. If regex_error is thrown, + * *this remains unchanged. + */ + basic_regex& + assign(const _Ch_type* __p, std::size_t __len, flag_type __flags) + { return this->assign(string_type(__p, __len), __flags); } + + /** + * @brief Assigns a new regular expression to a regex object from a + * string containing a regular expression pattern. + * + * @param s A string containing a regular expression pattern. + * @param flags Syntax option flags. + * + * @throws regex_error if p does not contain a valid regular expression + * pattern interpreted according to @p flags. If regex_error is thrown, + * *this remains unchanged. + */ + template + basic_regex& + assign(const basic_string<_Ch_type, _Ch_typeraits, _Allocator>& __s, + flag_type __f = regex_constants::ECMAScript) + { + basic_regex __tmp(__s, __f); + this->swap(__tmp); + return *this; + } + + /** + * @brief Assigns a new regular expression to a regex object. + * + * @param first The start of a range containing a valid regular + * expression. + * @param last The end of a range containing a valid regular + * expression. + * @param flags Syntax option flags. + * + * @throws regex_error if p does not contain a valid regular expression + * pattern interpreted according to @p flags. If regex_error is thrown, + * the object remains unchanged. + */ + template + basic_regex& + assign(_InputIterator __first, _InputIterator __last, + flag_type __flags = regex_constants::ECMAScript) + { return this->assign(string_type(__first, __last), __flags); } + +#ifdef _GLIBCXX_INCLUDE_AS_CXX11 + /** + * @brief Assigns a new regular expression to a regex object. + * + * @param l An initializer list representing a regular expression. + * @param flags Syntax option flags. + * + * @throws regex_error if @p l does not contain a valid regular + * expression pattern interpreted according to @p flags. If regex_error + * is thrown, the object remains unchanged. + */ + basic_regex& + assign(initializer_list<_Ch_type> __l, + flag_type __f = regex_constants::ECMAScript) + { return this->assign(__l.begin(), __l.end(), __f); } +#endif + + // [7.8.4] const operations + /** + * @brief Gets the number of marked subexpressions within the regular + * expression. + */ + unsigned int + mark_count() const + { return _M_mark_count; } + + /** + * @brief Gets the flags used to construct the regular expression + * or in the last call to assign(). + */ + flag_type + flags() const + { return _M_flags; } + + // [7.8.5] locale + /** + * @brief Imbues the regular expression object with the given locale. + * + * @param loc A locale. + */ + locale_type + imbue(locale_type __loc) + { return _M_traits.imbue(__loc); } + + /** + * @brief Gets the locale currently imbued in the regular expression + * object. + */ + locale_type + getloc() const + { return _M_traits.getloc(); } + + // [7.8.6] swap + /** + * @brief Swaps the contents of two regular expression objects. + * + * @param rhs Another regular expression object. + */ + void + swap(basic_regex& __rhs) + { + std::swap(_M_flags, __rhs._M_flags); + std::swap(_M_pattern, __rhs._M_pattern); + std::swap(_M_mark_count, __rhs._M_mark_count); + std::swap(_M_traits, __rhs._M_traits); + } + + private: + /** + * @brief Compiles a regular expression pattern into a NFA. + * @todo Implement this function. + */ + void _M_compile(); + + protected: + flag_type _M_flags; + string_type _M_pattern; + unsigned int _M_mark_count; + _Rx_traits _M_traits; + }; + + /** @brief Standard regular expressions. */ + typedef basic_regex regex; +#ifdef _GLIBCXX_USE_WCHAR_T + /** @brief Standard wide-character regular expressions. */ + typedef basic_regex wregex; +#endif + + + // [7.8.6] basic_regex swap + /** + * @brief Swaps the contents of two regular expression objects. + * @param lhs First regular expression. + * @param rhs Second regular expression. + */ + template + inline void + swap(basic_regex<_Ch_type, _Rx_traits>& __lhs, + basic_regex<_Ch_type, _Rx_traits>& __rhs) + { __lhs.swap(__rhs); } + + + // [7.9] Class template sub_match + /** + * A sequence of characters matched by a particular marked sub-expression. + * + * An object of this class is essentially a pair of iterators marking a + * matched subexpression within a regular expression pattern match. Such + * objects can be converted to and compared with std::basic_string objects + * of a similar base character type as the pattern matched by the regular + * expression. + * + * The iterators that make up the pair are the usual half-open interval + * referencing the actual original pattern matched. + */ + template + class sub_match : public std::pair<_BiIter, _BiIter> + { + public: + typedef typename iterator_traits<_BiIter>::value_type value_type; + typedef typename iterator_traits<_BiIter>::difference_type + difference_type; + typedef _BiIter iterator; + + public: + bool matched; + + /** + * Gets the length of the matching sequence. + */ + difference_type + length() const + { return this->matched ? std::distance(this->first, this->second) : 0; } + + /** + * @brief Gets the matching sequence as a string. + * + * @returns the matching sequence as a string. + * + * This is the implicit conversion operator. It is identical to the + * str() member function except that it will want to pop up in + * unexpected places and cause a great deal of confusion and cursing + * from the unwary. + */ + operator basic_string() const + { + return this->matched + ? std::basic_string(this->first, this->second) + : std::basic_string(); + } + + /** + * @brief Gets the matching sequence as a string. + * + * @returns the matching sequence as a string. + */ + basic_string + str() const + { + return this->matched + ? std::basic_string(this->first, this->second) + : std::basic_string(); + } + + /** + * @brief Compares this and another matched sequence. + * + * @param s Another matched sequence to compare to this one. + * + * @retval <0 this matched sequence will collate before @p s. + * @retval =0 this matched sequence is equivalent to @p s. + * @retval <0 this matched sequence will collate after @p s. + */ + int + compare(const sub_match& __s) const + { return this->str().compare(__s.str()); } + + /** + * @brief Compares this sub_match to a string. + * + * @param s A string to compare to this sub_match. + * + * @retval <0 this matched sequence will collate before @p s. + * @retval =0 this matched sequence is equivalent to @p s. + * @retval <0 this matched sequence will collate after @p s. + */ + int + compare(const basic_string& __s) const + { return this->str().compare(__s); } + + /** + * @brief Compares this sub_match to a C-style string. + * + * @param s A C-style string to compare to this sub_match. + * + * @retval <0 this matched sequence will collate before @p s. + * @retval =0 this matched sequence is equivalent to @p s. + * @retval <0 this matched sequence will collate after @p s. + */ + int + compare(const value_type* __s) const + { return this->str().compare(__s); } + }; + + + /** @brief Standard regex submatch over a C-style null-terminated string. */ + typedef sub_match csub_match; + /** @brief Standard regex submatch over a standard string. */ + typedef sub_match ssub_match; +#ifdef _GLIBCXX_USE_WCHAR_T + /** @brief Regex submatch over a C-style null-terminated wide string. */ + typedef sub_match wcsub_match; + /** @brief Regex submatch over a standard wide string. */ + typedef sub_match wssub_match; +#endif + + // [7.9.2] sub_match non-member operators + + /** + * @brief Tests the equivalence of two regular expression submatches. + * @param lhs First regular expression submatch. + * @param rhs Second regular expression submatch. + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_BiIter>& __lhs, + const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) == 0; } + + /** + * @brief Tests the inequivalence of two regular expression submatches. + * @param lhs First regular expression submatch. + * @param rhs Second regular expression submatch. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_BiIter>& __lhs, + const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) != 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param lhs First regular expression submatch. + * @param rhs Second regular expression submatch. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_BiIter>& __lhs, + const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) < 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param lhs First regular expression submatch. + * @param rhs Second regular expression submatch. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_BiIter>& __lhs, + const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) <= 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param lhs First regular expression submatch. + * @param rhs Second regular expression submatch. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_BiIter>& __lhs, + const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) >= 0; } + + /** + * @brief Tests the ordering of two regular expression submatches. + * @param lhs First regular expression submatch. + * @param rhs Second regular expression submatch. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_BiIter>& __lhs, + const sub_match<_BiIter>& __rhs) + { return __lhs.compare(__rhs) > 0; } + + /** + * @brief Tests the equivalence of a string and a regular expression + * submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs == __rhs.str(); } + + /** + * @brief Tests the inequivalence of a string and a regular expression + * submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) + { return __lhs != __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) + { return __lhs < __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) + { return __lhs > __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) + { return __lhs >= __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __lhs, const sub_match<_Bi_iter>& __rhs) + { return __lhs <= __rhs.str(); } + + /** + * @brief Tests the equivalence of a regular expression submatch and a + * string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_Bi_iter>& __lhs, + const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.str() == __rhs; } + + /** + * @brief Tests the inequivalence of a regular expression submatch and a + * string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_Bi_iter>& __lhs, + const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.str() != __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_Bi_iter>& __lhs, + const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.str() < __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_Bi_iter>& __lhs, + const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.str() > __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_Bi_iter>& __lhs, + const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.str() >= __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_Bi_iter>& __lhs, + const basic_string< + typename iterator_traits<_Bi_iter>::value_type, + _Ch_traits, _Ch_alloc>& __rhs) + { return __lhs.str() <= __rhs; } + + /** + * @brief Tests the equivalence of a C string and a regular expression + * submatch. + * @param lhs A C string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs == __rhs.str(); } + + /** + * @brief Tests the inequivalence of an iterator value and a regular + * expression submatch. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs != __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs < __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs > __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs >= __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(typename iterator_traits<_Bi_iter>::value_type const* __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs <= __rhs.str(); } + + /** + * @brief Tests the equivalence of a regular expression submatch and a + * string. + * @param lhs A regular expression submatch. + * @param rhs A pointer to a string? + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.str() == __rhs; } + + /** + * @brief Tests the inequivalence of a regular expression submatch and a + * string. + * @param lhs A regular expression submatch. + * @param rhs A pointer to a string. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.str() != __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.str() < __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.str() > __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.str() >= __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A string. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const* __rhs) + { return __lhs.str() <= __rhs; } + + /** + * @brief Tests the equivalence of a string and a regular expression + * submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs == __rhs.str(); } + + /** + * @brief Tests the inequivalence of a string and a regular expression + * submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs != __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs < __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs > __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs >= __rhs.str(); } + + /** + * @brief Tests the ordering of a string and a regular expression submatch. + * @param lhs A string. + * @param rhs A regular expression submatch. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(typename iterator_traits<_Bi_iter>::value_type const& __lhs, + const sub_match<_Bi_iter>& __rhs) + { return __lhs <= __rhs.str(); } + + /** + * @brief Tests the equivalence of a regular expression submatch and a + * string. + * @param lhs A regular expression submatch. + * @param rhs A const string reference. + * @returns true if @a lhs is equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator==(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __lhs.str() == __rhs; } + + /** + * @brief Tests the inequivalence of a regular expression submatch and a + * string. + * @param lhs A regular expression submatch. + * @param rhs A const string reference. + * @returns true if @a lhs is not equivalent to @a rhs, false otherwise. + */ + template + inline bool + operator!=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __lhs.str() != __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A const string reference. + * @returns true if @a lhs precedes @a rhs, false otherwise. + */ + template + inline bool + operator<(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __lhs.str() < __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A const string reference. + * @returns true if @a lhs succeeds @a rhs, false otherwise. + */ + template + inline bool + operator>(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __lhs.str() > __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A const string reference. + * @returns true if @a lhs does not precede @a rhs, false otherwise. + */ + template + inline bool + operator>=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __lhs.str() >= __rhs; } + + /** + * @brief Tests the ordering of a regular expression submatch and a string. + * @param lhs A regular expression submatch. + * @param rhs A const string reference. + * @returns true if @a lhs does not succeed @a rhs, false otherwise. + */ + template + inline bool + operator<=(const sub_match<_Bi_iter>& __lhs, + typename iterator_traits<_Bi_iter>::value_type const& __rhs) + { return __lhs.str() <= __rhs; } + + /** + * @brief Inserts a matched string into an output stream. + * + * @param os The output stream. + * @param m A submatch string. + * + * @returns the output stream with the submatch string inserted. + */ + template + inline + basic_ostream<_Ch_type, _Ch_traits>& + operator<<(basic_ostream<_Ch_type, _Ch_traits>& __os, + const sub_match<_Bi_iter>& __m) + { return __os << __m.str(); } + + // [7.10] Class template match_results + /** + * @brief The results of a match or search operation. + * + * A collection of character sequences representing the result of a regular + * expression match. Storage for the collection is allocated and freed as + * necessary by the member functions of class template match_results. + * + * This class satisfies the Sequence requirements, with the exception that + * only the operations defined for a const-qualified Sequence are supported. + * + * The sub_match object stored at index 0 represents sub-expression 0, i.e. + * the whole match. In this case the sub_match member matched is always true. + * The sub_match object stored at index n denotes what matched the marked + * sub-expression n within the matched expression. If the sub-expression n + * participated in a regular expression match then the sub_match member + * matched evaluates to true, and members first and second denote the range + * of characters [first, second) which formed that match. Otherwise matched + * is false, and members first and second point to the end of the sequence + * that was searched. + * + * @nosubgrouping + */ + template > > + class match_results + : private std::vector, _Allocator> + { + private: + typedef std::vector, _Allocator> + _Base_type; + + public: + /** + * @name 10.? Public Types + */ + //@{ + typedef sub_match<_Bi_iter> value_type; + typedef typename _Allocator::const_reference const_reference; + typedef const_reference reference; + typedef typename _Base_type::const_iterator const_iterator; + typedef const_iterator iterator; + typedef typename iterator_traits<_Bi_iter>::difference_type + difference_type; + typedef typename _Allocator::size_type size_type; + typedef _Allocator allocator_type; + typedef typename iterator_traits<_Bi_iter>::value_type char_type; + typedef basic_string string_type; + //@} + + public: + /** + * @name 10.1 Construction, Copying, and Destruction + */ + //@{ + + /** + * @brief Constructs a default %match_results container. + * @post size() returns 0 and str() returns an empty string. + */ + explicit + match_results(const _Allocator& __a = _Allocator()) + : _Base_type(__a), _M_matched(false) + { } + + /** + * @brief Copy constructs a %match_results. + */ + match_results(const match_results& __rhs) + : _Base_type(__rhs), _M_matched(__rhs._M_matched), + _M_prefix(__rhs._M_prefix), _M_suffix(__rhs._M_suffix) + { } + + /** + * @brief Assigns rhs to *this. + */ + match_results& + operator=(const match_results& __rhs) + { + match_results __tmp(__rhs); + this->swap(__tmp); + return *this; + } + + /** + * @brief Destroys a %match_results object. + */ + ~match_results() + { } + + //@} + + /** + * @name 10.2 Size + */ + //@{ + + /** + * @brief Gets the number of matches and submatches. + * + * The number of matches for a given regular expression will be either 0 + * if there was no match or mark_count() + 1 if a match was successful. + * Some matches may be empty. + * + * @returns the number of matches found. + */ + size_type + size() const + { return _M_matched ? _Base_type::size() + 1 : 0; } + + //size_type + //max_size() const; + using _Base_type::max_size; + + /** + * @brief Indicates if the %match_results contains no results. + * @retval true The %match_results object is empty. + * @retval false The %match_results object is not empty. + */ + bool + empty() const + { return size() == 0; } + + //@} + + /** + * @name 10.3 Element Access + */ + //@{ + + /** + * @brief Gets the length of the indicated submatch. + * @param sub indicates the submatch. + * + * This function returns the length of the indicated submatch, or the + * length of the entire match if @p sub is zero (the default). + */ + difference_type + length(size_type __sub = 0) const + { return _M_matched ? this->str(__sub).length() : 0; } + + /** + * @brief Gets the offset of the beginning of the indicated submatch. + * @param sub indicates the submatch. + * + * This function returns the offset from the beginning of the target + * sequence to the beginning of the submatch, unless the value of @p sub + * is zero (the default), in which case this function returns the offset + * from the beginning of the target sequence to the beginning of the + * match. + */ + difference_type + position(size_type __sub = 0) const + { + return _M_matched ? std::distance(this->prefix().first, + (*this)[__sub].first) : 0; + } + + /** + * @brief Gets the match or submatch converted to a string type. + * @param sub indicates the submatch. + * + * This function gets the submatch (or match, if @p sub is zero) extracted + * from the target range and converted to the associated string type. + */ + string_type + str(size_type __sub = 0) const + { return _M_matched ? (*this)[__sub].str() : string_type(); } + + /** + * @brief Gets a %sub_match reference for the match or submatch. + * @param sub indicates the submatch. + * + * This function gets a reference to the indicated submatch, or the entire + * match if @p sub is zero. + * + * If @p sub >= size() then this function returns a %sub_match with a + * special value indicating no submatch. + */ + const_reference + operator[](size_type __sub) const + { return _Base_type::operator[](__sub); } + + /** + * @brief Gets a %sub_match representing the match prefix. + * + * This function gets a reference to a %sub_match object representing the + * part of the target range between the start of the target range and the + * start of the match. + */ + const_reference + prefix() const + { return _M_prefix; } + + /** + * @brief Gets a %sub_match representing the match suffix. + * + * This function gets a reference to a %sub_match object representing the + * part of the target range between the end of the match and the end of + * the target range. + */ + const_reference + suffix() const + { return _M_suffix; } + + /** + * @brief Gets an iterator to the start of the %sub_match collection. + */ + const_iterator + begin() const + { return _Base_type::begin(); } + +#ifdef _GLIBCXX_INCLUDE_AS_CXX11 + /** + * @brief Gets an iterator to the start of the %sub_match collection. + */ + const_iterator + cbegin() const + { return _Base_type::begin(); } +#endif + + /** + * @brief Gets an iterator to one-past-the-end of the collection. + */ + const_iterator + end() const + { return _Base_type::end(); } + +#ifdef _GLIBCXX_INCLUDE_AS_CXX11 + /** + * @brief Gets an iterator to one-past-the-end of the collection. + */ + const_iterator + cend() const + { return _Base_type::end(); } +#endif + + //@} + + /** + * @name 10.4 Formatting + * + * These functions perform formatted substitution of the matched + * character sequences into their target. The format specifiers + * and escape sequences accepted by these functions are + * determined by their @p flags parameter as documented above. + */ + //@{ + + /** + * @todo Implement this function. + */ + template + _Out_iter + format(_Out_iter __out, const string_type& __fmt, + regex_constants::match_flag_type __flags + = regex_constants::format_default) const; + + /** + * @todo Implement this function. + */ + string_type + format(const string_type& __fmt, + regex_constants::match_flag_type __flags + = regex_constants::format_default) const; + + //@} + + /** + * @name 10.5 Allocator + */ + //@{ + + /** + * @brief Gets a copy of the allocator. + */ + //allocator_type + //get_allocator() const; + using _Base_type::get_allocator; + + //@} + + /** + * @name 10.6 Swap + */ + //@{ + + /** + * @brief Swaps the contents of two match_results. + */ + void + swap(match_results& __that) + { + _Base_type::swap(__that); + std::swap(_M_matched, __that._M_matched); + std::swap(_M_prefix, __that._M_prefix); + std::swap(_M_suffix, __that._M_suffix); + } + //@} + + private: + bool _M_matched; + value_type _M_prefix; + value_type _M_suffix; + }; + + typedef match_results cmatch; + typedef match_results smatch; +#ifdef _GLIBCXX_USE_WCHAR_T + typedef match_results wcmatch; + typedef match_results wsmatch; +#endif + + // match_results comparisons + /** + * @brief Compares two match_results for equality. + * @returns true if the two objects refer to the same match, + * false otherwise. + * @todo Implement this function. + */ + template + inline bool + operator==(const match_results<_Bi_iter, _Allocator>& __m1, + const match_results<_Bi_iter, _Allocator>& __m2); + + /** + * @brief Compares two match_results for inequality. + * @returns true if the two objects do not refer to the same match, + * false otherwise. + */ + template + inline bool + operator!=(const match_results<_Bi_iter, _Allocator>& __m1, + const match_results<_Bi_iter, _Allocator>& __m2) + { return !(__m1 == __m2); } + + // [7.10.6] match_results swap + /** + * @brief Swaps two match results. + * @param lhs A match result. + * @param rhs A match result. + * + * The contents of the two match_results objects are swapped. + */ + template + inline void + swap(match_results<_Bi_iter, _Allocator>& __lhs, + match_results<_Bi_iter, _Allocator>& __rhs) + { __lhs.swap(__rhs); } + + // [7.11.2] Function template regex_match + /** + * @name Matching, Searching, and Replacing + */ + //@{ + + /** + * @brief Determines if there is a match between the regular expression @p e + * and all of the character sequence [first, last). + * + * @param first Beginning of the character sequence to match. + * @param last One-past-the-end of the character sequence to match. + * @param m The match results. + * @param re The regular expression. + * @param flags Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + * + * @todo Implement this function. + */ + template + bool + regex_match(_Bi_iter __first, _Bi_iter __last, + match_results<_Bi_iter, _Allocator>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default); + + /** + * @brief Indicates if there is a match between the regular expression @p e + * and all of the character sequence [first, last). + * + * @param first Beginning of the character sequence to match. + * @param last One-past-the-end of the character sequence to match. + * @param re The regular expression. + * @param flags Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + bool + regex_match(_Bi_iter __first, _Bi_iter __last, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + match_results<_Bi_iter> __what; + return regex_match(__first, __last, __what, __re, __flags); + } + + /** + * @brief Determines if there is a match between the regular expression @p e + * and a C-style null-terminated string. + * + * @param s The C-style null-terminated string to match. + * @param m The match results. + * @param re The regular expression. + * @param f Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const _Ch_type* __s, + match_results& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_match(__s, __s + _Rx_traits::length(__s), __m, __re, __f); } + + /** + * @brief Determines if there is a match between the regular expression @p e + * and a string. + * + * @param s The string to match. + * @param m The match results. + * @param re The regular expression. + * @param flags Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, + match_results::const_iterator, _Allocator>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return regex_match(__s.begin(), __s.end(), __m, __re, __flags); } + + /** + * @brief Indicates if there is a match between the regular expression @p e + * and a C-style null-terminated string. + * + * @param s The C-style null-terminated string to match. + * @param re The regular expression. + * @param f Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const _Ch_type* __s, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_match(__s, __s + _Rx_traits::length(__s), __re, __f); } + + /** + * @brief Indicates if there is a match between the regular expression @p e + * and a string. + * + * @param s [IN] The string to match. + * @param re [IN] The regular expression. + * @param flags [IN] Controls how the regular expression is matched. + * + * @retval true A match exists. + * @retval false Otherwise. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_match(const basic_string<_Ch_type, _Ch_traits, _Str_allocator>& __s, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return regex_match(__s.begin(), __s.end(), __re, __flags); } + + // [7.11.3] Function template regex_search + /** + * Searches for a regular expression within a range. + * @param first [IN] The start of the string to search. + * @param last [IN] One-past-the-end of the string to search. + * @param m [OUT] The match results. + * @param re [IN] The regular expression to search for. + * @param flags [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string, the content of %m is + * undefined. + * + * @throws an exception of type regex_error. + * + * @todo Implement this function. + */ + template + inline bool + regex_search(_Bi_iter __first, _Bi_iter __last, + match_results<_Bi_iter, _Allocator>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default); + + /** + * Searches for a regular expression within a range. + * @param first [IN] The start of the string to search. + * @param last [IN] One-past-the-end of the string to search. + * @param re [IN] The regular expression to search for. + * @param flags [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(_Bi_iter __first, _Bi_iter __last, + const basic_regex<_Ch_type, _Rx_traits>& __re, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + match_results<_Bi_iter> __what; + return regex_search(__first, __last, __what, __re, __flags); + } + + /** + * @brief Searches for a regular expression within a C-string. + * @param s [IN] A C-string to search for the regex. + * @param m [OUT] The set of regex matches. + * @param e [IN] The regex to search for in @p s. + * @param f [IN] The search flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string, the content of %m is + * undefined. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const _Ch_type* __s, + match_results& __m, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_search(__s, __s + _Rx_traits::length(__s), __m, __e, __f); } + + /** + * @brief Searches for a regular expression within a C-string. + * @param s [IN] The C-string to search. + * @param e [IN] The regular expression to search for. + * @param f [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const _Ch_type* __s, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_search(__s, __s + _Rx_traits::length(__s), __e, __f); } + + /** + * @brief Searches for a regular expression within a string. + * @param s [IN] The string to search. + * @param e [IN] The regular expression to search for. + * @param flags [IN] Search policy flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string. + * @doctodo + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const basic_string<_Ch_type, _Ch_traits, + _String_allocator>& __s, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { return regex_search(__s.begin(), __s.end(), __e, __flags); } + + /** + * @brief Searches for a regular expression within a string. + * @param s [IN] A C++ string to search for the regex. + * @param m [OUT] The set of regex matches. + * @param e [IN] The regex to search for in @p s. + * @param f [IN] The search flags. + * @retval true A match was found within the string. + * @retval false No match was found within the string, the content of %m is + * undefined. + * + * @throws an exception of type regex_error. + */ + template + inline bool + regex_search(const basic_string<_Ch_type, _Ch_traits, _Ch_alloc>& __s, + match_results::const_iterator, _Allocator>& __m, + const basic_regex<_Ch_type, _Rx_traits>& __e, + regex_constants::match_flag_type __f + = regex_constants::match_default) + { return regex_search(__s.begin(), __s.end(), __m, __e, __f); } + + // tr1 [7.11.4] std [28.11.4] Function template regex_replace + /** + * @doctodo + * @param out + * @param first + * @param last + * @param e + * @param fmt + * @param flags + * + * @returns out + * @throws an exception of type regex_error. + * + * @todo Implement this function. + */ + template + inline _Out_iter + regex_replace(_Out_iter __out, _Bi_iter __first, _Bi_iter __last, + const basic_regex<_Ch_type, _Rx_traits>& __e, + const basic_string<_Ch_type>& __fmt, + regex_constants::match_flag_type __flags + = regex_constants::match_default); + + /** + * @doctodo + * @param s + * @param e + * @param fmt + * @param flags + * + * @returns a copy of string @p s with replacements. + * + * @throws an exception of type regex_error. + */ + template + inline basic_string<_Ch_type> + regex_replace(const basic_string<_Ch_type>& __s, + const basic_regex<_Ch_type, _Rx_traits>& __e, + const basic_string<_Ch_type>& __fmt, + regex_constants::match_flag_type __flags + = regex_constants::match_default) + { + std::string __result; + regex_replace(std::back_inserter(__result), + __s.begin(), __s.end(), __e, __fmt, __flags); + return __result; + } + + //@} + + // tr1 [7.12.1] std [28.12] Class template regex_iterator + /** + * An iterator adaptor that will provide repeated calls of regex_search over + * a range until no more matches remain. + */ + template::value_type, + typename _Rx_traits = regex_traits<_Ch_type> > + class regex_iterator + { + public: + typedef basic_regex<_Ch_type, _Rx_traits> regex_type; + typedef match_results<_Bi_iter> value_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type* pointer; + typedef const value_type& reference; + typedef std::forward_iterator_tag iterator_category; + + public: + /** + * @brief Provides a singular iterator, useful for indicating + * one-past-the-end of a range. + * @todo Implement this function. + * @doctodo + */ + regex_iterator(); + + /** + * Constructs a %regex_iterator... + * @param a [IN] The start of a text range to search. + * @param b [IN] One-past-the-end of the text range to search. + * @param re [IN] The regular expression to match. + * @param m [IN] Policy flags for match rules. + * @todo Implement this function. + * @doctodo + */ + regex_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re, + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * Copy constructs a %regex_iterator. + * @todo Implement this function. + * @doctodo + */ + regex_iterator(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + regex_iterator& + operator=(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + bool + operator==(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + bool + operator!=(const regex_iterator& __rhs); + + /** + * @todo Implement this function. + * @doctodo + */ + const value_type& + operator*(); + + /** + * @todo Implement this function. + * @doctodo + */ + const value_type* + operator->(); + + /** + * @todo Implement this function. + * @doctodo + */ + regex_iterator& + operator++(); + + /** + * @todo Implement this function. + * @doctodo + */ + regex_iterator + operator++(int); + + private: + // these members are shown for exposition only: + _Bi_iter begin; + _Bi_iter end; + const regex_type* pregex; + regex_constants::match_flag_type flags; + match_results<_Bi_iter> match; + }; + + typedef regex_iterator cregex_iterator; + typedef regex_iterator sregex_iterator; +#ifdef _GLIBCXX_USE_WCHAR_T + typedef regex_iterator wcregex_iterator; + typedef regex_iterator wsregex_iterator; +#endif + + // [7.12.2] Class template regex_token_iterator + /** + * Iterates over submatches in a range (or @a splits a text string). + * + * The purpose of this iterator is to enumerate all, or all specified, + * matches of a regular expression within a text range. The dereferenced + * value of an iterator of this class is a std::tr1::sub_match object. + */ + template::value_type, + typename _Rx_traits = regex_traits<_Ch_type> > + class regex_token_iterator + { + public: + typedef basic_regex<_Ch_type, _Rx_traits> regex_type; + typedef sub_match<_Bi_iter> value_type; + typedef std::ptrdiff_t difference_type; + typedef const value_type* pointer; + typedef const value_type& reference; + typedef std::forward_iterator_tag iterator_category; + + public: + /** + * @brief Default constructs a %regex_token_iterator. + * @todo Implement this function. + * + * A default-constructed %regex_token_iterator is a singular iterator + * that will compare equal to the one-past-the-end value for any + * iterator of the same type. + */ + regex_token_iterator(); + + /** + * Constructs a %regex_token_iterator... + * @param a [IN] The start of the text to search. + * @param b [IN] One-past-the-end of the text to search. + * @param re [IN] The regular expression to search for. + * @param submatch [IN] Which submatch to return. There are some + * special values for this parameter: + * - -1 each enumerated subexpression does NOT + * match the regular expression (aka field + * splitting) + * - 0 the entire string matching the + * subexpression is returned for each match + * within the text. + * - >0 enumerates only the indicated + * subexpression from a match within the text. + * @param m [IN] Policy flags for match rules. + * + * @todo Implement this function. + * @doctodo + */ + regex_token_iterator(_Bi_iter __a, _Bi_iter __b, const regex_type& __re, + int __submatch = 0, + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * Constructs a %regex_token_iterator... + * @param a [IN] The start of the text to search. + * @param b [IN] One-past-the-end of the text to search. + * @param re [IN] The regular expression to search for. + * @param submatches [IN] A list of subexpressions to return for each + * regular expression match within the text. + * @param m [IN] Policy flags for match rules. + * + * @todo Implement this function. + * @doctodo + */ + regex_token_iterator(_Bi_iter __a, _Bi_iter __b, + const regex_type& __re, + const std::vector& __submatches, + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * Constructs a %regex_token_iterator... + * @param a [IN] The start of the text to search. + * @param b [IN] One-past-the-end of the text to search. + * @param re [IN] The regular expression to search for. + * @param submatches [IN] A list of subexpressions to return for each + * regular expression match within the text. + * @param m [IN] Policy flags for match rules. + + * @todo Implement this function. + * @doctodo + */ + template + regex_token_iterator(_Bi_iter __a, _Bi_iter __b, + const regex_type& __re, + const int (&__submatches)[_Nm], + regex_constants::match_flag_type __m + = regex_constants::match_default); + + /** + * @brief Copy constructs a %regex_token_iterator. + * @param rhs [IN] A %regex_token_iterator to copy. + * @todo Implement this function. + */ + regex_token_iterator(const regex_token_iterator& __rhs); + + /** + * @brief Assigns a %regex_token_iterator to another. + * @param rhs [IN] A %regex_token_iterator to copy. + * @todo Implement this function. + */ + regex_token_iterator& + operator=(const regex_token_iterator& __rhs); + + /** + * @brief Compares a %regex_token_iterator to another for equality. + * @todo Implement this function. + */ + bool + operator==(const regex_token_iterator& __rhs); + + /** + * @brief Compares a %regex_token_iterator to another for inequality. + * @todo Implement this function. + */ + bool + operator!=(const regex_token_iterator& __rhs); + + /** + * @brief Dereferences a %regex_token_iterator. + * @todo Implement this function. + */ + const value_type& + operator*(); + + /** + * @brief Selects a %regex_token_iterator member. + * @todo Implement this function. + */ + const value_type* + operator->(); + + /** + * @brief Increments a %regex_token_iterator. + * @todo Implement this function. + */ + regex_token_iterator& + operator++(); + + /** + * @brief Postincrements a %regex_token_iterator. + * @todo Implement this function. + */ + regex_token_iterator + operator++(int); + + private: // data members for exposition only: + typedef regex_iterator<_Bi_iter, _Ch_type, _Rx_traits> position_iterator; + + position_iterator __position; + const value_type* __result; + value_type __suffix; + std::size_t __n; + std::vector __subs; + }; + + /** @brief Token iterator for C-style NULL-terminated strings. */ + typedef regex_token_iterator cregex_token_iterator; + /** @brief Token iterator for standard strings. */ + typedef regex_token_iterator sregex_token_iterator; +#ifdef _GLIBCXX_USE_WCHAR_T + /** @brief Token iterator for C-style NULL-terminated wide strings. */ + typedef regex_token_iterator wcregex_token_iterator; + /** @brief Token iterator for standard wide-character strings. */ + typedef regex_token_iterator wsregex_token_iterator; +#endif + + //@} +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_REGEX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/riemann_zeta.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/riemann_zeta.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/riemann_zeta.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/riemann_zeta.tcc index b4992f265..8e9a0654f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/riemann_zeta.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/riemann_zeta.tcc @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -46,6 +46,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS # define _GLIBCXX_MATH_NS ::std #elif defined(_GLIBCXX_TR1_CMATH) @@ -60,8 +62,6 @@ namespace tr1 // Implementation-space details. namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /** * @brief Compute the Riemann zeta function @f$ \zeta(s) @f$ * by summation for s > 1. @@ -431,13 +431,13 @@ namespace tr1 inline _Tp __hurwitz_zeta(_Tp __a, _Tp __s) { return __hurwitz_zeta_glob(__a, __s); } - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #undef _GLIBCXX_MATH_NS #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_RIEMANN_ZETA_TCC diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/shared_ptr.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/shared_ptr.h new file mode 100644 index 000000000..97859b32e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/shared_ptr.h @@ -0,0 +1,1170 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +// shared_count.hpp +// Copyright (c) 2001, 2002, 2003 Peter Dimov and Multi Media Ltd. + +// shared_ptr.hpp +// Copyright (C) 1998, 1999 Greg Colvin and Beman Dawes. +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// weak_ptr.hpp +// Copyright (C) 2001, 2002, 2003 Peter Dimov + +// enable_shared_from_this.hpp +// Copyright (C) 2002 Peter Dimov + +// 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) + +// GCC Note: based on version 1.32.0 of the Boost library. + +/** @file tr1/shared_ptr.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{tr1/memory} + */ + +#ifndef _TR1_SHARED_PTR_H +#define _TR1_SHARED_PTR_H 1 + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /** + * @brief Exception possibly thrown by @c shared_ptr. + * @ingroup exceptions + */ + class bad_weak_ptr : public std::exception + { + public: + virtual char const* + what() const throw() + { return "tr1::bad_weak_ptr"; } + }; + + // Substitute for bad_weak_ptr object in the case of -fno-exceptions. + inline void + __throw_bad_weak_ptr() + { _GLIBCXX_THROW_OR_ABORT(bad_weak_ptr()); } + + using __gnu_cxx::_Lock_policy; + using __gnu_cxx::__default_lock_policy; + using __gnu_cxx::_S_single; + using __gnu_cxx::_S_mutex; + using __gnu_cxx::_S_atomic; + + // Empty helper class except when the template argument is _S_mutex. + template<_Lock_policy _Lp> + class _Mutex_base + { + protected: + // The atomic policy uses fully-fenced builtins, single doesn't care. + enum { _S_need_barriers = 0 }; + }; + + template<> + class _Mutex_base<_S_mutex> + : public __gnu_cxx::__mutex + { + protected: + // This policy is used when atomic builtins are not available. + // The replacement atomic operations might not have the necessary + // memory barriers. + enum { _S_need_barriers = 1 }; + }; + + template<_Lock_policy _Lp = __default_lock_policy> + class _Sp_counted_base + : public _Mutex_base<_Lp> + { + public: + _Sp_counted_base() + : _M_use_count(1), _M_weak_count(1) { } + + virtual + ~_Sp_counted_base() // nothrow + { } + + // Called when _M_use_count drops to zero, to release the resources + // managed by *this. + virtual void + _M_dispose() = 0; // nothrow + + // Called when _M_weak_count drops to zero. + virtual void + _M_destroy() // nothrow + { delete this; } + + virtual void* + _M_get_deleter(const std::type_info&) = 0; + + void + _M_add_ref_copy() + { __gnu_cxx::__atomic_add_dispatch(&_M_use_count, 1); } + + void + _M_add_ref_lock(); + + void + _M_release() // nothrow + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_use_count); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_use_count); + _M_dispose(); + // There must be a memory barrier between dispose() and destroy() + // to ensure that the effects of dispose() are observed in the + // thread that runs destroy(). + // See http://gcc.gnu.org/ml/libstdc++/2005-11/msg00136.html + if (_Mutex_base<_Lp>::_S_need_barriers) + { + __atomic_thread_fence (__ATOMIC_ACQ_REL); + } + + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, + -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count); + _M_destroy(); + } + } + } + + void + _M_weak_add_ref() // nothrow + { __gnu_cxx::__atomic_add_dispatch(&_M_weak_count, 1); } + + void + _M_weak_release() // nothrow + { + // Be race-detector-friendly. For more info see bits/c++config. + _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_weak_count); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_weak_count, -1) == 1) + { + _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_weak_count); + if (_Mutex_base<_Lp>::_S_need_barriers) + { + // See _M_release(), + // destroy() must observe results of dispose() + __atomic_thread_fence (__ATOMIC_ACQ_REL); + } + _M_destroy(); + } + } + + long + _M_get_use_count() const // nothrow + { + // No memory barrier is used here so there is no synchronization + // with other threads. + return const_cast(_M_use_count); + } + + private: + _Sp_counted_base(_Sp_counted_base const&); + _Sp_counted_base& operator=(_Sp_counted_base const&); + + _Atomic_word _M_use_count; // #shared + _Atomic_word _M_weak_count; // #weak + (#shared != 0) + }; + + template<> + inline void + _Sp_counted_base<_S_single>:: + _M_add_ref_lock() + { + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) + { + _M_use_count = 0; + __throw_bad_weak_ptr(); + } + } + + template<> + inline void + _Sp_counted_base<_S_mutex>:: + _M_add_ref_lock() + { + __gnu_cxx::__scoped_lock sentry(*this); + if (__gnu_cxx::__exchange_and_add_dispatch(&_M_use_count, 1) == 0) + { + _M_use_count = 0; + __throw_bad_weak_ptr(); + } + } + + template<> + inline void + _Sp_counted_base<_S_atomic>:: + _M_add_ref_lock() + { + // Perform lock-free add-if-not-zero operation. + _Atomic_word __count = _M_use_count; + do + { + if (__count == 0) + __throw_bad_weak_ptr(); + // Replace the current counter value with the old value + 1, as + // long as it's not changed meanwhile. + } + while (!__atomic_compare_exchange_n(&_M_use_count, &__count, __count + 1, + true, __ATOMIC_ACQ_REL, + __ATOMIC_RELAXED)); + } + + template + class _Sp_counted_base_impl + : public _Sp_counted_base<_Lp> + { + public: + // Precondition: __d(__p) must not throw. + _Sp_counted_base_impl(_Ptr __p, _Deleter __d) + : _M_ptr(__p), _M_del(__d) { } + + virtual void + _M_dispose() // nothrow + { _M_del(_M_ptr); } + + virtual void* + _M_get_deleter(const std::type_info& __ti) + { +#if __cpp_rtti + return __ti == typeid(_Deleter) ? &_M_del : 0; +#else + return 0; +#endif + } + + private: + _Sp_counted_base_impl(const _Sp_counted_base_impl&); + _Sp_counted_base_impl& operator=(const _Sp_counted_base_impl&); + + _Ptr _M_ptr; // copy constructor must not throw + _Deleter _M_del; // copy constructor must not throw + }; + + template<_Lock_policy _Lp = __default_lock_policy> + class __weak_count; + + template + struct _Sp_deleter + { + typedef void result_type; + typedef _Tp* argument_type; + void operator()(_Tp* __p) const { delete __p; } + }; + + template<_Lock_policy _Lp = __default_lock_policy> + class __shared_count + { + public: + __shared_count() + : _M_pi(0) // nothrow + { } + + template + __shared_count(_Ptr __p) : _M_pi(0) + { + __try + { + typedef typename std::tr1::remove_pointer<_Ptr>::type _Tp; + _M_pi = new _Sp_counted_base_impl<_Ptr, _Sp_deleter<_Tp>, _Lp>( + __p, _Sp_deleter<_Tp>()); + } + __catch(...) + { + delete __p; + __throw_exception_again; + } + } + + template + __shared_count(_Ptr __p, _Deleter __d) : _M_pi(0) + { + __try + { + _M_pi = new _Sp_counted_base_impl<_Ptr, _Deleter, _Lp>(__p, __d); + } + __catch(...) + { + __d(__p); // Call _Deleter on __p. + __throw_exception_again; + } + } + + // Special case for auto_ptr<_Tp> to provide the strong guarantee. + template + explicit + __shared_count(std::auto_ptr<_Tp>& __r) + : _M_pi(new _Sp_counted_base_impl<_Tp*, + _Sp_deleter<_Tp>, _Lp >(__r.get(), _Sp_deleter<_Tp>())) + { __r.release(); } + + // Throw bad_weak_ptr when __r._M_get_use_count() == 0. + explicit + __shared_count(const __weak_count<_Lp>& __r); + + ~__shared_count() // nothrow + { + if (_M_pi != 0) + _M_pi->_M_release(); + } + + __shared_count(const __shared_count& __r) + : _M_pi(__r._M_pi) // nothrow + { + if (_M_pi != 0) + _M_pi->_M_add_ref_copy(); + } + + __shared_count& + operator=(const __shared_count& __r) // nothrow + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + if (__tmp != _M_pi) + { + if (__tmp != 0) + __tmp->_M_add_ref_copy(); + if (_M_pi != 0) + _M_pi->_M_release(); + _M_pi = __tmp; + } + return *this; + } + + void + _M_swap(__shared_count& __r) // nothrow + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + __r._M_pi = _M_pi; + _M_pi = __tmp; + } + + long + _M_get_use_count() const // nothrow + { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } + + bool + _M_unique() const // nothrow + { return this->_M_get_use_count() == 1; } + + friend inline bool + operator==(const __shared_count& __a, const __shared_count& __b) + { return __a._M_pi == __b._M_pi; } + + friend inline bool + operator<(const __shared_count& __a, const __shared_count& __b) + { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); } + + void* + _M_get_deleter(const std::type_info& __ti) const + { return _M_pi ? _M_pi->_M_get_deleter(__ti) : 0; } + + private: + friend class __weak_count<_Lp>; + + _Sp_counted_base<_Lp>* _M_pi; + }; + + + template<_Lock_policy _Lp> + class __weak_count + { + public: + __weak_count() + : _M_pi(0) // nothrow + { } + + __weak_count(const __shared_count<_Lp>& __r) + : _M_pi(__r._M_pi) // nothrow + { + if (_M_pi != 0) + _M_pi->_M_weak_add_ref(); + } + + __weak_count(const __weak_count<_Lp>& __r) + : _M_pi(__r._M_pi) // nothrow + { + if (_M_pi != 0) + _M_pi->_M_weak_add_ref(); + } + + ~__weak_count() // nothrow + { + if (_M_pi != 0) + _M_pi->_M_weak_release(); + } + + __weak_count<_Lp>& + operator=(const __shared_count<_Lp>& __r) // nothrow + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + if (__tmp != 0) + __tmp->_M_weak_add_ref(); + if (_M_pi != 0) + _M_pi->_M_weak_release(); + _M_pi = __tmp; + return *this; + } + + __weak_count<_Lp>& + operator=(const __weak_count<_Lp>& __r) // nothrow + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + if (__tmp != 0) + __tmp->_M_weak_add_ref(); + if (_M_pi != 0) + _M_pi->_M_weak_release(); + _M_pi = __tmp; + return *this; + } + + void + _M_swap(__weak_count<_Lp>& __r) // nothrow + { + _Sp_counted_base<_Lp>* __tmp = __r._M_pi; + __r._M_pi = _M_pi; + _M_pi = __tmp; + } + + long + _M_get_use_count() const // nothrow + { return _M_pi != 0 ? _M_pi->_M_get_use_count() : 0; } + + friend inline bool + operator==(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b) + { return __a._M_pi == __b._M_pi; } + + friend inline bool + operator<(const __weak_count<_Lp>& __a, const __weak_count<_Lp>& __b) + { return std::less<_Sp_counted_base<_Lp>*>()(__a._M_pi, __b._M_pi); } + + private: + friend class __shared_count<_Lp>; + + _Sp_counted_base<_Lp>* _M_pi; + }; + + // now that __weak_count is defined we can define this constructor: + template<_Lock_policy _Lp> + inline + __shared_count<_Lp>:: + __shared_count(const __weak_count<_Lp>& __r) + : _M_pi(__r._M_pi) + { + if (_M_pi != 0) + _M_pi->_M_add_ref_lock(); + else + __throw_bad_weak_ptr(); + } + + // Forward declarations. + template + class __shared_ptr; + + template + class __weak_ptr; + + template + class __enable_shared_from_this; + + template + class shared_ptr; + + template + class weak_ptr; + + template + class enable_shared_from_this; + + // Support for enable_shared_from_this. + + // Friend of __enable_shared_from_this. + template<_Lock_policy _Lp, typename _Tp1, typename _Tp2> + void + __enable_shared_from_this_helper(const __shared_count<_Lp>&, + const __enable_shared_from_this<_Tp1, + _Lp>*, const _Tp2*); + + // Friend of enable_shared_from_this. + template + void + __enable_shared_from_this_helper(const __shared_count<>&, + const enable_shared_from_this<_Tp1>*, + const _Tp2*); + + template<_Lock_policy _Lp> + inline void + __enable_shared_from_this_helper(const __shared_count<_Lp>&, ...) + { } + + + struct __static_cast_tag { }; + struct __const_cast_tag { }; + struct __dynamic_cast_tag { }; + + // A smart pointer with reference-counted copy semantics. The + // object pointed to is deleted when the last shared_ptr pointing to + // it is destroyed or reset. + template + class __shared_ptr + { + public: + typedef _Tp element_type; + + __shared_ptr() + : _M_ptr(0), _M_refcount() // never throws + { } + + template + explicit + __shared_ptr(_Tp1* __p) + : _M_ptr(__p), _M_refcount(__p) + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + typedef int _IsComplete[sizeof(_Tp1)]; + __enable_shared_from_this_helper(_M_refcount, __p, __p); + } + + template + __shared_ptr(_Tp1* __p, _Deleter __d) + : _M_ptr(__p), _M_refcount(__p, __d) + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + // TODO requires _Deleter CopyConstructible and __d(__p) well-formed + __enable_shared_from_this_helper(_M_refcount, __p, __p); + } + + // generated copy constructor, assignment, destructor are fine. + + template + __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r) + : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws + { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) } + + template + explicit + __shared_ptr(const __weak_ptr<_Tp1, _Lp>& __r) + : _M_refcount(__r._M_refcount) // may throw + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + // It is now safe to copy __r._M_ptr, as _M_refcount(__r._M_refcount) + // did not throw. + _M_ptr = __r._M_ptr; + } + +#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED + // Postcondition: use_count() == 1 and __r.get() == 0 + template + explicit + __shared_ptr(std::auto_ptr<_Tp1>& __r) + : _M_ptr(__r.get()), _M_refcount() + { // TODO requries delete __r.release() well-formed + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + typedef int _IsComplete[sizeof(_Tp1)]; + _Tp1* __tmp = __r.get(); + _M_refcount = __shared_count<_Lp>(__r); + __enable_shared_from_this_helper(_M_refcount, __tmp, __tmp); + } + +#endif + + template + __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __static_cast_tag) + : _M_ptr(static_cast(__r._M_ptr)), + _M_refcount(__r._M_refcount) + { } + + template + __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __const_cast_tag) + : _M_ptr(const_cast(__r._M_ptr)), + _M_refcount(__r._M_refcount) + { } + + template + __shared_ptr(const __shared_ptr<_Tp1, _Lp>& __r, __dynamic_cast_tag) + : _M_ptr(dynamic_cast(__r._M_ptr)), + _M_refcount(__r._M_refcount) + { + if (_M_ptr == 0) // need to allocate new counter -- the cast failed + _M_refcount = __shared_count<_Lp>(); + } + + template + __shared_ptr& + operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws + { + _M_ptr = __r._M_ptr; + _M_refcount = __r._M_refcount; // __shared_count::op= doesn't throw + return *this; + } + +#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED + template + __shared_ptr& + operator=(std::auto_ptr<_Tp1>& __r) + { + __shared_ptr(__r).swap(*this); + return *this; + } +#endif + + void + reset() // never throws + { __shared_ptr().swap(*this); } + + template + void + reset(_Tp1* __p) // _Tp1 must be complete. + { + // Catch self-reset errors. + _GLIBCXX_DEBUG_ASSERT(__p == 0 || __p != _M_ptr); + __shared_ptr(__p).swap(*this); + } + + template + void + reset(_Tp1* __p, _Deleter __d) + { __shared_ptr(__p, __d).swap(*this); } + + // Allow class instantiation when _Tp is [cv-qual] void. + typename std::tr1::add_reference<_Tp>::type + operator*() const // never throws + { + _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); + return *_M_ptr; + } + + _Tp* + operator->() const // never throws + { + _GLIBCXX_DEBUG_ASSERT(_M_ptr != 0); + return _M_ptr; + } + + _Tp* + get() const // never throws + { return _M_ptr; } + + // Implicit conversion to "bool" + private: + typedef _Tp* __shared_ptr::*__unspecified_bool_type; + + public: + operator __unspecified_bool_type() const // never throws + { return _M_ptr == 0 ? 0 : &__shared_ptr::_M_ptr; } + + bool + unique() const // never throws + { return _M_refcount._M_unique(); } + + long + use_count() const // never throws + { return _M_refcount._M_get_use_count(); } + + void + swap(__shared_ptr<_Tp, _Lp>& __other) // never throws + { + std::swap(_M_ptr, __other._M_ptr); + _M_refcount._M_swap(__other._M_refcount); + } + + private: + void* + _M_get_deleter(const std::type_info& __ti) const + { return _M_refcount._M_get_deleter(__ti); } + + template + bool + _M_less(const __shared_ptr<_Tp1, _Lp1>& __rhs) const + { return _M_refcount < __rhs._M_refcount; } + + template friend class __shared_ptr; + template friend class __weak_ptr; + + template + friend _Del* get_deleter(const __shared_ptr<_Tp1, _Lp1>&); + + // Friends injected into enclosing namespace and found by ADL: + template + friend inline bool + operator==(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) + { return __a.get() == __b.get(); } + + template + friend inline bool + operator!=(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) + { return __a.get() != __b.get(); } + + template + friend inline bool + operator<(const __shared_ptr& __a, const __shared_ptr<_Tp1, _Lp>& __b) + { return __a._M_less(__b); } + + _Tp* _M_ptr; // Contained pointer. + __shared_count<_Lp> _M_refcount; // Reference counter. + }; + + // 2.2.3.8 shared_ptr specialized algorithms. + template + inline void + swap(__shared_ptr<_Tp, _Lp>& __a, __shared_ptr<_Tp, _Lp>& __b) + { __a.swap(__b); } + + // 2.2.3.9 shared_ptr casts + /* The seemingly equivalent + * shared_ptr<_Tp, _Lp>(static_cast<_Tp*>(__r.get())) + * will eventually result in undefined behaviour, + * attempting to delete the same object twice. + */ + template + inline __shared_ptr<_Tp, _Lp> + static_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) + { return __shared_ptr<_Tp, _Lp>(__r, __static_cast_tag()); } + + /* The seemingly equivalent + * shared_ptr<_Tp, _Lp>(const_cast<_Tp*>(__r.get())) + * will eventually result in undefined behaviour, + * attempting to delete the same object twice. + */ + template + inline __shared_ptr<_Tp, _Lp> + const_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) + { return __shared_ptr<_Tp, _Lp>(__r, __const_cast_tag()); } + + /* The seemingly equivalent + * shared_ptr<_Tp, _Lp>(dynamic_cast<_Tp*>(__r.get())) + * will eventually result in undefined behaviour, + * attempting to delete the same object twice. + */ + template + inline __shared_ptr<_Tp, _Lp> + dynamic_pointer_cast(const __shared_ptr<_Tp1, _Lp>& __r) + { return __shared_ptr<_Tp, _Lp>(__r, __dynamic_cast_tag()); } + + // 2.2.3.7 shared_ptr I/O + template + std::basic_ostream<_Ch, _Tr>& + operator<<(std::basic_ostream<_Ch, _Tr>& __os, + const __shared_ptr<_Tp, _Lp>& __p) + { + __os << __p.get(); + return __os; + } + + // 2.2.3.10 shared_ptr get_deleter (experimental) + template + inline _Del* + get_deleter(const __shared_ptr<_Tp, _Lp>& __p) + { +#if __cpp_rtti + return static_cast<_Del*>(__p._M_get_deleter(typeid(_Del))); +#else + return 0; +#endif + } + + + template + class __weak_ptr + { + public: + typedef _Tp element_type; + + __weak_ptr() + : _M_ptr(0), _M_refcount() // never throws + { } + + // Generated copy constructor, assignment, destructor are fine. + + // The "obvious" converting constructor implementation: + // + // template + // __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) + // : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws + // { } + // + // has a serious problem. + // + // __r._M_ptr may already have been invalidated. The _M_ptr(__r._M_ptr) + // conversion may require access to *__r._M_ptr (virtual inheritance). + // + // It is not possible to avoid spurious access violations since + // in multithreaded programs __r._M_ptr may be invalidated at any point. + template + __weak_ptr(const __weak_ptr<_Tp1, _Lp>& __r) + : _M_refcount(__r._M_refcount) // never throws + { + __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) + _M_ptr = __r.lock().get(); + } + + template + __weak_ptr(const __shared_ptr<_Tp1, _Lp>& __r) + : _M_ptr(__r._M_ptr), _M_refcount(__r._M_refcount) // never throws + { __glibcxx_function_requires(_ConvertibleConcept<_Tp1*, _Tp*>) } + + template + __weak_ptr& + operator=(const __weak_ptr<_Tp1, _Lp>& __r) // never throws + { + _M_ptr = __r.lock().get(); + _M_refcount = __r._M_refcount; + return *this; + } + + template + __weak_ptr& + operator=(const __shared_ptr<_Tp1, _Lp>& __r) // never throws + { + _M_ptr = __r._M_ptr; + _M_refcount = __r._M_refcount; + return *this; + } + + __shared_ptr<_Tp, _Lp> + lock() const // never throws + { +#ifdef __GTHREADS + // Optimization: avoid throw overhead. + if (expired()) + return __shared_ptr(); + + __try + { + return __shared_ptr(*this); + } + __catch(const bad_weak_ptr&) + { + // Q: How can we get here? + // A: Another thread may have invalidated r after the + // use_count test above. + return __shared_ptr(); + } + +#else + // Optimization: avoid try/catch overhead when single threaded. + return expired() ? __shared_ptr() + : __shared_ptr(*this); + +#endif + } // XXX MT + + long + use_count() const // never throws + { return _M_refcount._M_get_use_count(); } + + bool + expired() const // never throws + { return _M_refcount._M_get_use_count() == 0; } + + void + reset() // never throws + { __weak_ptr().swap(*this); } + + void + swap(__weak_ptr& __s) // never throws + { + std::swap(_M_ptr, __s._M_ptr); + _M_refcount._M_swap(__s._M_refcount); + } + + private: + // Used by __enable_shared_from_this. + void + _M_assign(_Tp* __ptr, const __shared_count<_Lp>& __refcount) + { + _M_ptr = __ptr; + _M_refcount = __refcount; + } + + template + bool + _M_less(const __weak_ptr<_Tp1, _Lp>& __rhs) const + { return _M_refcount < __rhs._M_refcount; } + + template friend class __shared_ptr; + template friend class __weak_ptr; + friend class __enable_shared_from_this<_Tp, _Lp>; + friend class enable_shared_from_this<_Tp>; + + // Friend injected into namespace and found by ADL. + template + friend inline bool + operator<(const __weak_ptr& __lhs, const __weak_ptr<_Tp1, _Lp>& __rhs) + { return __lhs._M_less(__rhs); } + + _Tp* _M_ptr; // Contained pointer. + __weak_count<_Lp> _M_refcount; // Reference counter. + }; + + // 2.2.4.7 weak_ptr specialized algorithms. + template + inline void + swap(__weak_ptr<_Tp, _Lp>& __a, __weak_ptr<_Tp, _Lp>& __b) + { __a.swap(__b); } + + + template + class __enable_shared_from_this + { + protected: + __enable_shared_from_this() { } + + __enable_shared_from_this(const __enable_shared_from_this&) { } + + __enable_shared_from_this& + operator=(const __enable_shared_from_this&) + { return *this; } + + ~__enable_shared_from_this() { } + + public: + __shared_ptr<_Tp, _Lp> + shared_from_this() + { return __shared_ptr<_Tp, _Lp>(this->_M_weak_this); } + + __shared_ptr + shared_from_this() const + { return __shared_ptr(this->_M_weak_this); } + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count<_Lp>& __n) const + { _M_weak_this._M_assign(__p, __n); } + + template + friend void + __enable_shared_from_this_helper(const __shared_count<_Lp>& __pn, + const __enable_shared_from_this* __pe, + const _Tp1* __px) + { + if (__pe != 0) + __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn); + } + + mutable __weak_ptr<_Tp, _Lp> _M_weak_this; + }; + + + // The actual shared_ptr, with forwarding constructors and + // assignment operators. + template + class shared_ptr + : public __shared_ptr<_Tp> + { + public: + shared_ptr() + : __shared_ptr<_Tp>() { } + + template + explicit + shared_ptr(_Tp1* __p) + : __shared_ptr<_Tp>(__p) { } + + template + shared_ptr(_Tp1* __p, _Deleter __d) + : __shared_ptr<_Tp>(__p, __d) { } + + template + shared_ptr(const shared_ptr<_Tp1>& __r) + : __shared_ptr<_Tp>(__r) { } + + template + explicit + shared_ptr(const weak_ptr<_Tp1>& __r) + : __shared_ptr<_Tp>(__r) { } + +#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED + template + explicit + shared_ptr(std::auto_ptr<_Tp1>& __r) + : __shared_ptr<_Tp>(__r) { } +#endif + + template + shared_ptr(const shared_ptr<_Tp1>& __r, __static_cast_tag) + : __shared_ptr<_Tp>(__r, __static_cast_tag()) { } + + template + shared_ptr(const shared_ptr<_Tp1>& __r, __const_cast_tag) + : __shared_ptr<_Tp>(__r, __const_cast_tag()) { } + + template + shared_ptr(const shared_ptr<_Tp1>& __r, __dynamic_cast_tag) + : __shared_ptr<_Tp>(__r, __dynamic_cast_tag()) { } + + template + shared_ptr& + operator=(const shared_ptr<_Tp1>& __r) // never throws + { + this->__shared_ptr<_Tp>::operator=(__r); + return *this; + } + +#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED + template + shared_ptr& + operator=(std::auto_ptr<_Tp1>& __r) + { + this->__shared_ptr<_Tp>::operator=(__r); + return *this; + } +#endif + }; + + // 2.2.3.8 shared_ptr specialized algorithms. + template + inline void + swap(__shared_ptr<_Tp>& __a, __shared_ptr<_Tp>& __b) + { __a.swap(__b); } + + template + inline shared_ptr<_Tp> + static_pointer_cast(const shared_ptr<_Tp1>& __r) + { return shared_ptr<_Tp>(__r, __static_cast_tag()); } + + template + inline shared_ptr<_Tp> + const_pointer_cast(const shared_ptr<_Tp1>& __r) + { return shared_ptr<_Tp>(__r, __const_cast_tag()); } + + template + inline shared_ptr<_Tp> + dynamic_pointer_cast(const shared_ptr<_Tp1>& __r) + { return shared_ptr<_Tp>(__r, __dynamic_cast_tag()); } + + + // The actual weak_ptr, with forwarding constructors and + // assignment operators. + template + class weak_ptr + : public __weak_ptr<_Tp> + { + public: + weak_ptr() + : __weak_ptr<_Tp>() { } + + template + weak_ptr(const weak_ptr<_Tp1>& __r) + : __weak_ptr<_Tp>(__r) { } + + template + weak_ptr(const shared_ptr<_Tp1>& __r) + : __weak_ptr<_Tp>(__r) { } + + template + weak_ptr& + operator=(const weak_ptr<_Tp1>& __r) // never throws + { + this->__weak_ptr<_Tp>::operator=(__r); + return *this; + } + + template + weak_ptr& + operator=(const shared_ptr<_Tp1>& __r) // never throws + { + this->__weak_ptr<_Tp>::operator=(__r); + return *this; + } + + shared_ptr<_Tp> + lock() const // never throws + { +#ifdef __GTHREADS + if (this->expired()) + return shared_ptr<_Tp>(); + + __try + { + return shared_ptr<_Tp>(*this); + } + __catch(const bad_weak_ptr&) + { + return shared_ptr<_Tp>(); + } +#else + return this->expired() ? shared_ptr<_Tp>() + : shared_ptr<_Tp>(*this); +#endif + } + }; + + template + class enable_shared_from_this + { + protected: + enable_shared_from_this() { } + + enable_shared_from_this(const enable_shared_from_this&) { } + + enable_shared_from_this& + operator=(const enable_shared_from_this&) + { return *this; } + + ~enable_shared_from_this() { } + + public: + shared_ptr<_Tp> + shared_from_this() + { return shared_ptr<_Tp>(this->_M_weak_this); } + + shared_ptr + shared_from_this() const + { return shared_ptr(this->_M_weak_this); } + + private: + template + void + _M_weak_assign(_Tp1* __p, const __shared_count<>& __n) const + { _M_weak_this._M_assign(__p, __n); } + + template + friend void + __enable_shared_from_this_helper(const __shared_count<>& __pn, + const enable_shared_from_this* __pe, + const _Tp1* __px) + { + if (__pe != 0) + __pe->_M_weak_assign(const_cast<_Tp1*>(__px), __pn); + } + + mutable weak_ptr<_Tp> _M_weak_this; + }; +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _TR1_SHARED_PTR_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/special_function_util.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/special_function_util.h similarity index 97% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/special_function_util.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/special_function_util.h index 9d40a16ca..6ac1de9ac 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/special_function_util.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/special_function_util.h @@ -1,6 +1,6 @@ // Special functions -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 @@ -38,6 +38,8 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + #if _GLIBCXX_USE_STD_SPEC_FUNCS #elif defined(_GLIBCXX_TR1_CMATH) namespace tr1 @@ -47,8 +49,6 @@ namespace tr1 #endif namespace __detail { - _GLIBCXX_BEGIN_NAMESPACE_VERSION - /// A class to encapsulate type dependent floating point /// constants. Not everything will be able to be expressed as /// type logic. @@ -130,12 +130,12 @@ namespace tr1 { return __builtin_isnanl(__x); } #endif - - _GLIBCXX_END_NAMESPACE_VERSION } // namespace __detail #if ! _GLIBCXX_USE_STD_SPEC_FUNCS && defined(_GLIBCXX_TR1_CMATH) } // namespace tr1 #endif + +_GLIBCXX_END_NAMESPACE_VERSION } #endif // _GLIBCXX_TR1_SPECIAL_FUNCTION_UTIL_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdarg.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdarg.h new file mode 100644 index 000000000..c008e548c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdarg.h @@ -0,0 +1,34 @@ +// TR1 stdarg.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/stdarg.h + * This is a TR1 C++ Library header. + */ + +#ifndef _TR1_STDARG_H +#define _TR1_STDARG_H 1 + +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdbool.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdbool.h new file mode 100644 index 000000000..5cb783b1a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdbool.h @@ -0,0 +1,34 @@ +// TR1 stdbool.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/stdbool.h + * This is a TR1 C++ Library header. + */ + +#ifndef _TR1_STDBOOL_H +#define _TR1_STDBOOL_H 1 + +#include + +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdint.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdint.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdint.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdint.h index 073e10f04..274e14ae5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdint.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdint.h @@ -1,6 +1,6 @@ // TR1 stdint.h -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdio.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdio.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdio.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdio.h index 437cf1394..6d9dcc35d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/stdio.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdio.h @@ -1,6 +1,6 @@ // TR1 stdio.h -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdlib.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdlib.h new file mode 100644 index 000000000..10a74b613 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/stdlib.h @@ -0,0 +1,52 @@ +// TR1 stdlib.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/stdlib.h + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_STDLIB_H +#define _GLIBCXX_TR1_STDLIB_H 1 + +#include + +#if _GLIBCXX_HOSTED + +#if _GLIBCXX_USE_C99_STDLIB + +using std::tr1::atoll; +using std::tr1::strtoll; +using std::tr1::strtoull; + +using std::tr1::abs; +#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC +using std::tr1::div; +#endif + +#endif + +#endif + +#endif // _GLIBCXX_TR1_STDLIB_H + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/tgmath.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/tgmath.h new file mode 100644 index 000000000..110bc666f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/tgmath.h @@ -0,0 +1,34 @@ +// TR1 tgmath.h -*- C++ -*- + +// Copyright (C) 2006-2018 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 +// . + +/** @file tr1/tgmath.h + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_TGMATH_H +#define _GLIBCXX_TR1_TGMATH_H 1 + +#include + +#endif // _GLIBCXX_TR1_TGMATH_H diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/tuple b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/tuple new file mode 100644 index 000000000..55bfb73d1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/tuple @@ -0,0 +1,426 @@ +// class template tuple -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file tr1/tuple +* This is a TR1 C++ Library header. +*/ + +// Chris Jefferson +// Variadic Templates support by Douglas Gregor + +#ifndef _GLIBCXX_TR1_TUPLE +#define _GLIBCXX_TR1_TUPLE 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + // Adds a const reference to a non-reference type. + template + struct __add_c_ref + { typedef const _Tp& type; }; + + template + struct __add_c_ref<_Tp&> + { typedef _Tp& type; }; + + // Adds a reference to a non-reference type. + template + struct __add_ref + { typedef _Tp& type; }; + + template + struct __add_ref<_Tp&> + { typedef _Tp& type; }; + + /** + * Contains the actual implementation of the @c tuple template, stored + * as a recursive inheritance hierarchy from the first element (most + * derived class) to the last (least derived class). The @c Idx + * parameter gives the 0-based index of the element stored at this + * point in the hierarchy; we use it to implement a constant-time + * get() operation. + */ + template + struct _Tuple_impl; + + /** + * Zero-element tuple implementation. This is the basis case for the + * inheritance recursion. + */ + template + struct _Tuple_impl<_Idx> { }; + + /** + * Recursive tuple implementation. Here we store the @c Head element + * and derive from a @c Tuple_impl containing the remaining elements + * (which contains the @c Tail). + */ + template + struct _Tuple_impl<_Idx, _Head, _Tail...> + : public _Tuple_impl<_Idx + 1, _Tail...> + { + typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; + + _Head _M_head; + + _Inherited& _M_tail() { return *this; } + const _Inherited& _M_tail() const { return *this; } + + _Tuple_impl() : _Inherited(), _M_head() { } + + explicit + _Tuple_impl(typename __add_c_ref<_Head>::type __head, + typename __add_c_ref<_Tail>::type... __tail) + : _Inherited(__tail...), _M_head(__head) { } + + template + _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) + : _Inherited(__in._M_tail()), _M_head(__in._M_head) { } + + _Tuple_impl(const _Tuple_impl& __in) + : _Inherited(__in._M_tail()), _M_head(__in._M_head) { } + + template + _Tuple_impl& + operator=(const _Tuple_impl<_Idx, _UElements...>& __in) + { + _M_head = __in._M_head; + _M_tail() = __in._M_tail(); + return *this; + } + + _Tuple_impl& + operator=(const _Tuple_impl& __in) + { + _M_head = __in._M_head; + _M_tail() = __in._M_tail(); + return *this; + } + }; + + template + class tuple : public _Tuple_impl<0, _Elements...> + { + typedef _Tuple_impl<0, _Elements...> _Inherited; + + public: + tuple() : _Inherited() { } + + explicit + tuple(typename __add_c_ref<_Elements>::type... __elements) + : _Inherited(__elements...) { } + + template + tuple(const tuple<_UElements...>& __in) + : _Inherited(__in) { } + + tuple(const tuple& __in) + : _Inherited(__in) { } + + template + tuple& + operator=(const tuple<_UElements...>& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + tuple& + operator=(const tuple& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + }; + + template<> class tuple<> { }; + + // 2-element tuple, with construction and assignment from a pair. + template + class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> + { + typedef _Tuple_impl<0, _T1, _T2> _Inherited; + + public: + tuple() : _Inherited() { } + + explicit + tuple(typename __add_c_ref<_T1>::type __a1, + typename __add_c_ref<_T2>::type __a2) + : _Inherited(__a1, __a2) { } + + template + tuple(const tuple<_U1, _U2>& __in) + : _Inherited(__in) { } + + tuple(const tuple& __in) + : _Inherited(__in) { } + + template + tuple(const pair<_U1, _U2>& __in) + : _Inherited(_Tuple_impl<0, + typename __add_c_ref<_U1>::type, + typename __add_c_ref<_U2>::type>(__in.first, + __in.second)) + { } + + template + tuple& + operator=(const tuple<_U1, _U2>& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + tuple& + operator=(const tuple& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + template + tuple& + operator=(const pair<_U1, _U2>& __in) + { + this->_M_head = __in.first; + this->_M_tail()._M_head = __in.second; + return *this; + } + }; + + + /// Gives the type of the ith element of a given tuple type. + template + struct tuple_element; + + /** + * Recursive case for tuple_element: strip off the first element in + * the tuple and retrieve the (i-1)th element of the remaining tuple. + */ + template + struct tuple_element<__i, tuple<_Head, _Tail...> > + : tuple_element<__i - 1, tuple<_Tail...> > { }; + + /** + * Basis case for tuple_element: The first element is the one we're seeking. + */ + template + struct tuple_element<0, tuple<_Head, _Tail...> > + { + typedef _Head type; + }; + + /// Finds the size of a given tuple type. + template + struct tuple_size; + + /// class tuple_size + template + struct tuple_size > + { + static const int value = sizeof...(_Elements); + }; + + template + const int tuple_size >::value; + + template + inline typename __add_ref<_Head>::type + __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) + { + return __t._M_head; + } + + template + inline typename __add_c_ref<_Head>::type + __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) + { + return __t._M_head; + } + + // Return a reference (const reference) to the ith element of a tuple. + // Any const or non-const ref elements are returned with their original type. + template + inline typename __add_ref< + typename tuple_element<__i, tuple<_Elements...> >::type + >::type + get(tuple<_Elements...>& __t) + { + return __get_helper<__i>(__t); + } + + template + inline typename __add_c_ref< + typename tuple_element<__i, tuple<_Elements...> >::type + >::type + get(const tuple<_Elements...>& __t) + { + return __get_helper<__i>(__t); + } + + // This class helps construct the various comparison operations on tuples + template + struct __tuple_compare; + + template + struct __tuple_compare<0, __i, __j, _Tp, _Up> + { + static bool __eq(const _Tp& __t, const _Up& __u) + { + return (get<__i>(__t) == get<__i>(__u) && + __tuple_compare<0, __i+1, __j, _Tp, _Up>::__eq(__t, __u)); + } + + static bool __less(const _Tp& __t, const _Up& __u) + { + return ((get<__i>(__t) < get<__i>(__u)) + || !(get<__i>(__u) < get<__i>(__t)) && + __tuple_compare<0, __i+1, __j, _Tp, _Up>::__less(__t, __u)); + } + }; + + template + struct __tuple_compare<0, __i, __i, _Tp, _Up> + { + static bool __eq(const _Tp&, const _Up&) + { return true; } + + static bool __less(const _Tp&, const _Up&) + { return false; } + }; + + template + bool + operator==(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { + typedef tuple<_TElements...> _Tp; + typedef tuple<_UElements...> _Up; + return (__tuple_compare::value - tuple_size<_Up>::value, + 0, tuple_size<_Tp>::value, _Tp, _Up>::__eq(__t, __u)); + } + + template + bool + operator<(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { + typedef tuple<_TElements...> _Tp; + typedef tuple<_UElements...> _Up; + return (__tuple_compare::value - tuple_size<_Up>::value, + 0, tuple_size<_Tp>::value, _Tp, _Up>::__less(__t, __u)); + } + + template + inline bool + operator!=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__t == __u); } + + template + inline bool + operator>(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return __u < __t; } + + template + inline bool + operator<=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__u < __t); } + + template + inline bool + operator>=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__t < __u); } + + template + class reference_wrapper; + + // Helper which adds a reference to a type when given a reference_wrapper + template + struct __strip_reference_wrapper + { + typedef _Tp __type; + }; + + template + struct __strip_reference_wrapper > + { + typedef _Tp& __type; + }; + + template + struct __strip_reference_wrapper > + { + typedef _Tp& __type; + }; + + template + inline tuple::__type...> + make_tuple(_Elements... __args) + { + typedef tuple::__type...> + __result_type; + return __result_type(__args...); + } + + template + inline tuple<_Elements&...> + tie(_Elements&... __args) + { + return tuple<_Elements&...>(__args...); + } + + // A class (and instance) which can be used in 'tie' when an element + // of a tuple is not required + struct _Swallow_assign + { + template + _Swallow_assign& + operator=(const _Tp&) + { return *this; } + }; + + // TODO: Put this in some kind of shared file. + namespace + { + _Swallow_assign ignore; + }; // anonymous namespace +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_TUPLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/type_traits new file mode 100644 index 000000000..ec79e616a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/type_traits @@ -0,0 +1,687 @@ +// TR1 type_traits -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file tr1/type_traits + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_TYPE_TRAITS +#define _GLIBCXX_TR1_TYPE_TRAITS 1 + +#pragma GCC system_header + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + /** + * @addtogroup metaprogramming + * @{ + */ + + struct __sfinae_types + { + typedef char __one; + typedef struct { char __arr[2]; } __two; + }; + +#define _DEFINE_SPEC_0_HELPER \ + template<> + +#define _DEFINE_SPEC_1_HELPER \ + template + +#define _DEFINE_SPEC_2_HELPER \ + template + +#define _DEFINE_SPEC(_Order, _Trait, _Type, _Value) \ + _DEFINE_SPEC_##_Order##_HELPER \ + struct _Trait<_Type> \ + : public integral_constant { }; + + // helper classes [4.3]. + + /// integral_constant + template + struct integral_constant + { + static const _Tp value = __v; + typedef _Tp value_type; + typedef integral_constant<_Tp, __v> type; + }; + + /// typedef for true_type + typedef integral_constant true_type; + + /// typedef for false_type + typedef integral_constant false_type; + + template + const _Tp integral_constant<_Tp, __v>::value; + + /// remove_cv + template + struct remove_cv; + + template + struct __is_void_helper + : public false_type { }; + _DEFINE_SPEC(0, __is_void_helper, void, true) + + // primary type categories [4.5.1]. + + /// is_void + template + struct is_void + : public integral_constant::type>::value)> + { }; + + template + struct __is_integral_helper + : public false_type { }; + _DEFINE_SPEC(0, __is_integral_helper, bool, true) + _DEFINE_SPEC(0, __is_integral_helper, char, true) + _DEFINE_SPEC(0, __is_integral_helper, signed char, true) + _DEFINE_SPEC(0, __is_integral_helper, unsigned char, true) +#ifdef _GLIBCXX_USE_WCHAR_T + _DEFINE_SPEC(0, __is_integral_helper, wchar_t, true) +#endif + _DEFINE_SPEC(0, __is_integral_helper, short, true) + _DEFINE_SPEC(0, __is_integral_helper, unsigned short, true) + _DEFINE_SPEC(0, __is_integral_helper, int, true) + _DEFINE_SPEC(0, __is_integral_helper, unsigned int, true) + _DEFINE_SPEC(0, __is_integral_helper, long, true) + _DEFINE_SPEC(0, __is_integral_helper, unsigned long, true) + _DEFINE_SPEC(0, __is_integral_helper, long long, true) + _DEFINE_SPEC(0, __is_integral_helper, unsigned long long, true) + + /// is_integral + template + struct is_integral + : public integral_constant::type>::value)> + { }; + + template + struct __is_floating_point_helper + : public false_type { }; + _DEFINE_SPEC(0, __is_floating_point_helper, float, true) + _DEFINE_SPEC(0, __is_floating_point_helper, double, true) + _DEFINE_SPEC(0, __is_floating_point_helper, long double, true) + + /// is_floating_point + template + struct is_floating_point + : public integral_constant::type>::value)> + { }; + + /// is_array + template + struct is_array + : public false_type { }; + + template + struct is_array<_Tp[_Size]> + : public true_type { }; + + template + struct is_array<_Tp[]> + : public true_type { }; + + template + struct __is_pointer_helper + : public false_type { }; + _DEFINE_SPEC(1, __is_pointer_helper, _Tp*, true) + + /// is_pointer + template + struct is_pointer + : public integral_constant::type>::value)> + { }; + + /// is_reference + template + struct is_reference; + + /// is_function + template + struct is_function; + + template + struct __is_member_object_pointer_helper + : public false_type { }; + _DEFINE_SPEC(2, __is_member_object_pointer_helper, _Tp _Cp::*, + !is_function<_Tp>::value) + + /// is_member_object_pointer + template + struct is_member_object_pointer + : public integral_constant::type>::value)> + { }; + + template + struct __is_member_function_pointer_helper + : public false_type { }; + _DEFINE_SPEC(2, __is_member_function_pointer_helper, _Tp _Cp::*, + is_function<_Tp>::value) + + /// is_member_function_pointer + template + struct is_member_function_pointer + : public integral_constant::type>::value)> + { }; + + /// is_enum + template + struct is_enum + : public integral_constant + { }; + + /// is_union + template + struct is_union + : public integral_constant + { }; + + /// is_class + template + struct is_class + : public integral_constant + { }; + + /// is_function + template + struct is_function + : public false_type { }; + template + struct is_function<_Res(_ArgTypes...)> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes......)> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) const> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) const> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) volatile> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) volatile> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes...) const volatile> + : public true_type { }; + template + struct is_function<_Res(_ArgTypes......) const volatile> + : public true_type { }; + + // composite type traits [4.5.2]. + + /// is_arithmetic + template + struct is_arithmetic + : public integral_constant::value + || is_floating_point<_Tp>::value)> + { }; + + /// is_fundamental + template + struct is_fundamental + : public integral_constant::value + || is_void<_Tp>::value)> + { }; + + /// is_object + template + struct is_object + : public integral_constant::value + || is_reference<_Tp>::value + || is_void<_Tp>::value)> + { }; + + /// is_member_pointer + template + struct is_member_pointer; + + /// is_scalar + template + struct is_scalar + : public integral_constant::value + || is_enum<_Tp>::value + || is_pointer<_Tp>::value + || is_member_pointer<_Tp>::value)> + { }; + + /// is_compound + template + struct is_compound + : public integral_constant::value> { }; + + /// is_member_pointer + template + struct __is_member_pointer_helper + : public false_type { }; + _DEFINE_SPEC(2, __is_member_pointer_helper, _Tp _Cp::*, true) + + template + struct is_member_pointer + : public integral_constant::type>::value)> + { }; + + // type properties [4.5.3]. + /// is_const + template + struct is_const + : public false_type { }; + + template + struct is_const<_Tp const> + : public true_type { }; + + /// is_volatile + template + struct is_volatile + : public false_type { }; + + template + struct is_volatile<_Tp volatile> + : public true_type { }; + + /// is_empty + template + struct is_empty + : public integral_constant + { }; + + /// is_polymorphic + template + struct is_polymorphic + : public integral_constant + { }; + + /// is_abstract + template + struct is_abstract + : public integral_constant + { }; + + /// has_virtual_destructor + template + struct has_virtual_destructor + : public integral_constant + { }; + + /// alignment_of + template + struct alignment_of + : public integral_constant { }; + + /// rank + template + struct rank + : public integral_constant { }; + + template + struct rank<_Tp[_Size]> + : public integral_constant::value> { }; + + template + struct rank<_Tp[]> + : public integral_constant::value> { }; + + /// extent + template + struct extent + : public integral_constant { }; + + template + struct extent<_Tp[_Size], _Uint> + : public integral_constant::value> + { }; + + template + struct extent<_Tp[], _Uint> + : public integral_constant::value> + { }; + + // relationships between types [4.6]. + + /// is_same + template + struct is_same + : public false_type { }; + + template + struct is_same<_Tp, _Tp> + : public true_type { }; + + // const-volatile modifications [4.7.1]. + + /// remove_const + template + struct remove_const + { typedef _Tp type; }; + + template + struct remove_const<_Tp const> + { typedef _Tp type; }; + + /// remove_volatile + template + struct remove_volatile + { typedef _Tp type; }; + + template + struct remove_volatile<_Tp volatile> + { typedef _Tp type; }; + + /// remove_cv + template + struct remove_cv + { + typedef typename + remove_const::type>::type type; + }; + + /// add_const + template + struct add_const + { typedef _Tp const type; }; + + /// add_volatile + template + struct add_volatile + { typedef _Tp volatile type; }; + + /// add_cv + template + struct add_cv + { + typedef typename + add_const::type>::type type; + }; + + // array modifications [4.7.3]. + + /// remove_extent + template + struct remove_extent + { typedef _Tp type; }; + + template + struct remove_extent<_Tp[_Size]> + { typedef _Tp type; }; + + template + struct remove_extent<_Tp[]> + { typedef _Tp type; }; + + /// remove_all_extents + template + struct remove_all_extents + { typedef _Tp type; }; + + template + struct remove_all_extents<_Tp[_Size]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + template + struct remove_all_extents<_Tp[]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + // pointer modifications [4.7.4]. + + template + struct __remove_pointer_helper + { typedef _Tp type; }; + + template + struct __remove_pointer_helper<_Tp, _Up*> + { typedef _Up type; }; + + /// remove_pointer + template + struct remove_pointer + : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> + { }; + + template + struct remove_reference; + + /// add_pointer + template + struct add_pointer + { typedef typename remove_reference<_Tp>::type* type; }; + + template + struct is_reference + : public false_type { }; + + template + struct is_reference<_Tp&> + : public true_type { }; + + template + struct is_pod + : public integral_constant::value> + { }; + + template + struct has_trivial_constructor + : public integral_constant::value> + { }; + + template + struct has_trivial_copy + : public integral_constant::value> + { }; + + template + struct has_trivial_assign + : public integral_constant::value> + { }; + + template + struct has_trivial_destructor + : public integral_constant::value> + { }; + + template + struct has_nothrow_constructor + : public integral_constant::value> + { }; + + template + struct has_nothrow_copy + : public integral_constant::value> + { }; + + template + struct has_nothrow_assign + : public integral_constant::value> + { }; + + template + struct __is_signed_helper + : public false_type { }; + _DEFINE_SPEC(0, __is_signed_helper, signed char, true) + _DEFINE_SPEC(0, __is_signed_helper, short, true) + _DEFINE_SPEC(0, __is_signed_helper, int, true) + _DEFINE_SPEC(0, __is_signed_helper, long, true) + _DEFINE_SPEC(0, __is_signed_helper, long long, true) + + template + struct is_signed + : public integral_constant::type>::value)> + { }; + + template + struct __is_unsigned_helper + : public false_type { }; + _DEFINE_SPEC(0, __is_unsigned_helper, unsigned char, true) + _DEFINE_SPEC(0, __is_unsigned_helper, unsigned short, true) + _DEFINE_SPEC(0, __is_unsigned_helper, unsigned int, true) + _DEFINE_SPEC(0, __is_unsigned_helper, unsigned long, true) + _DEFINE_SPEC(0, __is_unsigned_helper, unsigned long long, true) + + template + struct is_unsigned + : public integral_constant::type>::value)> + { }; + + template + struct __is_base_of_helper + { + typedef typename remove_cv<_Base>::type _NoCv_Base; + typedef typename remove_cv<_Derived>::type _NoCv_Derived; + static const bool __value = (is_same<_Base, _Derived>::value + || (__is_base_of(_Base, _Derived) + && !is_same<_NoCv_Base, + _NoCv_Derived>::value)); + }; + + template + struct is_base_of + : public integral_constant::__value> + { }; + + template + struct __is_convertible_simple + : public __sfinae_types + { + private: + static __one __test(_To); + static __two __test(...); + static _From __makeFrom(); + + public: + static const bool __value = sizeof(__test(__makeFrom())) == 1; + }; + + template + struct add_reference; + + template + struct __is_int_or_cref + { + typedef typename remove_reference<_Tp>::type __rr_Tp; + static const bool __value = (is_integral<_Tp>::value + || (is_integral<__rr_Tp>::value + && is_const<__rr_Tp>::value + && !is_volatile<__rr_Tp>::value)); + }; + + template::value || is_void<_To>::value + || is_function<_To>::value || is_array<_To>::value + // This special case is here only to avoid warnings. + || (is_floating_point::type>::value + && __is_int_or_cref<_To>::__value))> + struct __is_convertible_helper + { + // "An imaginary lvalue of type From...". + static const bool __value = (__is_convertible_simple::type, _To>::__value); + }; + + template + struct __is_convertible_helper<_From, _To, true> + { static const bool __value = (is_void<_To>::value + || (__is_int_or_cref<_To>::__value + && !is_void<_From>::value)); }; + + template + struct is_convertible + : public integral_constant::__value> + { }; + + // reference modifications [4.7.2]. + template + struct remove_reference + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&> + { typedef _Tp type; }; + + // NB: Careful with reference to void. + template::value + || is_reference<_Tp>::value)> + struct __add_reference_helper + { typedef _Tp& type; }; + + template + struct __add_reference_helper<_Tp, true> + { typedef _Tp type; }; + + template + struct add_reference + : public __add_reference_helper<_Tp> + { }; + + // other transformations [4.8]. + template + struct aligned_storage + { + union type + { + unsigned char __data[_Len]; + struct __attribute__((__aligned__((_Align)))) { } __align; + }; + }; + +#undef _DEFINE_SPEC_0_HELPER +#undef _DEFINE_SPEC_1_HELPER +#undef _DEFINE_SPEC_2_HELPER +#undef _DEFINE_SPEC + + /// @} group metaprogramming +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_map new file mode 100644 index 000000000..825c90611 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_map @@ -0,0 +1,44 @@ +// TR1 unordered_map -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +/** @file tr1/unordered_map + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_UNORDERED_MAP +#define _GLIBCXX_TR1_UNORDERED_MAP 1 + +#pragma GCC system_header + +#include +#include +#include +#include // equal_to, _Identity, _Select1st +#include +#include +#include +#include +#include + +#endif // _GLIBCXX_TR1_UNORDERED_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_map.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_map.h new file mode 100644 index 000000000..11543513c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_map.h @@ -0,0 +1,278 @@ +// TR1 unordered_map implementation -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file tr1/unordered_map.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{tr1/unordered_map} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + // NB: When we get typedef templates these class definitions + // will be unnecessary. + template, + class _Pred = std::equal_to<_Key>, + class _Alloc = std::allocator >, + bool __cache_hash_code = false> + class __unordered_map + : public _Hashtable<_Key, std::pair, _Alloc, + std::_Select1st >, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, false, true> + { + typedef _Hashtable<_Key, std::pair, _Alloc, + std::_Select1st >, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, false, true> + _Base; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + __unordered_map(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), + __eql, std::_Select1st >(), __a) + { } + + template + __unordered_map(_InputIterator __f, _InputIterator __l, + size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), + __eql, std::_Select1st >(), __a) + { } + }; + + template, + class _Pred = std::equal_to<_Key>, + class _Alloc = std::allocator >, + bool __cache_hash_code = false> + class __unordered_multimap + : public _Hashtable<_Key, std::pair, + _Alloc, + std::_Select1st >, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, false, false> + { + typedef _Hashtable<_Key, std::pair, + _Alloc, + std::_Select1st >, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, false, false> + _Base; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + __unordered_multimap(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), + __eql, std::_Select1st >(), __a) + { } + + + template + __unordered_multimap(_InputIterator __f, _InputIterator __l, + typename _Base::size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), + __eql, std::_Select1st >(), __a) + { } + }; + + template + inline void + swap(__unordered_map<_Key, _Tp, _Hash, _Pred, + _Alloc, __cache_hash_code>& __x, + __unordered_map<_Key, _Tp, _Hash, _Pred, + _Alloc, __cache_hash_code>& __y) + { __x.swap(__y); } + + template + inline void + swap(__unordered_multimap<_Key, _Tp, _Hash, _Pred, + _Alloc, __cache_hash_code>& __x, + __unordered_multimap<_Key, _Tp, _Hash, _Pred, + _Alloc, __cache_hash_code>& __y) + { __x.swap(__y); } + + + /** + * @brief A standard container composed of unique keys (containing + * at most one of each key value) that associates values of another type + * with the keys. + * + * @ingroup unordered_associative_containers + * + * Meets the requirements of a container, and + * unordered associative container + * + * @param Key Type of key objects. + * @param Tp Type of mapped objects. + * @param Hash Hashing function object type, defaults to hash. + * @param Pred Predicate function object type, defaults to equal_to. + * @param Alloc Allocator type, defaults to allocator. + * + * The resulting value type of the container is std::pair. + */ + template, + class _Pred = std::equal_to<_Key>, + class _Alloc = std::allocator > > + class unordered_map + : public __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> + { + typedef __unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc> _Base; + + public: + typedef typename _Base::value_type value_type; + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + unordered_map(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) + { } + + template + unordered_map(_InputIterator __f, _InputIterator __l, + size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) + { } + }; + + /** + * @brief A standard container composed of equivalent keys + * (possibly containing multiple of each key value) that associates + * values of another type with the keys. + * + * @ingroup unordered_associative_containers + * + * Meets the requirements of a container, and + * unordered associative container + * + * @param Key Type of key objects. + * @param Tp Type of mapped objects. + * @param Hash Hashing function object type, defaults to hash. + * @param Pred Predicate function object type, defaults to equal_to. + * @param Alloc Allocator type, defaults to allocator. + * + * The resulting value type of the container is std::pair. + */ + template, + class _Pred = std::equal_to<_Key>, + class _Alloc = std::allocator > > + class unordered_multimap + : public __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> + { + typedef __unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc> _Base; + + public: + typedef typename _Base::value_type value_type; + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + unordered_multimap(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) + { } + + + template + unordered_multimap(_InputIterator __f, _InputIterator __l, + typename _Base::size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) + { } + + }; + + template + inline void + swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline void + swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, + unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } +} + +_GLIBCXX_END_NAMESPACE_VERSION +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_set new file mode 100644 index 000000000..725a07011 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_set @@ -0,0 +1,44 @@ +// TR1 unordered_set -*- C++ -*- + +// Copyright (C) 2005-2018 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 +// . + +/** @file tr1/unordered_set + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_UNORDERED_SET +#define _GLIBCXX_TR1_UNORDERED_SET 1 + +#pragma GCC system_header + +#include +#include +#include +#include // equal_to, _Identity, _Select1st +#include +#include +#include +#include +#include + +#endif // _GLIBCXX_TR1_UNORDERED_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_set.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_set.h new file mode 100644 index 000000000..5befa8402 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/unordered_set.h @@ -0,0 +1,267 @@ +// TR1 unordered_set implementation -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file tr1/unordered_set.h + * This is an internal header file, included by other library headers. + * Do not attempt to use it directly. @headername{tr1/unordered_set} + */ + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + // NB: When we get typedef templates these class definitions + // will be unnecessary. + template, + class _Pred = std::equal_to<_Value>, + class _Alloc = std::allocator<_Value>, + bool __cache_hash_code = false> + class __unordered_set + : public _Hashtable<_Value, _Value, _Alloc, + std::_Identity<_Value>, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, true, true> + { + typedef _Hashtable<_Value, _Value, _Alloc, + std::_Identity<_Value>, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, true, true> + _Base; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + __unordered_set(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + std::_Identity<_Value>(), __a) + { } + + template + __unordered_set(_InputIterator __f, _InputIterator __l, + size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + std::_Identity<_Value>(), __a) + { } + }; + + template, + class _Pred = std::equal_to<_Value>, + class _Alloc = std::allocator<_Value>, + bool __cache_hash_code = false> + class __unordered_multiset + : public _Hashtable<_Value, _Value, _Alloc, + std::_Identity<_Value>, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, true, false> + { + typedef _Hashtable<_Value, _Value, _Alloc, + std::_Identity<_Value>, _Pred, + _Hash, __detail::_Mod_range_hashing, + __detail::_Default_ranged_hash, + __detail::_Prime_rehash_policy, + __cache_hash_code, true, false> + _Base; + + public: + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + __unordered_multiset(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + std::_Identity<_Value>(), __a) + { } + + + template + __unordered_multiset(_InputIterator __f, _InputIterator __l, + typename _Base::size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __detail::_Mod_range_hashing(), + __detail::_Default_ranged_hash(), __eql, + std::_Identity<_Value>(), __a) + { } + }; + + template + inline void + swap(__unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __x, + __unordered_set<_Value, _Hash, _Pred, _Alloc, __cache_hash_code>& __y) + { __x.swap(__y); } + + template + inline void + swap(__unordered_multiset<_Value, _Hash, _Pred, + _Alloc, __cache_hash_code>& __x, + __unordered_multiset<_Value, _Hash, _Pred, + _Alloc, __cache_hash_code>& __y) + { __x.swap(__y); } + + + /** + * @brief A standard container composed of unique keys (containing + * at most one of each key value) in which the elements' keys are + * the elements themselves. + * + * @ingroup unordered_associative_containers + * + * Meets the requirements of a container, and + * unordered associative container + * + * @param Value Type of key objects. + * @param Hash Hashing function object type, defaults to hash. + * @param Pred Predicate function object type, defaults to equal_to. + * @param Alloc Allocator type, defaults to allocator. + */ + template, + class _Pred = std::equal_to<_Value>, + class _Alloc = std::allocator<_Value> > + class unordered_set + : public __unordered_set<_Value, _Hash, _Pred, _Alloc> + { + typedef __unordered_set<_Value, _Hash, _Pred, _Alloc> _Base; + + public: + typedef typename _Base::value_type value_type; + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + unordered_set(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) + { } + + template + unordered_set(_InputIterator __f, _InputIterator __l, + size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) + { } + }; + + /** + * @brief A standard container composed of equivalent keys + * (possibly containing multiple of each key value) in which the + * elements' keys are the elements themselves. + * + * @ingroup unordered_associative_containers + * + * Meets the requirements of a container, and + * unordered associative container + * + * @param Value Type of key objects. + * @param Hash Hashing function object type, defaults to hash. + * @param Pred Predicate function object type, defaults to equal_to. + * @param Alloc Allocator type, defaults to allocator. + */ + template, + class _Pred = std::equal_to<_Value>, + class _Alloc = std::allocator<_Value> > + class unordered_multiset + : public __unordered_multiset<_Value, _Hash, _Pred, _Alloc> + { + typedef __unordered_multiset<_Value, _Hash, _Pred, _Alloc> _Base; + + public: + typedef typename _Base::value_type value_type; + typedef typename _Base::size_type size_type; + typedef typename _Base::hasher hasher; + typedef typename _Base::key_equal key_equal; + typedef typename _Base::allocator_type allocator_type; + + explicit + unordered_multiset(size_type __n = 10, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__n, __hf, __eql, __a) + { } + + + template + unordered_multiset(_InputIterator __f, _InputIterator __l, + typename _Base::size_type __n = 0, + const hasher& __hf = hasher(), + const key_equal& __eql = key_equal(), + const allocator_type& __a = allocator_type()) + : _Base(__f, __l, __n, __hf, __eql, __a) + { } + }; + + template + inline void + swap(unordered_set<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_set<_Value, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } + + template + inline void + swap(unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __x, + unordered_multiset<_Value, _Hash, _Pred, _Alloc>& __y) + { __x.swap(__y); } +} + +_GLIBCXX_END_NAMESPACE_VERSION +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/utility b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/utility new file mode 100644 index 000000000..a03d462b3 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/utility @@ -0,0 +1,108 @@ +// TR1 utility -*- C++ -*- + +// Copyright (C) 2004-2018 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 +// . + +/** @file tr1/utility + * This is a TR1 C++ Library header. + */ + +#ifndef _GLIBCXX_TR1_UTILITY +#define _GLIBCXX_TR1_UTILITY 1 + +#pragma GCC system_header + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr1 +{ + template + class tuple_size; + + template + class tuple_element; + + // Various functions which give std::pair a tuple-like interface. + template + struct tuple_size > + { static const int value = 2; }; + + template + const int + tuple_size >::value; + + template + struct tuple_element<0, std::pair<_Tp1, _Tp2> > + { typedef _Tp1 type; }; + + template + struct tuple_element<1, std::pair<_Tp1, _Tp2> > + { typedef _Tp2 type; }; + + template + struct __pair_get; + + template<> + struct __pair_get<0> + { + template + static _Tp1& __get(std::pair<_Tp1, _Tp2>& __pair) + { return __pair.first; } + + template + static const _Tp1& __const_get(const std::pair<_Tp1, _Tp2>& __pair) + { return __pair.first; } + }; + + template<> + struct __pair_get<1> + { + template + static _Tp2& __get(std::pair<_Tp1, _Tp2>& __pair) + { return __pair.second; } + + template + static const _Tp2& __const_get(const std::pair<_Tp1, _Tp2>& __pair) + { return __pair.second; } + }; + + template + inline typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& + get(std::pair<_Tp1, _Tp2>& __in) + { return __pair_get<_Int>::__get(__in); } + + template + inline const typename tuple_element<_Int, std::pair<_Tp1, _Tp2> >::type& + get(const std::pair<_Tp1, _Tp2>& __in) + { return __pair_get<_Int>::__const_get(__in); } +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR1_UTILITY diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/wchar.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/wchar.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/wchar.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/wchar.h index 583738f4f..17b623182 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/wchar.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/wchar.h @@ -1,6 +1,6 @@ // TR1 wchar.h -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/wctype.h b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/wctype.h similarity index 95% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/wctype.h rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/wctype.h index 9c77d315a..ddb747ca9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr1/wctype.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr1/wctype.h @@ -1,6 +1,6 @@ // TR1 wctype.h -*- C++ -*- -// Copyright (C) 2006-2017 Free Software Foundation, Inc. +// Copyright (C) 2006-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/bool_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/bool_set similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/bool_set rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/bool_set index 9d55b3c0e..3c43aeb7a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/bool_set +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/bool_set @@ -1,6 +1,6 @@ // TR2 -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -36,10 +36,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace tr2 -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace tr2 +{ /** * bool_set * @@ -310,10 +310,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION inline bool_set operator!=(bool_set __s, bool_set __t) { return ! (__s == __t); } +} _GLIBCXX_END_NAMESPACE_VERSION } -} #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/bool_set.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/bool_set.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/bool_set.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/bool_set.tcc index a5fd898a8..f1168c4d8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/bool_set.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/bool_set.tcc @@ -1,6 +1,6 @@ // TR2 support files -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -33,10 +33,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace tr2 -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace tr2 +{ bool_set::_Bool_set_val bool_set::_S_not[4] = { _S_true_, _S_false, _S_indet, _S_empty }; @@ -68,10 +68,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { _S_false, _S_true_, _S_indet, _S_empty }, { _S_indet, _S_indet, _S_indet, _S_empty }, { _S_empty, _S_empty, _S_empty, _S_empty } }; +} _GLIBCXX_END_NAMESPACE_VERSION } -} // I object to these things. // The stuff in locale facets are for basic types. diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/dynamic_bitset b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/dynamic_bitset similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/dynamic_bitset rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/dynamic_bitset index ff4e5887e..f76c8faf6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/dynamic_bitset +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/dynamic_bitset @@ -1,6 +1,6 @@ // TR2 -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -42,10 +42,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace tr2 -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace tr2 +{ /** * @defgroup dynamic_bitset Dynamic Bitset. * @ingroup extensions @@ -1220,9 +1220,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /** * @} */ +} // tr2 _GLIBCXX_END_NAMESPACE_VERSION -} // tr2 } // std #include diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/dynamic_bitset.tcc b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/dynamic_bitset.tcc similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/dynamic_bitset.tcc rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/dynamic_bitset.tcc index 7b64580cc..6632403b4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/tr2/dynamic_bitset.tcc +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/dynamic_bitset.tcc @@ -1,6 +1,6 @@ // TR2 -*- C++ -*- -// Copyright (C) 2009-2017 Free Software Foundation, Inc. +// Copyright (C) 2009-2018 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 @@ -34,10 +34,10 @@ namespace std _GLIBCXX_VISIBILITY(default) { -namespace tr2 -{ _GLIBCXX_BEGIN_NAMESPACE_VERSION +namespace tr2 +{ // Definitions of non-inline functions from __dynamic_bitset_base. template void @@ -272,9 +272,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __is.setstate(__state); return __is; } +} // tr2 _GLIBCXX_END_NAMESPACE_VERSION -} // tr2 } // std #endif /* _GLIBCXX_TR2_DYNAMIC_BITSET_TCC */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/ratio b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/ratio new file mode 100644 index 000000000..6df42ab11 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/ratio @@ -0,0 +1,59 @@ +// TR2 -*- C++ -*- + +// Copyright (C) 2010-2018 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 +// . + +/** @file tr2/ratio + * This is a TR2 C++ Library header. + */ + +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr2 +{ + template + (std::numeric_limits::digits)> + struct __safe_lshift + { static const intmax_t __value = 0; }; + + template + struct __safe_lshift<_Pn, _Bit, true> + { static const intmax_t __value = _Pn << _Bit; }; + + /// Add binary prefixes (IEC 60027-2 A.2 and ISO/IEC 80000). + typedef ratio<__safe_lshift<1, 10>::__value, 1> kibi; + typedef ratio<__safe_lshift<1, 20>::__value, 1> mebi; + typedef ratio<__safe_lshift<1, 30>::__value, 1> gibi; + typedef ratio<__safe_lshift<1, 40>::__value, 1> tebi; + typedef ratio<__safe_lshift<1, 50>::__value, 1> pebi; + typedef ratio<__safe_lshift<1, 60>::__value, 1> exbi; + //typedef ratio<__safe_lshift<1, 70>::__value, 1> zebi; + //typedef ratio<__safe_lshift<1, 80>::__value, 1> yobi; +} + +_GLIBCXX_END_NAMESPACE_VERSION +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/type_traits new file mode 100644 index 000000000..0d3dd45d5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tr2/type_traits @@ -0,0 +1,106 @@ +// TR2 -*- C++ -*- + +// Copyright (C) 2011-2018 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 +// . + +/** @file tr2/type_traits + * This is a TR2 C++ Library header. + */ + +#ifndef _GLIBCXX_TR2_TYPE_TRAITS +#define _GLIBCXX_TR2_TYPE_TRAITS 1 + +#pragma GCC system_header +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + +namespace tr2 +{ + /** + * @addtogroup metaprogramming + * @{ + */ + + /** + * See N2965: Type traits and base classes + * by Michael Spertus + */ + + /** + * Simple typelist. Compile-time list of types. + */ + template + struct __reflection_typelist; + + /// Specialization for an empty typelist. + template<> + struct __reflection_typelist<> + { + typedef std::true_type empty; + }; + + /// Partial specialization. + template + struct __reflection_typelist<_First, _Rest...> + { + typedef std::false_type empty; + + struct first + { + typedef _First type; + }; + + struct rest + { + typedef __reflection_typelist<_Rest...> type; + }; + }; + + /// Sequence abstraction metafunctions for manipulating a typelist. + + + + /// Enumerate all the base classes of a class. Form of a typelist. + template + struct bases + { + typedef __reflection_typelist<__bases(_Tp)...> type; + }; + + /// Enumerate all the direct base classes of a class. Form of a typelist. + template + struct direct_bases + { + typedef __reflection_typelist<__direct_bases(_Tp)...> type; + }; + + /// @} group metaprogramming +} + +_GLIBCXX_END_NAMESPACE_VERSION +} + +#endif // _GLIBCXX_TR2_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tuple b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tuple new file mode 100644 index 000000000..1d0074129 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/tuple @@ -0,0 +1,1716 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/tuple + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_TUPLE +#define _GLIBCXX_TUPLE 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /** + * @addtogroup utilities + * @{ + */ + + template + class tuple; + + template + struct __is_empty_non_tuple : is_empty<_Tp> { }; + + // Using EBO for elements that are tuples causes ambiguous base errors. + template + struct __is_empty_non_tuple> : false_type { }; + + // Use the Empty Base-class Optimization for empty, non-final types. + template + using __empty_not_final + = typename conditional<__is_final(_Tp), false_type, + __is_empty_non_tuple<_Tp>>::type; + + template::value> + struct _Head_base; + + template + struct _Head_base<_Idx, _Head, true> + : public _Head + { + constexpr _Head_base() + : _Head() { } + + constexpr _Head_base(const _Head& __h) + : _Head(__h) { } + + constexpr _Head_base(const _Head_base&) = default; + constexpr _Head_base(_Head_base&&) = default; + + template + constexpr _Head_base(_UHead&& __h) + : _Head(std::forward<_UHead>(__h)) { } + + _Head_base(allocator_arg_t, __uses_alloc0) + : _Head() { } + + template + _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) + : _Head(allocator_arg, *__a._M_a) { } + + template + _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) + : _Head(*__a._M_a) { } + + template + _Head_base(__uses_alloc0, _UHead&& __uhead) + : _Head(std::forward<_UHead>(__uhead)) { } + + template + _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) + : _Head(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) { } + + template + _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) + : _Head(std::forward<_UHead>(__uhead), *__a._M_a) { } + + static constexpr _Head& + _M_head(_Head_base& __b) noexcept { return __b; } + + static constexpr const _Head& + _M_head(const _Head_base& __b) noexcept { return __b; } + }; + + template + struct _Head_base<_Idx, _Head, false> + { + constexpr _Head_base() + : _M_head_impl() { } + + constexpr _Head_base(const _Head& __h) + : _M_head_impl(__h) { } + + constexpr _Head_base(const _Head_base&) = default; + constexpr _Head_base(_Head_base&&) = default; + + template + constexpr _Head_base(_UHead&& __h) + : _M_head_impl(std::forward<_UHead>(__h)) { } + + _Head_base(allocator_arg_t, __uses_alloc0) + : _M_head_impl() { } + + template + _Head_base(allocator_arg_t, __uses_alloc1<_Alloc> __a) + : _M_head_impl(allocator_arg, *__a._M_a) { } + + template + _Head_base(allocator_arg_t, __uses_alloc2<_Alloc> __a) + : _M_head_impl(*__a._M_a) { } + + template + _Head_base(__uses_alloc0, _UHead&& __uhead) + : _M_head_impl(std::forward<_UHead>(__uhead)) { } + + template + _Head_base(__uses_alloc1<_Alloc> __a, _UHead&& __uhead) + : _M_head_impl(allocator_arg, *__a._M_a, std::forward<_UHead>(__uhead)) + { } + + template + _Head_base(__uses_alloc2<_Alloc> __a, _UHead&& __uhead) + : _M_head_impl(std::forward<_UHead>(__uhead), *__a._M_a) { } + + static constexpr _Head& + _M_head(_Head_base& __b) noexcept { return __b._M_head_impl; } + + static constexpr const _Head& + _M_head(const _Head_base& __b) noexcept { return __b._M_head_impl; } + + _Head _M_head_impl; + }; + + /** + * Contains the actual implementation of the @c tuple template, stored + * as a recursive inheritance hierarchy from the first element (most + * derived class) to the last (least derived class). The @c Idx + * parameter gives the 0-based index of the element stored at this + * point in the hierarchy; we use it to implement a constant-time + * get() operation. + */ + template + struct _Tuple_impl; + + /** + * Recursive tuple implementation. Here we store the @c Head element + * and derive from a @c Tuple_impl containing the remaining elements + * (which contains the @c Tail). + */ + template + struct _Tuple_impl<_Idx, _Head, _Tail...> + : public _Tuple_impl<_Idx + 1, _Tail...>, + private _Head_base<_Idx, _Head> + { + template friend class _Tuple_impl; + + typedef _Tuple_impl<_Idx + 1, _Tail...> _Inherited; + typedef _Head_base<_Idx, _Head> _Base; + + static constexpr _Head& + _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } + + static constexpr const _Head& + _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } + + static constexpr _Inherited& + _M_tail(_Tuple_impl& __t) noexcept { return __t; } + + static constexpr const _Inherited& + _M_tail(const _Tuple_impl& __t) noexcept { return __t; } + + constexpr _Tuple_impl() + : _Inherited(), _Base() { } + + explicit + constexpr _Tuple_impl(const _Head& __head, const _Tail&... __tail) + : _Inherited(__tail...), _Base(__head) { } + + template::type> + explicit + constexpr _Tuple_impl(_UHead&& __head, _UTail&&... __tail) + : _Inherited(std::forward<_UTail>(__tail)...), + _Base(std::forward<_UHead>(__head)) { } + + constexpr _Tuple_impl(const _Tuple_impl&) = default; + + constexpr + _Tuple_impl(_Tuple_impl&& __in) + noexcept(__and_, + is_nothrow_move_constructible<_Inherited>>::value) + : _Inherited(std::move(_M_tail(__in))), + _Base(std::forward<_Head>(_M_head(__in))) { } + + template + constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UElements...>& __in) + : _Inherited(_Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), + _Base(_Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } + + template + constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) + : _Inherited(std::move + (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), + _Base(std::forward<_UHead> + (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a), + _Base(__tag, __use_alloc<_Head>(__a)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Head& __head, const _Tail&... __tail) + : _Inherited(__tag, __a, __tail...), + _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } + + template::type> + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _UHead&& __head, _UTail&&... __tail) + : _Inherited(__tag, __a, std::forward<_UTail>(__tail)...), + _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), + std::forward<_UHead>(__head)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Tuple_impl& __in) + : _Inherited(__tag, __a, _M_tail(__in)), + _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _Tuple_impl&& __in) + : _Inherited(__tag, __a, std::move(_M_tail(__in))), + _Base(__use_alloc<_Head, _Alloc, _Head>(__a), + std::forward<_Head>(_M_head(__in))) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Tuple_impl<_Idx, _UElements...>& __in) + : _Inherited(__tag, __a, + _Tuple_impl<_Idx, _UElements...>::_M_tail(__in)), + _Base(__use_alloc<_Head, _Alloc, _Head>(__a), + _Tuple_impl<_Idx, _UElements...>::_M_head(__in)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _Tuple_impl<_Idx, _UHead, _UTails...>&& __in) + : _Inherited(__tag, __a, std::move + (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in))), + _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), + std::forward<_UHead> + (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in))) { } + + _Tuple_impl& + operator=(const _Tuple_impl& __in) + { + _M_head(*this) = _M_head(__in); + _M_tail(*this) = _M_tail(__in); + return *this; + } + + _Tuple_impl& + operator=(_Tuple_impl&& __in) + noexcept(__and_, + is_nothrow_move_assignable<_Inherited>>::value) + { + _M_head(*this) = std::forward<_Head>(_M_head(__in)); + _M_tail(*this) = std::move(_M_tail(__in)); + return *this; + } + + template + _Tuple_impl& + operator=(const _Tuple_impl<_Idx, _UElements...>& __in) + { + _M_head(*this) = _Tuple_impl<_Idx, _UElements...>::_M_head(__in); + _M_tail(*this) = _Tuple_impl<_Idx, _UElements...>::_M_tail(__in); + return *this; + } + + template + _Tuple_impl& + operator=(_Tuple_impl<_Idx, _UHead, _UTails...>&& __in) + { + _M_head(*this) = std::forward<_UHead> + (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_head(__in)); + _M_tail(*this) = std::move + (_Tuple_impl<_Idx, _UHead, _UTails...>::_M_tail(__in)); + return *this; + } + + protected: + void + _M_swap(_Tuple_impl& __in) + noexcept(__is_nothrow_swappable<_Head>::value + && noexcept(_M_tail(__in)._M_swap(_M_tail(__in)))) + { + using std::swap; + swap(_M_head(*this), _M_head(__in)); + _Inherited::_M_swap(_M_tail(__in)); + } + }; + + // Basis case of inheritance recursion. + template + struct _Tuple_impl<_Idx, _Head> + : private _Head_base<_Idx, _Head> + { + template friend class _Tuple_impl; + + typedef _Head_base<_Idx, _Head> _Base; + + static constexpr _Head& + _M_head(_Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } + + static constexpr const _Head& + _M_head(const _Tuple_impl& __t) noexcept { return _Base::_M_head(__t); } + + constexpr _Tuple_impl() + : _Base() { } + + explicit + constexpr _Tuple_impl(const _Head& __head) + : _Base(__head) { } + + template + explicit + constexpr _Tuple_impl(_UHead&& __head) + : _Base(std::forward<_UHead>(__head)) { } + + constexpr _Tuple_impl(const _Tuple_impl&) = default; + + constexpr + _Tuple_impl(_Tuple_impl&& __in) + noexcept(is_nothrow_move_constructible<_Head>::value) + : _Base(std::forward<_Head>(_M_head(__in))) { } + + template + constexpr _Tuple_impl(const _Tuple_impl<_Idx, _UHead>& __in) + : _Base(_Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } + + template + constexpr _Tuple_impl(_Tuple_impl<_Idx, _UHead>&& __in) + : _Base(std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) + { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a) + : _Base(__tag, __use_alloc<_Head>(__a)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Head& __head) + : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), __head) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _UHead&& __head) + : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), + std::forward<_UHead>(__head)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Tuple_impl& __in) + : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), _M_head(__in)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _Tuple_impl&& __in) + : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), + std::forward<_Head>(_M_head(__in))) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + const _Tuple_impl<_Idx, _UHead>& __in) + : _Base(__use_alloc<_Head, _Alloc, _Head>(__a), + _Tuple_impl<_Idx, _UHead>::_M_head(__in)) { } + + template + _Tuple_impl(allocator_arg_t __tag, const _Alloc& __a, + _Tuple_impl<_Idx, _UHead>&& __in) + : _Base(__use_alloc<_Head, _Alloc, _UHead>(__a), + std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in))) + { } + + _Tuple_impl& + operator=(const _Tuple_impl& __in) + { + _M_head(*this) = _M_head(__in); + return *this; + } + + _Tuple_impl& + operator=(_Tuple_impl&& __in) + noexcept(is_nothrow_move_assignable<_Head>::value) + { + _M_head(*this) = std::forward<_Head>(_M_head(__in)); + return *this; + } + + template + _Tuple_impl& + operator=(const _Tuple_impl<_Idx, _UHead>& __in) + { + _M_head(*this) = _Tuple_impl<_Idx, _UHead>::_M_head(__in); + return *this; + } + + template + _Tuple_impl& + operator=(_Tuple_impl<_Idx, _UHead>&& __in) + { + _M_head(*this) + = std::forward<_UHead>(_Tuple_impl<_Idx, _UHead>::_M_head(__in)); + return *this; + } + + protected: + void + _M_swap(_Tuple_impl& __in) + noexcept(__is_nothrow_swappable<_Head>::value) + { + using std::swap; + swap(_M_head(*this), _M_head(__in)); + } + }; + + // Concept utility functions, reused in conditionally-explicit + // constructors. + template + struct _TC + { + template + static constexpr bool _ConstructibleTuple() + { + return __and_...>::value; + } + + template + static constexpr bool _ImplicitlyConvertibleTuple() + { + return __and_...>::value; + } + + template + static constexpr bool _MoveConstructibleTuple() + { + return __and_...>::value; + } + + template + static constexpr bool _ImplicitlyMoveConvertibleTuple() + { + return __and_...>::value; + } + + template + static constexpr bool _NonNestedTuple() + { + return __and_<__not_, + typename remove_cv< + typename remove_reference<_SrcTuple>::type + >::type>>, + __not_>, + __not_> + >::value; + } + template + static constexpr bool _NotSameTuple() + { + return __not_, + typename remove_const< + typename remove_reference<_UElements...>::type + >::type>>::value; + } + }; + + template + struct _TC + { + template + static constexpr bool _ConstructibleTuple() + { + return false; + } + + template + static constexpr bool _ImplicitlyConvertibleTuple() + { + return false; + } + + template + static constexpr bool _MoveConstructibleTuple() + { + return false; + } + + template + static constexpr bool _ImplicitlyMoveConvertibleTuple() + { + return false; + } + + template + static constexpr bool _NonNestedTuple() + { + return true; + } + template + static constexpr bool _NotSameTuple() + { + return true; + } + }; + + /// Primary class template, tuple + template + class tuple : public _Tuple_impl<0, _Elements...> + { + typedef _Tuple_impl<0, _Elements...> _Inherited; + + // Used for constraining the default constructor so + // that it becomes dependent on the constraints. + template + struct _TC2 + { + static constexpr bool _DefaultConstructibleTuple() + { + return __and_...>::value; + } + static constexpr bool _ImplicitlyDefaultConstructibleTuple() + { + return __and_<__is_implicitly_default_constructible<_Elements>...> + ::value; + } + }; + + public: + template:: + _ImplicitlyDefaultConstructibleTuple(), + bool>::type = true> + constexpr tuple() + : _Inherited() { } + + template:: + _DefaultConstructibleTuple() + && + !_TC2<_Dummy>:: + _ImplicitlyDefaultConstructibleTuple(), + bool>::type = false> + explicit constexpr tuple() + : _Inherited() { } + + // Shortcut for the cases where constructors taking _Elements... + // need to be constrained. + template using _TCC = + _TC::value, + _Elements...>; + + template::template + _ConstructibleTuple<_Elements...>() + && _TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_Elements...>() + && (sizeof...(_Elements) >= 1), + bool>::type=true> + constexpr tuple(const _Elements&... __elements) + : _Inherited(__elements...) { } + + template::template + _ConstructibleTuple<_Elements...>() + && !_TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_Elements...>() + && (sizeof...(_Elements) >= 1), + bool>::type=false> + explicit constexpr tuple(const _Elements&... __elements) + : _Inherited(__elements...) { } + + // Shortcut for the cases where constructors taking _UElements... + // need to be constrained. + template using _TMC = + _TC<(sizeof...(_Elements) == sizeof...(_UElements)) + && (_TC<(sizeof...(_UElements)==1), _Elements...>:: + template _NotSameTuple<_UElements...>()), + _Elements...>; + + // Shortcut for the cases where constructors taking tuple<_UElements...> + // need to be constrained. + template using _TMCT = + _TC<(sizeof...(_Elements) == sizeof...(_UElements)) + && !is_same, + tuple<_UElements...>>::value, + _Elements...>; + + template::template + _MoveConstructibleTuple<_UElements...>() + && _TMC<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>() + && (sizeof...(_Elements) >= 1), + bool>::type=true> + constexpr tuple(_UElements&&... __elements) + : _Inherited(std::forward<_UElements>(__elements)...) { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && !_TMC<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>() + && (sizeof...(_Elements) >= 1), + bool>::type=false> + explicit constexpr tuple(_UElements&&... __elements) + : _Inherited(std::forward<_UElements>(__elements)...) { } + + constexpr tuple(const tuple&) = default; + + constexpr tuple(tuple&&) = default; + + // Shortcut for the cases where constructors taking tuples + // must avoid creating temporaries. + template using _TNTC = + _TC::value && sizeof...(_Elements) == 1, + _Elements...>; + + template::template + _ConstructibleTuple<_UElements...>() + && _TMCT<_UElements...>::template + _ImplicitlyConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&>(), + bool>::type=true> + constexpr tuple(const tuple<_UElements...>& __in) + : _Inherited(static_cast&>(__in)) + { } + + template::template + _ConstructibleTuple<_UElements...>() + && !_TMCT<_UElements...>::template + _ImplicitlyConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&>(), + bool>::type=false> + explicit constexpr tuple(const tuple<_UElements...>& __in) + : _Inherited(static_cast&>(__in)) + { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && _TMCT<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&&>(), + bool>::type=true> + constexpr tuple(tuple<_UElements...>&& __in) + : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && !_TMCT<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&&>(), + bool>::type=false> + explicit constexpr tuple(tuple<_UElements...>&& __in) + : _Inherited(static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) { } + + // Allocator-extended constructors. + + template + tuple(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a) { } + + template::template + _ConstructibleTuple<_Elements...>() + && _TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_Elements...>(), + bool>::type=true> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const _Elements&... __elements) + : _Inherited(__tag, __a, __elements...) { } + + template::template + _ConstructibleTuple<_Elements...>() + && !_TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_Elements...>(), + bool>::type=false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + const _Elements&... __elements) + : _Inherited(__tag, __a, __elements...) { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && _TMC<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>(), + bool>::type=true> + tuple(allocator_arg_t __tag, const _Alloc& __a, + _UElements&&... __elements) + : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) + { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && !_TMC<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>(), + bool>::type=false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + _UElements&&... __elements) + : _Inherited(__tag, __a, std::forward<_UElements>(__elements)...) + { } + + template + tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) + : _Inherited(__tag, __a, static_cast(__in)) { } + + template + tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) + : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } + + template::template + _ConstructibleTuple<_UElements...>() + && _TMCT<_UElements...>::template + _ImplicitlyConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&&>(), + bool>::type=true> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const tuple<_UElements...>& __in) + : _Inherited(__tag, __a, + static_cast&>(__in)) + { } + + template::template + _ConstructibleTuple<_UElements...>() + && !_TMCT<_UElements...>::template + _ImplicitlyConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&&>(), + bool>::type=false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + const tuple<_UElements...>& __in) + : _Inherited(__tag, __a, + static_cast&>(__in)) + { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && _TMCT<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&&>(), + bool>::type=true> + tuple(allocator_arg_t __tag, const _Alloc& __a, + tuple<_UElements...>&& __in) + : _Inherited(__tag, __a, + static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) + { } + + template::template + _MoveConstructibleTuple<_UElements...>() + && !_TMCT<_UElements...>::template + _ImplicitlyMoveConvertibleTuple<_UElements...>() + && _TNTC<_Dummy>::template + _NonNestedTuple&&>(), + bool>::type=false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + tuple<_UElements...>&& __in) + : _Inherited(__tag, __a, + static_cast<_Tuple_impl<0, _UElements...>&&>(__in)) + { } + + tuple& + operator=(const tuple& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + tuple& + operator=(tuple&& __in) + noexcept(is_nothrow_move_assignable<_Inherited>::value) + { + static_cast<_Inherited&>(*this) = std::move(__in); + return *this; + } + + template + typename + enable_if::type + operator=(const tuple<_UElements...>& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + template + typename + enable_if::type + operator=(tuple<_UElements...>&& __in) + { + static_cast<_Inherited&>(*this) = std::move(__in); + return *this; + } + + void + swap(tuple& __in) + noexcept(noexcept(__in._M_swap(__in))) + { _Inherited::_M_swap(__in); } + }; + +#if __cpp_deduction_guides >= 201606 + template + tuple(_UTypes...) -> tuple<_UTypes...>; + template + tuple(pair<_T1, _T2>) -> tuple<_T1, _T2>; + template + tuple(allocator_arg_t, _Alloc, _UTypes...) -> tuple<_UTypes...>; + template + tuple(allocator_arg_t, _Alloc, pair<_T1, _T2>) -> tuple<_T1, _T2>; + template + tuple(allocator_arg_t, _Alloc, tuple<_UTypes...>) -> tuple<_UTypes...>; +#endif + + // Explicit specialization, zero-element tuple. + template<> + class tuple<> + { + public: + void swap(tuple&) noexcept { /* no-op */ } + // We need the default since we're going to define no-op + // allocator constructors. + tuple() = default; + // No-op allocator constructors. + template + tuple(allocator_arg_t, const _Alloc&) { } + template + tuple(allocator_arg_t, const _Alloc&, const tuple&) { } + }; + + /// Partial specialization, 2-element tuple. + /// Includes construction and assignment from a pair. + template + class tuple<_T1, _T2> : public _Tuple_impl<0, _T1, _T2> + { + typedef _Tuple_impl<0, _T1, _T2> _Inherited; + + public: + template , + __is_implicitly_default_constructible<_U2>> + ::value, bool>::type = true> + + constexpr tuple() + : _Inherited() { } + + template , + is_default_constructible<_U2>, + __not_< + __and_<__is_implicitly_default_constructible<_U1>, + __is_implicitly_default_constructible<_U2>>>> + ::value, bool>::type = false> + + explicit constexpr tuple() + : _Inherited() { } + + // Shortcut for the cases where constructors taking _T1, _T2 + // need to be constrained. + template using _TCC = + _TC::value, _T1, _T2>; + + template::template + _ConstructibleTuple<_T1, _T2>() + && _TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_T1, _T2>(), + bool>::type = true> + constexpr tuple(const _T1& __a1, const _T2& __a2) + : _Inherited(__a1, __a2) { } + + template::template + _ConstructibleTuple<_T1, _T2>() + && !_TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_T1, _T2>(), + bool>::type = false> + explicit constexpr tuple(const _T1& __a1, const _T2& __a2) + : _Inherited(__a1, __a2) { } + + // Shortcut for the cases where constructors taking _U1, _U2 + // need to be constrained. + using _TMC = _TC; + + template() + && _TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>() + && !is_same::type, + allocator_arg_t>::value, + bool>::type = true> + constexpr tuple(_U1&& __a1, _U2&& __a2) + : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } + + template() + && !_TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>() + && !is_same::type, + allocator_arg_t>::value, + bool>::type = false> + explicit constexpr tuple(_U1&& __a1, _U2&& __a2) + : _Inherited(std::forward<_U1>(__a1), std::forward<_U2>(__a2)) { } + + constexpr tuple(const tuple&) = default; + + constexpr tuple(tuple&&) = default; + + template() + && _TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = true> + constexpr tuple(const tuple<_U1, _U2>& __in) + : _Inherited(static_cast&>(__in)) { } + + template() + && !_TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit constexpr tuple(const tuple<_U1, _U2>& __in) + : _Inherited(static_cast&>(__in)) { } + + template() + && _TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = true> + constexpr tuple(tuple<_U1, _U2>&& __in) + : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } + + template() + && !_TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit constexpr tuple(tuple<_U1, _U2>&& __in) + : _Inherited(static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) { } + + template() + && _TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = true> + constexpr tuple(const pair<_U1, _U2>& __in) + : _Inherited(__in.first, __in.second) { } + + template() + && !_TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit constexpr tuple(const pair<_U1, _U2>& __in) + : _Inherited(__in.first, __in.second) { } + + template() + && _TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = true> + constexpr tuple(pair<_U1, _U2>&& __in) + : _Inherited(std::forward<_U1>(__in.first), + std::forward<_U2>(__in.second)) { } + + template() + && !_TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit constexpr tuple(pair<_U1, _U2>&& __in) + : _Inherited(std::forward<_U1>(__in.first), + std::forward<_U2>(__in.second)) { } + + // Allocator-extended constructors. + + template + tuple(allocator_arg_t __tag, const _Alloc& __a) + : _Inherited(__tag, __a) { } + + template::template + _ConstructibleTuple<_T1, _T2>() + && _TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_T1, _T2>(), + bool>::type=true> + + tuple(allocator_arg_t __tag, const _Alloc& __a, + const _T1& __a1, const _T2& __a2) + : _Inherited(__tag, __a, __a1, __a2) { } + + template::template + _ConstructibleTuple<_T1, _T2>() + && !_TCC<_Dummy>::template + _ImplicitlyConvertibleTuple<_T1, _T2>(), + bool>::type=false> + + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + const _T1& __a1, const _T2& __a2) + : _Inherited(__tag, __a, __a1, __a2) { } + + template() + && _TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = true> + tuple(allocator_arg_t __tag, const _Alloc& __a, _U1&& __a1, _U2&& __a2) + : _Inherited(__tag, __a, std::forward<_U1>(__a1), + std::forward<_U2>(__a2)) { } + + template() + && !_TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + _U1&& __a1, _U2&& __a2) + : _Inherited(__tag, __a, std::forward<_U1>(__a1), + std::forward<_U2>(__a2)) { } + + template + tuple(allocator_arg_t __tag, const _Alloc& __a, const tuple& __in) + : _Inherited(__tag, __a, static_cast(__in)) { } + + template + tuple(allocator_arg_t __tag, const _Alloc& __a, tuple&& __in) + : _Inherited(__tag, __a, static_cast<_Inherited&&>(__in)) { } + + template() + && _TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = true> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const tuple<_U1, _U2>& __in) + : _Inherited(__tag, __a, + static_cast&>(__in)) + { } + + template() + && !_TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + const tuple<_U1, _U2>& __in) + : _Inherited(__tag, __a, + static_cast&>(__in)) + { } + + template() + && _TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = true> + tuple(allocator_arg_t __tag, const _Alloc& __a, tuple<_U1, _U2>&& __in) + : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) + { } + + template() + && !_TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + tuple<_U1, _U2>&& __in) + : _Inherited(__tag, __a, static_cast<_Tuple_impl<0, _U1, _U2>&&>(__in)) + { } + + template() + && _TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = true> + tuple(allocator_arg_t __tag, const _Alloc& __a, + const pair<_U1, _U2>& __in) + : _Inherited(__tag, __a, __in.first, __in.second) { } + + template() + && !_TMC::template + _ImplicitlyConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + const pair<_U1, _U2>& __in) + : _Inherited(__tag, __a, __in.first, __in.second) { } + + template() + && _TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = true> + tuple(allocator_arg_t __tag, const _Alloc& __a, pair<_U1, _U2>&& __in) + : _Inherited(__tag, __a, std::forward<_U1>(__in.first), + std::forward<_U2>(__in.second)) { } + + template() + && !_TMC::template + _ImplicitlyMoveConvertibleTuple<_U1, _U2>(), + bool>::type = false> + explicit tuple(allocator_arg_t __tag, const _Alloc& __a, + pair<_U1, _U2>&& __in) + : _Inherited(__tag, __a, std::forward<_U1>(__in.first), + std::forward<_U2>(__in.second)) { } + + tuple& + operator=(const tuple& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + tuple& + operator=(tuple&& __in) + noexcept(is_nothrow_move_assignable<_Inherited>::value) + { + static_cast<_Inherited&>(*this) = std::move(__in); + return *this; + } + + template + tuple& + operator=(const tuple<_U1, _U2>& __in) + { + static_cast<_Inherited&>(*this) = __in; + return *this; + } + + template + tuple& + operator=(tuple<_U1, _U2>&& __in) + { + static_cast<_Inherited&>(*this) = std::move(__in); + return *this; + } + + template + tuple& + operator=(const pair<_U1, _U2>& __in) + { + this->_M_head(*this) = __in.first; + this->_M_tail(*this)._M_head(*this) = __in.second; + return *this; + } + + template + tuple& + operator=(pair<_U1, _U2>&& __in) + { + this->_M_head(*this) = std::forward<_U1>(__in.first); + this->_M_tail(*this)._M_head(*this) = std::forward<_U2>(__in.second); + return *this; + } + + void + swap(tuple& __in) + noexcept(noexcept(__in._M_swap(__in))) + { _Inherited::_M_swap(__in); } + }; + + + /// class tuple_size + template + struct tuple_size> + : public integral_constant { }; + +#if __cplusplus > 201402L + template + inline constexpr size_t tuple_size_v = tuple_size<_Tp>::value; +#endif + + /** + * Recursive case for tuple_element: strip off the first element in + * the tuple and retrieve the (i-1)th element of the remaining tuple. + */ + template + struct tuple_element<__i, tuple<_Head, _Tail...> > + : tuple_element<__i - 1, tuple<_Tail...> > { }; + + /** + * Basis case for tuple_element: The first element is the one we're seeking. + */ + template + struct tuple_element<0, tuple<_Head, _Tail...> > + { + typedef _Head type; + }; + + /** + * Error case for tuple_element: invalid index. + */ + template + struct tuple_element<__i, tuple<>> + { + static_assert(__i < tuple_size>::value, + "tuple index is in range"); + }; + + template + constexpr _Head& + __get_helper(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + template + constexpr const _Head& + __get_helper(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + /// Return a reference to the ith element of a tuple. + template + constexpr __tuple_element_t<__i, tuple<_Elements...>>& + get(tuple<_Elements...>& __t) noexcept + { return std::__get_helper<__i>(__t); } + + /// Return a const reference to the ith element of a const tuple. + template + constexpr const __tuple_element_t<__i, tuple<_Elements...>>& + get(const tuple<_Elements...>& __t) noexcept + { return std::__get_helper<__i>(__t); } + + /// Return an rvalue reference to the ith element of a tuple rvalue. + template + constexpr __tuple_element_t<__i, tuple<_Elements...>>&& + get(tuple<_Elements...>&& __t) noexcept + { + typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; + return std::forward<__element_type&&>(std::get<__i>(__t)); + } + + /// Return a const rvalue reference to the ith element of a const tuple rvalue. + template + constexpr const __tuple_element_t<__i, tuple<_Elements...>>&& + get(const tuple<_Elements...>&& __t) noexcept + { + typedef __tuple_element_t<__i, tuple<_Elements...>> __element_type; + return std::forward(std::get<__i>(__t)); + } + +#if __cplusplus > 201103L + +#define __cpp_lib_tuples_by_type 201304 + + template + constexpr _Head& + __get_helper2(_Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + template + constexpr const _Head& + __get_helper2(const _Tuple_impl<__i, _Head, _Tail...>& __t) noexcept + { return _Tuple_impl<__i, _Head, _Tail...>::_M_head(__t); } + + /// Return a reference to the unique element of type _Tp of a tuple. + template + constexpr _Tp& + get(tuple<_Types...>& __t) noexcept + { return std::__get_helper2<_Tp>(__t); } + + /// Return a reference to the unique element of type _Tp of a tuple rvalue. + template + constexpr _Tp&& + get(tuple<_Types...>&& __t) noexcept + { return std::forward<_Tp&&>(std::__get_helper2<_Tp>(__t)); } + + /// Return a const reference to the unique element of type _Tp of a tuple. + template + constexpr const _Tp& + get(const tuple<_Types...>& __t) noexcept + { return std::__get_helper2<_Tp>(__t); } + + /// Return a const reference to the unique element of type _Tp of + /// a const tuple rvalue. + template + constexpr const _Tp&& + get(const tuple<_Types...>&& __t) noexcept + { return std::forward(std::__get_helper2<_Tp>(__t)); } +#endif + + // This class performs the comparison operations on tuples + template + struct __tuple_compare + { + static constexpr bool + __eq(const _Tp& __t, const _Up& __u) + { + return bool(std::get<__i>(__t) == std::get<__i>(__u)) + && __tuple_compare<_Tp, _Up, __i + 1, __size>::__eq(__t, __u); + } + + static constexpr bool + __less(const _Tp& __t, const _Up& __u) + { + return bool(std::get<__i>(__t) < std::get<__i>(__u)) + || (!bool(std::get<__i>(__u) < std::get<__i>(__t)) + && __tuple_compare<_Tp, _Up, __i + 1, __size>::__less(__t, __u)); + } + }; + + template + struct __tuple_compare<_Tp, _Up, __size, __size> + { + static constexpr bool + __eq(const _Tp&, const _Up&) { return true; } + + static constexpr bool + __less(const _Tp&, const _Up&) { return false; } + }; + + template + constexpr bool + operator==(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { + static_assert(sizeof...(_TElements) == sizeof...(_UElements), + "tuple objects can only be compared if they have equal sizes."); + using __compare = __tuple_compare, + tuple<_UElements...>, + 0, sizeof...(_TElements)>; + return __compare::__eq(__t, __u); + } + + template + constexpr bool + operator<(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { + static_assert(sizeof...(_TElements) == sizeof...(_UElements), + "tuple objects can only be compared if they have equal sizes."); + using __compare = __tuple_compare, + tuple<_UElements...>, + 0, sizeof...(_TElements)>; + return __compare::__less(__t, __u); + } + + template + constexpr bool + operator!=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__t == __u); } + + template + constexpr bool + operator>(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return __u < __t; } + + template + constexpr bool + operator<=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__u < __t); } + + template + constexpr bool + operator>=(const tuple<_TElements...>& __t, + const tuple<_UElements...>& __u) + { return !(__t < __u); } + + // NB: DR 705. + template + constexpr tuple::__type...> + make_tuple(_Elements&&... __args) + { + typedef tuple::__type...> + __result_type; + return __result_type(std::forward<_Elements>(__args)...); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2275. Why is forward_as_tuple not constexpr? + template + constexpr tuple<_Elements&&...> + forward_as_tuple(_Elements&&... __args) noexcept + { return tuple<_Elements&&...>(std::forward<_Elements>(__args)...); } + + template + struct __make_tuple_impl; + + template + struct __make_tuple_impl<_Idx, tuple<_Tp...>, _Tuple, _Nm> + : __make_tuple_impl<_Idx + 1, + tuple<_Tp..., __tuple_element_t<_Idx, _Tuple>>, + _Tuple, _Nm> + { }; + + template + struct __make_tuple_impl<_Nm, tuple<_Tp...>, _Tuple, _Nm> + { + typedef tuple<_Tp...> __type; + }; + + template + struct __do_make_tuple + : __make_tuple_impl<0, tuple<>, _Tuple, std::tuple_size<_Tuple>::value> + { }; + + // Returns the std::tuple equivalent of a tuple-like type. + template + struct __make_tuple + : public __do_make_tuple::type>::type> + { }; + + // Combines several std::tuple's into a single one. + template + struct __combine_tuples; + + template<> + struct __combine_tuples<> + { + typedef tuple<> __type; + }; + + template + struct __combine_tuples> + { + typedef tuple<_Ts...> __type; + }; + + template + struct __combine_tuples, tuple<_T2s...>, _Rem...> + { + typedef typename __combine_tuples, + _Rem...>::__type __type; + }; + + // Computes the result type of tuple_cat given a set of tuple-like types. + template + struct __tuple_cat_result + { + typedef typename __combine_tuples + ::__type...>::__type __type; + }; + + // Helper to determine the index set for the first tuple-like + // type of a given set. + template + struct __make_1st_indices; + + template<> + struct __make_1st_indices<> + { + typedef std::_Index_tuple<> __type; + }; + + template + struct __make_1st_indices<_Tp, _Tpls...> + { + typedef typename std::_Build_index_tuple::type>::value>::__type __type; + }; + + // Performs the actual concatenation by step-wise expanding tuple-like + // objects into the elements, which are finally forwarded into the + // result tuple. + template + struct __tuple_concater; + + template + struct __tuple_concater<_Ret, std::_Index_tuple<_Is...>, _Tp, _Tpls...> + { + template + static constexpr _Ret + _S_do(_Tp&& __tp, _Tpls&&... __tps, _Us&&... __us) + { + typedef typename __make_1st_indices<_Tpls...>::__type __idx; + typedef __tuple_concater<_Ret, __idx, _Tpls...> __next; + return __next::_S_do(std::forward<_Tpls>(__tps)..., + std::forward<_Us>(__us)..., + std::get<_Is>(std::forward<_Tp>(__tp))...); + } + }; + + template + struct __tuple_concater<_Ret, std::_Index_tuple<>> + { + template + static constexpr _Ret + _S_do(_Us&&... __us) + { + return _Ret(std::forward<_Us>(__us)...); + } + }; + + /// tuple_cat + template...>::value>::type> + constexpr auto + tuple_cat(_Tpls&&... __tpls) + -> typename __tuple_cat_result<_Tpls...>::__type + { + typedef typename __tuple_cat_result<_Tpls...>::__type __ret; + typedef typename __make_1st_indices<_Tpls...>::__type __idx; + typedef __tuple_concater<__ret, __idx, _Tpls...> __concater; + return __concater::_S_do(std::forward<_Tpls>(__tpls)...); + } + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2301. Why is tie not constexpr? + /// tie + template + constexpr tuple<_Elements&...> + tie(_Elements&... __args) noexcept + { return tuple<_Elements&...>(__args...); } + + /// swap + template + inline +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 + // Constrained free swap overload, see p0185r1 + typename enable_if<__and_<__is_swappable<_Elements>...>::value + >::type +#else + void +#endif + swap(tuple<_Elements...>& __x, tuple<_Elements...>& __y) + noexcept(noexcept(__x.swap(__y))) + { __x.swap(__y); } + +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 + template + typename enable_if...>::value>::type + swap(tuple<_Elements...>&, tuple<_Elements...>&) = delete; +#endif + + // A class (and instance) which can be used in 'tie' when an element + // of a tuple is not required. + // _GLIBCXX14_CONSTEXPR + // 2933. PR for LWG 2773 could be clearer + struct _Swallow_assign + { + template + _GLIBCXX14_CONSTEXPR const _Swallow_assign& + operator=(const _Tp&) const + { return *this; } + }; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2773. Making std::ignore constexpr + _GLIBCXX17_INLINE constexpr _Swallow_assign ignore{}; + + /// Partial specialization for tuples + template + struct uses_allocator, _Alloc> : true_type { }; + + // See stl_pair.h... + template + template + inline + pair<_T1, _T2>:: + pair(piecewise_construct_t, + tuple<_Args1...> __first, tuple<_Args2...> __second) + : pair(__first, __second, + typename _Build_index_tuple::__type(), + typename _Build_index_tuple::__type()) + { } + + template + template + inline + pair<_T1, _T2>:: + pair(tuple<_Args1...>& __tuple1, tuple<_Args2...>& __tuple2, + _Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>) + : first(std::forward<_Args1>(std::get<_Indexes1>(__tuple1))...), + second(std::forward<_Args2>(std::get<_Indexes2>(__tuple2))...) + { } + +#if __cplusplus > 201402L +# define __cpp_lib_apply 201603 + + template + constexpr decltype(auto) + __apply_impl(_Fn&& __f, _Tuple&& __t, index_sequence<_Idx...>) + { + return std::__invoke(std::forward<_Fn>(__f), + std::get<_Idx>(std::forward<_Tuple>(__t))...); + } + + template + constexpr decltype(auto) + apply(_Fn&& __f, _Tuple&& __t) + { + using _Indices = make_index_sequence>>; + return std::__apply_impl(std::forward<_Fn>(__f), + std::forward<_Tuple>(__t), + _Indices{}); + } + +#define __cpp_lib_make_from_tuple 201606 + + template + constexpr _Tp + __make_from_tuple_impl(_Tuple&& __t, index_sequence<_Idx...>) + { return _Tp(std::get<_Idx>(std::forward<_Tuple>(__t))...); } + + template + constexpr _Tp + make_from_tuple(_Tuple&& __t) + { + return __make_from_tuple_impl<_Tp>( + std::forward<_Tuple>(__t), + make_index_sequence>>{}); + } +#endif // C++17 + + /// @} + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++11 + +#endif // _GLIBCXX_TUPLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/type_traits b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/type_traits new file mode 100644 index 000000000..e03941799 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/type_traits @@ -0,0 +1,2941 @@ +// C++11 -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/type_traits + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_TYPE_TRAITS +#define _GLIBCXX_TYPE_TRAITS 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include + +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 + 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 __cplusplus > 201103L + +#define __cpp_lib_integral_constant_callable 201304 + + constexpr value_type operator()() const noexcept { return value; } +#endif + }; + + template + constexpr _Tp integral_constant<_Tp, __v>::value; + + /// The type used as a compile-time boolean with true value. + typedef integral_constant true_type; + + /// The type used as a compile-time boolean with false value. + typedef integral_constant false_type; + + template + using __bool_constant = integral_constant; + +#if __cplusplus > 201402L +# define __cpp_lib_bool_constant 201505 + template + using bool_constant = integral_constant; +#endif + + // Meta programming helper types. + + template + struct conditional; + + template + struct __or_; + + template<> + struct __or_<> + : public false_type + { }; + + template + struct __or_<_B1> + : public _B1 + { }; + + template + struct __or_<_B1, _B2> + : public conditional<_B1::value, _B1, _B2>::type + { }; + + template + struct __or_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type + { }; + + template + struct __and_; + + template<> + struct __and_<> + : public true_type + { }; + + template + struct __and_<_B1> + : public _B1 + { }; + + template + struct __and_<_B1, _B2> + : public conditional<_B1::value, _B2, _B1>::type + { }; + + template + struct __and_<_B1, _B2, _B3, _Bn...> + : public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type + { }; + + template + struct __not_ + : public __bool_constant + { }; + +#if __cplusplus >= 201703L + +#define __cpp_lib_logical_traits 201510 + + template + struct conjunction + : __and_<_Bn...> + { }; + + template + struct disjunction + : __or_<_Bn...> + { }; + + template + struct negation + : __not_<_Pp> + { }; + + template + inline constexpr bool conjunction_v = conjunction<_Bn...>::value; + + template + inline constexpr bool disjunction_v = disjunction<_Bn...>::value; + + template + inline constexpr bool negation_v = negation<_Pp>::value; + +#endif // C++17 + + // 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 + struct __success_type + { typedef _Tp type; }; + + struct __failure_type + { }; + + // Primary type categories. + + template + struct remove_cv; + + template + struct __is_void_helper + : public false_type { }; + + template<> + struct __is_void_helper + : public true_type { }; + + /// is_void + template + struct is_void + : public __is_void_helper::type>::type + { }; + + template + struct __is_integral_helper + : public false_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + +#ifdef _GLIBCXX_USE_WCHAR_T + template<> + struct __is_integral_helper + : public true_type { }; +#endif + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; + + // Conditionalizing on __STRICT_ANSI__ here will break any port that + // uses one of these types for size_t. +#if defined(__GLIBCXX_TYPE_INT_N_0) + template<> + struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_0> + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_1) + template<> + struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_1> + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_2) + template<> + struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_2> + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_3) + template<> + struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_3> + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; +#endif + + /// is_integral + template + struct is_integral + : public __is_integral_helper::type>::type + { }; + + template + struct __is_floating_point_helper + : public false_type { }; + + template<> + struct __is_floating_point_helper + : public true_type { }; + + template<> + struct __is_floating_point_helper + : public true_type { }; + + template<> + struct __is_floating_point_helper + : public true_type { }; + +#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) + template<> + struct __is_floating_point_helper<__float128> + : public true_type { }; +#endif + + /// is_floating_point + template + struct is_floating_point + : public __is_floating_point_helper::type>::type + { }; + + /// is_array + template + struct is_array + : public false_type { }; + + template + struct is_array<_Tp[_Size]> + : public true_type { }; + + template + struct is_array<_Tp[]> + : public true_type { }; + + template + struct __is_pointer_helper + : public false_type { }; + + template + struct __is_pointer_helper<_Tp*> + : public true_type { }; + + /// is_pointer + template + struct is_pointer + : public __is_pointer_helper::type>::type + { }; + + /// is_lvalue_reference + template + struct is_lvalue_reference + : public false_type { }; + + template + struct is_lvalue_reference<_Tp&> + : public true_type { }; + + /// is_rvalue_reference + template + struct is_rvalue_reference + : public false_type { }; + + template + struct is_rvalue_reference<_Tp&&> + : public true_type { }; + + template + struct is_function; + + template + struct __is_member_object_pointer_helper + : public false_type { }; + + template + struct __is_member_object_pointer_helper<_Tp _Cp::*> + : public integral_constant::value> { }; + + /// is_member_object_pointer + template + struct is_member_object_pointer + : public __is_member_object_pointer_helper< + typename remove_cv<_Tp>::type>::type + { }; + + template + struct __is_member_function_pointer_helper + : public false_type { }; + + template + struct __is_member_function_pointer_helper<_Tp _Cp::*> + : public integral_constant::value> { }; + + /// is_member_function_pointer + template + struct is_member_function_pointer + : public __is_member_function_pointer_helper< + typename remove_cv<_Tp>::type>::type + { }; + + /// is_enum + template + struct is_enum + : public integral_constant + { }; + + /// is_union + template + struct is_union + : public integral_constant + { }; + + /// is_class + template + struct is_class + : public integral_constant + { }; + + /// is_function + template + struct is_function + : public false_type { }; + + template + struct is_function<_Res(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) volatile && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) volatile && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes...) const volatile && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile & _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + + template + struct is_function<_Res(_ArgTypes......) const volatile && _GLIBCXX_NOEXCEPT_QUAL> + : public true_type { }; + +#define __cpp_lib_is_null_pointer 201309 + + template + struct __is_null_pointer_helper + : public false_type { }; + + template<> + struct __is_null_pointer_helper + : public true_type { }; + + /// is_null_pointer (LWG 2247). + template + struct is_null_pointer + : public __is_null_pointer_helper::type>::type + { }; + + /// __is_nullptr_t (extension). + template + struct __is_nullptr_t + : public is_null_pointer<_Tp> + { }; + + // Composite type categories. + + /// is_reference + template + struct is_reference + : public __or_, + is_rvalue_reference<_Tp>>::type + { }; + + /// is_arithmetic + template + struct is_arithmetic + : public __or_, is_floating_point<_Tp>>::type + { }; + + /// is_fundamental + template + struct is_fundamental + : public __or_, is_void<_Tp>, + is_null_pointer<_Tp>>::type + { }; + + /// is_object + template + struct is_object + : public __not_<__or_, is_reference<_Tp>, + is_void<_Tp>>>::type + { }; + + template + struct is_member_pointer; + + /// is_scalar + template + struct is_scalar + : public __or_, is_enum<_Tp>, is_pointer<_Tp>, + is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type + { }; + + /// is_compound + template + struct is_compound + : public integral_constant::value> { }; + + template + struct __is_member_pointer_helper + : public false_type { }; + + template + struct __is_member_pointer_helper<_Tp _Cp::*> + : public true_type { }; + + /// is_member_pointer + template + struct is_member_pointer + : public __is_member_pointer_helper::type>::type + { }; + + // Utility to detect referenceable types ([defns.referenceable]). + + template + struct __is_referenceable + : public __or_, is_reference<_Tp>>::type + { }; + + template + struct __is_referenceable<_Res(_Args...) _GLIBCXX_NOEXCEPT_QUAL> + : public true_type + { }; + + template + struct __is_referenceable<_Res(_Args......) _GLIBCXX_NOEXCEPT_QUAL> + : public true_type + { }; + + // Type properties. + + /// is_const + template + struct is_const + : public false_type { }; + + template + struct is_const<_Tp const> + : public true_type { }; + + /// is_volatile + template + struct is_volatile + : public false_type { }; + + template + struct is_volatile<_Tp volatile> + : public true_type { }; + + /// is_trivial + template + struct is_trivial + : public integral_constant + { }; + + // is_trivially_copyable + template + struct is_trivially_copyable + : public integral_constant + { }; + + /// is_standard_layout + template + struct is_standard_layout + : public integral_constant + { }; + + /// is_pod + // Could use is_standard_layout && is_trivial instead of the builtin. + template + struct is_pod + : public integral_constant + { }; + + /// is_literal_type + template + struct is_literal_type + : public integral_constant + { }; + + /// is_empty + template + struct is_empty + : public integral_constant + { }; + + /// is_polymorphic + template + struct is_polymorphic + : public integral_constant + { }; + +#if __cplusplus >= 201402L +#define __cpp_lib_is_final 201402L + /// is_final + template + struct is_final + : public integral_constant + { }; +#endif + + /// is_abstract + template + struct is_abstract + : public integral_constant + { }; + + template::value> + struct __is_signed_helper + : public false_type { }; + + template + struct __is_signed_helper<_Tp, true> + : public integral_constant + { }; + + /// is_signed + template + struct is_signed + : public __is_signed_helper<_Tp>::type + { }; + + /// is_unsigned + template + struct is_unsigned + : public __and_, __not_>> + { }; + + + // Destructible and constructible type properties. + + /** + * @brief Utility to simplify expressions used in unevaluated operands + * @ingroup utilities + */ + + template + _Up + __declval(int); + + template + _Tp + __declval(long); + + template + auto declval() noexcept -> decltype(__declval<_Tp>(0)); + + template + struct extent; + + template + struct remove_all_extents; + + template + struct __is_array_known_bounds + : public integral_constant::value > 0)> + { }; + + template + struct __is_array_unknown_bounds + : public __and_, __not_>> + { }; + + // 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().~_Tp())> + static true_type __test(int); + + template + static false_type __test(...); + }; + + template + struct __is_destructible_impl + : public __do_is_destructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template, + __is_array_unknown_bounds<_Tp>, + is_function<_Tp>>::value, + bool = __or_, is_scalar<_Tp>>::value> + struct __is_destructible_safe; + + template + struct __is_destructible_safe<_Tp, false, false> + : public __is_destructible_impl::type>::type + { }; + + template + struct __is_destructible_safe<_Tp, true, false> + : public false_type { }; + + template + struct __is_destructible_safe<_Tp, false, true> + : public true_type { }; + + /// is_destructible + template + 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 + static integral_constant().~_Tp())> + __test(int); + + template + static false_type __test(...); + }; + + template + struct __is_nt_destructible_impl + : public __do_is_nt_destructible_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template, + __is_array_unknown_bounds<_Tp>, + is_function<_Tp>>::value, + bool = __or_, is_scalar<_Tp>>::value> + struct __is_nt_destructible_safe; + + template + struct __is_nt_destructible_safe<_Tp, false, false> + : public __is_nt_destructible_impl::type>::type + { }; + + template + struct __is_nt_destructible_safe<_Tp, true, false> + : public false_type { }; + + template + struct __is_nt_destructible_safe<_Tp, false, true> + : public true_type { }; + + /// is_nothrow_destructible + template + struct is_nothrow_destructible + : public __is_nt_destructible_safe<_Tp>::type + { }; + + /// is_constructible + template + struct is_constructible + : public __bool_constant<__is_constructible(_Tp, _Args...)> + { }; + + /// is_default_constructible + template + struct is_default_constructible + : public is_constructible<_Tp>::type + { }; + + template::value> + struct __is_copy_constructible_impl; + + template + struct __is_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_copy_constructible_impl<_Tp, true> + : public is_constructible<_Tp, const _Tp&> + { }; + + /// is_copy_constructible + template + struct is_copy_constructible + : public __is_copy_constructible_impl<_Tp> + { }; + + template::value> + struct __is_move_constructible_impl; + + template + struct __is_move_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_move_constructible_impl<_Tp, true> + : public is_constructible<_Tp, _Tp&&> + { }; + + /// is_move_constructible + template + struct is_move_constructible + : public __is_move_constructible_impl<_Tp> + { }; + + template + struct __is_nt_default_constructible_atom + : public integral_constant + { }; + + template::value> + struct __is_nt_default_constructible_impl; + + template + struct __is_nt_default_constructible_impl<_Tp, true> + : public __and_<__is_array_known_bounds<_Tp>, + __is_nt_default_constructible_atom::type>> + { }; + + template + struct __is_nt_default_constructible_impl<_Tp, false> + : public __is_nt_default_constructible_atom<_Tp> + { }; + + /// is_nothrow_default_constructible + template + struct is_nothrow_default_constructible + : public __and_, + __is_nt_default_constructible_impl<_Tp>> + { }; + + template + struct __is_nt_constructible_impl + : public integral_constant()...))> + { }; + + template + struct __is_nt_constructible_impl<_Tp, _Arg> + : public integral_constant(declval<_Arg>()))> + { }; + + template + struct __is_nt_constructible_impl<_Tp> + : public is_nothrow_default_constructible<_Tp> + { }; + + /// is_nothrow_constructible + template + struct is_nothrow_constructible + : public __and_, + __is_nt_constructible_impl<_Tp, _Args...>> + { }; + + template::value> + struct __is_nothrow_copy_constructible_impl; + + template + struct __is_nothrow_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nothrow_copy_constructible_impl<_Tp, true> + : public is_nothrow_constructible<_Tp, const _Tp&> + { }; + + /// is_nothrow_copy_constructible + template + struct is_nothrow_copy_constructible + : public __is_nothrow_copy_constructible_impl<_Tp> + { }; + + template::value> + struct __is_nothrow_move_constructible_impl; + + template + struct __is_nothrow_move_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nothrow_move_constructible_impl<_Tp, true> + : public is_nothrow_constructible<_Tp, _Tp&&> + { }; + + /// is_nothrow_move_constructible + template + struct is_nothrow_move_constructible + : public __is_nothrow_move_constructible_impl<_Tp> + { }; + + /// is_assignable + template + struct is_assignable + : public __bool_constant<__is_assignable(_Tp, _Up)> + { }; + + template::value> + struct __is_copy_assignable_impl; + + template + struct __is_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_copy_assignable_impl<_Tp, true> + : public is_assignable<_Tp&, const _Tp&> + { }; + + /// is_copy_assignable + template + struct is_copy_assignable + : public __is_copy_assignable_impl<_Tp> + { }; + + template::value> + struct __is_move_assignable_impl; + + template + struct __is_move_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_move_assignable_impl<_Tp, true> + : public is_assignable<_Tp&, _Tp&&> + { }; + + /// is_move_assignable + template + struct is_move_assignable + : public __is_move_assignable_impl<_Tp> + { }; + + template + struct __is_nt_assignable_impl + : public integral_constant() = declval<_Up>())> + { }; + + /// is_nothrow_assignable + template + struct is_nothrow_assignable + : public __and_, + __is_nt_assignable_impl<_Tp, _Up>> + { }; + + template::value> + struct __is_nt_copy_assignable_impl; + + template + struct __is_nt_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nt_copy_assignable_impl<_Tp, true> + : public is_nothrow_assignable<_Tp&, const _Tp&> + { }; + + /// is_nothrow_copy_assignable + template + struct is_nothrow_copy_assignable + : public __is_nt_copy_assignable_impl<_Tp> + { }; + + template::value> + struct __is_nt_move_assignable_impl; + + template + struct __is_nt_move_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_nt_move_assignable_impl<_Tp, true> + : public is_nothrow_assignable<_Tp&, _Tp&&> + { }; + + /// is_nothrow_move_assignable + template + struct is_nothrow_move_assignable + : public __is_nt_move_assignable_impl<_Tp> + { }; + + /// is_trivially_constructible + template + struct is_trivially_constructible + : public __and_, __bool_constant< + __is_trivially_constructible(_Tp, _Args...)>>::type + { }; + + /// is_trivially_default_constructible + template + struct is_trivially_default_constructible + : public is_trivially_constructible<_Tp>::type + { }; + + struct __do_is_implicitly_default_constructible_impl + { + template + static void __helper(const _Tp&); + + template + static true_type __test(const _Tp&, + decltype(__helper({}))* = 0); + + static false_type __test(...); + }; + + template + struct __is_implicitly_default_constructible_impl + : public __do_is_implicitly_default_constructible_impl + { + typedef decltype(__test(declval<_Tp>())) type; + }; + + template + struct __is_implicitly_default_constructible_safe + : public __is_implicitly_default_constructible_impl<_Tp>::type + { }; + + template + struct __is_implicitly_default_constructible + : public __and_, + __is_implicitly_default_constructible_safe<_Tp>> + { }; + + /// is_trivially_copy_constructible + + template::value> + struct __is_trivially_copy_constructible_impl; + + template + struct __is_trivially_copy_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_copy_constructible_impl<_Tp, true> + : public __and_, + integral_constant> + { }; + + template + struct is_trivially_copy_constructible + : public __is_trivially_copy_constructible_impl<_Tp> + { }; + + /// is_trivially_move_constructible + + template::value> + struct __is_trivially_move_constructible_impl; + + template + struct __is_trivially_move_constructible_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_move_constructible_impl<_Tp, true> + : public __and_, + integral_constant> + { }; + + template + struct is_trivially_move_constructible + : public __is_trivially_move_constructible_impl<_Tp> + { }; + + /// is_trivially_assignable + template + struct is_trivially_assignable + : public __bool_constant<__is_trivially_assignable(_Tp, _Up)> + { }; + + /// is_trivially_copy_assignable + + template::value> + struct __is_trivially_copy_assignable_impl; + + template + struct __is_trivially_copy_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_copy_assignable_impl<_Tp, true> + : public __and_, + integral_constant> + { }; + + template + struct is_trivially_copy_assignable + : public __is_trivially_copy_assignable_impl<_Tp> + { }; + + /// is_trivially_move_assignable + + template::value> + struct __is_trivially_move_assignable_impl; + + template + struct __is_trivially_move_assignable_impl<_Tp, false> + : public false_type { }; + + template + struct __is_trivially_move_assignable_impl<_Tp, true> + : public __and_, + integral_constant> + { }; + + template + struct is_trivially_move_assignable + : public __is_trivially_move_assignable_impl<_Tp> + { }; + + /// is_trivially_destructible + template + struct is_trivially_destructible + : public __and_, integral_constant> + { }; + + + /// has_virtual_destructor + template + struct has_virtual_destructor + : public integral_constant + { }; + + + // type property queries. + + /// alignment_of + template + struct alignment_of + : public integral_constant { }; + + /// rank + template + struct rank + : public integral_constant { }; + + template + struct rank<_Tp[_Size]> + : public integral_constant::value> { }; + + template + struct rank<_Tp[]> + : public integral_constant::value> { }; + + /// extent + template + struct extent + : public integral_constant { }; + + template + struct extent<_Tp[_Size], _Uint> + : public integral_constant::value> + { }; + + template + struct extent<_Tp[], _Uint> + : public integral_constant::value> + { }; + + + // Type relations. + + /// is_same + template + struct is_same + : public false_type { }; + + template + struct is_same<_Tp, _Tp> + : public true_type { }; + + /// is_base_of + template + struct is_base_of + : public integral_constant + { }; + + template, is_function<_To>, + is_array<_To>>::value> + struct __is_convertible_helper + { typedef typename is_void<_To>::type type; }; + + template + class __is_convertible_helper<_From, _To, false> + { + template + static void __test_aux(_To1); + + template(std::declval<_From1>()))> + static true_type + __test(int); + + template + static false_type + __test(...); + + public: + typedef decltype(__test<_From, _To>(0)) type; + }; + + + /// is_convertible + template + struct is_convertible + : public __is_convertible_helper<_From, _To>::type + { }; + + + // Const-volatile modifications. + + /// remove_const + template + struct remove_const + { typedef _Tp type; }; + + template + struct remove_const<_Tp const> + { typedef _Tp type; }; + + /// remove_volatile + template + struct remove_volatile + { typedef _Tp type; }; + + template + struct remove_volatile<_Tp volatile> + { typedef _Tp type; }; + + /// remove_cv + template + struct remove_cv + { + typedef typename + remove_const::type>::type type; + }; + + /// add_const + template + struct add_const + { typedef _Tp const type; }; + + /// add_volatile + template + struct add_volatile + { typedef _Tp volatile type; }; + + /// add_cv + template + struct add_cv + { + typedef typename + add_const::type>::type type; + }; + +#if __cplusplus > 201103L + +#define __cpp_lib_transformation_trait_aliases 201304 + + /// Alias template for remove_const + template + using remove_const_t = typename remove_const<_Tp>::type; + + /// Alias template for remove_volatile + template + using remove_volatile_t = typename remove_volatile<_Tp>::type; + + /// Alias template for remove_cv + template + using remove_cv_t = typename remove_cv<_Tp>::type; + + /// Alias template for add_const + template + using add_const_t = typename add_const<_Tp>::type; + + /// Alias template for add_volatile + template + using add_volatile_t = typename add_volatile<_Tp>::type; + + /// Alias template for add_cv + template + using add_cv_t = typename add_cv<_Tp>::type; +#endif + + // Reference transformations. + + /// remove_reference + template + struct remove_reference + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&> + { typedef _Tp type; }; + + template + struct remove_reference<_Tp&&> + { typedef _Tp type; }; + + template::value> + struct __add_lvalue_reference_helper + { typedef _Tp type; }; + + template + struct __add_lvalue_reference_helper<_Tp, true> + { typedef _Tp& type; }; + + /// add_lvalue_reference + template + struct add_lvalue_reference + : public __add_lvalue_reference_helper<_Tp> + { }; + + template::value> + struct __add_rvalue_reference_helper + { typedef _Tp type; }; + + template + struct __add_rvalue_reference_helper<_Tp, true> + { typedef _Tp&& type; }; + + /// add_rvalue_reference + template + struct add_rvalue_reference + : public __add_rvalue_reference_helper<_Tp> + { }; + +#if __cplusplus > 201103L + /// Alias template for remove_reference + template + using remove_reference_t = typename remove_reference<_Tp>::type; + + /// Alias template for add_lvalue_reference + template + using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; + + /// Alias template for add_rvalue_reference + template + using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; +#endif + + // Sign modifications. + + // Utility for constructing identically cv-qualified types. + template + struct __cv_selector; + + template + struct __cv_selector<_Unqualified, false, false> + { typedef _Unqualified __type; }; + + template + struct __cv_selector<_Unqualified, false, true> + { typedef volatile _Unqualified __type; }; + + template + struct __cv_selector<_Unqualified, true, false> + { typedef const _Unqualified __type; }; + + template + struct __cv_selector<_Unqualified, true, true> + { typedef const volatile _Unqualified __type; }; + + template::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 + struct __make_unsigned + { typedef _Tp __type; }; + + template<> + struct __make_unsigned + { typedef unsigned char __type; }; + + template<> + struct __make_unsigned + { typedef unsigned char __type; }; + + template<> + struct __make_unsigned + { typedef unsigned short __type; }; + + template<> + struct __make_unsigned + { typedef unsigned int __type; }; + + template<> + struct __make_unsigned + { typedef unsigned long __type; }; + + template<> + struct __make_unsigned + { typedef unsigned long long __type; }; + +#if defined(__GLIBCXX_TYPE_INT_N_0) + template<> + struct __make_unsigned<__GLIBCXX_TYPE_INT_N_0> + { typedef unsigned __GLIBCXX_TYPE_INT_N_0 __type; }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_1) + template<> + struct __make_unsigned<__GLIBCXX_TYPE_INT_N_1> + { typedef unsigned __GLIBCXX_TYPE_INT_N_1 __type; }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_2) + template<> + struct __make_unsigned<__GLIBCXX_TYPE_INT_N_2> + { typedef unsigned __GLIBCXX_TYPE_INT_N_2 __type; }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_3) + template<> + struct __make_unsigned<__GLIBCXX_TYPE_INT_N_3> + { typedef unsigned __GLIBCXX_TYPE_INT_N_3 __type; }; +#endif + + // Select between integral and enum: not possible to be both. + template::value, + bool _IsEnum = is_enum<_Tp>::value> + class __make_unsigned_selector; + + template + class __make_unsigned_selector<_Tp, true, false> + { + typedef __make_unsigned::type> __unsignedt; + typedef typename __unsignedt::__type __unsigned_type; + typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; + + public: + typedef typename __cv_unsigned::__type __type; + }; + + template + class __make_unsigned_selector<_Tp, false, true> + { + // With -fshort-enums, an enum may be as small as a char. + typedef unsigned char __smallest; + static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); + static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short); + static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int); + static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long); + typedef conditional<__b3, unsigned long, unsigned long long> __cond3; + typedef typename __cond3::type __cond3_type; + typedef conditional<__b2, unsigned int, __cond3_type> __cond2; + typedef typename __cond2::type __cond2_type; + typedef conditional<__b1, unsigned short, __cond2_type> __cond1; + typedef typename __cond1::type __cond1_type; + + typedef typename conditional<__b0, __smallest, __cond1_type>::type + __unsigned_type; + typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; + + public: + typedef typename __cv_unsigned::__type __type; + }; + + // Given an integral/enum type, return the corresponding unsigned + // integer type. + // Primary template. + /// make_unsigned + template + struct make_unsigned + { typedef typename __make_unsigned_selector<_Tp>::__type type; }; + + // Integral, but don't define. + template<> + struct make_unsigned; + + + // Utility for finding the signed versions of unsigned integral types. + template + struct __make_signed + { typedef _Tp __type; }; + + template<> + struct __make_signed + { typedef signed char __type; }; + + template<> + struct __make_signed + { typedef signed char __type; }; + + template<> + struct __make_signed + { typedef signed short __type; }; + + template<> + struct __make_signed + { typedef signed int __type; }; + + template<> + struct __make_signed + { typedef signed long __type; }; + + template<> + struct __make_signed + { typedef signed long long __type; }; + +#if defined(__GLIBCXX_TYPE_INT_N_0) + template<> + struct __make_signed + { typedef __GLIBCXX_TYPE_INT_N_0 __type; }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_1) + template<> + struct __make_signed + { typedef __GLIBCXX_TYPE_INT_N_1 __type; }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_2) + template<> + struct __make_signed + { typedef __GLIBCXX_TYPE_INT_N_2 __type; }; +#endif +#if defined(__GLIBCXX_TYPE_INT_N_3) + template<> + struct __make_signed + { typedef __GLIBCXX_TYPE_INT_N_3 __type; }; +#endif + + // Select between integral and enum: not possible to be both. + template::value, + bool _IsEnum = is_enum<_Tp>::value> + class __make_signed_selector; + + template + class __make_signed_selector<_Tp, true, false> + { + typedef __make_signed::type> __signedt; + typedef typename __signedt::__type __signed_type; + typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; + + public: + typedef typename __cv_signed::__type __type; + }; + + template + class __make_signed_selector<_Tp, false, true> + { + typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; + + public: + typedef typename __make_signed_selector<__unsigned_type>::__type __type; + }; + + // Given an integral/enum type, return the corresponding signed + // integer type. + // Primary template. + /// make_signed + template + struct make_signed + { typedef typename __make_signed_selector<_Tp>::__type type; }; + + // Integral, but don't define. + template<> + struct make_signed; + +#if __cplusplus > 201103L + /// Alias template for make_signed + template + using make_signed_t = typename make_signed<_Tp>::type; + + /// Alias template for make_unsigned + template + using make_unsigned_t = typename make_unsigned<_Tp>::type; +#endif + + // Array modifications. + + /// remove_extent + template + struct remove_extent + { typedef _Tp type; }; + + template + struct remove_extent<_Tp[_Size]> + { typedef _Tp type; }; + + template + struct remove_extent<_Tp[]> + { typedef _Tp type; }; + + /// remove_all_extents + template + struct remove_all_extents + { typedef _Tp type; }; + + template + struct remove_all_extents<_Tp[_Size]> + { typedef typename remove_all_extents<_Tp>::type type; }; + + template + struct remove_all_extents<_Tp[]> + { typedef typename remove_all_extents<_Tp>::type type; }; + +#if __cplusplus > 201103L + /// Alias template for remove_extent + template + using remove_extent_t = typename remove_extent<_Tp>::type; + + /// Alias template for remove_all_extents + template + using remove_all_extents_t = typename remove_all_extents<_Tp>::type; +#endif + + // Pointer modifications. + + template + struct __remove_pointer_helper + { typedef _Tp type; }; + + template + struct __remove_pointer_helper<_Tp, _Up*> + { typedef _Up type; }; + + /// remove_pointer + template + struct remove_pointer + : public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> + { }; + + /// add_pointer + template, + is_void<_Tp>>::value> + struct __add_pointer_helper + { typedef _Tp type; }; + + template + struct __add_pointer_helper<_Tp, true> + { typedef typename remove_reference<_Tp>::type* type; }; + + template + struct add_pointer + : public __add_pointer_helper<_Tp> + { }; + +#if __cplusplus > 201103L + /// Alias template for remove_pointer + template + using remove_pointer_t = typename remove_pointer<_Tp>::type; + + /// Alias template for add_pointer + template + using add_pointer_t = typename add_pointer<_Tp>::type; +#endif + + template + 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::__type)> + struct aligned_storage + { + union type + { + unsigned char __data[_Len]; + struct __attribute__((__aligned__((_Align)))) { } __align; + }; + }; + + template + struct __strictest_alignment + { + static const size_t _S_alignment = 0; + static const size_t _S_size = 0; + }; + + template + 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 + 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 + 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::value, + bool _IsFunction = is_function<_Up>::value> + struct __decay_selector; + + // NB: DR 705. + template + struct __decay_selector<_Up, false, false> + { typedef typename remove_cv<_Up>::type __type; }; + + template + struct __decay_selector<_Up, true, false> + { typedef typename remove_extent<_Up>::type* __type; }; + + template + struct __decay_selector<_Up, false, true> + { typedef typename add_pointer<_Up>::type __type; }; + + /// decay + template + class decay + { + typedef typename remove_reference<_Tp>::type __remove_type; + + public: + typedef typename __decay_selector<__remove_type>::__type type; + }; + + template + class reference_wrapper; + + // Helper which adds a reference to a type when given a reference_wrapper + template + struct __strip_reference_wrapper + { + typedef _Tp __type; + }; + + template + struct __strip_reference_wrapper > + { + typedef _Tp& __type; + }; + + template + 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 + struct enable_if + { }; + + // Partial specialization for true. + template + struct enable_if + { typedef _Tp type; }; + + template + using _Require = typename enable_if<__and_<_Cond...>::value>::type; + + // Primary template. + /// Define a member typedef @c type to one of two argument types. + template + struct conditional + { typedef _Iftrue type; }; + + // Partial specialization for false. + template + struct conditional + { typedef _Iffalse type; }; + + /// common_type + template + struct common_type; + + // Sfinae-friendly common_type implementation: + + struct __do_common_type_impl + { + template + static __success_type() + : std::declval<_Up>())>::type> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __common_type_impl + : private __do_common_type_impl + { + typedef decltype(_S_test<_Tp, _Up>(0)) type; + }; + + struct __do_member_type_wrapper + { + template + static __success_type _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __member_type_wrapper + : private __do_member_type_wrapper + { + typedef decltype(_S_test<_Tp>(0)) type; + }; + + template + struct __expanded_common_type_wrapper + { + typedef common_type type; + }; + + template + struct __expanded_common_type_wrapper<__failure_type, _Args...> + { typedef __failure_type type; }; + + template<> + struct common_type<> + { }; + + template + struct common_type<_Tp> + : common_type<_Tp, _Tp> + { }; + + template + struct common_type<_Tp, _Up> + : public __common_type_impl<_Tp, _Up>::type + { }; + + template + struct common_type<_Tp, _Up, _Vp...> + : public __expanded_common_type_wrapper>::type, _Vp...>::type + { }; + + /// The underlying type of an enum. + template + struct underlying_type + { + typedef __underlying_type(_Tp) type; + }; + + template + struct __declval_protector + { + static const bool __stop = false; + }; + + template + auto declval() noexcept -> decltype(__declval<_Tp>(0)) + { + static_assert(__declval_protector<_Tp>::__stop, + "declval() must not be used!"); + return __declval<_Tp>(0); + } + + // 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 integer type with the smallest rank that has the + // same size and signedness. + // Use the partial specialization for enumeration types to do that, + // which means these explicit specializations must be defined after + // std::conditional has been defined. + +#if defined(_GLIBCXX_USE_WCHAR_T) + template<> + struct __make_unsigned + { + using __type + = typename __make_unsigned_selector::__type; + }; + + template<> + struct __make_signed + { + using __type + = typename __make_signed_selector::__type; + }; +#endif + + template<> + struct __make_unsigned + { + using __type + = typename __make_unsigned_selector::__type; + }; + + template<> + struct __make_signed + { + using __type + = typename __make_signed_selector::__type; + }; + + template<> + struct __make_unsigned + { + using __type + = typename __make_unsigned_selector::__type; + }; + + template<> + struct __make_signed + { + using __type + = typename __make_signed_selector::__type; + }; + + + /// result_of + template + 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 + struct __result_of_success : __success_type<_Tp> + { using __invoke_type = _Tag; }; + + // [func.require] paragraph 1 bullet 1: + struct __result_of_memfun_ref_impl + { + template + static __result_of_success().*std::declval<_Fp>())(std::declval<_Args>()...) + ), __invoke_memfun_ref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + 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 + static __result_of_success()).*std::declval<_Fp>())(std::declval<_Args>()...) + ), __invoke_memfun_deref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + 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 + static __result_of_success().*std::declval<_Fp>() + ), __invoke_memobj_ref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + 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 + static __result_of_success()).*std::declval<_Fp>() + ), __invoke_memobj_deref> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_memobj_deref + : private __result_of_memobj_deref_impl + { + typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; + }; + + template + struct __result_of_memobj; + + template + struct __result_of_memobj<_Res _Class::*, _Arg> + { + typedef typename remove_cv::type>::type _Argval; + typedef _Res _Class::* _MemPtr; + typedef typename conditional<__or_, + is_base_of<_Class, _Argval>>::value, + __result_of_memobj_ref<_MemPtr, _Arg>, + __result_of_memobj_deref<_MemPtr, _Arg> + >::type::type type; + }; + + template + struct __result_of_memfun; + + template + struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> + { + typedef typename remove_cv::type>::type _Argval; + typedef _Res _Class::* _MemPtr; + typedef typename conditional<__or_, + 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::type> + struct __inv_unwrap + { + using type = _Tp; + }; + + template + struct __inv_unwrap<_Tp, reference_wrapper<_Up>> + { + using type = _Up&; + }; + + template + struct __result_of_impl + { + typedef __failure_type type; + }; + + template + struct __result_of_impl + : public __result_of_memobj::type, + typename __inv_unwrap<_Arg>::type> + { }; + + template + struct __result_of_impl + : public __result_of_memfun::type, + typename __inv_unwrap<_Arg>::type, _Args...> + { }; + + // [func.require] paragraph 1 bullet 5: + struct __result_of_other_impl + { + template + static __result_of_success()(std::declval<_Args>()...) + ), __invoke_other> _S_test(int); + + template + static __failure_type _S_test(...); + }; + + template + struct __result_of_impl + : private __result_of_other_impl + { + typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; + }; + + // __invoke_result (std::invoke_result for C++11) + template + 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 + struct result_of<_Functor(_ArgTypes...)> + : public __invoke_result<_Functor, _ArgTypes...> + { }; + +#if __cplusplus >= 201402L + /// Alias template for aligned_storage + template::__type)> + using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; + + template + using aligned_union_t = typename aligned_union<_Len, _Types...>::type; + + /// Alias template for decay + template + using decay_t = typename decay<_Tp>::type; + + /// Alias template for enable_if + template + using enable_if_t = typename enable_if<_Cond, _Tp>::type; + + /// Alias template for conditional + template + using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; + + /// Alias template for common_type + template + using common_type_t = typename common_type<_Tp...>::type; + + /// Alias template for underlying_type + template + using underlying_type_t = typename underlying_type<_Tp>::type; + + /// Alias template for result_of + template + using result_of_t = typename result_of<_Tp>::type; +#endif // C++14 + + // __enable_if_t (std::enable_if_t for C++11) + template + using __enable_if_t = typename enable_if<_Cond, _Tp>::type; + + // __void_t (std::void_t for C++11) + template using __void_t = void; + +#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++11 +#define __cpp_lib_void_t 201411 + /// A metafunction that always yields void, used for detecting valid types. + template using void_t = void; +#endif + + /// Implementation of the detection idiom (negative case). + template class _Op, typename... _Args> + struct __detector + { + using value_t = false_type; + using type = _Default; + }; + + /// Implementation of the detection idiom (positive case). + template 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 class _Op, + typename... _Args> + using __detected_or = __detector<_Default, void, _Op, _Args...>; + + // _Op<_Args...> if that is a valid type, otherwise _Default. + template 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> \ + struct __has_##_NTYPE \ + : false_type \ + { }; \ + template \ + struct __has_##_NTYPE<_Tp, __void_t> \ + : true_type \ + { }; + + template + struct __is_swappable; + + template + struct __is_nothrow_swappable; + + template + class tuple; + + template + struct __is_tuple_like_impl : false_type + { }; + + template + struct __is_tuple_like_impl> : true_type + { }; + + // Internal type trait that allows us to sfinae-protect tuple_cat. + template + struct __is_tuple_like + : public __is_tuple_like_impl::type>::type>::type + { }; + + template + 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_assignable<_Tp>>::value); + + template + 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(), std::declval<_Tp&>()))> + static true_type __test(int); + + template + static false_type __test(...); + }; + + struct __do_is_nothrow_swappable_impl + { + template + static __bool_constant< + noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) + > __test(int); + + template + static false_type __test(...); + }; + + } // namespace __swappable_details + + template + struct __is_swappable_impl + : public __swappable_details::__do_is_swappable_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template + struct __is_nothrow_swappable_impl + : public __swappable_details::__do_is_nothrow_swappable_impl + { + typedef decltype(__test<_Tp>(0)) type; + }; + + template + struct __is_swappable + : public __is_swappable_impl<_Tp>::type + { }; + + template + struct __is_nothrow_swappable + : public __is_nothrow_swappable_impl<_Tp>::type + { }; + +#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 +#define __cpp_lib_is_swappable 201603 + /// Metafunctions used for detecting swappable types: p0185r1 + + /// is_swappable + template + struct is_swappable + : public __is_swappable_impl<_Tp>::type + { }; + + /// is_nothrow_swappable + template + struct is_nothrow_swappable + : public __is_nothrow_swappable_impl<_Tp>::type + { }; + +#if __cplusplus >= 201402L + /// is_swappable_v + template + _GLIBCXX17_INLINE constexpr bool is_swappable_v = + is_swappable<_Tp>::value; + + /// is_nothrow_swappable_v + template + _GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_v = + is_nothrow_swappable<_Tp>::value; +#endif // __cplusplus >= 201402L + + namespace __swappable_with_details { + using std::swap; + + struct __do_is_swappable_with_impl + { + template(), std::declval<_Up>())), + typename + = decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> + static true_type __test(int); + + template + static false_type __test(...); + }; + + struct __do_is_nothrow_swappable_with_impl + { + template + static __bool_constant< + noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) + && + noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) + > __test(int); + + template + static false_type __test(...); + }; + + } // namespace __swappable_with_details + + template + 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 + struct __is_swappable_with_impl<_Tp&, _Tp&> + : public __swappable_details::__do_is_swappable_impl + { + typedef decltype(__test<_Tp&>(0)) type; + }; + + template + 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 + 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 + struct is_swappable_with + : public __is_swappable_with_impl<_Tp, _Up>::type + { }; + + /// is_nothrow_swappable_with + template + struct is_nothrow_swappable_with + : public __is_nothrow_swappable_with_impl<_Tp, _Up>::type + { }; + +#if __cplusplus >= 201402L + /// is_swappable_with_v + template + _GLIBCXX17_INLINE constexpr bool is_swappable_with_v = + is_swappable_with<_Tp, _Up>::value; + + /// is_nothrow_swappable_with_v + template + _GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_with_v = + is_nothrow_swappable_with<_Tp, _Up>::value; +#endif // __cplusplus >= 201402L + +#endif// c++1z or gnu++11 + + // __is_invocable (std::is_invocable for C++11) + + template + struct __is_invocable_impl : false_type { }; + + template + struct __is_invocable_impl<_Result, _Ret, __void_t> + : __or_, is_convertible>::type + { }; + + template + struct __is_invocable + : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type + { }; + + template + 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 + constexpr bool __call_is_nt(__invoke_memfun_deref) + { + return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( + std::declval<_Args>()...)); + } + + template + constexpr bool __call_is_nt(__invoke_memobj_ref) + { + using _Up = typename __inv_unwrap<_Tp>::type; + return noexcept(std::declval<_Up>().*std::declval<_Fn>()); + } + + template + constexpr bool __call_is_nt(__invoke_memobj_deref) + { + return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); + } + + template + constexpr bool __call_is_nt(__invoke_other) + { + return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); + } + + template + struct __call_is_nothrow + : __bool_constant< + std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{}) + > + { }; + + template + using __call_is_nothrow_ + = __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>; + + // __is_nothrow_invocable (std::is_nothrow_invocable for C++11) + template + 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 __cplusplus >= 201703L +# define __cpp_lib_is_invocable 201703 + + /// std::invoke_result + template + struct invoke_result + : public __invoke_result<_Functor, _ArgTypes...> + { }; + + /// std::invoke_result_t + template + using invoke_result_t = typename invoke_result<_Fn, _Args...>::type; + + /// std::is_invocable + template + struct is_invocable + : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type + { }; + + /// std::is_invocable_r + template + struct is_invocable_r + : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type + { }; + + /// std::is_nothrow_invocable + template + struct is_nothrow_invocable + : __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>, + __call_is_nothrow_<_Fn, _ArgTypes...>>::type + { }; + + template + struct __is_nt_invocable_impl : false_type { }; + + template + struct __is_nt_invocable_impl<_Result, _Ret, + __void_t> + : __or_, + __and_, + is_nothrow_constructible<_Ret, typename _Result::type>>> + { }; + + /// std::is_nothrow_invocable_r + template + 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 + inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value; + + /// std::is_nothrow_invocable_v + template + inline constexpr bool is_nothrow_invocable_v + = is_nothrow_invocable<_Fn, _Args...>::value; + + /// std::is_invocable_r_v + template + inline constexpr bool is_invocable_r_v + = is_invocable_r<_Fn, _Args...>::value; + + /// std::is_nothrow_invocable_r_v + template + inline constexpr bool is_nothrow_invocable_r_v + = is_nothrow_invocable_r<_Fn, _Args...>::value; +#endif // C++17 + +#if __cplusplus >= 201703L +# define __cpp_lib_type_trait_variable_templates 201510L +template + inline constexpr bool is_void_v = is_void<_Tp>::value; +template + inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; +template + inline constexpr bool is_integral_v = is_integral<_Tp>::value; +template + inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; +template + inline constexpr bool is_array_v = is_array<_Tp>::value; +template + inline constexpr bool is_pointer_v = is_pointer<_Tp>::value; +template + inline constexpr bool is_lvalue_reference_v = + is_lvalue_reference<_Tp>::value; +template + inline constexpr bool is_rvalue_reference_v = + is_rvalue_reference<_Tp>::value; +template + inline constexpr bool is_member_object_pointer_v = + is_member_object_pointer<_Tp>::value; +template + inline constexpr bool is_member_function_pointer_v = + is_member_function_pointer<_Tp>::value; +template + inline constexpr bool is_enum_v = is_enum<_Tp>::value; +template + inline constexpr bool is_union_v = is_union<_Tp>::value; +template + inline constexpr bool is_class_v = is_class<_Tp>::value; +template + inline constexpr bool is_function_v = is_function<_Tp>::value; +template + inline constexpr bool is_reference_v = is_reference<_Tp>::value; +template + inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; +template + inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; +template + inline constexpr bool is_object_v = is_object<_Tp>::value; +template + inline constexpr bool is_scalar_v = is_scalar<_Tp>::value; +template + inline constexpr bool is_compound_v = is_compound<_Tp>::value; +template + inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; +template + inline constexpr bool is_const_v = is_const<_Tp>::value; +template + inline constexpr bool is_volatile_v = is_volatile<_Tp>::value; +template + inline constexpr bool is_trivial_v = is_trivial<_Tp>::value; +template + inline constexpr bool is_trivially_copyable_v = + is_trivially_copyable<_Tp>::value; +template + inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value; +template + inline constexpr bool is_pod_v = is_pod<_Tp>::value; +template + inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value; +template + inline constexpr bool is_empty_v = is_empty<_Tp>::value; +template + inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value; +template + inline constexpr bool is_abstract_v = is_abstract<_Tp>::value; +template + inline constexpr bool is_final_v = is_final<_Tp>::value; +template + inline constexpr bool is_signed_v = is_signed<_Tp>::value; +template + inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; +template + inline constexpr bool is_constructible_v = + is_constructible<_Tp, _Args...>::value; +template + inline constexpr bool is_default_constructible_v = + is_default_constructible<_Tp>::value; +template + inline constexpr bool is_copy_constructible_v = + is_copy_constructible<_Tp>::value; +template + inline constexpr bool is_move_constructible_v = + is_move_constructible<_Tp>::value; +template + inline constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value; +template + inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; +template + inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; +template + inline constexpr bool is_destructible_v = is_destructible<_Tp>::value; +template + inline constexpr bool is_trivially_constructible_v = + is_trivially_constructible<_Tp, _Args...>::value; +template + inline constexpr bool is_trivially_default_constructible_v = + is_trivially_default_constructible<_Tp>::value; +template + inline constexpr bool is_trivially_copy_constructible_v = + is_trivially_copy_constructible<_Tp>::value; +template + inline constexpr bool is_trivially_move_constructible_v = + is_trivially_move_constructible<_Tp>::value; +template + inline constexpr bool is_trivially_assignable_v = + is_trivially_assignable<_Tp, _Up>::value; +template + inline constexpr bool is_trivially_copy_assignable_v = + is_trivially_copy_assignable<_Tp>::value; +template + inline constexpr bool is_trivially_move_assignable_v = + is_trivially_move_assignable<_Tp>::value; +template + inline constexpr bool is_trivially_destructible_v = + is_trivially_destructible<_Tp>::value; +template + inline constexpr bool is_nothrow_constructible_v = + is_nothrow_constructible<_Tp, _Args...>::value; +template + inline constexpr bool is_nothrow_default_constructible_v = + is_nothrow_default_constructible<_Tp>::value; +template + inline constexpr bool is_nothrow_copy_constructible_v = + is_nothrow_copy_constructible<_Tp>::value; +template + inline constexpr bool is_nothrow_move_constructible_v = + is_nothrow_move_constructible<_Tp>::value; +template + inline constexpr bool is_nothrow_assignable_v = + is_nothrow_assignable<_Tp, _Up>::value; +template + inline constexpr bool is_nothrow_copy_assignable_v = + is_nothrow_copy_assignable<_Tp>::value; +template + inline constexpr bool is_nothrow_move_assignable_v = + is_nothrow_move_assignable<_Tp>::value; +template + inline constexpr bool is_nothrow_destructible_v = + is_nothrow_destructible<_Tp>::value; +template + inline constexpr bool has_virtual_destructor_v = + has_virtual_destructor<_Tp>::value; +template + inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value; +template + inline constexpr size_t rank_v = rank<_Tp>::value; +template + inline constexpr size_t extent_v = extent<_Tp, _Idx>::value; +template + inline constexpr bool is_same_v = is_same<_Tp, _Up>::value; +template + inline constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value; +template + inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value; + +#if __GNUC__ >= 7 +# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1 +#elif defined(__is_identifier) +// For non-GNU compilers: +# if ! __is_identifier(__has_unique_object_representations) +# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1 +# endif +#endif + +#ifdef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP +# define __cpp_lib_has_unique_object_representations 201606 + /// has_unique_object_representations + template + struct has_unique_object_representations + : bool_constant<__has_unique_object_representations( + remove_cv_t> + )> + { }; + + template + inline constexpr bool has_unique_object_representations_v + = has_unique_object_representations<_Tp>::value; +#endif +#undef _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP + +#if __GNUC__ >= 7 +# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 +#elif defined(__is_identifier) +// For non-GNU compilers: +# if ! __is_identifier(__is_aggregate) +# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 +# endif +#endif + +#ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE +#define __cpp_lib_is_aggregate 201703 + /// is_aggregate + template + struct is_aggregate + : bool_constant<__is_aggregate(remove_cv_t<_Tp>)> { }; + + /// is_aggregate_v + template + inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value; +#endif +#undef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE + +#endif // C++17 + +#if __cplusplus > 201703L + /// Byte order + enum class endian + { + little = __ORDER_LITTLE_ENDIAN__, + big = __ORDER_BIG_ENDIAN__, + native = __BYTE_ORDER__ + }; +#endif // C++2a + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace std + +#endif // C++11 + +#endif // _GLIBCXX_TYPE_TRAITS diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/typeindex b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/typeindex similarity index 98% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/typeindex rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/typeindex index bf32faefb..ab913e8d4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/typeindex +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/typeindex @@ -1,6 +1,6 @@ // C++11 -*- C++ -*- -// Copyright (C) 2010-2017 Free Software Foundation, Inc. +// Copyright (C) 2010-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/typeinfo b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/typeinfo similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/typeinfo rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/typeinfo index 059016c35..a186febb9 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/typeinfo +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/typeinfo @@ -1,5 +1,5 @@ // RTTI support for -*- C++ -*- -// Copyright (C) 1994-2017 Free Software Foundation, Inc. +// Copyright (C) 1994-2018 Free Software Foundation, Inc. // // This file is part of GCC. // diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/unordered_map b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/unordered_map new file mode 100644 index 000000000..85840fc49 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/unordered_map @@ -0,0 +1,60 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/unordered_map + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_UNORDERED_MAP +#define _GLIBCXX_UNORDERED_MAP 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include +#include +#include +#include // equal_to, _Identity, _Select1st +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif // C++11 + +#endif // _GLIBCXX_UNORDERED_MAP diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/unordered_set b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/unordered_set new file mode 100644 index 000000000..0593fbd1b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/unordered_set @@ -0,0 +1,59 @@ +// -*- C++ -*- + +// Copyright (C) 2007-2018 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 +// . + +/** @file include/unordered_set + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_UNORDERED_SET +#define _GLIBCXX_UNORDERED_SET 1 + +#pragma GCC system_header + +#if __cplusplus < 201103L +# include +#else + +#include +#include +#include +#include +#include +#include +#include // equal_to, _Identity, _Select1st +#include +#include +#include +#include + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif +#endif // C++11 + +#endif // _GLIBCXX_UNORDERED_SET diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/utility b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/utility new file mode 100644 index 000000000..a1cceceef --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/utility @@ -0,0 +1,398 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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 + +#pragma GCC system_header + +/** + * @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. + */ + +#include +#include +#include + +#if __cplusplus >= 201103L + +#include +#include +#include + +namespace std _GLIBCXX_VISIBILITY(default) +{ +_GLIBCXX_BEGIN_NAMESPACE_VERSION + + /// Finds the size of a given tuple type. + template + struct tuple_size; + + // _GLIBCXX_RESOLVE_LIB_DEFECTS + // 2313. tuple_size should always derive from integral_constant + // 2770. tuple_size specialization is not SFINAE compatible + + template::type, + typename = typename enable_if::value>::type, + size_t = tuple_size<_Tp>::value> + using __enable_if_has_tuple_size = _Tp; + + template + struct tuple_size> + : public tuple_size<_Tp> { }; + + template + struct tuple_size> + : public tuple_size<_Tp> { }; + + template + struct tuple_size> + : public tuple_size<_Tp> { }; + + /// Gives the type of the ith element of a given tuple type. + template + struct tuple_element; + + // Duplicate of C++14's tuple_element_t for internal use in C++11 mode + template + using __tuple_element_t = typename tuple_element<__i, _Tp>::type; + + template + struct tuple_element<__i, const _Tp> + { + typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; + }; + + template + struct tuple_element<__i, volatile _Tp> + { + typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; + }; + + template + struct tuple_element<__i, const volatile _Tp> + { + typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; + }; + +#if __cplusplus > 201103L +#define __cpp_lib_tuple_element_t 201402 + + template + using tuple_element_t = typename tuple_element<__i, _Tp>::type; +#endif + + // Various functions which give std::pair a tuple-like interface. + + /// Partial specialization for std::pair + template + struct __is_tuple_like_impl> : true_type + { }; + + /// Partial specialization for std::pair + template + struct tuple_size> + : public integral_constant { }; + + /// Partial specialization for std::pair + template + struct tuple_element<0, std::pair<_Tp1, _Tp2>> + { typedef _Tp1 type; }; + + /// Partial specialization for std::pair + template + struct tuple_element<1, std::pair<_Tp1, _Tp2>> + { typedef _Tp2 type; }; + + template + struct __pair_get; + + template<> + struct __pair_get<0> + { + template + static constexpr _Tp1& + __get(std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.first; } + + template + static constexpr _Tp1&& + __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept + { return std::forward<_Tp1>(__pair.first); } + + template + static constexpr const _Tp1& + __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.first; } + + template + static constexpr const _Tp1&& + __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept + { return std::forward(__pair.first); } + }; + + template<> + struct __pair_get<1> + { + template + static constexpr _Tp2& + __get(std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.second; } + + template + static constexpr _Tp2&& + __move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept + { return std::forward<_Tp2>(__pair.second); } + + template + static constexpr const _Tp2& + __const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept + { return __pair.second; } + + template + static constexpr const _Tp2&& + __const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept + { return std::forward(__pair.second); } + }; + + template + constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& + get(std::pair<_Tp1, _Tp2>& __in) noexcept + { return __pair_get<_Int>::__get(__in); } + + template + 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 + 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 + 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 __cplusplus > 201103L + +#define __cpp_lib_tuples_by_type 201304 + + template + constexpr _Tp& + get(pair<_Tp, _Up>& __p) noexcept + { return __p.first; } + + template + constexpr const _Tp& + get(const pair<_Tp, _Up>& __p) noexcept + { return __p.first; } + + template + constexpr _Tp&& + get(pair<_Tp, _Up>&& __p) noexcept + { return std::move(__p.first); } + + template + constexpr const _Tp&& + get(const pair<_Tp, _Up>&& __p) noexcept + { return std::move(__p.first); } + + template + constexpr _Tp& + get(pair<_Up, _Tp>& __p) noexcept + { return __p.second; } + + template + constexpr const _Tp& + get(const pair<_Up, _Tp>& __p) noexcept + { return __p.second; } + + template + constexpr _Tp&& + get(pair<_Up, _Tp>&& __p) noexcept + { return std::move(__p.second); } + + template + 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 + inline _Tp + exchange(_Tp& __obj, _Up&& __new_val) + { return std::__exchange(__obj, std::forward<_Up>(__new_val)); } +#endif + + // Stores a tuple of indices. Used by tuple and pair, and by bind() to + // extract the elements in a tuple. + template struct _Index_tuple { }; + +#ifdef __has_builtin +# if __has_builtin(__make_integer_seq) +# define _GLIBCXX_USE_MAKE_INTEGER_SEQ 1 +# endif +#endif + + // Builds an _Index_tuple<0, 1, 2, ..., _Num-1>. + template + struct _Build_index_tuple + { +#if _GLIBCXX_USE_MAKE_INTEGER_SEQ + template + using _IdxTuple = _Index_tuple<_Indices...>; + + using __type = __make_integer_seq<_IdxTuple, size_t, _Num>; +#else + using __type = _Index_tuple<__integer_pack(_Num)...>; +#endif + }; + +#if __cplusplus > 201103L + +#define __cpp_lib_integer_sequence 201304 + + /// Class template integer_sequence + template + struct integer_sequence + { + typedef _Tp value_type; + static constexpr size_t size() noexcept { return sizeof...(_Idx); } + }; + + /// Alias template make_integer_sequence + template + using make_integer_sequence +#if _GLIBCXX_USE_MAKE_INTEGER_SEQ + = __make_integer_seq; +#else + = integer_sequence<_Tp, __integer_pack(_Num)...>; +#endif + +#undef _GLIBCXX_USE_MAKE_INTEGER_SEQ + + /// Alias template index_sequence + template + using index_sequence = integer_sequence; + + /// Alias template make_index_sequence + template + using make_index_sequence = make_integer_sequence; + + /// Alias template index_sequence_for + template + using index_sequence_for = make_index_sequence; +#endif + +#if __cplusplus > 201402L + + struct in_place_t { + explicit in_place_t() = default; + }; + + inline constexpr in_place_t in_place{}; + + template struct in_place_type_t + { + explicit in_place_type_t() = default; + }; + + template + inline constexpr in_place_type_t<_Tp> in_place_type{}; + + template struct in_place_index_t + { + explicit in_place_index_t() = default; + }; + + template + inline constexpr in_place_index_t<_Idx> in_place_index{}; + + template + struct __is_in_place_type_impl : false_type + { }; + + template + struct __is_in_place_type_impl> : true_type + { }; + + template + struct __is_in_place_type + : public __is_in_place_type_impl<_Tp> + { }; + +#define __cpp_lib_as_const 201510 + template + constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; } + + template + void as_const(const _Tp&&) = delete; + +#endif // C++17 + +_GLIBCXX_END_NAMESPACE_VERSION +} // namespace + +#endif + +#endif /* _GLIBCXX_UTILITY */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/valarray b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/valarray similarity index 99% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/valarray rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/valarray index 2dc6e42ca..761a2fc98 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/valarray +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/valarray @@ -1,6 +1,6 @@ // The template and inlines for the -*- C++ -*- valarray class. -// Copyright (C) 1997-2017 Free Software Foundation, Inc. +// Copyright (C) 1997-2018 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 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/variant b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/variant similarity index 80% rename from gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/variant rename to gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/variant index b31d77437..150d37505 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/c++/7.3.1/variant +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/variant @@ -1,6 +1,6 @@ // -*- C++ -*- -// Copyright (C) 2016-2017 Free Software Foundation, Inc. +// Copyright (C) 2016-2018 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 @@ -48,12 +48,12 @@ namespace std _GLIBCXX_VISIBILITY(default) { +_GLIBCXX_BEGIN_NAMESPACE_VERSION + namespace __detail { namespace __variant { -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template struct _Nth_type; @@ -65,13 +65,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct _Nth_type<0, _First, _Rest...> { using type = _First; }; -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __variant } // namespace __detail -_GLIBCXX_BEGIN_NAMESPACE_VERSION - -#define __cpp_lib_variant 201603 +#define __cpp_lib_variant 201606L template class tuple; template class variant; @@ -141,13 +138,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr variant_alternative_t<_Np, variant<_Types...>> const&& get(const variant<_Types...>&&); -_GLIBCXX_END_NAMESPACE_VERSION - namespace __detail { namespace __variant { -_GLIBCXX_BEGIN_NAMESPACE_VERSION // Returns the first apparence of _Tp in _Types. // Returns sizeof...(_Types) if _Tp is not in _Types. template @@ -229,13 +223,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template constexpr decltype(auto) __get(in_place_index_t<_Np>, _Union&& __u) - { return __get(in_place_index<_Np-1>, std::forward<_Union>(__u)._M_rest); } + { + return __variant::__get(in_place_index<_Np-1>, + std::forward<_Union>(__u)._M_rest); + } // Returns the typed storage for __v. template constexpr decltype(auto) __get(_Variant&& __v) { - return __get(std::in_place_index<_Np>, std::forward<_Variant>(__v)._M_u); + return __variant::__get(std::in_place_index<_Np>, + std::forward<_Variant>(__v)._M_u); } // Various functions as "vtable" entries, where those vtables are used by @@ -251,7 +249,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template void __erased_dtor(_Variant&& __v) - { std::_Destroy(std::__addressof(__get<_Np>(__v))); } + { std::_Destroy(std::__addressof(__variant::__get<_Np>(__v))); } template void @@ -274,8 +272,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr bool \ __erased_##__NAME(const _Variant& __lhs, const _Variant& __rhs) \ { \ - return __get<_Np>(std::forward<_Variant>(__lhs)) \ - __OP __get<_Np>(std::forward<_Variant>(__rhs)); \ + return __variant::__get<_Np>(std::forward<_Variant>(__lhs)) \ + __OP __variant::__get<_Np>(std::forward<_Variant>(__rhs)); \ } _VARIANT_RELATION_FUNCTION_TEMPLATE(<, less) @@ -295,6 +293,46 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __variant::__ref_cast<_Tp>(__t)); } + template + struct _Traits + { + static constexpr bool _S_default_ctor = + is_default_constructible_v::type>; + static constexpr bool _S_copy_ctor = + (is_copy_constructible_v<_Types> && ...); + static constexpr bool _S_move_ctor = + (is_move_constructible_v<_Types> && ...); + static constexpr bool _S_copy_assign = + _S_copy_ctor && _S_move_ctor + && (is_copy_assignable_v<_Types> && ...); + static constexpr bool _S_move_assign = + _S_move_ctor + && (is_move_assignable_v<_Types> && ...); + + static constexpr bool _S_trivial_dtor = + (is_trivially_destructible_v<_Types> && ...); + static constexpr bool _S_trivial_copy_ctor = + (is_trivially_copy_constructible_v<_Types> && ...); + static constexpr bool _S_trivial_move_ctor = + (is_trivially_move_constructible_v<_Types> && ...); + static constexpr bool _S_trivial_copy_assign = + _S_trivial_dtor && (is_trivially_copy_assignable_v<_Types> && ...); + static constexpr bool _S_trivial_move_assign = + _S_trivial_dtor && (is_trivially_move_assignable_v<_Types> && ...); + + // The following nothrow traits are for non-trivial SMFs. Trivial SMFs + // are always nothrow. + static constexpr bool _S_nothrow_default_ctor = + is_nothrow_default_constructible_v< + typename _Nth_type<0, _Types...>::type>; + static constexpr bool _S_nothrow_copy_ctor = false; + static constexpr bool _S_nothrow_move_ctor = + (is_nothrow_move_constructible_v<_Types> && ...); + static constexpr bool _S_nothrow_copy_assign = false; + static constexpr bool _S_nothrow_move_assign = + _S_nothrow_move_ctor && (is_nothrow_move_assignable_v<_Types> && ...); + }; + // Defines members and ctors. template union _Variadic_union { }; @@ -324,10 +362,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template using __select_index = - typename __select_int::_Select_int_base - ::type::value_type; + unsigned short>::type::value_type; template struct _Variant_storage @@ -360,6 +397,19 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ~_Variant_storage() { _M_reset(); } + void* + _M_storage() const + { + return const_cast(static_cast( + std::addressof(_M_u))); + } + + constexpr bool + _M_valid() const noexcept + { + return this->_M_index != __index_type(variant_npos); + } + _Variadic_union<_Types...> _M_u; using __index_type = __select_index<_Types...>; __index_type _M_index; @@ -379,93 +429,89 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void _M_reset() { _M_index = variant_npos; } + void* + _M_storage() const + { + return const_cast(static_cast( + std::addressof(_M_u))); + } + + constexpr bool + _M_valid() const noexcept + { + return this->_M_index != __index_type(variant_npos); + } + _Variadic_union<_Types...> _M_u; using __index_type = __select_index<_Types...>; __index_type _M_index; }; - // Helps SFINAE on special member functions. Otherwise it can live in variant - // class. template - struct _Variant_base : - _Variant_storage<(std::is_trivially_destructible_v<_Types> && ...), - _Types...> + using _Variant_storage_alias = + _Variant_storage<_Traits<_Types...>::_S_trivial_dtor, _Types...>; + + // The following are (Copy|Move) (ctor|assign) layers for forwarding + // triviality and handling non-trivial SMF behaviors. + + template + struct _Copy_ctor_base : _Variant_storage_alias<_Types...> { - using _Storage = - _Variant_storage<(std::is_trivially_destructible_v<_Types> && ...), - _Types...>; + using _Base = _Variant_storage_alias<_Types...>; + using _Base::_Base; - constexpr - _Variant_base() - noexcept(is_nothrow_default_constructible_v< - variant_alternative_t<0, variant<_Types...>>>) - : _Variant_base(in_place_index<0>) { } - - _Variant_base(const _Variant_base& __rhs) + _Copy_ctor_base(const _Copy_ctor_base& __rhs) + noexcept(_Traits<_Types...>::_S_nothrow_copy_ctor) { if (__rhs._M_valid()) { static constexpr void (*_S_vtable[])(void*, void*) = { &__erased_ctor<_Types&, const _Types&>... }; - _S_vtable[__rhs._M_index](_M_storage(), __rhs._M_storage()); + _S_vtable[__rhs._M_index](this->_M_storage(), __rhs._M_storage()); this->_M_index = __rhs._M_index; } } - _Variant_base(_Variant_base&& __rhs) - noexcept((is_nothrow_move_constructible_v<_Types> && ...)) + _Copy_ctor_base(_Copy_ctor_base&&) = default; + _Copy_ctor_base& operator=(const _Copy_ctor_base&) = default; + _Copy_ctor_base& operator=(_Copy_ctor_base&&) = default; + }; + + template + struct _Copy_ctor_base : _Variant_storage_alias<_Types...> + { + using _Base = _Variant_storage_alias<_Types...>; + using _Base::_Base; + }; + + template + using _Copy_ctor_alias = + _Copy_ctor_base<_Traits<_Types...>::_S_trivial_copy_ctor, _Types...>; + + template + struct _Move_ctor_base : _Copy_ctor_alias<_Types...> + { + using _Base = _Copy_ctor_alias<_Types...>; + using _Base::_Base; + + _Move_ctor_base(_Move_ctor_base&& __rhs) + noexcept(_Traits<_Types...>::_S_nothrow_move_ctor) { if (__rhs._M_valid()) { static constexpr void (*_S_vtable[])(void*, void*) = { &__erased_ctor<_Types&, _Types&&>... }; - _S_vtable[__rhs._M_index](_M_storage(), __rhs._M_storage()); + _S_vtable[__rhs._M_index](this->_M_storage(), __rhs._M_storage()); this->_M_index = __rhs._M_index; } } - template - constexpr explicit - _Variant_base(in_place_index_t<_Np> __i, _Args&&... __args) - : _Storage(__i, std::forward<_Args>(__args)...) - { } - - _Variant_base& - operator=(const _Variant_base& __rhs) + void _M_destructive_move(_Move_ctor_base&& __rhs) { - if (this->_M_index == __rhs._M_index) - { - if (__rhs._M_valid()) - { - static constexpr void (*_S_vtable[])(void*, void*) = - { &__erased_assign<_Types&, const _Types&>... }; - _S_vtable[__rhs._M_index](_M_storage(), __rhs._M_storage()); - } - } - else - { - _Variant_base __tmp(__rhs); - this->~_Variant_base(); - __try - { - ::new (this) _Variant_base(std::move(__tmp)); - } - __catch (...) - { - this->_M_index = variant_npos; - __throw_exception_again; - } - } - __glibcxx_assert(this->_M_index == __rhs._M_index); - return *this; - } - - void _M_destructive_move(_Variant_base&& __rhs) - { - this->~_Variant_base(); + this->~_Move_ctor_base(); __try { - ::new (this) _Variant_base(std::move(__rhs)); + ::new (this) _Move_ctor_base(std::move(__rhs)); } __catch (...) { @@ -474,10 +520,83 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } } - _Variant_base& - operator=(_Variant_base&& __rhs) - noexcept((is_nothrow_move_constructible_v<_Types> && ...) - && (is_nothrow_move_assignable_v<_Types> && ...)) + _Move_ctor_base(const _Move_ctor_base&) = default; + _Move_ctor_base& operator=(const _Move_ctor_base&) = default; + _Move_ctor_base& operator=(_Move_ctor_base&&) = default; + }; + + template + struct _Move_ctor_base : _Copy_ctor_alias<_Types...> + { + using _Base = _Copy_ctor_alias<_Types...>; + using _Base::_Base; + + void _M_destructive_move(_Move_ctor_base&& __rhs) + { + this->~_Move_ctor_base(); + ::new (this) _Move_ctor_base(std::move(__rhs)); + } + }; + + template + using _Move_ctor_alias = + _Move_ctor_base<_Traits<_Types...>::_S_trivial_move_ctor, _Types...>; + + template + struct _Copy_assign_base : _Move_ctor_alias<_Types...> + { + using _Base = _Move_ctor_alias<_Types...>; + using _Base::_Base; + + _Copy_assign_base& + operator=(const _Copy_assign_base& __rhs) + noexcept(_Traits<_Types...>::_S_nothrow_copy_assign) + { + if (this->_M_index == __rhs._M_index) + { + if (__rhs._M_valid()) + { + static constexpr void (*_S_vtable[])(void*, void*) = + { &__erased_assign<_Types&, const _Types&>... }; + _S_vtable[__rhs._M_index](this->_M_storage(), + __rhs._M_storage()); + } + } + else + { + _Copy_assign_base __tmp(__rhs); + this->_M_destructive_move(std::move(__tmp)); + } + __glibcxx_assert(this->_M_index == __rhs._M_index); + return *this; + } + + _Copy_assign_base(const _Copy_assign_base&) = default; + _Copy_assign_base(_Copy_assign_base&&) = default; + _Copy_assign_base& operator=(_Copy_assign_base&&) = default; + }; + + template + struct _Copy_assign_base : _Move_ctor_alias<_Types...> + { + using _Base = _Move_ctor_alias<_Types...>; + using _Base::_Base; + }; + + template + using _Copy_assign_alias = + _Copy_assign_base<_Traits<_Types...>::_S_trivial_copy_assign, + _Types...>; + + template + struct _Move_assign_base : _Copy_assign_alias<_Types...> + { + using _Base = _Copy_assign_alias<_Types...>; + using _Base::_Base; + + _Move_assign_base& + operator=(_Move_assign_base&& __rhs) + noexcept(_Traits<_Types...>::_S_nothrow_move_assign) { if (this->_M_index == __rhs._M_index) { @@ -485,29 +604,56 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { static constexpr void (*_S_vtable[])(void*, void*) = { &__erased_assign<_Types&, _Types&&>... }; - _S_vtable[__rhs._M_index](_M_storage(), __rhs._M_storage()); + _S_vtable[__rhs._M_index] + (this->_M_storage(), __rhs._M_storage()); } } else { - _M_destructive_move(std::move(__rhs)); + _Move_assign_base __tmp(std::move(__rhs)); + this->_M_destructive_move(std::move(__tmp)); } + __glibcxx_assert(this->_M_index == __rhs._M_index); return *this; } - void* - _M_storage() const - { - return const_cast(static_cast( - std::addressof(_Storage::_M_u))); - } + _Move_assign_base(const _Move_assign_base&) = default; + _Move_assign_base(_Move_assign_base&&) = default; + _Move_assign_base& operator=(const _Move_assign_base&) = default; + }; - constexpr bool - _M_valid() const noexcept - { - return this->_M_index != - typename _Storage::__index_type(variant_npos); - } + template + struct _Move_assign_base : _Copy_assign_alias<_Types...> + { + using _Base = _Copy_assign_alias<_Types...>; + using _Base::_Base; + }; + + template + using _Move_assign_alias = + _Move_assign_base<_Traits<_Types...>::_S_trivial_move_assign, + _Types...>; + + template + struct _Variant_base : _Move_assign_alias<_Types...> + { + using _Base = _Move_assign_alias<_Types...>; + + constexpr + _Variant_base() + noexcept(_Traits<_Types...>::_S_nothrow_default_ctor) + : _Variant_base(in_place_index<0>) { } + + template + constexpr explicit + _Variant_base(in_place_index_t<_Np> __i, _Args&&... __args) + : _Base(__i, std::forward<_Args>(__args)...) + { } + + _Variant_base(const _Variant_base&) = default; + _Variant_base(_Variant_base&&) = default; + _Variant_base& operator=(const _Variant_base&) = default; + _Variant_base& operator=(_Variant_base&&) = default; }; // For how many times does _Tp appear in _Tuple? @@ -681,9 +827,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION decltype(auto) static constexpr __visit_invoke(_Visitor&& __visitor, _Variants... __vars) { - return __invoke(std::forward<_Visitor>(__visitor), - std::get<__indices>( - std::forward<_Variants>(__vars))...); + return std::__invoke(std::forward<_Visitor>(__visitor), + std::get<__indices>(std::forward<_Variants>(__vars))...); } static constexpr auto @@ -720,12 +865,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::index_sequence<__indices...>> : _Base_dedup<__indices, __poison_hash>>... { }; -_GLIBCXX_END_NAMESPACE_VERSION } // namespace __variant } // namespace __detail -_GLIBCXX_BEGIN_NAMESPACE_VERSION - template inline constexpr bool holds_alternative(const variant<_Types...>& __v) noexcept @@ -884,16 +1026,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION class variant : private __detail::__variant::_Variant_base<_Types...>, private _Enable_default_constructor< - is_default_constructible_v< - variant_alternative_t<0, variant<_Types...>>>, variant<_Types...>>, + __detail::__variant::_Traits<_Types...>::_S_default_ctor, + variant<_Types...>>, private _Enable_copy_move< - (is_copy_constructible_v<_Types> && ...), - (is_copy_constructible_v<_Types> && ...) - && (is_move_constructible_v<_Types> && ...) - && (is_copy_assignable_v<_Types> && ...), - (is_move_constructible_v<_Types> && ...), - (is_move_constructible_v<_Types> && ...) - && (is_move_assignable_v<_Types> && ...), + __detail::__variant::_Traits<_Types...>::_S_copy_ctor, + __detail::__variant::_Traits<_Types...>::_S_copy_assign, + __detail::__variant::_Traits<_Types...>::_S_move_ctor, + __detail::__variant::_Traits<_Types...>::_S_move_assign, variant<_Types...>> { private: @@ -907,8 +1046,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION using _Base = __detail::__variant::_Variant_base<_Types...>; using _Default_ctor_enabler = _Enable_default_constructor< - is_default_constructible_v< - variant_alternative_t<0, variant<_Types...>>>, variant<_Types...>>; + __detail::__variant::_Traits<_Types...>::_S_default_ctor, + variant<_Types...>>; template static constexpr bool @@ -935,22 +1074,38 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION static constexpr size_t __index_of = __detail::__variant::__index_of_v<_Tp, _Types...>; + using _Traits = __detail::__variant::_Traits<_Types...>; + + template + struct __is_in_place_tag : false_type { }; + template + struct __is_in_place_tag> : true_type { }; + template + struct __is_in_place_tag> : true_type { }; + + template + static constexpr bool __not_in_place_tag + = !__is_in_place_tag>::value; + public: - constexpr variant() - noexcept(is_nothrow_default_constructible_v<__to_type<0>>) = default; - variant(const variant&) = default; - variant(variant&&) - noexcept((is_nothrow_move_constructible_v<_Types> && ...)) = default; + variant() = default; + variant(const variant& __rhs) = default; + variant(variant&&) = default; + variant& operator=(const variant&) = default; + variant& operator=(variant&&) = default; + ~variant() = default; template, variant>>, typename = enable_if_t<(sizeof...(_Types)>0)>, + typename = enable_if_t<__not_in_place_tag<_Tp>>, typename = enable_if_t<__exactly_once<__accepted_type<_Tp&&>> && is_constructible_v<__accepted_type<_Tp&&>, _Tp&&>>> constexpr variant(_Tp&& __t) noexcept(is_nothrow_constructible_v<__accepted_type<_Tp&&>, _Tp&&>) - : variant(in_place_index<__accepted_index<_Tp&&>>, std::forward<_Tp>(__t)) + : variant(in_place_index<__accepted_index<_Tp&&>>, + std::forward<_Tp>(__t)) { __glibcxx_assert(holds_alternative<__accepted_type<_Tp&&>>(*this)); } template>> constexpr explicit variant(in_place_type_t<_Tp>, _Args&&... __args) - : variant(in_place_index<__index_of<_Tp>>, std::forward<_Args>(__args)...) + : variant(in_place_index<__index_of<_Tp>>, + std::forward<_Args>(__args)...) { __glibcxx_assert(holds_alternative<_Tp>(*this)); } template && ...) - && (is_nothrow_move_assignable_v<_Types> && ...)) = default; - template enable_if_t<__exactly_once<__accepted_type<_Tp&&>> && is_constructible_v<__accepted_type<_Tp&&>, _Tp&&> @@ -1092,7 +1241,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION constexpr size_t index() const noexcept { if (this->_M_index == - typename _Base::_Storage::__index_type(variant_npos)) + typename _Base::__index_type(variant_npos)) return variant_npos; return this->_M_index; } @@ -1136,7 +1285,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION static constexpr bool \ (*_S_erased_##__NAME[])(const variant&, const variant&) = \ { &__detail::__variant::__erased_##__NAME< \ - const variant&, __indices>... }; \ + const variant&, __indices>... }; \ template \ constexpr inline bool \ _M_##__NAME(const variant& __rhs, \ @@ -1159,19 +1308,17 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #undef _VARIANT_RELATION_FUNCTION_TEMPLATE - template - friend constexpr decltype(auto) __detail::__variant:: -#if _GLIBCXX_INLINE_VERSION - __7:: // Required due to PR c++/59256 +#ifdef __clang__ + public: + using _Base::_M_u; // See https://bugs.llvm.org/show_bug.cgi?id=31852 + private: #endif - __get(_Vp&& __v); + + template + friend constexpr decltype(auto) __detail::__variant::__get(_Vp&& __v); template - friend void* __detail::__variant:: -#if _GLIBCXX_INLINE_VERSION - __7:: // Required due to PR c++/59256 -#endif - __get_storage(_Vp&& __v); + friend void* __detail::__variant::__get_storage(_Vp&& __v); #define _VARIANT_RELATION_FUNCTION_TEMPLATE(__OP) \ template \ @@ -1282,18 +1429,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct hash> : private __detail::__variant::_Variant_hash_base< - variant<_Types...>, std::index_sequence_for<_Types...>>, + variant<_Types...>, std::index_sequence_for<_Types...>>, public __variant_hash_call_base<_Types...> { - using result_type = size_t; - using argument_type = variant<_Types...>; + using result_type [[__deprecated__]] = size_t; + using argument_type [[__deprecated__]] = variant<_Types...>; }; template<> struct hash { - using result_type = size_t; - using argument_type = monostate; + using result_type [[__deprecated__]] = size_t; + using argument_type [[__deprecated__]] = monostate; size_t operator()(const monostate& __t) const noexcept @@ -1303,6 +1450,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } }; + template + struct __is_fast_hash>> + : bool_constant<(__is_fast_hash<_Types>::value && ...)> + { }; + _GLIBCXX_END_NAMESPACE_VERSION } // namespace std diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/vector b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/vector new file mode 100644 index 000000000..e03e50f9c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/c++/8.3.1/vector @@ -0,0 +1,81 @@ +// -*- C++ -*- + +// Copyright (C) 2001-2018 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 +// . + +/* + * + * 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 + * 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/vector + * This is a Standard C++ Library header. + */ + +#ifndef _GLIBCXX_VECTOR +#define _GLIBCXX_VECTOR 1 + +#pragma GCC system_header + +#include +#include +#include +#include +#include +#include +#include + +#ifndef _GLIBCXX_EXPORT_TEMPLATE +# include +#endif + +#ifdef _GLIBCXX_DEBUG +# include +#endif + +#ifdef _GLIBCXX_PROFILE +# include +#endif + +#endif /* _GLIBCXX_VECTOR */ + diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/ctype.h b/gcc-arm-none-eabi/arm-none-eabi/include/ctype.h index f74b3499b..a0009af17 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/ctype.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/ctype.h @@ -5,7 +5,7 @@ #include #if __POSIX_VISIBLE >= 200809 || __MISC_VISIBLE || defined (_COMPILING_NEWLIB) -#include +#include #endif _BEGIN_STD_C @@ -66,7 +66,12 @@ extern int toascii_l (int __c, locale_t __l); #define _X 0100 #define _B 0200 +#ifdef __HAVE_LOCALE_INFO__ const char *__locale_ctype_ptr (void); +#else +#define __locale_ctype_ptr() _ctype_ +#endif + # define __CTYPE_PTR (__locale_ctype_ptr ()) #ifndef __cplusplus @@ -100,7 +105,11 @@ const char *__locale_ctype_ptr (void); #endif #if __POSIX_VISIBLE >= 200809 +#ifdef __HAVE_LOCALE_INFO__ const char *__locale_ctype_ptr_l (locale_t); +#else +#define __locale_ctype_ptr_l(l) _ctype_ +#endif #define __ctype_lookup_l(__c,__l) ((__locale_ctype_ptr_l(__l)+sizeof(""[__c]))[(int)(__c)]) #define isalpha_l(__c,__l) (__ctype_lookup_l(__c,__l)&(_U|_L)) diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/dirent.h b/gcc-arm-none-eabi/arm-none-eabi/include/dirent.h index 6135b9f6e..5d566a81e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/dirent.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/dirent.h @@ -1,8 +1,40 @@ +/*- + * SPDX-License-Identifier: BSD-3-Clause + * + * Copyright (c) 1989, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)dirent.h 8.3 (Berkeley) 8/10/94 + * $FreeBSD: head/include/dirent.h 326024 2017-11-20 19:45:28Z pfg $ + */ + #ifndef _DIRENT_H_ -#define _DIRENT_H_ -#ifdef __cplusplus -extern "C" { -#endif +#define _DIRENT_H_ + #include #include @@ -10,7 +42,44 @@ extern "C" { #define MAXNAMLEN 1024 #endif -#ifdef __cplusplus -} +__BEGIN_DECLS +#if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700 +int alphasort(const struct dirent **, const struct dirent **); +int dirfd(DIR *); #endif +#if __BSD_VISIBLE +int fdclosedir(DIR *); +#endif +DIR *opendir(const char *); +DIR *fdopendir(int); +struct dirent * + readdir(DIR *); +#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500 +int readdir_r(DIR *__restrict, struct dirent *__restrict, + struct dirent **__restrict); +#endif +void rewinddir(DIR *); +#if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700 +int scandir(const char *, struct dirent ***, + int (*)(const struct dirent *), int (*)(const struct dirent **, + const struct dirent **)); +#endif +#ifdef _COMPILING_NEWLIB +void _seekdir(DIR *, long); +#endif +#if __MISC_VISIBLE || __XSI_VISIBLE +#ifndef __INSIDE_CYGWIN__ +void seekdir(DIR *, long); +long telldir(DIR *); +#endif +#endif +int closedir(DIR *); +#if __GNU_VISIBLE +int scandirat(int, const char *, struct dirent ***, + int (*) (const struct dirent *), int (*) (const struct dirent **, + const struct dirent **)); +int versionsort(const struct dirent **, const struct dirent **); +#endif +__END_DECLS + #endif /*_DIRENT_H_*/ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/getopt.h b/gcc-arm-none-eabi/arm-none-eabi/include/getopt.h index 9bced42e4..ac88524ea 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/getopt.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/getopt.h @@ -129,7 +129,7 @@ extern "C" /* The GETOPT_DATA_INITIALIZER macro is used to initialize a statically- allocated variable of type struct getopt_data. */ - #define GETOPT_DATA_INITIALIZER {0,0,0,0,0} + #define GETOPT_DATA_INITIALIZER {0,0,0,0,0,0,0} /* These #defines are to make accessing the reentrant functions easier. */ #define getopt_r __getopt_r @@ -142,6 +142,7 @@ extern "C" { char *optarg; int optind, opterr, optopt, optwhere; + int permute_from, num_nonopts; } getopt_data; #endif /* __need_getopt_newlib */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/inttypes.h b/gcc-arm-none-eabi/arm-none-eabi/include/inttypes.h index 694ba8fcf..073215476 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/inttypes.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/inttypes.h @@ -22,7 +22,7 @@ #include #if __BSD_VISIBLE -#include +#include #endif #define __STRINGIFY(a) #a diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/langinfo.h b/gcc-arm-none-eabi/arm-none-eabi/include/langinfo.h index 458b92565..fcf986cce 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/langinfo.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/langinfo.h @@ -29,19 +29,18 @@ #ifndef _LANGINFO_H_ #define _LANGINFO_H_ -#include -#include #include +#include #if __POSIX_VISIBLE >= 200809 -#include +#include #endif #ifndef _NL_ITEM_DECLARED -typedef int nl_item; +typedef __nl_item nl_item; #define _NL_ITEM_DECLARED #endif -enum __nl_item +enum { /* POSIX and BSD defined items have to stick to the original values to maintain backward compatibility. */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/limits.h b/gcc-arm-none-eabi/arm-none-eabi/include/limits.h index dd09c1cee..893f10834 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/limits.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/limits.h @@ -3,6 +3,7 @@ #include #include +#include # ifdef _MB_LEN_MAX # define MB_LEN_MAX _MB_LEN_MAX diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/locale.h index d11eb00fb..8abb8db92 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/locale.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/locale.h @@ -23,7 +23,7 @@ #if __POSIX_VISIBLE >= 200809 || defined (_COMPILING_NEWLIB) -#include +#include #define LC_ALL_MASK (1 << LC_ALL) #define LC_COLLATE_MASK (1 << LC_COLLATE) diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/machine/ieeefp.h b/gcc-arm-none-eabi/arm-none-eabi/include/machine/ieeefp.h index 9fbef8449..911eeb51e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/machine/ieeefp.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/machine/ieeefp.h @@ -207,6 +207,10 @@ #define __IEEE_BIG_ENDIAN #endif +#ifdef __nvptx__ +#define __IEEE_LITTLE_ENDIAN +#endif + #if defined(_C4x) || defined(_C3x) #define __IEEE_BIG_ENDIAN #define _DOUBLE_IS_32BITS @@ -448,6 +452,14 @@ #define __IEEE_BIG_ENDIAN #endif +#ifdef __AMDGCN__ +#define __IEEE_LITTLE_ENDIAN +#endif + +#ifdef __CYGWIN__ +#define __OBSOLETE_MATH_DEFAULT 0 +#endif + #ifndef __OBSOLETE_MATH_DEFAULT /* Use old math code by default. */ #define __OBSOLETE_MATH_DEFAULT 1 diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/machine/setjmp.h b/gcc-arm-none-eabi/arm-none-eabi/include/machine/setjmp.h index 9212f840b..6b37bcce4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/machine/setjmp.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/machine/setjmp.h @@ -2,7 +2,10 @@ _BEGIN_STD_C #if defined(__or1k__) || defined(__or1knd__) -#define _JBLEN 31 /* 32 GPRs - r0 */ +/* + * r1, r2, r9, r14, r16 .. r30, SR. + */ +#define _JBLEN 13 #define _JBTYPE unsigned long #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/machine/types.h b/gcc-arm-none-eabi/arm-none-eabi/include/machine/types.h index a5a64e675..19d0e8560 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/machine/types.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/machine/types.h @@ -5,3 +5,9 @@ #ifndef _SYS_TYPES_H #error "must be included via " #endif /* !_SYS_TYPES_H */ + +#if defined(__XMK__) && defined(___int64_t_defined) +typedef __uint64_t u_quad_t; +typedef __int64_t quad_t; +typedef quad_t * qaddr_t; +#endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/math.h b/gcc-arm-none-eabi/arm-none-eabi/include/math.h index 893a5d064..1efc5b92c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/math.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/math.h @@ -568,41 +568,6 @@ extern int *__signgam (void); #define __signgam_r(ptr) _REENT_SIGNGAM(ptr) #endif /* __MISC_VISIBLE || __XSI_VISIBLE */ -#if __SVID_VISIBLE -/* The exception structure passed to the matherr routine. */ -/* We have a problem when using C++ since `exception' is a reserved - name in C++. */ -#ifdef __cplusplus -struct __exception -#else -struct exception -#endif -{ - int type; - char *name; - double arg1; - double arg2; - double retval; - int err; -}; - -#ifdef __cplusplus -extern int matherr (struct __exception *e); -#else -extern int matherr (struct exception *e); -#endif - -/* Values for the type field of struct exception. */ - -#define DOMAIN 1 -#define SING 2 -#define OVERFLOW 3 -#define UNDERFLOW 4 -#define TLOSS 5 -#define PLOSS 6 - -#endif /* __SVID_VISIBLE */ - /* Useful constants. */ #if __BSD_VISIBLE || __XSI_VISIBLE @@ -642,8 +607,6 @@ extern int matherr (struct exception *e); enum __fdlibm_version { __fdlibm_ieee = -1, - __fdlibm_svid, - __fdlibm_xopen, __fdlibm_posix }; @@ -653,8 +616,6 @@ enum __fdlibm_version extern __IMPORT _LIB_VERSION_TYPE _LIB_VERSION; #define _IEEE_ __fdlibm_ieee -#define _SVID_ __fdlibm_svid -#define _XOPEN_ __fdlibm_xopen #define _POSIX_ __fdlibm_posix #endif /* __BSD_VISIBLE */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/newlib-nano/newlib.h b/gcc-arm-none-eabi/arm-none-eabi/include/newlib-nano/newlib.h index a90097502..a6ccb3080 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/newlib-nano/newlib.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/newlib-nano/newlib.h @@ -89,7 +89,7 @@ #define _NANO_FORMATTED_IO 1 /* Define if using retargetable functions for default lock routines. */ -/* #undef _RETARGETABLE_LOCKING */ +#define _RETARGETABLE_LOCKING 1 /* Define to use type long for time_t. */ /* #undef _WANT_USE_LONG_TIME_T */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/pthread.h b/gcc-arm-none-eabi/arm-none-eabi/include/pthread.h index 3dee1c9ae..c9d24d6e0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/pthread.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/pthread.h @@ -156,7 +156,7 @@ int pthread_attr_getschedparam (const pthread_attr_t *__attr, int pthread_getschedparam (pthread_t __pthread, int *__policy, struct sched_param *__param); int pthread_setschedparam (pthread_t __pthread, int __policy, - struct sched_param *__param); + const struct sched_param *__param); /* Set Scheduling Priority of a Thread */ int pthread_setschedprio (pthread_t thread, int prio); @@ -190,7 +190,7 @@ int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *__attr, int pthread_mutex_setprioceiling (pthread_mutex_t *__mutex, int __prioceiling, int *__old_ceiling); -int pthread_mutex_getprioceiling (pthread_mutex_t *__mutex, +int pthread_mutex_getprioceiling (const pthread_mutex_t *__restrict __mutex, int *__prioceiling); #endif /* _POSIX_THREAD_PRIO_PROTECT */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sched.h b/gcc-arm-none-eabi/arm-none-eabi/include/sched.h index 504ad5274..79b775e22 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sched.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sched.h @@ -90,6 +90,15 @@ int sched_yield( void ); #endif /* _POSIX_THREADS or _POSIX_PRIORITY_SCHEDULING */ +#if __GNU_VISIBLE +int sched_getcpu(void); + +int sched_getaffinity (pid_t, size_t, cpu_set_t *); +int sched_get_thread_affinity (void *, size_t, cpu_set_t *); +int sched_setaffinity (pid_t, size_t, const cpu_set_t *); +int sched_set_thread_affinity (void *, size_t, const cpu_set_t *); +#endif + #ifdef __cplusplus } #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/ssp/wchar.h b/gcc-arm-none-eabi/arm-none-eabi/include/ssp/wchar.h index 39033cf39..d748fa2cf 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/ssp/wchar.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/ssp/wchar.h @@ -75,7 +75,7 @@ __ssp_redirect_raw(size_t, wcsnrtombs, \ (__buf, __src, __nwc, __len, __ps), __buf != NULL, __ssp_bos) #endif -__ssp_decl(wchar_t *, fgetws, (wchar_t *__restrict __buf, int __wlen, FILE *__restrict __fp)) +__ssp_decl(wchar_t *, fgetws, (wchar_t *__restrict __buf, int __wlen, __FILE *__restrict __fp)) { if (__wlen > 0) __ssp_check(__buf, (size_t)__wlen * sizeof(wchar_t) , __ssp_bos); @@ -83,7 +83,7 @@ __ssp_decl(wchar_t *, fgetws, (wchar_t *__restrict __buf, int __wlen, FILE *__re } #if __GNU_VISIBLE -__ssp_decl(wchar_t *, fgetws_unlocked, (wchar_t *__buf, int __wlen, FILE *__fp)) +__ssp_decl(wchar_t *, fgetws_unlocked, (wchar_t *__buf, int __wlen, __FILE *__fp)) { if (__wlen > 0) __ssp_check(__buf, (size_t)__wlen * sizeof(wchar_t) , __ssp_bos); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/stdio.h b/gcc-arm-none-eabi/arm-none-eabi/include/stdio.h index cbc0fa989..164d95bca 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/stdio.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/stdio.h @@ -180,13 +180,13 @@ typedef _fpos64_t fpos64_t; #if __POSIX_VISIBLE char * ctermid (char *); #endif -#if __XSI_VISIBLE && __XSI_VISIBLE < 600 +#if __GNU_VISIBLE || (__XSI_VISIBLE && __XSI_VISIBLE < 600) char * cuserid (char *); #endif FILE * tmpfile (void); char * tmpnam (char *); #if __BSD_VISIBLE || __XSI_VISIBLE || __POSIX_VISIBLE >= 200112 -char * tempnam (const char *, const char *); +char * tempnam (const char *, const char *) __malloc_like __result_use_check; #endif int fclose (FILE *); int fflush (FILE *); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/stdlib.h b/gcc-arm-none-eabi/arm-none-eabi/include/stdlib.h index ef0e4bdda..15b349440 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/stdlib.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/stdlib.h @@ -27,7 +27,7 @@ #endif #if __GNU_VISIBLE -#include +#include #endif _BEGIN_STD_C @@ -87,12 +87,16 @@ void * bsearch (const void *__key, size_t __nmemb, size_t __size, __compar_fn_t _compar); -void * calloc (size_t __nmemb, size_t __size) _NOTHROW; +void *calloc(size_t, size_t) __malloc_like __result_use_check + __alloc_size2(1, 2) _NOTHROW; div_t div (int __numer, int __denom); void exit (int __status) _ATTRIBUTE ((__noreturn__)); void free (void *) _NOTHROW; char * getenv (const char *__string); char * _getenv_r (struct _reent *, const char *__string); +#if __GNU_VISIBLE +char * secure_getenv (const char *__string); +#endif char * _findenv (const char *, int *); char * _findenv_r (struct _reent *, const char *, int *); #if __POSIX_VISIBLE >= 200809 @@ -101,7 +105,7 @@ int getsubopt (char **, char * const *, char **); #endif long labs (long); ldiv_t ldiv (long __numer, long __denom); -void * malloc (size_t __size) _NOTHROW; +void *malloc(size_t) __malloc_like __result_use_check __alloc_size(1) _NOTHROW; int mblen (const char *, size_t); int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *); int mbtowc (wchar_t *__restrict, const char *__restrict, size_t); @@ -138,11 +142,10 @@ int _mkstemps_r (struct _reent *, char *, int); char * _mktemp_r (struct _reent *, char *) _ATTRIBUTE ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead"))); void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar); int rand (void); -void * realloc (void *__r, size_t __size) _NOTHROW; +void *realloc(void *, size_t) __result_use_check __alloc_size(2) _NOTHROW; #if __BSD_VISIBLE -void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size(2) - __alloc_size(3); -void * reallocf (void *__r, size_t __size); +void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size2(2, 3); +void *reallocf(void *, size_t) __result_use_check __alloc_size(2); #endif #if __BSD_VISIBLE || __XSI_VISIBLE >= 4 char * realpath (const char *__restrict path, char *__restrict resolved_path); @@ -282,7 +285,8 @@ int _unsetenv_r (struct _reent *, const char *__string); #endif /* !__CYGWIN__ */ #if __POSIX_VISIBLE >= 200112 -int __nonnull ((1)) posix_memalign (void **, size_t, size_t); +int posix_memalign (void **, size_t, size_t) __nonnull((1)) + __result_use_check; #endif char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**); @@ -326,7 +330,7 @@ extern long double strtold (const char *__restrict, char **__restrict); */ #if __ISO_C_VISIBLE >= 2011 void * aligned_alloc(size_t, size_t) __malloc_like __alloc_align(1) - __alloc_size(2); + __alloc_size(2) __result_use_check; int at_quick_exit(void (*)(void)); _Noreturn void quick_exit(int); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/string.h b/gcc-arm-none-eabi/arm-none-eabi/include/string.h index 37febadc0..60e837bc0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/string.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/string.h @@ -17,7 +17,7 @@ #include #if __POSIX_VISIBLE >= 200809 -#include +#include #endif #if __BSD_VISIBLE @@ -81,11 +81,11 @@ char *strcasestr (const char *, const char *); char *strchrnul (const char *, int); #endif #if __MISC_VISIBLE || __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 4 -char *strdup (const char *); +char *strdup (const char *) __malloc_like __result_use_check; #endif char *_strdup_r (struct _reent *, const char *); #if __POSIX_VISIBLE >= 200809 -char *strndup (const char *, size_t); +char *strndup (const char *, size_t) __malloc_like __result_use_check; #endif char *_strndup_r (struct _reent *, const char *, size_t); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/strings.h b/gcc-arm-none-eabi/arm-none-eabi/include/strings.h index 7e2e557e7..f0f7ee137 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/strings.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/strings.h @@ -33,7 +33,7 @@ #include #if __POSIX_VISIBLE >= 200809 -#include +#include #endif #ifndef _SIZE_T_DECLARED diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_default_fcntl.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_default_fcntl.h index 33b462285..b3177dd69 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_default_fcntl.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_default_fcntl.h @@ -23,6 +23,20 @@ extern "C" { #define _FNONBLOCK 0x4000 /* non blocking I/O (POSIX style) */ #define _FNDELAY _FNONBLOCK /* non blocking I/O (4.2 style) */ #define _FNOCTTY 0x8000 /* don't assign a ctty on this open */ +#if defined (__CYGWIN__) +#define _FBINARY 0x10000 +#define _FTEXT 0x20000 +#endif +#define _FNOINHERIT 0x40000 +#define _FDIRECT 0x80000 +#define _FNOFOLLOW 0x100000 +#define _FDIRECTORY 0x200000 +#define _FEXECSRCH 0x400000 +#if defined (__CYGWIN__) +#define _FTMPFILE 0x800000 +#define _FNOATIME 0x1000000 +#define _FPATH 0x2000000 +#endif #define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR) @@ -43,37 +57,31 @@ extern "C" { /* O_NDELAY _FNBIO set in include/fcntl.h */ #define O_NONBLOCK _FNONBLOCK #define O_NOCTTY _FNOCTTY -/* For machines which care - */ -#if defined (__CYGWIN__) -#define _FBINARY 0x10000 -#define _FTEXT 0x20000 -#define _FNOINHERIT 0x40000 -#define _FDIRECT 0x80000 -#define _FNOFOLLOW 0x100000 -#define _FDIRECTORY 0x200000 -#define _FEXECSRCH 0x400000 -#define _FTMPFILE 0x800000 -#define _FNOATIME 0x1000000 +/* POSIX-1.2008 specific flags */ +#if __POSIX_VISIBLE >= 200809 +#define O_CLOEXEC _FNOINHERIT +#define O_NOFOLLOW _FNOFOLLOW +#define O_DIRECTORY _FDIRECTORY +#define O_EXEC _FEXECSRCH +#define O_SEARCH _FEXECSRCH +#endif + +#if __BSD_VISIBLE +#define O_DIRECT _FDIRECT +#endif + +#if defined (__CYGWIN__) #define O_BINARY _FBINARY #define O_TEXT _FTEXT #define O_DSYNC _FSYNC #define O_RSYNC _FSYNC -#define O_EXEC _FEXECSRCH -#define O_SEARCH _FEXECSRCH - -/* POSIX-1.2008 specific flags */ -#if __POSIX_VISIBLE >= 200809 -#define O_CLOEXEC _FNOINHERIT -#define O_NOFOLLOW _FNOFOLLOW -#define O_DIRECTORY _FDIRECTORY -#endif /* Linux-specific flags */ #if __GNU_VISIBLE -#define O_DIRECT _FDIRECT #define O_TMPFILE _FTMPFILE #define O_NOATIME _FNOATIME +#define O_PATH _FPATH #endif #endif @@ -158,6 +166,9 @@ extern "C" { #define AT_SYMLINK_NOFOLLOW 2 #define AT_SYMLINK_FOLLOW 4 #define AT_REMOVEDIR 8 +#if __GNU_VISIBLE +#define AT_EMPTY_PATH 16 +#endif #endif #if __BSD_VISIBLE diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_intsup.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_intsup.h index 88d7400d8..993121ba8 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_intsup.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_intsup.h @@ -37,6 +37,7 @@ #pragma push_macro("char") #pragma push_macro("short") #pragma push_macro("__int20") +#pragma push_macro("__int20__") #pragma push_macro("int") #pragma push_macro("long") #undef signed @@ -45,12 +46,14 @@ #undef short #undef int #undef __int20 +#undef __int20__ #undef long #define signed +0 #define unsigned +0 #define char +0 #define short +1 #define __int20 +2 +#define __int20__ +2 #define int +2 #define long +4 #if (__INTPTR_TYPE__ == 8 || __INTPTR_TYPE__ == 10) @@ -189,6 +192,7 @@ #pragma pop_macro("char") #pragma pop_macro("short") #pragma pop_macro("__int20") +#pragma pop_macro("__int20__") #pragma pop_macro("int") #pragma pop_macro("long") diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_locale.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_locale.h new file mode 100644 index 000000000..ce6f9955c --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_locale.h @@ -0,0 +1,12 @@ +/* Definition of opaque POSIX-1.2008 type locale_t for userspace. */ + +#ifndef _SYS__LOCALE_H +#define _SYS__LOCALE_H + +#include +#include + +struct __locale_t; +typedef struct __locale_t *locale_t; + +#endif /* _SYS__LOCALE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_types.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_types.h index d8e8c0b52..017a0aaf6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/_types.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/_types.h @@ -19,10 +19,12 @@ #ifndef _SYS__TYPES_H #define _SYS__TYPES_H +#define __need_size_t +#define __need_wint_t +#include #include #include #include -#include #ifndef __machine_blkcnt_t_defined typedef long __blkcnt_t; @@ -155,9 +157,6 @@ typedef long _ssize_t; typedef _ssize_t __ssize_t; -#define __need_wint_t -#include - #ifndef __machine_mbstate_t_defined /* Conversion state information. */ typedef struct @@ -171,10 +170,6 @@ typedef struct } _mbstate_t; #endif -#ifndef __machine_flock_t_defined -typedef _LOCK_RECURSIVE_T _flock_t; -#endif - #ifndef __machine_iconv_t_defined /* Iconv descriptor type */ typedef void *_iconv_t; @@ -210,14 +205,20 @@ typedef __uint8_t __sa_family_t; typedef __uint32_t __socklen_t; #endif +typedef int __nl_item; typedef unsigned short __nlink_t; typedef long __suseconds_t; /* microseconds (signed) */ typedef unsigned long __useconds_t; /* microseconds (unsigned) */ -#ifdef __GNUCLIKE_BUILTIN_VARARGS +/* + * Must be identical to the __GNUCLIKE_BUILTIN_VAALIST definition in + * . The must not be included here to avoid cyclic + * header dependencies. + */ +#if __GNUC_MINOR__ > 95 || __GNUC__ >= 3 typedef __builtin_va_list __va_list; #else typedef char * __va_list; -#endif /* __GNUCLIKE_BUILTIN_VARARGS */ +#endif #endif /* _SYS__TYPES_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/cdefs.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/cdefs.h index fc564a5c6..ccb47ea40 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/cdefs.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/cdefs.h @@ -3,6 +3,8 @@ /* Written 2000 by Werner Almesberger */ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1991, 1993 * The Regents of the University of California. All rights reserved. * @@ -225,17 +227,6 @@ * for a given compiler, let the compile fail if it is told to use * a feature that we cannot live without. */ -#ifdef lint -#define __dead2 -#define __pure2 -#define __unused -#define __packed -#define __aligned(x) -#define __alloc_align(x) -#define __alloc_size(x) -#define __section(x) -#define __weak_symbol -#else #define __weak_symbol __attribute__((__weak__)) #if !__GNUC_PREREQ__(2, 5) && !defined(__INTEL_COMPILER) #define __dead2 @@ -259,15 +250,16 @@ #endif #if __GNUC_PREREQ__(4, 3) || __has_attribute(__alloc_size__) #define __alloc_size(x) __attribute__((__alloc_size__(x))) +#define __alloc_size2(n, x) __attribute__((__alloc_size__(n, x))) #else #define __alloc_size(x) +#define __alloc_size2(n, x) #endif #if __GNUC_PREREQ__(4, 9) || __has_attribute(__alloc_align__) #define __alloc_align(x) __attribute__((__alloc_align__(x))) #else #define __alloc_align(x) #endif -#endif /* lint */ #if !__GNUC_PREREQ__(2, 95) #define __alignof(x) __offsetof(struct { char __a; x __b; }, __b) @@ -277,7 +269,7 @@ * Keywords added in C11. */ -#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L || defined(lint) +#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 201112L #if !__has_extension(c_alignas) #if (defined(__cplusplus) && __cplusplus >= 201103L) || \ @@ -314,7 +306,7 @@ #if (defined(__cplusplus) && __cplusplus >= 201103L) || \ __has_extension(cxx_static_assert) #define _Static_assert(x, y) static_assert(x, y) -#elif __GNUC_PREREQ__(4,6) +#elif __GNUC_PREREQ__(4,6) && !defined(__cplusplus) /* Nothing, gcc 4.6 and higher has _Static_assert built-in */ #elif defined(__COUNTER__) #define _Static_assert(x, y) __Static_assert(x, __COUNTER__) @@ -436,7 +428,7 @@ * software that is unaware of C99 keywords. */ #if !(__GNUC__ == 2 && __GNUC_MINOR__ == 95) -#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 || defined(lint) +#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901 #define __restrict #else #define __restrict restrict @@ -652,7 +644,7 @@ */ #if __has_attribute(__argument_with_type_tag__) && \ - __has_attribute(__type_tag_for_datatype__) && !defined(lint) + __has_attribute(__type_tag_for_datatype__) #define __arg_type_tag(arg_kind, arg_idx, type_tag_idx) \ __attribute__((__argument_with_type_tag__(arg_kind, arg_idx, type_tag_idx))) #define __datatype_type_tag(kind, type) \ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/config.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/config.h index 2082dfdb1..d746b15fc 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/config.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/config.h @@ -8,6 +8,10 @@ #define MALLOC_ALIGNMENT 16 #endif +#ifdef __AMDGCN__ +#define __DYNAMIC_REENT__ +#endif + /* exceptions first */ #if defined(__H8500__) || defined(__W65__) #define __SMALL_BITFIELDS @@ -108,7 +112,7 @@ #define _POINTER_INT short #endif -#ifdef __v850 +#if defined(__v850) && !defined(__rtems__) #define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__sda__)) #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/features.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/features.h index 2900b332f..f28dd071b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/features.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/features.h @@ -425,7 +425,7 @@ extern "C" { #endif #define _POSIX_ADVISORY_INFO 200809L -/* #define _POSIX_ASYNCHRONOUS_IO -1 */ +#define _POSIX_ASYNCHRONOUS_IO 200809L #define _POSIX_BARRIERS 200809L #define _POSIX_CHOWN_RESTRICTED 1 #define _POSIX_CLOCK_SELECTION 200809L diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/queue.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/queue.h index 491bdde82..6392b6220 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/queue.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/queue.h @@ -93,6 +93,7 @@ * _NEXT + + + + * _PREV - + - + * _LAST - - + + + * _LAST_FAST - - - + * _FOREACH + + + + * _FOREACH_FROM + + + + * _FOREACH_SAFE + + + + @@ -820,6 +821,16 @@ struct { \ #define TAILQ_LAST(head, headname) \ (*(((struct headname *)((head)->tqh_last))->tqh_last)) +/* + * The FAST function is fast in that it causes no data access other + * then the access to the head. The standard LAST function above + * will cause a data access of both the element you want and + * the previous element. FAST is very useful for instances when + * you may want to prefetch the last data element. + */ +#define TAILQ_LAST_FAST(head, type, field) \ + (TAILQ_EMPTY(head) ? NULL : __containerof((head)->tqh_last, QUEUE_TYPEOF(type), field.tqe_next)) + #define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) #define TAILQ_PREV(elm, headname, field) \ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h index 6e55e1c1f..7f8124deb 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/reent.h @@ -30,6 +30,11 @@ typedef unsigned __Long __ULong; #include #endif +#ifndef __machine_flock_t_defined +#include +typedef _LOCK_RECURSIVE_T _flock_t; +#endif + #ifndef __Long #define __Long __int32_t typedef __uint32_t __ULong; diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/signal.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/signal.h index 7d0c59437..45cc0366c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/signal.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/signal.h @@ -161,11 +161,11 @@ typedef struct sigaltstack { #define SIG_BLOCK 1 /* set of signals to block */ #define SIG_UNBLOCK 2 /* set of signals to, well, unblock */ -int sigprocmask (int how, const sigset_t *set, sigset_t *oset); +int sigprocmask (int, const sigset_t *, sigset_t *); #endif #if __POSIX_VISIBLE >= 199506 -int pthread_sigmask (int how, const sigset_t *set, sigset_t *oset); +int pthread_sigmask (int, const sigset_t *, sigset_t *); #endif #ifdef _COMPILING_NEWLIB @@ -188,7 +188,7 @@ int sigfillset (sigset_t *); int sigemptyset (sigset_t *); int sigpending (sigset_t *); int sigsuspend (const sigset_t *); -int sigwait (const sigset_t *set, int *sig); +int sigwait (const sigset_t *, int *); #if !defined(__CYGWIN__) && !defined(__rtems__) /* These depend upon the type of sigset_t, which right now @@ -223,7 +223,7 @@ int sigaltstack (const stack_t *__restrict, stack_t *__restrict); #endif #if __POSIX_VISIBLE >= 199506 -int pthread_kill (pthread_t thread, int sig); +int pthread_kill (pthread_t, int); #endif #if __POSIX_VISIBLE >= 199309 @@ -231,11 +231,10 @@ int pthread_kill (pthread_t thread, int sig); /* 3.3.8 Synchronously Accept a Signal, P1003.1b-1993, p. 76 NOTE: P1003.1c/D10, p. 39 adds sigwait(). */ -int sigwaitinfo (const sigset_t *set, siginfo_t *info); -int sigtimedwait (const sigset_t *set, siginfo_t *info, - const struct timespec *timeout); +int sigwaitinfo (const sigset_t *, siginfo_t *); +int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *); /* 3.3.9 Queue a Signal to a Process, P1003.1b-1993, p. 78 */ -int sigqueue (pid_t pid, int signo, const union sigval value); +int sigqueue (pid_t, int, const union sigval); #endif /* __POSIX_VISIBLE >= 199309 */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/time.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/time.h index ce2e667f7..c760adfbd 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/time.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/time.h @@ -3,6 +3,8 @@ Public domain; no rights reserved. */ /*- + * SPDX-License-Identifier: BSD-3-Clause + * * Copyright (c) 1982, 1986, 1993 * The Regents of the University of California. All rights reserved. * @@ -14,7 +16,7 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 4. Neither the name of the University nor the names of its contributors + * 3. Neither the name of the University nor the names of its contributors * may be used to endorse or promote products derived from this software * without specific prior written permission. * @@ -31,7 +33,7 @@ * SUCH DAMAGE. * * @(#)time.h 8.5 (Berkeley) 5/4/95 - * $FreeBSD$ + * $FreeBSD: head/sys/sys/time.h 340664 2018-11-20 07:11:23Z imp $ */ #ifndef _SYS_TIME_H_ @@ -138,7 +140,7 @@ bintime_shift(struct bintime *_bt, int _exp) #define SBT_1M (SBT_1S * 60) #define SBT_1MS (SBT_1S / 1000) #define SBT_1US (SBT_1S / 1000000) -#define SBT_1NS (SBT_1S / 1000000000) +#define SBT_1NS (SBT_1S / 1000000000) /* beware rounding, see nstosbt() */ #define SBT_MAX 0x7fffffffffffffffLL static __inline int @@ -165,6 +167,90 @@ sbttobt(sbintime_t _sbt) return (_bt); } +/* + * Decimal<->sbt conversions. Multiplying or dividing by SBT_1NS results in + * large roundoff errors which sbttons() and nstosbt() avoid. Millisecond and + * microsecond functions are also provided for completeness. + * + * These functions return the smallest sbt larger or equal to the + * number of seconds requested so that sbttoX(Xtosbt(y)) == y. Unlike + * top of second computations below, which require that we tick at the + * top of second, these need to be rounded up so we do whatever for at + * least as long as requested. + * + * The naive computation we'd do is this + * ((unit * 2^64 / SIFACTOR) + 2^32-1) >> 32 + * However, that overflows. Instead, we compute + * ((unit * 2^63 / SIFACTOR) + 2^31-1) >> 32 + * and use pre-computed constants that are the ceil of the 2^63 / SIFACTOR + * term to ensure we are using exactly the right constant. We use the lesser + * evil of ull rather than a uint64_t cast to ensure we have well defined + * right shift semantics. With these changes, we get all the ns, us and ms + * conversions back and forth right. + */ +static __inline int64_t +sbttons(sbintime_t _sbt) +{ + + return ((1000000000 * _sbt) >> 32); +} + +static __inline sbintime_t +nstosbt(int64_t _ns) +{ + sbintime_t sb = 0; + + if (_ns >= SBT_1S) { + sb = (_ns / 1000000000) * SBT_1S; + _ns = _ns % 1000000000; + } + /* 9223372037 = ceil(2^63 / 1000000000) */ + sb += ((_ns * 9223372037ull) + 0x7fffffff) >> 31; + return (sb); +} + +static __inline int64_t +sbttous(sbintime_t _sbt) +{ + + return ((1000000 * _sbt) >> 32); +} + +static __inline sbintime_t +ustosbt(int64_t _us) +{ + sbintime_t sb = 0; + + if (_us >= SBT_1S) { + sb = (_us / 1000000) * SBT_1S; + _us = _us % 1000000; + } + /* 9223372036855 = ceil(2^63 / 1000000) */ + sb += ((_us * 9223372036855ull) + 0x7fffffff) >> 31; + return (sb); +} + +static __inline int64_t +sbttoms(sbintime_t _sbt) +{ + + return ((1000 * _sbt) >> 32); +} + +static __inline sbintime_t +mstosbt(int64_t _ms) +{ + sbintime_t sb = 0; + + if (_ms >= SBT_1S) { + sb = (_ms / 1000) * SBT_1S; + _ms = _ms % 1000; + } + /* 9223372036854776 = ceil(2^63 / 1000) */ + sb += ((_ms * 9223372036854776ull) + 0x7fffffff) >> 31; + return (sb); +} + /*- * Background information: * @@ -220,7 +306,7 @@ sbttots(sbintime_t _sbt) struct timespec _ts; _ts.tv_sec = _sbt >> 32; - _ts.tv_nsec = ((uint64_t)1000000000 * (uint32_t)_sbt) >> 32; + _ts.tv_nsec = sbttons((uint32_t)_sbt); return (_ts); } @@ -228,8 +314,7 @@ static __inline sbintime_t tstosbt(struct timespec _ts) { - return (((sbintime_t)_ts.tv_sec << 32) + - (_ts.tv_nsec * (((uint64_t)1 << 63) / 500000000) >> 32)); + return (((sbintime_t)_ts.tv_sec << 32) + nstosbt(_ts.tv_nsec)); } static __inline struct timeval @@ -238,7 +323,7 @@ sbttotv(sbintime_t _sbt) struct timeval _tv; _tv.tv_sec = _sbt >> 32; - _tv.tv_usec = ((uint64_t)1000000 * (uint32_t)_sbt) >> 32; + _tv.tv_usec = sbttous((uint32_t)_sbt); return (_tv); } @@ -246,8 +331,7 @@ static __inline sbintime_t tvtosbt(struct timeval _tv) { - return (((sbintime_t)_tv.tv_sec << 32) + - (_tv.tv_usec * (((uint64_t)1 << 63) / 500000) >> 32)); + return (((sbintime_t)_tv.tv_sec << 32) + ustosbt(_tv.tv_usec)); } #endif /* __BSD_VISIBLE */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/tree.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/tree.h index f4167c4e4..fd66ceba1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/tree.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/tree.h @@ -1,8 +1,10 @@ /* $NetBSD: tree.h,v 1.8 2004/03/28 19:38:30 provos Exp $ */ /* $OpenBSD: tree.h,v 1.7 2002/10/17 21:51:54 art Exp $ */ -/* $FreeBSD$ */ +/* $FreeBSD: head/sys/sys/tree.h 347360 2019-05-08 18:47:00Z trasz $ */ /*- + * SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * * Copyright 2002 Niels Provos * All rights reserved. * @@ -88,7 +90,7 @@ struct { \ SPLAY_RIGHT(tmp, field) = (head)->sph_root; \ (head)->sph_root = tmp; \ } while (/*CONSTCOND*/ 0) - + #define SPLAY_ROTATE_LEFT(head, tmp, field) do { \ SPLAY_RIGHT((head)->sph_root, field) = SPLAY_LEFT(tmp, field); \ SPLAY_LEFT(tmp, field) = (head)->sph_root; \ @@ -123,7 +125,7 @@ struct type *name##_SPLAY_INSERT(struct name *, struct type *); \ struct type *name##_SPLAY_REMOVE(struct name *, struct type *); \ \ /* Finds the node with the same key as elm */ \ -static __inline struct type * \ +static __unused __inline struct type * \ name##_SPLAY_FIND(struct name *head, struct type *elm) \ { \ if (SPLAY_EMPTY(head)) \ @@ -134,7 +136,7 @@ name##_SPLAY_FIND(struct name *head, struct type *elm) \ return (NULL); \ } \ \ -static __inline struct type * \ +static __unused __inline struct type * \ name##_SPLAY_NEXT(struct name *head, struct type *elm) \ { \ name##_SPLAY(head, elm); \ @@ -148,7 +150,7 @@ name##_SPLAY_NEXT(struct name *head, struct type *elm) \ return (elm); \ } \ \ -static __inline struct type * \ +static __unused __inline struct type * \ name##_SPLAY_MIN_MAX(struct name *head, int val) \ { \ name##_SPLAY_MINMAX(head, val); \ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/sys/types.h b/gcc-arm-none-eabi/arm-none-eabi/include/sys/types.h index 65ff520c8..4613ac81f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/sys/types.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/sys/types.h @@ -36,30 +36,12 @@ typedef __uint32_t u_int32_t; #if ___int64_t_defined typedef __uint64_t u_int64_t; #endif -typedef int register_t; +typedef __intptr_t register_t; #define __BIT_TYPES_DEFINED__ 1 -#if defined(__rtems__) || defined(__XMK__) -/* - * The following section is RTEMS specific and is needed to more - * closely match the types defined in the BSD sys/types.h. - * This is needed to let the RTEMS/BSD TCP/IP stack compile. - */ - -/* deprecated */ -#if ___int64_t_defined -typedef __uint64_t u_quad_t; -typedef __int64_t quad_t; -typedef quad_t * qaddr_t; -#endif - -#endif /* __rtems__ || __XMK__ */ - #ifndef __need_inttypes #define _SYS_TYPES_H -/* must be before for __size_t considerations */ -#include #include #include @@ -78,6 +60,8 @@ typedef __uint32_t in_addr_t; /* base type for internet address */ typedef __uint16_t in_port_t; #define _IN_PORT_T_DECLARED #endif + +typedef __uintptr_t u_register_t; #endif /* __BSD_VISIBLE */ #if __MISC_VISIBLE @@ -101,7 +85,7 @@ typedef unsigned long u_long; #endif #define _BSDTYPES_DEFINED #endif -#endif /*__BSD_VISIBLE || __CYGWIN__ */ +#endif /* __MISC_VISIBLE */ #if __MISC_VISIBLE typedef unsigned short ushort; /* System V compatibility */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/time.h b/gcc-arm-none-eabi/arm-none-eabi/include/time.h index a2efcc15e..3031590b4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/time.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/time.h @@ -29,7 +29,7 @@ #include #if __POSIX_VISIBLE >= 200809 -#include +#include #endif _BEGIN_STD_C @@ -249,15 +249,19 @@ extern "C" { /* thread shall not have a CPU-time clock */ /* accessible. */ -/* Manifest Constants, P1003.1b-1993, p. 262 */ - -#define CLOCK_REALTIME (clockid_t)1 - /* Flag indicating time is "absolute" with respect to the clock - associated with a time. */ + associated with a time. Value 4 is historic. */ #define TIMER_ABSTIME 4 +/* Manifest Constants, P1003.1b-1993, p. 262 */ + +#if __GNU_VISIBLE +#define CLOCK_REALTIME_COARSE ((clockid_t) 0) +#endif + +#define CLOCK_REALTIME ((clockid_t) 1) + /* Manifest Constants, P1003.4b/D8, p. 55 */ #if defined(_POSIX_CPUTIME) @@ -266,7 +270,7 @@ extern "C" { the identifier of the CPU_time clock associated with the PROCESS making the function call. */ -#define CLOCK_PROCESS_CPUTIME_ID (clockid_t)2 +#define CLOCK_PROCESS_CPUTIME_ID ((clockid_t) 2) #endif @@ -276,17 +280,31 @@ extern "C" { the identifier of the CPU_time clock associated with the THREAD making the function call. */ -#define CLOCK_THREAD_CPUTIME_ID (clockid_t)3 +#define CLOCK_THREAD_CPUTIME_ID ((clockid_t) 3) #endif #if defined(_POSIX_MONOTONIC_CLOCK) /* The identifier for the system-wide monotonic clock, which is defined - * as a clock whose value cannot be set via clock_settime() and which - * cannot have backward clock jumps. */ + * as a clock whose value cannot be set via clock_settime() and which + * cannot have backward clock jumps. */ -#define CLOCK_MONOTONIC (clockid_t)4 +#define CLOCK_MONOTONIC ((clockid_t) 4) + +#endif + +#if __GNU_VISIBLE + +#define CLOCK_MONOTONIC_RAW ((clockid_t) 5) + +#define CLOCK_MONOTONIC_COARSE ((clockid_t) 6) + +#define CLOCK_BOOTTIME ((clockid_t) 7) + +#define CLOCK_REALTIME_ALARM ((clockid_t) 8) + +#define CLOCK_BOOTTIME_ALARM ((clockid_t) 9) #endif diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/wchar.h b/gcc-arm-none-eabi/arm-none-eabi/include/wchar.h index c84834277..c04a6510e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/wchar.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/wchar.h @@ -64,7 +64,7 @@ typedef __gnuc_va_list va_list; #endif #if __POSIX_VISIBLE >= 200809 -#include +#include #endif _BEGIN_STD_C @@ -126,7 +126,7 @@ wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict); #if __POSIX_VISIBLE >= 200809 wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict); -wchar_t *wcsdup (const wchar_t *); +wchar_t *wcsdup (const wchar_t *) __malloc_like __result_use_check; #endif wchar_t *_wcsdup_r (struct _reent *, const wchar_t * ); size_t wcscspn (const wchar_t *, const wchar_t *); diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/wctype.h b/gcc-arm-none-eabi/arm-none-eabi/include/wctype.h index 9b710900d..e5452bfc3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/include/wctype.h +++ b/gcc-arm-none-eabi/arm-none-eabi/include/wctype.h @@ -8,7 +8,7 @@ #include #if __POSIX_VISIBLE >= 200809 -#include +#include #endif #ifndef WEOF diff --git a/gcc-arm-none-eabi/arm-none-eabi/include/xlocale.h b/gcc-arm-none-eabi/arm-none-eabi/include/xlocale.h deleted file mode 100644 index f9554269c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/include/xlocale.h +++ /dev/null @@ -1,12 +0,0 @@ -/* Definition of opaque POSIX-1.2008 type locale_t for userspace. */ - -#ifndef _XLOCALE_H -#define _XLOCALE_H - -#include -#include - -struct __locale_t; -typedef struct __locale_t *locale_t; - -#endif /* _XLOCALE_H */ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..5b7587630 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/crt0.o new file mode 100644 index 000000000..8636b4c5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libc.a new file mode 100644 index 000000000..8ab1f4d79 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libc_nano.a new file mode 100644 index 000000000..a23c40d7a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libg.a new file mode 100644 index 000000000..8ab1f4d79 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libg_nano.a new file mode 100644 index 000000000..8b6ff45d1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libgloss-linux.a new file mode 100644 index 000000000..7a2df4625 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libm.a new file mode 100644 index 000000000..c08916682 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libnosys.a new file mode 100644 index 000000000..3085e41b7 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon-v2m.a new file mode 100644 index 000000000..782763bd3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon.a new file mode 100644 index 000000000..2d6a40877 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon_nano.a new file mode 100644 index 000000000..99b5c4877 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdpmon.a new file mode 100644 index 000000000..60a9d3050 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++.a new file mode 100644 index 000000000..930e5b3c3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++.a-gdb.py new file mode 100644 index 000000000..5a6485098 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/arm/v5te/hard' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++_nano.a new file mode 100644 index 000000000..44d8136d8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libsupc++.a new file mode 100644 index 000000000..4352ce359 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libsupc++_nano.a new file mode 100644 index 000000000..4aece6530 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/linux-crt0.o new file mode 100644 index 000000000..d64186b45 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/linux-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-crt0-v2m.o new file mode 100644 index 000000000..f6671517e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-crt0.o new file mode 100644 index 000000000..f7218bbdf Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdpmon-crt0.o new file mode 100644 index 000000000..3933d507f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot-crt0.o new file mode 100644 index 000000000..28730a753 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot-syscalls.o new file mode 100644 index 000000000..25d9ceeb7 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/hard/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..5b7587630 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/crt0.o new file mode 100644 index 000000000..8636b4c5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libc.a new file mode 100644 index 000000000..df16daf94 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libc_nano.a new file mode 100644 index 000000000..bedc25c4c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libg.a new file mode 100644 index 000000000..df16daf94 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libg_nano.a new file mode 100644 index 000000000..bedc25c4c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libgloss-linux.a new file mode 100644 index 000000000..13d904255 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libm.a new file mode 100644 index 000000000..897ee3148 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libnosys.a new file mode 100644 index 000000000..b946856d5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon-v2m.a new file mode 100644 index 000000000..b5296611e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon.a new file mode 100644 index 000000000..be34e79e6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon_nano.a new file mode 100644 index 000000000..ff25b8663 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdpmon.a new file mode 100644 index 000000000..a9ecde78b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a new file mode 100644 index 000000000..95e468bd8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a-gdb.py new file mode 100644 index 000000000..16b781df6 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/arm/v5te/softfp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++_nano.a new file mode 100644 index 000000000..c426dd9b9 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libsupc++.a new file mode 100644 index 000000000..a74f2d1e8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libsupc++_nano.a new file mode 100644 index 000000000..0cfa434f3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/linux-crt0.o new file mode 100644 index 000000000..c4869b2f2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/linux-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..f6671517e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-crt0.o new file mode 100644 index 000000000..f7218bbdf Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdpmon-crt0.o new file mode 100644 index 000000000..3933d507f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot-crt0.o new file mode 100644 index 000000000..28730a753 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot-syscalls.o new file mode 100644 index 000000000..3f7362fc7 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/arm/v5te/softfp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/cpu-init/rdimon-aem.o index 0acf0ebad..52f72107e 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/cpu-init/rdimon-aem.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/crt0.o index f7d58ee08..e92455927 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/crt0.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/cpu-init/rdimon-aem.o deleted file mode 100644 index 0acf0ebad..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/crt0.o deleted file mode 100644 index f7d58ee08..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libc.a deleted file mode 100644 index cad1b5aca..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libc_nano.a deleted file mode 100644 index b9500ee17..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libg.a deleted file mode 100644 index cad1b5aca..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libg_nano.a deleted file mode 100644 index b9500ee17..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libgloss-linux.a deleted file mode 100644 index 1a61f0897..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libm.a deleted file mode 100644 index da920c3e5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libnosys.a deleted file mode 100644 index 7c3c9090f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon-v2m.a deleted file mode 100644 index a07b0b530..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon.a deleted file mode 100644 index 234ddb78e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon_nano.a deleted file mode 100644 index cae821369..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdpmon.a deleted file mode 100644 index 1352c2097..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++.a deleted file mode 100644 index 9323df850..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++.a-gdb.py deleted file mode 100644 index 025e55197..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/hard' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++_nano.a deleted file mode 100644 index 9b54f9873..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libsupc++.a deleted file mode 100644 index 5a87d3aa5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libsupc++_nano.a deleted file mode 100644 index 8fce41ecb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/linux-crt0.o deleted file mode 100644 index e85f1bf49..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/linux-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-crt0-v2m.o deleted file mode 100644 index cbac186c1..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-crt0.o deleted file mode 100644 index 2eb183ed4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdpmon-crt0.o deleted file mode 100644 index 452b039b9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot-crt0.o deleted file mode 100644 index 01d424215..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot-syscalls.o deleted file mode 100644 index ebaf72ca8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/hard/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.x b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.x index 1c0574664..131b945c5 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.x +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.x @@ -1,5 +1,5 @@ /* Default linker script, for normal executables */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -95,14 +95,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -110,24 +108,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -169,7 +171,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -186,15 +188,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -209,6 +211,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -224,7 +227,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xbn b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xbn index 3967d4c59..ee6ec4e0d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xbn +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xbn @@ -1,5 +1,5 @@ /* Script for -N: mix text and data on same page; don't align data */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -95,14 +95,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = .; @@ -110,24 +108,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -169,7 +171,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -186,15 +188,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -209,6 +211,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -224,7 +227,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xc b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xc index 5455d800e..55c8894e3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xc +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xc @@ -1,5 +1,5 @@ /* Script for -z combreloc: combine and sort reloc sections */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -94,14 +94,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -109,24 +107,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -168,7 +170,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -185,15 +187,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -208,6 +210,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -223,7 +226,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xce b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xce index 381a8bd3b..9e32d852c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xce +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xce @@ -1,5 +1,5 @@ /* Script for -z combreloc -z separate-code: combine and sort reloc sections with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -99,14 +98,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -114,24 +111,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -173,7 +174,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -190,15 +191,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -213,6 +214,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -228,7 +230,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xd b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xd index a8f6a6ee8..927e365b4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xd +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xd @@ -1,5 +1,5 @@ /* Script for ld -pie: link position independent executable */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -95,14 +95,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -110,24 +108,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -169,7 +171,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -186,15 +188,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -209,6 +211,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -224,7 +227,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdc b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdc index d3e623de7..da04fa0b7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdc +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdc @@ -1,5 +1,5 @@ /* Script for -pie -z combreloc: position independent executable, combine & sort relocs */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -94,14 +94,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -109,24 +107,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -168,7 +170,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -185,15 +187,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -208,6 +210,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -223,7 +226,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdce b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdce index 232ae2415..02b367e44 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdce +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdce @@ -1,5 +1,5 @@ /* Script for -pie -z combreloc -z separate-code: position independent executable, combine & sort relocs with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -99,14 +98,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -114,24 +111,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -173,7 +174,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -190,15 +191,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -213,6 +214,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -228,7 +230,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xde b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xde index 557e83594..9d54445d4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xde +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xde @@ -1,5 +1,5 @@ /* Script for ld -pie -z separate-code: link position independent executable with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -100,14 +99,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -115,24 +112,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -174,7 +175,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -191,15 +192,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -214,6 +215,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -229,7 +231,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdw b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdw index e4182f62e..04f51aef3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdw +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdw @@ -1,5 +1,5 @@ /* Script for -pie -z combreloc -z now -z relro: position independent executable, combine & sort relocs */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -94,14 +94,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -109,24 +107,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -168,7 +170,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -185,15 +187,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -208,6 +210,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -223,7 +226,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdwe b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdwe index bd5425de3..e2bb57117 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdwe +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xdwe @@ -1,5 +1,5 @@ /* Script for -pie -z combreloc -z now -z relro -z separate-code: position independent executable, combine & sort relocs with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0)); . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -99,14 +98,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -114,24 +111,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -173,7 +174,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -190,15 +191,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -213,6 +214,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -228,7 +230,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xe b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xe index 6d0890f4e..6ad39414c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xe +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xe @@ -1,5 +1,5 @@ /* Script for -z separate-code: generate normal executables with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -100,14 +99,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -115,24 +112,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -174,7 +175,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -191,15 +192,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -214,6 +215,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -229,7 +231,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xn b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xn index 4c3ca9569..2f06dcb5d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xn +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xn @@ -1,5 +1,5 @@ /* Script for -n: mix text and data on same page */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -95,14 +95,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -110,24 +108,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -169,7 +171,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -186,15 +188,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -209,6 +211,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -224,7 +227,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xr b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xr index 2af3d5bac..2d49f3b66 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xr +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xr @@ -1,5 +1,5 @@ /* Script for ld -r: link without relocation */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -12,9 +12,8 @@ OUTPUT_ARCH(arm) bug. But for now assigning the zero vmas works. */ SECTIONS { - /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id 0: { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } @@ -82,27 +81,26 @@ SECTIONS .rodata1 0 : { *(.rodata1) } .ARM.extab 0 : { *(.ARM.extab) } .ARM.exidx 0 : { *(.ARM.exidx) } - .eh_frame_hdr : { *(.eh_frame_hdr) } - .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } - .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .eh_frame_hdr 0 : { *(.eh_frame_hdr) } + .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ + .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Exception handling */ - .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } - .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } + .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ - .tdata 0 : { *(.tdata) } + .tdata 0 : + { + *(.tdata) + } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } - .got 0 : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + .got 0 : { *(.got) } .data 0 : { *(.data) @@ -111,12 +109,6 @@ SECTIONS .bss 0 : { *(.bss) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't - pad the .data section. */ } .stack 0 : { @@ -130,6 +122,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -145,7 +138,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xs b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xs index a3f503066..8a252ce71 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xs +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xs @@ -1,5 +1,5 @@ /* Script for ld --shared: link shared library */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,12 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -90,14 +90,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -105,20 +103,23 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { KEEP (*(.preinit_array)) } - .init_array : + .init_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } - .fini_array : + .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) @@ -158,15 +159,15 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); + PROVIDE (_edata = .); PROVIDE (edata = .); . = .; - __bss_start = .; - __bss_start__ = .; + PROVIDE (__bss_start = .); + PROVIDE (__bss_start__ = .); .bss : { *(.dynbss) @@ -175,16 +176,16 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + PROVIDE (_bss_end__ = .); PROVIDE (__bss_end__ = .); . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; - _end = .; PROVIDE (end = .); + PROVIDE (__end__ = .); + PROVIDE (_end = .); PROVIDE (end = .); .stack 0x80000 : { _stack = .; @@ -198,6 +199,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -213,7 +215,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsc b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsc index 78439f374..e550fcfe7 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsc +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsc @@ -1,5 +1,5 @@ /* Script for --shared -z combreloc: shared library, combine & sort relocs */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,12 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -89,14 +89,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -104,20 +102,23 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { KEEP (*(.preinit_array)) } - .init_array : + .init_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } - .fini_array : + .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) @@ -157,15 +158,15 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); + PROVIDE (_edata = .); PROVIDE (edata = .); . = .; - __bss_start = .; - __bss_start__ = .; + PROVIDE (__bss_start = .); + PROVIDE (__bss_start__ = .); .bss : { *(.dynbss) @@ -174,16 +175,16 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + PROVIDE (_bss_end__ = .); PROVIDE (__bss_end__ = .); . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; - _end = .; PROVIDE (end = .); + PROVIDE (__end__ = .); + PROVIDE (_end = .); PROVIDE (end = .); .stack 0x80000 : { _stack = .; @@ -197,6 +198,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -212,7 +214,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsce b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsce index 801a1c214..488c1e514 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsce +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsce @@ -1,5 +1,5 @@ /* Script for --shared -z combreloc -z separate-code: shared library, combine & sort relocs with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,12 +7,11 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -94,14 +93,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -109,20 +106,23 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { KEEP (*(.preinit_array)) } - .init_array : + .init_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } - .fini_array : + .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) @@ -162,15 +162,15 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); + PROVIDE (_edata = .); PROVIDE (edata = .); . = .; - __bss_start = .; - __bss_start__ = .; + PROVIDE (__bss_start = .); + PROVIDE (__bss_start__ = .); .bss : { *(.dynbss) @@ -179,16 +179,16 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + PROVIDE (_bss_end__ = .); PROVIDE (__bss_end__ = .); . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; - _end = .; PROVIDE (end = .); + PROVIDE (__end__ = .); + PROVIDE (_end = .); PROVIDE (end = .); .stack 0x80000 : { _stack = .; @@ -202,6 +202,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -217,7 +218,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xse b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xse index acb6e9d30..356094749 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xse +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xse @@ -1,5 +1,5 @@ /* Script for ld --shared -z separate-code: link shared library with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,12 +7,11 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -95,14 +94,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -110,20 +107,23 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { KEEP (*(.preinit_array)) } - .init_array : + .init_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } - .fini_array : + .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) @@ -163,15 +163,15 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); + PROVIDE (_edata = .); PROVIDE (edata = .); . = .; - __bss_start = .; - __bss_start__ = .; + PROVIDE (__bss_start = .); + PROVIDE (__bss_start__ = .); .bss : { *(.dynbss) @@ -180,16 +180,16 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + PROVIDE (_bss_end__ = .); PROVIDE (__bss_end__ = .); . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; - _end = .; PROVIDE (end = .); + PROVIDE (__end__ = .); + PROVIDE (_end = .); PROVIDE (end = .); .stack 0x80000 : { _stack = .; @@ -203,6 +203,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -218,7 +219,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsw b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsw index 673c5287e..f5d6f1d9a 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsw +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xsw @@ -1,5 +1,5 @@ /* Script for --shared -z combreloc -z now -z relro: shared library, combine & sort relocs */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,12 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -89,14 +89,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -104,20 +102,23 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { KEEP (*(.preinit_array)) } - .init_array : + .init_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } - .fini_array : + .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) @@ -157,15 +158,15 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); + PROVIDE (_edata = .); PROVIDE (edata = .); . = .; - __bss_start = .; - __bss_start__ = .; + PROVIDE (__bss_start = .); + PROVIDE (__bss_start__ = .); .bss : { *(.dynbss) @@ -174,16 +175,16 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + PROVIDE (_bss_end__ = .); PROVIDE (__bss_end__ = .); . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; - _end = .; PROVIDE (end = .); + PROVIDE (__end__ = .); + PROVIDE (_end = .); PROVIDE (end = .); .stack 0x80000 : { _stack = .; @@ -197,6 +198,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -212,7 +214,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xswe b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xswe index 43cf1af9a..bc9d8c923 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xswe +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xswe @@ -1,5 +1,5 @@ /* Script for --shared -z combreloc -z now -z relro -z separate-code: shared library, combine & sort relocs with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,12 +7,11 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ . = SEGMENT_START("text-segment", 0) + SIZEOF_HEADERS; - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -94,14 +93,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -109,20 +106,23 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { KEEP (*(.preinit_array)) } - .init_array : + .init_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) } - .fini_array : + .fini_array : { KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) KEEP (*(.fini_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) @@ -162,15 +162,15 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + PROVIDE (__data_start = .); *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } .data1 : { *(.data1) } - _edata = .; PROVIDE (edata = .); + PROVIDE (_edata = .); PROVIDE (edata = .); . = .; - __bss_start = .; - __bss_start__ = .; + PROVIDE (__bss_start = .); + PROVIDE (__bss_start__ = .); .bss : { *(.dynbss) @@ -179,16 +179,16 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + PROVIDE (_bss_end__ = .); PROVIDE (__bss_end__ = .); . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; - _end = .; PROVIDE (end = .); + PROVIDE (__end__ = .); + PROVIDE (_end = .); PROVIDE (end = .); .stack 0x80000 : { _stack = .; @@ -202,6 +202,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -217,7 +218,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xu b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xu index c2d3a0dcd..adbe09c17 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xu +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xu @@ -1,5 +1,5 @@ /* Script for ld -Ur: link w/out relocation, do create constructors */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -12,9 +12,8 @@ OUTPUT_ARCH(arm) bug. But for now assigning the zero vmas works. */ SECTIONS { - /* Read-only sections, merged into text segment: */ .interp 0 : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id 0: { *(.note.gnu.build-id) } .hash 0 : { *(.hash) } .gnu.hash 0 : { *(.gnu.hash) } .dynsym 0 : { *(.dynsym) } @@ -82,27 +81,26 @@ SECTIONS .rodata1 0 : { *(.rodata1) } .ARM.extab 0 : { *(.ARM.extab) } .ARM.exidx 0 : { *(.ARM.exidx) } - .eh_frame_hdr : { *(.eh_frame_hdr) } - .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } - .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .eh_frame_hdr 0 : { *(.eh_frame_hdr) } + .eh_frame 0 : ONLY_IF_RO { KEEP (*(.eh_frame)) } + .gcc_except_table 0 : ONLY_IF_RO { *(.gcc_except_table) } .gnu_extab 0 : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } - /* Adjust the address for the data segment. We want to adjust up to - the same address within the page on the next page up. */ + .exception_ranges 0 : ONLY_IF_RO { *(.exception_ranges) } /* Exception handling */ - .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } + .eh_frame 0 : ONLY_IF_RW { KEEP (*(.eh_frame)) } .gnu_extab 0 : ONLY_IF_RW { *(.gnu_extab) } - .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .gcc_except_table 0 : ONLY_IF_RW { *(.gcc_except_table) } + .exception_ranges 0 : ONLY_IF_RW { *(.exception_ranges) } /* Thread Local Storage sections */ - .tdata 0 : { *(.tdata) } + .tdata 0 : + { + *(.tdata) + } .tbss 0 : { *(.tbss) } .jcr 0 : { KEEP (*(.jcr)) } .dynamic 0 : { *(.dynamic) } - .got 0 : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } + .got 0 : { *(.got) } .data 0 : { *(.data) @@ -112,12 +110,6 @@ SECTIONS .bss 0 : { *(.bss) - *(COMMON) - /* Align here to ensure that the .bss section occupies space up to - _end. Align after .bss to ensure correct alignment even if the - .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't - pad the .data section. */ } .stack 0 : { @@ -131,6 +123,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -146,7 +139,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xw b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xw index f978566d4..8ac29c14f 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xw +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xw @@ -1,5 +1,5 @@ /* Script for -z combreloc -z now -z relro: combine and sort reloc sections */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,13 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -94,14 +94,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -109,24 +107,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -168,7 +170,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -185,15 +187,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -208,6 +210,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -223,7 +226,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xwe b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xwe index c9dcc34ec..4701cd32e 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xwe +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/ldscripts/armelf.xwe @@ -1,5 +1,5 @@ /* Script for -z combreloc -z now -z relro -z separate-code: combine and sort reloc sections with separate code segment */ -/* Copyright (C) 2014-2018 Free Software Foundation, Inc. +/* Copyright (C) 2014-2019 Free Software Foundation, Inc. Copying and distribution of this script, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. */ @@ -7,13 +7,12 @@ OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") OUTPUT_ARCH(arm) ENTRY(_start) -SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); +SEARCH_DIR("=/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib"); SEARCH_DIR("=/usr/local/lib"); SEARCH_DIR("=/lib"); SEARCH_DIR("=/usr/lib"); SECTIONS { - /* Read-only sections, merged into text segment: */ PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x8000)); . = SEGMENT_START("text-segment", 0x8000); .interp : { *(.interp) } - .note.gnu.build-id : { *(.note.gnu.build-id) } + .note.gnu.build-id : { *(.note.gnu.build-id) } .hash : { *(.hash) } .gnu.hash : { *(.gnu.hash) } .dynsym : { *(.dynsym) } @@ -99,14 +98,12 @@ SECTIONS PROVIDE_HIDDEN (__exidx_start = .); .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) } PROVIDE_HIDDEN (__exidx_end = .); - .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } + .eh_frame_hdr : { *(.eh_frame_hdr) *(.eh_frame_entry .eh_frame_entry.*) } .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) *(.eh_frame.*) } - .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table - .gcc_except_table.*) } + .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table .gcc_except_table.*) } .gnu_extab : ONLY_IF_RO { *(.gnu_extab*) } /* These sections are generated by the Sun/Oracle C++ compiler. */ - .exception_ranges : ONLY_IF_RO { *(.exception_ranges - .exception_ranges*) } + .exception_ranges : ONLY_IF_RO { *(.exception_ranges*) } /* Adjust the address for the data segment. We want to adjust up to the same address within the page on the next page up. */ . = ALIGN(CONSTANT (MAXPAGESIZE)) + (. & (CONSTANT (MAXPAGESIZE) - 1)); @@ -114,24 +111,28 @@ SECTIONS .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) *(.eh_frame.*) } .gnu_extab : ONLY_IF_RW { *(.gnu_extab) } .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } - .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } + .exception_ranges : ONLY_IF_RW { *(.exception_ranges*) } /* Thread Local Storage sections */ - .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } + .tdata : + { + PROVIDE_HIDDEN (__tdata_start = .); + *(.tdata .tdata.* .gnu.linkonce.td.*) + } .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } - .preinit_array : + .preinit_array : { PROVIDE_HIDDEN (__preinit_array_start = .); KEEP (*(.preinit_array)) PROVIDE_HIDDEN (__preinit_array_end = .); } - .init_array : + .init_array : { PROVIDE_HIDDEN (__init_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) KEEP (*(.init_array EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) PROVIDE_HIDDEN (__init_array_end = .); } - .fini_array : + .fini_array : { PROVIDE_HIDDEN (__fini_array_start = .); KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) @@ -173,7 +174,7 @@ SECTIONS .got : { *(.got.plt) *(.igot.plt) *(.got) *(.igot) } .data : { - __data_start = . ; + __data_start = .; *(.data .data.* .gnu.linkonce.d.*) SORT(CONSTRUCTORS) } @@ -190,15 +191,15 @@ SECTIONS /* Align here to ensure that the .bss section occupies space up to _end. Align after .bss to ensure correct alignment even if the .bss section disappears because there are no input sections. - FIXME: Why do we need it? When there is no .bss section, we don't + FIXME: Why do we need it? When there is no .bss section, we do not pad the .data section. */ . = ALIGN(. != 0 ? 32 / 8 : 1); } - _bss_end__ = . ; __bss_end__ = . ; + _bss_end__ = .; __bss_end__ = .; . = ALIGN(32 / 8); . = SEGMENT_START("ldata-segment", .); . = ALIGN(32 / 8); - __end__ = . ; + __end__ = .; _end = .; PROVIDE (end = .); .stack 0x80000 : { @@ -213,6 +214,7 @@ SECTIONS .stab.index 0 : { *(.stab.index) } .stab.indexstr 0 : { *(.stab.indexstr) } .comment 0 : { *(.comment) } + .gnu.build.attributes : { *(.gnu.build.attributes .gnu.build.attributes.*) } /* DWARF debug sections. Symbols in the DWARF debugging sections are relative to the beginning of the section so we begin them at 0. */ @@ -228,7 +230,7 @@ SECTIONS /* DWARF 2 */ .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end ) } + .debug_line 0 : { *(.debug_line .debug_line.* .debug_line_end) } .debug_frame 0 : { *(.debug_frame) } .debug_str 0 : { *(.debug_str) } .debug_loc 0 : { *(.debug_loc) } diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libc.a index 4a535b35e..232569fad 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libc.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libc_nano.a index db734833e..3040b92d8 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libc_nano.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libg.a index 4a535b35e..232569fad 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libg.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libg_nano.a index 37230cf25..51d7824a3 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libg_nano.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libgloss-linux.a index a8e71d23a..370b39520 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libgloss-linux.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libm.a index 2fe60e573..514f21a91 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libm.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libnosys.a index ece95c0bf..0ebc4e71f 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libnosys.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon-v2m.a index 8ad88408b..128db20c8 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon-v2m.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon.a index 7504536ae..3bd330cc9 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon_nano.a index 536ea6545..1b67eb970 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon_nano.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/librdpmon.a index 96f78656b..a462f8c6d 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/librdpmon.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a index b2a1e43c8..aea896445 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a-gdb.py index b2eb8dd7f..e51c97c8c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a-gdb.py +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++.a-gdb.py @@ -1,5 +1,5 @@ # -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. +# Copyright (C) 2009-2018 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,8 +19,8 @@ import gdb import os import os.path -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib' +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib' # This file might be loaded when there is no current objfile. This # can happen if the user loads it manually. In this case we don't diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++_nano.a index ea79151fe..12511f453 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++_nano.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++.a index 69556d45b..05527b41e 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++_nano.a index 2d799025d..111046281 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++_nano.a and b/gcc-arm-none-eabi/arm-none-eabi/lib/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/linux-crt0.o index 92270c323..76de19995 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/linux-crt0.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/linux-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0-v2m.o index cbac186c1..d5f86767e 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0-v2m.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0.o index 2eb183ed4..dbb30a4e0 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-v2m.specs index e4f2545a4..c87e3fced 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-v2m.specs +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/rdimon-v2m.specs @@ -12,7 +12,7 @@ %{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} *rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} *link_gcc_c_sequence: %(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/rdpmon-crt0.o index 452b039b9..0164bde7b 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/rdpmon-crt0.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-crt0.o index 01d424215..316a208fe 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-crt0.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-syscalls.o index 6e42add29..94fe06726 100644 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-syscalls.o and b/gcc-arm-none-eabi/arm-none-eabi/lib/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/cpu-init/rdimon-aem.o deleted file mode 100644 index 0acf0ebad..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc.a deleted file mode 100644 index 551f19063..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc_nano.a deleted file mode 100644 index bf5551684..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg.a deleted file mode 100644 index 551f19063..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg_nano.a deleted file mode 100644 index d2b31e71c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libgloss-linux.a deleted file mode 100644 index 2a3a4973f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libm.a deleted file mode 100644 index b6c43c816..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libnosys.a deleted file mode 100644 index e9f463f7f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon-v2m.a deleted file mode 100644 index b18282437..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon.a deleted file mode 100644 index 9063c15ae..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon_nano.a deleted file mode 100644 index 84f624307..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdpmon.a deleted file mode 100644 index 80f2b8c5b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++.a deleted file mode 100644 index db55458ef..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++.a-gdb.py deleted file mode 100644 index d1b2e44c2..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++_nano.a deleted file mode 100644 index bfdf5b441..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libsupc++.a deleted file mode 100644 index b4817ab2c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libsupc++_nano.a deleted file mode 100644 index ed7b5357a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/linux-crt0.o deleted file mode 100644 index c1faca468..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/linux-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..52f72107e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libc.a new file mode 100644 index 000000000..7e1ab1619 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libc_nano.a new file mode 100644 index 000000000..3ba59094c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libg.a new file mode 100644 index 000000000..7e1ab1619 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libg_nano.a new file mode 100644 index 000000000..3ba59094c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libgloss-linux.a new file mode 100644 index 000000000..091ab2722 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libm.a new file mode 100644 index 000000000..9047e285c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libnosys.a new file mode 100644 index 000000000..bfa3f9f5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon-v2m.a new file mode 100644 index 000000000..478d3dee4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon.a new file mode 100644 index 000000000..4bca1b293 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon_nano.a new file mode 100644 index 000000000..0f5505c76 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdpmon.a new file mode 100644 index 000000000..3476a4018 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++.a new file mode 100644 index 000000000..2989eafaa Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..3b63da6b6 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++_nano.a new file mode 100644 index 000000000..5d0ae983e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libsupc++.a new file mode 100644 index 000000000..4df442197 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libsupc++_nano.a new file mode 100644 index 000000000..c3a156939 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/linux-crt0.o new file mode 100644 index 000000000..2d692dfb5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/linux-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..e145c6a5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot-crt0.o new file mode 100644 index 000000000..d5a77c604 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot-syscalls.o new file mode 100644 index 000000000..ca823d07c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/nofp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-crt0-v2m.o deleted file mode 100644 index 45788bd42..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot-crt0.o deleted file mode 100644 index be952bb6e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot-syscalls.o deleted file mode 100644 index 65ccaca07..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libc.a deleted file mode 100644 index 695a4c2d8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libc_nano.a deleted file mode 100644 index ee54d2c08..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libg.a deleted file mode 100644 index 695a4c2d8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libg_nano.a deleted file mode 100644 index ee54d2c08..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libgloss-linux.a deleted file mode 100644 index 63673c3b3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libm.a deleted file mode 100644 index 316b552b5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libnosys.a deleted file mode 100644 index 154cccc6c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon-v2m.a deleted file mode 100644 index 328116e46..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon.a deleted file mode 100644 index 353ea23a8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon_nano.a deleted file mode 100644 index 4ae699b49..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdpmon.a deleted file mode 100644 index bcbea6ac3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++.a deleted file mode 100644 index 24a3ee10a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++.a-gdb.py deleted file mode 100644 index 2c4210251..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v6-m' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++_nano.a deleted file mode 100644 index 69134c51c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libsupc++.a deleted file mode 100644 index 28242dd8d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libsupc++_nano.a deleted file mode 100644 index 77ac767a9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/cpu-init/rdimon-aem.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/cpu-init/rdimon-aem.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/cpu-init/rdimon-aem.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a new file mode 100644 index 000000000..1c9151d7b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a new file mode 100644 index 000000000..24ba4e82f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libg.a new file mode 100644 index 000000000..1c9151d7b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libg_nano.a new file mode 100644 index 000000000..1b577bf3a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libgloss-linux.a new file mode 100644 index 000000000..318bb10f6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a new file mode 100644 index 000000000..63f3b5491 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libnosys.a new file mode 100644 index 000000000..963480123 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon-v2m.a new file mode 100644 index 000000000..824624dd6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon.a new file mode 100644 index 000000000..998544a16 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon_nano.a new file mode 100644 index 000000000..e350d9d14 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdpmon.a new file mode 100644 index 000000000..5729f111c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a new file mode 100644 index 000000000..5d1870f5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..fd8755283 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v6-m/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++_nano.a new file mode 100644 index 000000000..e53ce282b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++.a new file mode 100644 index 000000000..fac0d53d0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++_nano.a new file mode 100644 index 000000000..f3d1080fd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..3fbd084ca Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot-syscalls.o new file mode 100644 index 000000000..742ed4d9d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/nofp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-crt0-v2m.o deleted file mode 100644 index 9fb0e2a75..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot-syscalls.o deleted file mode 100644 index 14704d12e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v6-m/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/cpu-init/rdimon-aem.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/cpu-init/rdimon-aem.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/cpu-init/rdimon-aem.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libc.a new file mode 100644 index 000000000..05c390d65 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libc_nano.a new file mode 100644 index 000000000..afdd1441f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libg.a new file mode 100644 index 000000000..05c390d65 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libg_nano.a new file mode 100644 index 000000000..d69e7247d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libgloss-linux.a new file mode 100644 index 000000000..9d4f4a71c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libm.a new file mode 100644 index 000000000..1fbc8d902 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libnosys.a new file mode 100644 index 000000000..789f5e925 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon-v2m.a new file mode 100644 index 000000000..96943ca27 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon.a new file mode 100644 index 000000000..325b4f2de Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon_nano.a new file mode 100644 index 000000000..41841c2d8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdpmon.a new file mode 100644 index 000000000..5efe5e5cd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a new file mode 100644 index 000000000..95463dbc1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a-gdb.py new file mode 100644 index 000000000..39ca0f13a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7+fp/hard' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++_nano.a new file mode 100644 index 000000000..38dcb2e8b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libsupc++.a new file mode 100644 index 000000000..359d411e3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libsupc++_nano.a new file mode 100644 index 000000000..440ce3135 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-crt0-v2m.o new file mode 100644 index 000000000..bce0323a5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot-syscalls.o new file mode 100644 index 000000000..9c867127c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/hard/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..65beaba6d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/crt0.o new file mode 100644 index 000000000..732d37c41 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libc.a new file mode 100644 index 000000000..7ce0ae3ef Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libc_nano.a new file mode 100644 index 000000000..5d7a09dfd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libg.a new file mode 100644 index 000000000..7ce0ae3ef Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libg_nano.a new file mode 100644 index 000000000..5800ea10a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libgloss-linux.a new file mode 100644 index 000000000..d607b610a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libm.a new file mode 100644 index 000000000..661314499 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libnosys.a new file mode 100644 index 000000000..961a3a229 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon-v2m.a new file mode 100644 index 000000000..b6a3d8e57 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon.a new file mode 100644 index 000000000..16c191402 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon_nano.a new file mode 100644 index 000000000..a3ede8ec7 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdpmon.a new file mode 100644 index 000000000..5d754d840 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a new file mode 100644 index 000000000..b29ac9225 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a-gdb.py new file mode 100644 index 000000000..5a7cb16f4 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7+fp/softfp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++_nano.a new file mode 100644 index 000000000..04aee9af3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libsupc++.a new file mode 100644 index 000000000..538df77f4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libsupc++_nano.a new file mode 100644 index 000000000..707c16482 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..bce0323a5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-crt0.o new file mode 100644 index 000000000..6a96eb6f2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdpmon-crt0.o new file mode 100644 index 000000000..9688d9db5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot-crt0.o new file mode 100644 index 000000000..3a722b8b8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot-syscalls.o new file mode 100644 index 000000000..556fd961a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7+fp/softfp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/cpu-init/rdimon-aem.o deleted file mode 100644 index 9ca3bfc4f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/crt0.o deleted file mode 100644 index 61d6a8f52..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc.a deleted file mode 100644 index 0d99c9cd3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc_nano.a deleted file mode 100644 index b3aff46ee..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libg.a deleted file mode 100644 index 0d99c9cd3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libg_nano.a deleted file mode 100644 index 6bfc88bcd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libgloss-linux.a deleted file mode 100644 index cab6676ce..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libm.a deleted file mode 100644 index c501b37f3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libnosys.a deleted file mode 100644 index 73338cdec..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon-v2m.a deleted file mode 100644 index 71e4aa57a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon.a deleted file mode 100644 index d27901e8e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon_nano.a deleted file mode 100644 index 54e6cf1f8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdpmon.a deleted file mode 100644 index d7f77cfbe..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++.a deleted file mode 100644 index fd7345afd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++.a-gdb.py deleted file mode 100644 index 6ebd4a474..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++_nano.a deleted file mode 100644 index ed4e7525c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libsupc++.a deleted file mode 100644 index 1f65fbedc..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libsupc++_nano.a deleted file mode 100644 index ea610ef61..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-crt0-v2m.o deleted file mode 100644 index 35e468cf9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-crt0.o deleted file mode 100644 index 6c3d391b7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdpmon-crt0.o deleted file mode 100644 index da6e600c4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot-crt0.o deleted file mode 100644 index b2d4150dd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot-syscalls.o deleted file mode 100644 index eb78e5bdb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/hard/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/cpu-init/rdimon-aem.o deleted file mode 100644 index 9ca3bfc4f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/crt0.o deleted file mode 100644 index 61d6a8f52..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libc.a deleted file mode 100644 index 2a47f907b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libc_nano.a deleted file mode 100644 index 7a1dc41cd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libg.a deleted file mode 100644 index 2a47f907b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libg_nano.a deleted file mode 100644 index 7a1dc41cd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libgloss-linux.a deleted file mode 100644 index 276c17eee..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libm.a deleted file mode 100644 index 24717ed70..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libnosys.a deleted file mode 100644 index fcd913fb0..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon-v2m.a deleted file mode 100644 index e59ddde2f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon.a deleted file mode 100644 index f851f06b8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon_nano.a deleted file mode 100644 index e2e270476..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdpmon.a deleted file mode 100644 index 1c309104a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++.a deleted file mode 100644 index caddaeaa0..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++.a-gdb.py deleted file mode 100644 index 9d5a57539..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++_nano.a deleted file mode 100644 index 3f78cacf5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libsupc++.a deleted file mode 100644 index 7fa6c1825..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libsupc++_nano.a deleted file mode 100644 index 320c9deaf..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-crt0-v2m.o deleted file mode 100644 index 35e468cf9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-crt0.o deleted file mode 100644 index 6c3d391b7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdpmon-crt0.o deleted file mode 100644 index da6e600c4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot-crt0.o deleted file mode 100644 index b2d4150dd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot-syscalls.o deleted file mode 100644 index 7644a9f2c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/fpv3/softfp/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libc.a deleted file mode 100644 index 898412d10..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libc_nano.a deleted file mode 100644 index 286c30033..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libg.a deleted file mode 100644 index 898412d10..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libg_nano.a deleted file mode 100644 index dd78be058..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libgloss-linux.a deleted file mode 100644 index a1280e062..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libm.a deleted file mode 100644 index 8490e1ce3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libnosys.a deleted file mode 100644 index 490879972..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon-v2m.a deleted file mode 100644 index 3576d4178..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon.a deleted file mode 100644 index 62aa4c994..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon_nano.a deleted file mode 100644 index f56a1e143..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdpmon.a deleted file mode 100644 index 7f9867fb2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++.a deleted file mode 100644 index ddf9e9f39..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++.a-gdb.py deleted file mode 100644 index 1010a59df..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7-ar' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++_nano.a deleted file mode 100644 index f1bd9cfd6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libsupc++.a deleted file mode 100644 index 285cf410d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libsupc++_nano.a deleted file mode 100644 index a3de6ee12..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-crt0-v2m.o deleted file mode 100644 index 2ca1b2659..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot-syscalls.o deleted file mode 100644 index c3fc50ac6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libc.a deleted file mode 100644 index 7d32aad80..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libc_nano.a deleted file mode 100644 index e0552c0d3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libg.a deleted file mode 100644 index 7d32aad80..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libg_nano.a deleted file mode 100644 index f1dee6f92..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libgloss-linux.a deleted file mode 100644 index ae85d0baf..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libm.a deleted file mode 100644 index f16c0d501..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libnosys.a deleted file mode 100644 index 568b5fd87..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon-v2m.a deleted file mode 100644 index 9268c4951..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon.a deleted file mode 100644 index 571eeeb9e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon_nano.a deleted file mode 100644 index da7cc719b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdpmon.a deleted file mode 100644 index bc5c35a49..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++.a deleted file mode 100644 index a4e0db63b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++.a-gdb.py deleted file mode 100644 index e49adaa53..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7-m' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++_nano.a deleted file mode 100644 index 7488b7c8e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libsupc++.a deleted file mode 100644 index 766c6a7ff..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libsupc++_nano.a deleted file mode 100644 index a8a94c95a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/cpu-init/rdimon-aem.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/cpu-init/rdimon-aem.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/cpu-init/rdimon-aem.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a new file mode 100644 index 000000000..4227cedd9 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a new file mode 100644 index 000000000..9caddb173 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libg.a new file mode 100644 index 000000000..4227cedd9 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libg_nano.a new file mode 100644 index 000000000..9caddb173 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libgloss-linux.a new file mode 100644 index 000000000..019e1bf04 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a new file mode 100644 index 000000000..5337027c2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a new file mode 100644 index 000000000..6b717421b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon-v2m.a new file mode 100644 index 000000000..18654138c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon.a new file mode 100644 index 000000000..18654138c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon_nano.a new file mode 100644 index 000000000..723952e2f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdpmon.a new file mode 100644 index 000000000..64a4dcbe8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a new file mode 100644 index 000000000..5a1f71747 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..37022284a --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7-m/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++_nano.a new file mode 100644 index 000000000..4a0d4cedf Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++.a new file mode 100644 index 000000000..40079256f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++_nano.a new file mode 100644 index 000000000..0817763a3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..70708ff5d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot-syscalls.o new file mode 100644 index 000000000..c3a8bc942 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/nofp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-crt0-v2m.o deleted file mode 100644 index 2268bec73..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot-syscalls.o deleted file mode 100644 index a4c606b14..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-m/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..65beaba6d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/crt0.o new file mode 100644 index 000000000..732d37c41 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libc.a new file mode 100644 index 000000000..fada8497e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libc_nano.a new file mode 100644 index 000000000..7594fe2e9 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libg.a new file mode 100644 index 000000000..fada8497e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libg_nano.a new file mode 100644 index 000000000..7ad8b71c3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libgloss-linux.a new file mode 100644 index 000000000..f969e44cd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libm.a new file mode 100644 index 000000000..7c047e120 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libnosys.a new file mode 100644 index 000000000..ee57ceee8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon-v2m.a new file mode 100644 index 000000000..28e567298 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon.a new file mode 100644 index 000000000..b8028e14a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon_nano.a new file mode 100644 index 000000000..f0d854d3f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdpmon.a new file mode 100644 index 000000000..21f9ab142 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a new file mode 100644 index 000000000..838dda510 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..e9268f0dc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++_nano.a new file mode 100644 index 000000000..bbc931a5d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libsupc++.a new file mode 100644 index 000000000..9aed526cf Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libsupc++_nano.a new file mode 100644 index 000000000..3ef171c3e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7-ar/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..bce0323a5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-crt0.o new file mode 100644 index 000000000..6a96eb6f2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdpmon-crt0.o new file mode 100644 index 000000000..9688d9db5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot-crt0.o new file mode 100644 index 000000000..3a722b8b8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot-syscalls.o new file mode 100644 index 000000000..e7ca934e7 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7/nofp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/cpu-init/rdimon-aem.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/cpu-init/rdimon-aem.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/cpu-init/rdimon-aem.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc.a new file mode 100644 index 000000000..81bcc33cd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a new file mode 100644 index 000000000..804c73a98 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libg.a new file mode 100644 index 000000000..81bcc33cd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libg_nano.a new file mode 100644 index 000000000..1633f6119 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libgloss-linux.a new file mode 100644 index 000000000..dda936e27 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libm.a new file mode 100644 index 000000000..a4f61f628 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libnosys.a new file mode 100644 index 000000000..06d3da011 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon-v2m.a new file mode 100644 index 000000000..3f23a2fac Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon.a new file mode 100644 index 000000000..3f23a2fac Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon_nano.a new file mode 100644 index 000000000..74610bf2d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdpmon.a new file mode 100644 index 000000000..a1216fa1b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a new file mode 100644 index 000000000..e686d2d6b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a-gdb.py new file mode 100644 index 000000000..368128c1b --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7e-m+dp/hard' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++_nano.a new file mode 100644 index 000000000..6b370c64c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libsupc++.a new file mode 100644 index 000000000..6042d978f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libsupc++_nano.a new file mode 100644 index 000000000..b2dfa3c8a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-crt0-v2m.o new file mode 100644 index 000000000..60f22b8c4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot-syscalls.o new file mode 100644 index 000000000..86e76d47e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/hard/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..9ca4bebd1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/crt0.o new file mode 100644 index 000000000..94a84ec07 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libc.a new file mode 100644 index 000000000..3fa7781e6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libc_nano.a new file mode 100644 index 000000000..2b52f9a1b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libg.a new file mode 100644 index 000000000..3fa7781e6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libg_nano.a new file mode 100644 index 000000000..7b08d97f0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libgloss-linux.a new file mode 100644 index 000000000..2b43f30e3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libm.a new file mode 100644 index 000000000..2947de65b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libnosys.a new file mode 100644 index 000000000..e50ad1e5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon-v2m.a new file mode 100644 index 000000000..505e898f2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon.a new file mode 100644 index 000000000..c9c10d0f0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon_nano.a new file mode 100644 index 000000000..901e88828 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdpmon.a new file mode 100644 index 000000000..cb3834df6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a new file mode 100644 index 000000000..6f26e9f57 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a-gdb.py new file mode 100644 index 000000000..d639ad617 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7e-m+dp/softfp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++_nano.a new file mode 100644 index 000000000..fc1f7d936 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libsupc++.a new file mode 100644 index 000000000..dd76fd03e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libsupc++_nano.a new file mode 100644 index 000000000..4b8312d9d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..60f22b8c4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-crt0.o new file mode 100644 index 000000000..44e24a600 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdpmon-crt0.o new file mode 100644 index 000000000..059eb482e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot-crt0.o new file mode 100644 index 000000000..7b6816f79 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot-syscalls.o new file mode 100644 index 000000000..f9a2e1c1d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+dp/softfp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..9ca4bebd1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o new file mode 100644 index 000000000..94a84ec07 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a new file mode 100644 index 000000000..08be13432 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a new file mode 100644 index 000000000..49fe9b210 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libg.a new file mode 100644 index 000000000..08be13432 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libg_nano.a new file mode 100644 index 000000000..49fe9b210 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libgloss-linux.a new file mode 100644 index 000000000..d799ea3d2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a new file mode 100644 index 000000000..c695131e1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libnosys.a new file mode 100644 index 000000000..050825cd8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon-v2m.a new file mode 100644 index 000000000..034167655 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon.a new file mode 100644 index 000000000..034167655 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon_nano.a new file mode 100644 index 000000000..23ac9dab2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdpmon.a new file mode 100644 index 000000000..29968de00 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a new file mode 100644 index 000000000..f50fb8107 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a-gdb.py new file mode 100644 index 000000000..0dde15f38 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7e-m+fp/hard' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++_nano.a new file mode 100644 index 000000000..901fa6e09 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libsupc++.a new file mode 100644 index 000000000..53154b5ca Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libsupc++_nano.a new file mode 100644 index 000000000..fd62aab11 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-crt0-v2m.o new file mode 100644 index 000000000..60f22b8c4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-crt0.o new file mode 100644 index 000000000..44e24a600 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdpmon-crt0.o new file mode 100644 index 000000000..059eb482e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot-crt0.o new file mode 100644 index 000000000..7b6816f79 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot-syscalls.o new file mode 100644 index 000000000..f191fe957 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/hard/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..9ca4bebd1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/crt0.o new file mode 100644 index 000000000..94a84ec07 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libc.a new file mode 100644 index 000000000..fe78f91b1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libc_nano.a new file mode 100644 index 000000000..7847b490d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libg.a new file mode 100644 index 000000000..fe78f91b1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libg_nano.a new file mode 100644 index 000000000..7847b490d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libgloss-linux.a new file mode 100644 index 000000000..97b062674 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libm.a new file mode 100644 index 000000000..2139cb004 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libnosys.a new file mode 100644 index 000000000..8047ec8df Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon-v2m.a new file mode 100644 index 000000000..0c66590e8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon.a new file mode 100644 index 000000000..0c66590e8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon_nano.a new file mode 100644 index 000000000..b9dbf3ec3 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdpmon.a new file mode 100644 index 000000000..d48381987 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a new file mode 100644 index 000000000..062eedc50 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a-gdb.py new file mode 100644 index 000000000..6105fa074 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7e-m+fp/softfp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++_nano.a new file mode 100644 index 000000000..87c848461 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libsupc++.a new file mode 100644 index 000000000..3baf33cdd Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libsupc++_nano.a new file mode 100644 index 000000000..801a596da Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..60f22b8c4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-crt0.o new file mode 100644 index 000000000..44e24a600 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdpmon-crt0.o new file mode 100644 index 000000000..059eb482e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot-crt0.o new file mode 100644 index 000000000..7b6816f79 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot-syscalls.o new file mode 100644 index 000000000..fc2382782 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m+fp/softfp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/cpu-init/rdimon-aem.o deleted file mode 100644 index 4d6e26c92..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o deleted file mode 100644 index 091cf1aca..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libc.a deleted file mode 100644 index bd2305a4e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libc_nano.a deleted file mode 100644 index 7cac93a55..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg.a deleted file mode 100644 index bd2305a4e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg_nano.a deleted file mode 100644 index 7cac93a55..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libgloss-linux.a deleted file mode 100644 index eeca68d19..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libm.a deleted file mode 100644 index 250436ab7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libnosys.a deleted file mode 100644 index dca759d44..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon-v2m.a deleted file mode 100644 index 1b97767e2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon.a deleted file mode 100644 index aa9ada615..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon_nano.a deleted file mode 100644 index 9da1c89c3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdpmon.a deleted file mode 100644 index 872f6c9d4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++.a deleted file mode 100644 index a9eaa304a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++.a-gdb.py deleted file mode 100644 index 4c19329b8..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++_nano.a deleted file mode 100644 index 3b8980af7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libsupc++.a deleted file mode 100644 index 65662fa01..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libsupc++_nano.a deleted file mode 100644 index 255cc58e7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-crt0-v2m.o deleted file mode 100644 index c7230fa03..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-crt0.o deleted file mode 100644 index 233b7f234..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdpmon-crt0.o deleted file mode 100644 index 722dc1325..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot-crt0.o deleted file mode 100644 index 301c06ea3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot-syscalls.o deleted file mode 100644 index a66010f66..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/cpu-init/rdimon-aem.o deleted file mode 100644 index 4d6e26c92..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/crt0.o deleted file mode 100644 index 091cf1aca..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libc.a deleted file mode 100644 index e96cc8495..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libc_nano.a deleted file mode 100644 index 7c209b95b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libg.a deleted file mode 100644 index e96cc8495..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libg_nano.a deleted file mode 100644 index 6c6ea9278..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libgloss-linux.a deleted file mode 100644 index 8f61e5e02..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libm.a deleted file mode 100644 index 993a115c4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libnosys.a deleted file mode 100644 index c5ae02145..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon-v2m.a deleted file mode 100644 index 9a88235f2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon.a deleted file mode 100644 index 580fb1830..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon_nano.a deleted file mode 100644 index dd6d34a04..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdpmon.a deleted file mode 100644 index 32c57076c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++.a deleted file mode 100644 index 5b8aa1d70..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++.a-gdb.py deleted file mode 100644 index b77cc4448..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++_nano.a deleted file mode 100644 index 74271c353..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libsupc++.a deleted file mode 100644 index 5c236fac7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libsupc++_nano.a deleted file mode 100644 index 49c185ccf..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-crt0-v2m.o deleted file mode 100644 index c7230fa03..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-crt0.o deleted file mode 100644 index 233b7f234..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdpmon-crt0.o deleted file mode 100644 index 722dc1325..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot-crt0.o deleted file mode 100644 index 301c06ea3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot-syscalls.o deleted file mode 100644 index a8360f15e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/softfp/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/cpu-init/rdimon-aem.o deleted file mode 100644 index 461caf6ab..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/crt0.o deleted file mode 100644 index 57603b3f9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libc.a deleted file mode 100644 index 75f5be91f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libc_nano.a deleted file mode 100644 index 259d4bfea..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libg.a deleted file mode 100644 index 75f5be91f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libg_nano.a deleted file mode 100644 index 259d4bfea..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libgloss-linux.a deleted file mode 100644 index ade6ad166..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libm.a deleted file mode 100644 index 46247a9ed..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libnosys.a deleted file mode 100644 index 115c117ed..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon-v2m.a deleted file mode 100644 index e219627e4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon.a deleted file mode 100644 index a137364a7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon_nano.a deleted file mode 100644 index f945a0adb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdpmon.a deleted file mode 100644 index a73f60edb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++.a deleted file mode 100644 index 53ba5a4e4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++.a-gdb.py deleted file mode 100644 index c7aec0b79..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++_nano.a deleted file mode 100644 index 6b55e36a5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libsupc++.a deleted file mode 100644 index ce2017482..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libsupc++_nano.a deleted file mode 100644 index 30242f6b2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-crt0-v2m.o deleted file mode 100644 index 36b9bd87a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-crt0.o deleted file mode 100644 index c2faaf967..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdpmon-crt0.o deleted file mode 100644 index 14df844cc..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot-crt0.o deleted file mode 100644 index c66b0fe9f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot-syscalls.o deleted file mode 100644 index 8975370ed..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/hard/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/cpu-init/rdimon-aem.o deleted file mode 100644 index 461caf6ab..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/crt0.o deleted file mode 100644 index 57603b3f9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libc.a deleted file mode 100644 index fcd3aff19..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libc_nano.a deleted file mode 100644 index bbfdd67e5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libg.a deleted file mode 100644 index fcd3aff19..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libg_nano.a deleted file mode 100644 index 54864fda2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libgloss-linux.a deleted file mode 100644 index 72d4bf5eb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libm.a deleted file mode 100644 index 13a01c575..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libnosys.a deleted file mode 100644 index 6ed3ed46a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon-v2m.a deleted file mode 100644 index 31a275f79..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon.a deleted file mode 100644 index 2e10eb842..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon_nano.a deleted file mode 100644 index 2ead77f6a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdpmon.a deleted file mode 100644 index 52fe7785a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++.a deleted file mode 100644 index 086c348f5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++.a-gdb.py deleted file mode 100644 index f395a9fbd..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++_nano.a deleted file mode 100644 index 03d060f0e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libsupc++.a deleted file mode 100644 index 51334a9a1..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libsupc++_nano.a deleted file mode 100644 index 1201c521e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-crt0-v2m.o deleted file mode 100644 index 36b9bd87a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-crt0.o deleted file mode 100644 index c2faaf967..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdpmon-crt0.o deleted file mode 100644 index 14df844cc..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot-crt0.o deleted file mode 100644 index c66b0fe9f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot-syscalls.o deleted file mode 100644 index ae8b9f3a2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/fpv5/softfp/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libc.a deleted file mode 100644 index a508dde98..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libc_nano.a deleted file mode 100644 index 70a32b96d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libg.a deleted file mode 100644 index a508dde98..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libg_nano.a deleted file mode 100644 index 97d46bcc8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libgloss-linux.a deleted file mode 100644 index d383446a3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libm.a deleted file mode 100644 index 70bb99118..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libnosys.a deleted file mode 100644 index 886f3f617..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon-v2m.a deleted file mode 100644 index b97122e40..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon.a deleted file mode 100644 index eddc8d081..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon_nano.a deleted file mode 100644 index bb507b85b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdpmon.a deleted file mode 100644 index 559f3294f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++.a deleted file mode 100644 index 54d4dd2b3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++.a-gdb.py deleted file mode 100644 index 5d110559e..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v7e-m' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++_nano.a deleted file mode 100644 index 693899e26..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libsupc++.a deleted file mode 100644 index f6dc05d1b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libsupc++_nano.a deleted file mode 100644 index 789f819e0..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..9ca4bebd1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/crt0.o new file mode 100644 index 000000000..94a84ec07 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a new file mode 100644 index 000000000..01ee8354c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a new file mode 100644 index 000000000..c79f86c39 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libg.a new file mode 100644 index 000000000..01ee8354c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libg_nano.a new file mode 100644 index 000000000..c79f86c39 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libgloss-linux.a new file mode 100644 index 000000000..c0a148b8d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a new file mode 100644 index 000000000..98d7df171 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libnosys.a new file mode 100644 index 000000000..2d8f3171b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon-v2m.a new file mode 100644 index 000000000..0b2e33764 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon.a new file mode 100644 index 000000000..0b2e33764 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon_nano.a new file mode 100644 index 000000000..8d0649a0b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdpmon.a new file mode 100644 index 000000000..1ff44a93b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a new file mode 100644 index 000000000..3c289a6d1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..acc627a8e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v7e-m/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++_nano.a new file mode 100644 index 000000000..20ddcbcdb Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a new file mode 100644 index 000000000..786c2a91c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++_nano.a new file mode 100644 index 000000000..e8f94cc85 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..60f22b8c4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-crt0.o new file mode 100644 index 000000000..44e24a600 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdpmon-crt0.o new file mode 100644 index 000000000..059eb482e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot-crt0.o new file mode 100644 index 000000000..7b6816f79 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot-syscalls.o new file mode 100644 index 000000000..c9b294647 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/nofp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-crt0-v2m.o deleted file mode 100644 index da3c6a5e3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot-syscalls.o deleted file mode 100644 index a26dc5f35..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v7e-m/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libc.a deleted file mode 100644 index 12636d858..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libc_nano.a deleted file mode 100644 index 2c0fe06f9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libg.a deleted file mode 100644 index 12636d858..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libg_nano.a deleted file mode 100644 index 2c0fe06f9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libgloss-linux.a deleted file mode 100644 index c160efc3b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libm.a deleted file mode 100644 index 3724d7cac..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libnosys.a deleted file mode 100644 index 9538f8158..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon-v2m.a deleted file mode 100644 index d361cfe1e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon.a deleted file mode 100644 index f81ce6952..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon_nano.a deleted file mode 100644 index 6becf6e71..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdpmon.a deleted file mode 100644 index bf4a78481..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++.a deleted file mode 100644 index 2cf4dbef0..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++.a-gdb.py deleted file mode 100644 index 6f9f65f3f..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v8-m.base' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++_nano.a deleted file mode 100644 index 83fd8d49f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libsupc++.a deleted file mode 100644 index 9dc38fcb6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libsupc++_nano.a deleted file mode 100644 index 90c6cd831..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/cpu-init/rdimon-aem.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/cpu-init/rdimon-aem.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/cpu-init/rdimon-aem.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libc.a new file mode 100644 index 000000000..8af40e32b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libc_nano.a new file mode 100644 index 000000000..1c63413a1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libg.a new file mode 100644 index 000000000..8af40e32b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libg_nano.a new file mode 100644 index 000000000..1c63413a1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libgloss-linux.a new file mode 100644 index 000000000..b901e8b73 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libm.a new file mode 100644 index 000000000..1c8b995a8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libnosys.a new file mode 100644 index 000000000..ce0cbb966 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon-v2m.a new file mode 100644 index 000000000..82ec7ffba Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon.a new file mode 100644 index 000000000..82ec7ffba Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon_nano.a new file mode 100644 index 000000000..6bd39793a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdpmon.a new file mode 100644 index 000000000..ea3df7650 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a new file mode 100644 index 000000000..e325a46b6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..4b622e195 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v8-m.base/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++_nano.a new file mode 100644 index 000000000..4ee81a0d2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libsupc++.a new file mode 100644 index 000000000..c2049a242 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libsupc++_nano.a new file mode 100644 index 000000000..279c2b007 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..14384498e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot-syscalls.o new file mode 100644 index 000000000..2613a2673 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/nofp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-crt0-v2m.o deleted file mode 100644 index c941118cf..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot-syscalls.o deleted file mode 100644 index c42a80158..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.base/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/cpu-init/rdimon-aem.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/cpu-init/rdimon-aem.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/cpu-init/rdimon-aem.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libc.a new file mode 100644 index 000000000..e4129392d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libc_nano.a new file mode 100644 index 000000000..2c2d58481 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libg.a new file mode 100644 index 000000000..e4129392d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libg_nano.a new file mode 100644 index 000000000..4ad368929 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libgloss-linux.a new file mode 100644 index 000000000..99715ccbb Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libm.a new file mode 100644 index 000000000..e6690ba1b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libnosys.a new file mode 100644 index 000000000..89452de93 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon-v2m.a new file mode 100644 index 000000000..ed8145574 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon.a new file mode 100644 index 000000000..85bf29a47 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon_nano.a new file mode 100644 index 000000000..6774a0557 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdpmon.a new file mode 100644 index 000000000..1d9ae72ea Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a new file mode 100644 index 000000000..918658fff Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a-gdb.py new file mode 100644 index 000000000..000bcddd0 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v8-m.main+dp/hard' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++_nano.a new file mode 100644 index 000000000..039d77dab Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libsupc++.a new file mode 100644 index 000000000..b7fd518d8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libsupc++_nano.a new file mode 100644 index 000000000..d177249f2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-crt0-v2m.o new file mode 100644 index 000000000..ca9edb95a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdpmon-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdpmon-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdpmon-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot-syscalls.o new file mode 100644 index 000000000..550d3e8b6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/hard/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..6cd451437 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/crt0.o new file mode 100644 index 000000000..509a3b1c8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libc.a new file mode 100644 index 000000000..3661ab2b0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libc_nano.a new file mode 100644 index 000000000..d0aa28811 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libg.a new file mode 100644 index 000000000..3661ab2b0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libg_nano.a new file mode 100644 index 000000000..d0aa28811 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libgloss-linux.a new file mode 100644 index 000000000..6d8634280 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libm.a new file mode 100644 index 000000000..d865719ba Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libnosys.a new file mode 100644 index 000000000..048cf792b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon-v2m.a new file mode 100644 index 000000000..e4151521e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon.a new file mode 100644 index 000000000..e4151521e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon_nano.a new file mode 100644 index 000000000..6ff922006 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdpmon.a new file mode 100644 index 000000000..3a91c95c8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a new file mode 100644 index 000000000..2838b1535 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a-gdb.py new file mode 100644 index 000000000..dce32c8d5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++_nano.a new file mode 100644 index 000000000..7c084f316 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libsupc++.a new file mode 100644 index 000000000..c6b2444ea Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libsupc++_nano.a new file mode 100644 index 000000000..273c31bf7 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..ca9edb95a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-crt0.o new file mode 100644 index 000000000..61f29b7e0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdpmon-crt0.o new file mode 100644 index 000000000..19a7168d5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot-crt0.o new file mode 100644 index 000000000..6344ee906 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot-syscalls.o new file mode 100644 index 000000000..e2ae356d9 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+dp/softfp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..6cd451437 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/crt0.o new file mode 100644 index 000000000..509a3b1c8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libc.a new file mode 100644 index 000000000..52f5aaaff Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libc_nano.a new file mode 100644 index 000000000..482280c4d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libg.a new file mode 100644 index 000000000..52f5aaaff Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libg_nano.a new file mode 100644 index 000000000..482280c4d Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libgloss-linux.a new file mode 100644 index 000000000..e966139a0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libm.a new file mode 100644 index 000000000..ff7526c1c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libnosys.a new file mode 100644 index 000000000..d219efb5e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon-v2m.a new file mode 100644 index 000000000..dc3aaf1f4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon.a new file mode 100644 index 000000000..dc3aaf1f4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon_nano.a new file mode 100644 index 000000000..935a147b6 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdpmon.a new file mode 100644 index 000000000..349e12322 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a new file mode 100644 index 000000000..b957f15da Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a-gdb.py new file mode 100644 index 000000000..d62fe0afc --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v8-m.main+fp/hard' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++_nano.a new file mode 100644 index 000000000..f23df2925 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libsupc++.a new file mode 100644 index 000000000..a1a7e04a2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libsupc++_nano.a new file mode 100644 index 000000000..0d92b3aa2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-crt0-v2m.o new file mode 100644 index 000000000..ca9edb95a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-crt0.o new file mode 100644 index 000000000..61f29b7e0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdpmon-crt0.o new file mode 100644 index 000000000..19a7168d5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot-crt0.o new file mode 100644 index 000000000..6344ee906 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot-syscalls.o new file mode 100644 index 000000000..895ce93cb Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/hard/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-validation-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-validation-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-validation-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-validation.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-validation.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-validation.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-ve-v2m.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-ve-v2m.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-ve-v2m.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-ve.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/aprofile-ve.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/aprofile-ve.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..6cd451437 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/crt0.o new file mode 100644 index 000000000..509a3b1c8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/iq80310.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/iq80310.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/iq80310.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libc.a new file mode 100644 index 000000000..f61de1493 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libc_nano.a new file mode 100644 index 000000000..e2aff212c Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libg.a new file mode 100644 index 000000000..f61de1493 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libg_nano.a new file mode 100644 index 000000000..f986a45d4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libgloss-linux.a new file mode 100644 index 000000000..cb69eea30 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libm.a new file mode 100644 index 000000000..db0406ea4 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libnosys.a new file mode 100644 index 000000000..ca105715f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon-v2m.a new file mode 100644 index 000000000..e07d26671 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon.a new file mode 100644 index 000000000..e07d26671 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon_nano.a new file mode 100644 index 000000000..52ed9a06e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdpmon.a new file mode 100644 index 000000000..1fd26f903 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a new file mode 100644 index 000000000..107c9f0ea Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a-gdb.py new file mode 100644 index 000000000..21732efae --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++_nano.a new file mode 100644 index 000000000..350461c7a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libsupc++.a new file mode 100644 index 000000000..5308cf611 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libsupc++_nano.a new file mode 100644 index 000000000..6e29ad752 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/linux.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/linux.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/linux.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/nano.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nano.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/nano.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/nosys.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nosys.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/nosys.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/pid.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/pid.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/pid.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..ca9edb95a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-crt0.o new file mode 100644 index 000000000..61f29b7e0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdimon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdpmon-crt0.o new file mode 100644 index 000000000..19a7168d5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdpmon.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdpmon.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/rdpmon.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot-crt0.o new file mode 100644 index 000000000..6344ee906 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot-syscalls.o new file mode 100644 index 000000000..ab76fea3a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot.ld similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot.ld rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot.ld diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot.specs similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot.specs rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main+fp/softfp/redboot.specs diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/cpu-init/rdimon-aem.o deleted file mode 100644 index 750dd7c6a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/crt0.o deleted file mode 100644 index 7400ccf75..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libc.a deleted file mode 100644 index 441664fc9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libc_nano.a deleted file mode 100644 index 696c632f5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libg.a deleted file mode 100644 index 441664fc9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libg_nano.a deleted file mode 100644 index 696b65e6b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libgloss-linux.a deleted file mode 100644 index 24a1d373d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libm.a deleted file mode 100644 index 326cec2fe..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libnosys.a deleted file mode 100644 index 8b47594b7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon-v2m.a deleted file mode 100644 index c61d87fe5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon.a deleted file mode 100644 index 502542171..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon_nano.a deleted file mode 100644 index e29d76ec9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdpmon.a deleted file mode 100644 index 6764095b5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++.a deleted file mode 100644 index 0896c843d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++.a-gdb.py deleted file mode 100644 index 3776ad2a0..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++_nano.a deleted file mode 100644 index a32f12588..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libsupc++.a deleted file mode 100644 index 85124cde1..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libsupc++_nano.a deleted file mode 100644 index 514372df1..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-crt0-v2m.o deleted file mode 100644 index 3236b8102..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-crt0.o deleted file mode 100644 index e24780ae9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdpmon-crt0.o deleted file mode 100644 index e04a2328e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot-crt0.o deleted file mode 100644 index 82b3ac20b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot-syscalls.o deleted file mode 100644 index fc3382083..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/hard/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/cpu-init/rdimon-aem.o deleted file mode 100644 index 750dd7c6a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/crt0.o deleted file mode 100644 index 7400ccf75..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libc.a deleted file mode 100644 index d1643d186..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libc_nano.a deleted file mode 100644 index 8c513935d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libg.a deleted file mode 100644 index d1643d186..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libg_nano.a deleted file mode 100644 index 8c513935d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libgloss-linux.a deleted file mode 100644 index eeb0c8783..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libm.a deleted file mode 100644 index 38b277f3f..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libnosys.a deleted file mode 100644 index 9e321e6f8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon-v2m.a deleted file mode 100644 index e89c3d43e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon.a deleted file mode 100644 index 0c6e17ed1..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon_nano.a deleted file mode 100644 index dc1c39af4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdpmon.a deleted file mode 100644 index 24b8ce8a8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++.a deleted file mode 100644 index a6ab44b61..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++.a-gdb.py deleted file mode 100644 index f4ec6d377..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++_nano.a deleted file mode 100644 index a99c78eb7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libsupc++.a deleted file mode 100644 index 2a9b1ba14..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libsupc++_nano.a deleted file mode 100644 index 9d9631882..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-crt0-v2m.o deleted file mode 100644 index 3236b8102..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-crt0.o deleted file mode 100644 index e24780ae9..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdpmon-crt0.o deleted file mode 100644 index e04a2328e..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot-crt0.o deleted file mode 100644 index 82b3ac20b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot-syscalls.o deleted file mode 100644 index bcd0fa0b5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5-sp/softfp/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/cpu-init/rdimon-aem.o deleted file mode 100644 index 633f0c365..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/crt0.o deleted file mode 100644 index 74793f7fa..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libc.a deleted file mode 100644 index 51e5e6526..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libc_nano.a deleted file mode 100644 index 2b28f4935..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libg.a deleted file mode 100644 index 51e5e6526..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libg_nano.a deleted file mode 100644 index 2b28f4935..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libgloss-linux.a deleted file mode 100644 index d572cbedb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libm.a deleted file mode 100644 index 2c91a8775..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libnosys.a deleted file mode 100644 index 8c75dcfde..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon-v2m.a deleted file mode 100644 index 6e2c3b9dc..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon.a deleted file mode 100644 index 6d4b2fcd4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon_nano.a deleted file mode 100644 index b50ac258b..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdpmon.a deleted file mode 100644 index a898a79f8..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++.a deleted file mode 100644 index d7fe22e70..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++.a-gdb.py deleted file mode 100644 index 0fac87e4c..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++_nano.a deleted file mode 100644 index 7f93401b3..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libsupc++.a deleted file mode 100644 index 5c7069617..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libsupc++_nano.a deleted file mode 100644 index 962f7731a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-crt0-v2m.o deleted file mode 100644 index cef14c537..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-crt0.o deleted file mode 100644 index 7460be01a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdpmon-crt0.o deleted file mode 100644 index 0208244f6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot-crt0.o deleted file mode 100644 index 31ce617f2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot-syscalls.o deleted file mode 100644 index 2ec69f137..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/hard/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/cpu-init/rdimon-aem.o deleted file mode 100644 index 633f0c365..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/cpu-init/rdimon-aem.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/crt0.o deleted file mode 100644 index 74793f7fa..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libc.a deleted file mode 100644 index 4bcc16ff6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libc_nano.a deleted file mode 100644 index b189baf86..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libg.a deleted file mode 100644 index 4bcc16ff6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libg_nano.a deleted file mode 100644 index 7dd175566..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libgloss-linux.a deleted file mode 100644 index 9f7170129..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libm.a deleted file mode 100644 index fb9345451..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libnosys.a deleted file mode 100644 index 0d2deb9da..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon-v2m.a deleted file mode 100644 index 6d1064770..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon.a deleted file mode 100644 index 1a1acf243..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon_nano.a deleted file mode 100644 index ba728b41d..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdpmon.a deleted file mode 100644 index 9fad8bbcd..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++.a deleted file mode 100644 index e4c64738a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++.a-gdb.py deleted file mode 100644 index a0d96e8b3..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++_nano.a deleted file mode 100644 index bcb36706c..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libsupc++.a deleted file mode 100644 index 0ce62c1bf..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libsupc++_nano.a deleted file mode 100644 index 6d57d0b57..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-crt0-v2m.o deleted file mode 100644 index cef14c537..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-crt0.o deleted file mode 100644 index 7460be01a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdpmon-crt0.o deleted file mode 100644 index 0208244f6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/rdpmon-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot-crt0.o deleted file mode 100644 index 31ce617f2..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot-crt0.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot-syscalls.o deleted file mode 100644 index 1a3c8fac7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/fpv5/softfp/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libc.a deleted file mode 100644 index 3b033ae4a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libc.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libc_nano.a deleted file mode 100644 index 1ef560942..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libc_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libg.a deleted file mode 100644 index 3b033ae4a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libg.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libg_nano.a deleted file mode 100644 index 1ef560942..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libg_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libgloss-linux.a deleted file mode 100644 index 0771271e6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libgloss-linux.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libm.a deleted file mode 100644 index a4878eecf..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libm.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libnosys.a deleted file mode 100644 index 55c58dddb..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libnosys.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon-v2m.a deleted file mode 100644 index 17c031ba7..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon-v2m.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon.a deleted file mode 100644 index b05c23ba6..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon_nano.a deleted file mode 100644 index 352e320b5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdimon_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdpmon.a deleted file mode 100644 index 60d623612..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/librdpmon.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++.a deleted file mode 100644 index 13b062135..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++.a-gdb.py deleted file mode 100644 index af695c029..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++.a-gdb.py +++ /dev/null @@ -1,61 +0,0 @@ -# -*- python -*- -# Copyright (C) 2009-2017 Free Software Foundation, Inc. - -# This program 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 of the License, or -# (at your option) any later version. -# -# This program 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. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -import sys -import gdb -import os -import os.path - -pythondir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/share/gcc-arm-none-eabi' -libdir = '/tmp/jenkins/jenkins-GCC-7-build_toolchain_docker-775_20180622_1529687456/install-native/arm-none-eabi/lib/thumb/v8-m.main' - -# This file might be loaded when there is no current objfile. This -# can happen if the user loads it manually. In this case we don't -# update sys.path; instead we just hope the user managed to do that -# beforehand. -if gdb.current_objfile () is not None: - # Update module path. We want to find the relative path from libdir - # to pythondir, and then we want to apply that relative path to the - # directory holding the objfile with which this file is associated. - # This preserves relocatability of the gcc tree. - - # Do a simple normalization that removes duplicate separators. - pythondir = os.path.normpath (pythondir) - libdir = os.path.normpath (libdir) - - prefix = os.path.commonprefix ([libdir, pythondir]) - # In some bizarre configuration we might have found a match in the - # middle of a directory name. - if prefix[-1] != '/': - prefix = os.path.dirname (prefix) + '/' - - # Strip off the prefix. - pythondir = pythondir[len (prefix):] - libdir = libdir[len (prefix):] - - # Compute the ".."s needed to get from libdir to the prefix. - dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) - - objfile = gdb.current_objfile ().filename - dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) - - if not dir_ in sys.path: - sys.path.insert(0, dir_) - -# Call a function as a plain import would not execute body of the included file -# on repeated reloads of this object file. -from libstdcxx.v6 import register_libstdcxx_printers -register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++_nano.a deleted file mode 100644 index be6c334b4..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libstdc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libsupc++.a deleted file mode 100644 index 5da1a2ca5..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libsupc++.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libsupc++_nano.a deleted file mode 100644 index a9e85ad83..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/libsupc++_nano.a and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-validation-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-validation-v2m.specs new file mode 100644 index 000000000..accef99e1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-validation-v2m.specs @@ -0,0 +1,23 @@ +# aprofile-validation-v2m.specs +# +# Spec file for AArch32 A profile baremetal newlib, libgloss on +# VALIDATION platform with AngelAPI semi-hosting version 2 using the HLT +# trap instruction. +# +# This Spec file is also appropriate for the foundation model. + +%rename link old_link + +*link: +--defsym=_rdimon_vector_base=0x00000000 -Ttext-segment=0x00010000 %(old_link) + +%rename lib libc + +*libgloss: +-lrdimon-v2m + +*lib: +cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-validation.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-validation.specs new file mode 100644 index 000000000..4ef0e9510 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-validation.specs @@ -0,0 +1,23 @@ +# aprofile-validation.specs +# +# Spec file for AArch32 A profile baremetal newlib, libgloss on +# VALIDATION platform with AngelAPI semi-hosting version 2 using the SVC +# trap instruction. +# +# This Spec file is also appropriate for the foundation model. + +%rename link old_link + +*link: +--defsym=_rdimon_vector_base=0x00000000 -Ttext-segment=0x00010000 %(old_link) + +%rename lib libc + +*libgloss: +-lrdimon + +*lib: +cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0%O%s} %{pg:rdimon-crt0%O%s} diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-ve-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-ve-v2m.specs new file mode 100644 index 000000000..75f380216 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-ve-v2m.specs @@ -0,0 +1,22 @@ +# aprofile-ve-v2m.specs +# +# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI +# semi-hosting version 2 using the HLT trap instruction. +# +# This Spec file is also appropriate for the foundation model. + +%rename link old_link + +*link: +--defsym=_rdimon_vector_base=0x80000000 -Ttext-segment=0x80010000 %(old_link) + +%rename lib libc + +*libgloss: +-lrdimon-v2m + +*lib: +cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-ve.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-ve.specs new file mode 100644 index 000000000..1461b34bf --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/aprofile-ve.specs @@ -0,0 +1,22 @@ +# aprofile-ve.specs +# +# Spec file for AArch32 A profile baremetal newlib, libgloss on VE platform with AngelAPI +# semi-hosting version 2 using the SVC trap instruction. +# +# This Spec file is also appropriate for the foundation model. + +%rename link old_link + +*link: +--defsym=_rdimon_vector_base=0x80000000 -Ttext-segment=0x80010000 %(old_link) + +%rename lib libc + +*libgloss: +-lrdimon + +*lib: +cpu-init/rdimon-aem.o%s --start-group %(libc) %(libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0%O%s} %{pg:rdimon-crt0%O%s} diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/cpu-init/rdimon-aem.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/cpu-init/rdimon-aem.o new file mode 100644 index 000000000..6cd451437 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/cpu-init/rdimon-aem.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/crt0.o new file mode 100644 index 000000000..509a3b1c8 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/iq80310.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/iq80310.specs new file mode 100644 index 000000000..a016e887f --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/iq80310.specs @@ -0,0 +1,8 @@ +%rename link old_link + +*link: +-T redboot.ld%s -Ttext 0xA0020000 %(old_link) + +*startfile: +crti%O%s crtbegin%O%s %{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libc.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libc.a new file mode 100644 index 000000000..fa3cffb60 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libc.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libc_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libc_nano.a new file mode 100644 index 000000000..f0f22b2c2 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libc_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libg.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libg.a new file mode 100644 index 000000000..fa3cffb60 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libg.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libg_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libg_nano.a new file mode 100644 index 000000000..bfddef807 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libg_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libgloss-linux.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libgloss-linux.a new file mode 100644 index 000000000..1ff552238 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libgloss-linux.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libm.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libm.a new file mode 100644 index 000000000..d5eb648ba Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libm.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libnosys.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libnosys.a new file mode 100644 index 000000000..c3fd80348 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libnosys.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon-v2m.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon-v2m.a new file mode 100644 index 000000000..854a720de Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon-v2m.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon.a new file mode 100644 index 000000000..854a720de Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon_nano.a new file mode 100644 index 000000000..01dda708f Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdimon_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdpmon.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdpmon.a new file mode 100644 index 000000000..c161bc759 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/librdpmon.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a new file mode 100644 index 000000000..6dba66269 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a-gdb.py b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a-gdb.py new file mode 100644 index 000000000..ce386d199 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++.a-gdb.py @@ -0,0 +1,61 @@ +# -*- python -*- +# Copyright (C) 2009-2018 Free Software Foundation, Inc. + +# This program 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 of the License, or +# (at your option) any later version. +# +# This program 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. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +import gdb +import os +import os.path + +pythondir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/share/gcc-arm-none-eabi' +libdir = '/tmp/jenkins/jenkins-GCC-8-build_toolchain_docker-594_20190704_1562200936/install-native/arm-none-eabi/lib/thumb/v8-m.main/nofp' + +# This file might be loaded when there is no current objfile. This +# can happen if the user loads it manually. In this case we don't +# update sys.path; instead we just hope the user managed to do that +# beforehand. +if gdb.current_objfile () is not None: + # Update module path. We want to find the relative path from libdir + # to pythondir, and then we want to apply that relative path to the + # directory holding the objfile with which this file is associated. + # This preserves relocatability of the gcc tree. + + # Do a simple normalization that removes duplicate separators. + pythondir = os.path.normpath (pythondir) + libdir = os.path.normpath (libdir) + + prefix = os.path.commonprefix ([libdir, pythondir]) + # In some bizarre configuration we might have found a match in the + # middle of a directory name. + if prefix[-1] != '/': + prefix = os.path.dirname (prefix) + '/' + + # Strip off the prefix. + pythondir = pythondir[len (prefix):] + libdir = libdir[len (prefix):] + + # Compute the ".."s needed to get from libdir to the prefix. + dotdots = ('..' + os.sep) * len (libdir.split (os.sep)) + + objfile = gdb.current_objfile ().filename + dir_ = os.path.join (os.path.dirname (objfile), dotdots, pythondir) + + if not dir_ in sys.path: + sys.path.insert(0, dir_) + +# Call a function as a plain import would not execute body of the included file +# on repeated reloads of this object file. +from libstdcxx.v6 import register_libstdcxx_printers +register_libstdcxx_printers(gdb.current_objfile()) diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++_nano.a new file mode 100644 index 000000000..a359bf91b Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libstdc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libsupc++.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libsupc++.a new file mode 100644 index 000000000..28d5af5a1 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libsupc++.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libsupc++_nano.a b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libsupc++_nano.a new file mode 100644 index 000000000..45106ee39 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/libsupc++_nano.a differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/linux-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/linux-crt0.o similarity index 100% rename from gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/linux-crt0.o rename to gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/linux-crt0.o diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/linux.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/linux.specs new file mode 100644 index 000000000..3e8b6865e --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/linux.specs @@ -0,0 +1,11 @@ +%rename lib libc + +*libgloss: +-lgloss-linux + +*lib: +%(libc) %(libgloss) + +*startfile: +linux-crt0%O%s crti%O%s crtbegin%O%s + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/nano.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/nano.specs new file mode 100644 index 000000000..82594bd03 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/nano.specs @@ -0,0 +1,22 @@ +%rename link nano_link +%rename link_gcc_c_sequence nano_link_gcc_c_sequence +%rename cpp_unique_options nano_cpp_unique_options + +*cpp_unique_options: +-isystem =/include/newlib-nano %(nano_cpp_unique_options) + +*nano_libc: +-lc_nano + +*nano_libgloss: +%{specs=rdimon.specs:-lrdimon_nano} %{specs=nosys.specs:-lnosys} + +*link_gcc_c_sequence: +%(nano_link_gcc_c_sequence) --start-group %G %(nano_libc) %(nano_libgloss) --end-group + +*link: +%(nano_link) %:replace-outfile(-lc -lc_nano) %:replace-outfile(-lg -lg_nano) %:replace-outfile(-lrdimon -lrdimon_nano) %:replace-outfile(-lstdc++ -lstdc++_nano) %:replace-outfile(-lsupc++ -lsupc++_nano) + +*lib: +%{!shared:%{g*:-lg_nano} %{!p:%{!pg:-lc_nano}}%{p:-lc_p}%{pg:-lc_p}} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/nosys.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/nosys.specs new file mode 100644 index 000000000..3a84db3b5 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/nosys.specs @@ -0,0 +1,11 @@ +%rename link_gcc_c_sequence nosys_link_gcc_c_sequence + +*nosys_libgloss: +-lnosys + +*nosys_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*link_gcc_c_sequence: +%(nosys_link_gcc_c_sequence) --start-group %G %(nosys_libc) %(nosys_libgloss) --end-group + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/pid.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/pid.specs new file mode 100644 index 000000000..c8a9f14c9 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/pid.specs @@ -0,0 +1,8 @@ +%rename link old_link + +*link: +-T redboot.ld%s -Ttext 0x10000 %(old_link) + +*startfile: +crti%O%s crtbegin%O%s %{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-crt0-v2m.o new file mode 100644 index 000000000..ca9edb95a Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-crt0-v2m.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-crt0.o new file mode 100644 index 000000000..61f29b7e0 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-v2m.specs new file mode 100644 index 000000000..c87e3fced --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon-v2m.specs @@ -0,0 +1,22 @@ +# rdimon-v2m.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 +# mixed mode executables and as such uses the HLT trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon-v2m_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon.specs new file mode 100644 index 000000000..b4d020d77 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdimon.specs @@ -0,0 +1,21 @@ +# rdimon.specs +# +# Spec file for AArch64 baremetal newlib with version 2 of the +# AngelAPI semi-hosting using the SVC trap instruction. +# +# This version supports extensibility through an extension mechanism. + +%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence + +*rdimon_libc: +%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} + +*rdimon_libgloss: +%{!specs=nano.specs:-lrdimon} %{specs=nano.specs:-lrdimon_nano} + +*link_gcc_c_sequence: +%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdimon-crt0%O%s} %{pg:rdimon-crt0%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdpmon-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdpmon-crt0.o new file mode 100644 index 000000000..19a7168d5 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdpmon-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdpmon.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdpmon.specs new file mode 100644 index 000000000..903db1fb1 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/rdpmon.specs @@ -0,0 +1,8 @@ +%rename link old_link + +*link: +%(old_link) -lrdpmon + +*startfile: +crti%O%s crtbegin%O%s %{!pg:rdpmon-crt0%O%s} %{pg:rdpmon-crt0%O%s} + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot-crt0.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot-crt0.o new file mode 100644 index 000000000..6344ee906 Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot-crt0.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot-syscalls.o new file mode 100644 index 000000000..94c72c98e Binary files /dev/null and b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot-syscalls.o differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot.ld b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot.ld new file mode 100644 index 000000000..3d1f8d806 --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot.ld @@ -0,0 +1,220 @@ +OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", + "elf32-littlearm") +OUTPUT_ARCH(arm) +ENTRY(_start) +/* Do we need any of these for elf? + __DYNAMIC = 0; */ +SECTIONS +{ + /* Read-only sections, merged into text segment: */ + . = 0x00020000; + .interp : { *(.interp) } + .hash : { *(.hash) } + .dynsym : { *(.dynsym) } + .dynstr : { *(.dynstr) } + .gnu.version : { *(.gnu.version) } + .gnu.version_d : { *(.gnu.version_d) } + .gnu.version_r : { *(.gnu.version_r) } + .rel.init : { *(.rel.init) } + .rela.init : { *(.rela.init) } + .rel.text : + { + *(.rel.text) + *(.rel.text.*) + *(.rel.gnu.linkonce.t*) + } + .rela.text : + { + *(.rela.text) + *(.rela.text.*) + *(.rela.gnu.linkonce.t*) + } + .rel.fini : { *(.rel.fini) } + .rela.fini : { *(.rela.fini) } + .rel.rodata : + { + *(.rel.rodata) + *(.rel.rodata.*) + *(.rel.gnu.linkonce.r*) + } + .rela.rodata : + { + *(.rela.rodata) + *(.rela.rodata.*) + *(.rela.gnu.linkonce.r*) + } + .rel.data : + { + *(.rel.data) + *(.rel.data.*) + *(.rel.gnu.linkonce.d*) + } + .rela.data : + { + *(.rela.data) + *(.rela.data.*) + *(.rela.gnu.linkonce.d*) + } + .rel.ctors : { *(.rel.ctors) } + .rela.ctors : { *(.rela.ctors) } + .rel.dtors : { *(.rel.dtors) } + .rela.dtors : { *(.rela.dtors) } + .rel.got : { *(.rel.got) } + .rela.got : { *(.rela.got) } + .rel.sdata : + { + *(.rel.sdata) + *(.rel.sdata.*) + *(.rel.gnu.linkonce.s*) + } + .rela.sdata : + { + *(.rela.sdata) + *(.rela.sdata.*) + *(.rela.gnu.linkonce.s*) + } + .rel.sbss : { *(.rel.sbss) } + .rela.sbss : { *(.rela.sbss) } + .rel.bss : { *(.rel.bss) } + .rela.bss : { *(.rela.bss) } + .rel.plt : { *(.rel.plt) } + .rela.plt : { *(.rela.plt) } + .plt : { *(.plt) } + .text : + { + *(.text) + *(.text.*) + *(.stub) + /* .gnu.warning sections are handled specially by elf32.em. */ + *(.gnu.warning) + *(.gnu.linkonce.t*) + *(.glue_7t) *(.glue_7) + } =0 + .init : + { + KEEP (*(.init)) + } =0 + _etext = .; + PROVIDE (etext = .); + .fini : + { + KEEP (*(.fini)) + } =0 + .rodata : { *(.rodata) *(.rodata.*) *(.gnu.linkonce.r*) } + .rodata1 : { *(.rodata1) } + .eh_frame_hdr : { *(.eh_frame_hdr) } + /* Adjust the address for the data segment. We want to adjust up to + the same address within the page on the next page up. */ + . = ALIGN(256) + (. & (256 - 1)); + .data : + { + *(.data) + *(.data.*) + *(.gnu.linkonce.d*) + SORT(CONSTRUCTORS) + } + .data1 : { *(.data1) } + .eh_frame : { KEEP (*(.eh_frame)) } + .gcc_except_table : { *(.gcc_except_table) } + .ctors : + { + /* gcc uses crtbegin.o to find the start of + the constructors, so we make sure it is + first. Because this is a wildcard, it + doesn't matter if the user does not + actually link against crtbegin.o; the + linker won't look for a file to match a + wildcard. The wildcard also means that it + doesn't matter which directory crtbegin.o + is in. */ + KEEP (*crtbegin.o(.ctors)) + /* We don't want to include the .ctor section from + from the crtend.o file until after the sorted ctors. + The .ctor section from the crtend file contains the + end of ctors marker and it must be last */ + KEEP (*(EXCLUDE_FILE (*crtend.o ) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + } + .dtors : + { + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o ) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + } + .jcr : { KEEP (*(.jcr)) } + .got : { *(.got.plt) *(.got) } + .dynamic : { *(.dynamic) } + /* We want the small data sections together, so single-instruction offsets + can access them all, and initialized data all before uninitialized, so + we can shorten the on-disk segment size. */ + .sdata : + { + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + } + _edata = .; + PROVIDE (edata = .); + __bss_start = .; + __bss_start__ = .; + .sbss : + { + *(.dynsbss) + *(.sbss) + *(.sbss.*) + *(.scommon) + } + .bss : + { + *(.dynbss) + *(.bss) + *(.bss.*) + *(COMMON) + /* Align here to ensure that the .bss section occupies space up to + _end. Align after .bss to ensure correct alignment even if the + .bss section disappears because there are no input sections. */ + . = ALIGN(32 / 8); + } + . = ALIGN(32 / 8); + _end = .; + _bss_end__ = . ; __bss_end__ = . ; __end__ = . ; + PROVIDE (end = .); + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + .debug_ranges 0 : { *(.debug_ranges) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + .stack 0x80000 : { _stack = .; *(.stack) } + /* These must appear regardless of . */ +} diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot.specs new file mode 100644 index 000000000..8a00c3b6d --- /dev/null +++ b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/nofp/redboot.specs @@ -0,0 +1,8 @@ +%rename link old_link + +*link: +-T redboot.ld%s -Ttext 0x20000 %(old_link) + +*startfile: +crti%O%s crtbegin%O%s %{!pg:redboot-crt0%O%s} %{pg:redboot-crt0%O%s} redboot-syscalls%O%s + diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-crt0-v2m.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-crt0-v2m.o deleted file mode 100644 index 301913f4a..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-crt0-v2m.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-v2m.specs b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-v2m.specs deleted file mode 100644 index e4f2545a4..000000000 --- a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/rdimon-v2m.specs +++ /dev/null @@ -1,22 +0,0 @@ -# rdimon-v2m.specs -# -# Spec file for AArch64 baremetal newlib with version 2 of the -# AngelAPI semi-hosting. This version is intended for AArch64/AArch32 -# mixed mode executables and as such uses the HLT trap instruction. -# -# This version supports extensibility through an extension mechanism. - -%rename link_gcc_c_sequence rdimon_link_gcc_c_sequence - -*rdimon_libc: -%{!specs=nano.specs:-lc} %{specs=nano.specs:-lc_nano} - -*rdimon_libgloss: -%{!specs=nano.specs:-lrdimon-v2m} %{specs=nano.specs:-lrdimon_nano} - -*link_gcc_c_sequence: -%(rdimon_link_gcc_c_sequence) --start-group %G %(rdimon_libc) %(rdimon_libgloss) --end-group - -*startfile: -crti%O%s crtbegin%O%s %{!pg:rdimon-crt0-v2m%O%s} %{pg:rdimon-crt0-v2m%O%s} - diff --git a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot-syscalls.o b/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot-syscalls.o deleted file mode 100644 index 06aa7c741..000000000 Binary files a/gcc-arm-none-eabi/arm-none-eabi/lib/thumb/v8-m.main/redboot-syscalls.o and /dev/null differ diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameDecorator.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameDecorator.py index 13f818ae9..4eba08812 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameDecorator.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameDecorator.py @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameIterator.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameIterator.py index 2ee3119a5..4950caf56 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameIterator.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/FrameIterator.py @@ -1,4 +1,4 @@ -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/__init__.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/__init__.py index 7e7c299f3..af74df80c 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/__init__.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Copyright (C) 2010-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -85,15 +85,14 @@ def execute_unwinders(pending_frame): Returns: gdb.UnwindInfo instance or None. """ - for objfile in _gdb.objfiles(): + for objfile in objfiles(): for unwinder in objfile.frame_unwinders: if unwinder.enabled: unwind_info = unwinder(pending_frame) if unwind_info is not None: return unwind_info - current_progspace = _gdb.current_progspace() - for unwinder in current_progspace.frame_unwinders: + for unwinder in current_progspace().frame_unwinders: if unwinder.enabled: unwind_info = unwinder(pending_frame) if unwind_info is not None: @@ -163,3 +162,25 @@ def GdbSetPythonDirectory(dir): # attributes reload(__import__(__name__)) auto_load_packages() + +def current_progspace(): + "Return the current Progspace." + return selected_inferior().progspace + +def objfiles(): + "Return a sequence of the current program space's objfiles." + return current_progspace().objfiles() + +def solib_name (addr): + """solib_name (Long) -> String.\n\ +Return the name of the shared library holding a given address, or None.""" + return current_progspace().solib_name(addr) + +def block_for_pc(pc): + "Return the block containing the given pc value, or None." + return current_progspace().block_for_pc(pc) + +def find_pc_line(pc): + """find_pc_line (pc) -> Symtab_and_line. +Return the gdb.Symtab_and_line object corresponding to the pc value.""" + return current_progspace().find_pc_line(pc) diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/__init__.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/__init__.py index 5062d8fa7..9cd48f1f0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/__init__.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Copyright (C) 2010-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/explore.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/explore.py index 2efd14d97..f782a9712 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/explore.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/explore.py @@ -1,5 +1,5 @@ # GDB 'explore' command. -# Copyright (C) 2012-2018 Free Software Foundation, Inc. +# Copyright (C) 2012-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -649,14 +649,11 @@ class ExploreUtils(object): class ExploreCommand(gdb.Command): """Explore a value or a type valid in the current context. - Usage: +Usage: explore ARG - explore ARG - - - ARG is either a valid expression or a type name. - - At any stage of exploration, hit the return key (instead of a - choice, if any) to return to the enclosing type or value. - """ +- ARG is either a valid expression or a type name. +- At any stage of exploration, hit the return key (instead of a +choice, if any) to return to the enclosing type or value.""" def __init__(self): super(ExploreCommand, self).__init__(name = "explore", @@ -689,14 +686,11 @@ class ExploreCommand(gdb.Command): class ExploreValueCommand(gdb.Command): """Explore value of an expression valid in the current context. - Usage: +Usage: explore value ARG - explore value ARG - - - ARG is a valid expression. - - At any stage of exploration, hit the return key (instead of a - choice, if any) to return to the enclosing value. - """ +- ARG is a valid expression. +- At any stage of exploration, hit the return key (instead of a +choice, if any) to return to the enclosing value.""" def __init__(self): super(ExploreValueCommand, self).__init__( @@ -718,17 +712,13 @@ class ExploreValueCommand(gdb.Command): class ExploreTypeCommand(gdb.Command): - """Explore a type or the type of an expression valid in the current - context. + """Explore a type or the type of an expression. - Usage: +Usage: explore type ARG - explore type ARG - - - ARG is a valid expression or a type name. - - At any stage of exploration, hit the return key (instead of a - choice, if any) to return to the enclosing type. - """ +- ARG is a valid expression or a type name. +- At any stage of exploration, hit the return key (instead of a +choice, if any) to return to the enclosing type.""" def __init__(self): super(ExploreTypeCommand, self).__init__( diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/frame_filters.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/frame_filters.py index 3afe5e9ac..9d28f845b 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/frame_filters.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/frame_filters.py @@ -1,5 +1,5 @@ # Frame-filter commands. -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -42,8 +42,7 @@ class ShowFilterPrefixCmd(gdb.Command): class InfoFrameFilter(gdb.Command): """List all registered Python frame-filters. - Usage: info frame-filters - """ +Usage: info frame-filters""" def __init__(self): super(InfoFrameFilter, self).__init__("info frame-filter", @@ -112,11 +111,13 @@ def _enable_parse_arg(cmd_name, arg): argv = gdb.string_to_argv(arg); argc = len(argv) - if argv[0] == "all" and argc > 1: - raise gdb.GdbError(cmd_name + ": with 'all' " \ - "you may not specify a filter.") - else: - if argv[0] != "all" and argc != 2: + if argc == 0: + raise gdb.GdbError(cmd_name + " requires an argument") + if argv[0] == "all": + if argc > 1: + raise gdb.GdbError(cmd_name + ": with 'all' " \ + "you may not specify a filter.") + elif argc != 2: raise gdb.GdbError(cmd_name + " takes exactly two arguments.") return argv @@ -207,21 +208,19 @@ def _complete_frame_filter_name(word, printer_dict): return flist class EnableFrameFilter(gdb.Command): - """GDB command to disable the specified frame-filter. + """GDB command to enable the specified frame-filter. - Usage: enable frame-filter enable DICTIONARY [NAME] +Usage: enable frame-filter DICTIONARY [NAME] - DICTIONARY is the name of the frame filter dictionary on which to - operate. If dictionary is set to "all", perform operations on all - dictionaries. Named dictionaries are: "global" for the global - frame filter dictionary, "progspace" for the program space's frame - filter dictionary. If either all, or the two named dictionaries - are not specified, the dictionary name is assumed to be the name - of the object-file name. +DICTIONARY is the name of the frame filter dictionary on which to +operate. If dictionary is set to "all", perform operations on all +dictionaries. Named dictionaries are: "global" for the global +frame filter dictionary, "progspace" for the program space's frame +filter dictionary. If either all, or the two named dictionaries +are not specified, the dictionary name is assumed to be the name +of an "objfile" -- a shared library or an executable. - NAME matches the name of the frame-filter to operate on. If - DICTIONARY is "all", NAME is ignored. - """ +NAME matches the name of the frame-filter to operate on.""" def __init__(self): super(EnableFrameFilter, self).__init__("enable frame-filter", gdb.COMMAND_DATA) @@ -242,19 +241,17 @@ class EnableFrameFilter(gdb.Command): class DisableFrameFilter(gdb.Command): """GDB command to disable the specified frame-filter. - Usage: disable frame-filter disable DICTIONARY [NAME] +Usage: disable frame-filter DICTIONARY [NAME] - DICTIONARY is the name of the frame filter dictionary on which to - operate. If dictionary is set to "all", perform operations on all - dictionaries. Named dictionaries are: "global" for the global - frame filter dictionary, "progspace" for the program space's frame - filter dictionary. If either all, or the two named dictionaries - are not specified, the dictionary name is assumed to be the name - of the object-file name. +DICTIONARY is the name of the frame filter dictionary on which to +operate. If dictionary is set to "all", perform operations on all +dictionaries. Named dictionaries are: "global" for the global +frame filter dictionary, "progspace" for the program space's frame +filter dictionary. If either all, or the two named dictionaries +are not specified, the dictionary name is assumed to be the name +of an "objfile" -- a shared library or an executable. - NAME matches the name of the frame-filter to operate on. If - DICTIONARY is "all", NAME is ignored. - """ +NAME matches the name of the frame-filter to operate on.""" def __init__(self): super(DisableFrameFilter, self).__init__("disable frame-filter", gdb.COMMAND_DATA) @@ -275,19 +272,19 @@ class DisableFrameFilter(gdb.Command): class SetFrameFilterPriority(gdb.Command): """GDB command to set the priority of the specified frame-filter. - Usage: set frame-filter priority DICTIONARY NAME PRIORITY +Usage: set frame-filter priority DICTIONARY NAME PRIORITY - DICTIONARY is the name of the frame filter dictionary on which to - operate. Named dictionaries are: "global" for the global frame - filter dictionary, "progspace" for the program space's framefilter - dictionary. If either of these two are not specified, the - dictionary name is assumed to be the name of the object-file name. +DICTIONARY is the name of the frame filter dictionary on which to +operate. Named dictionaries are: "global" for the global frame +filter dictionary, "progspace" for the program space's framefilter +dictionary. If either of these two are not specified, the +dictionary name is assumed to be the name of an "objfile" -- a +shared library or an executable. - NAME matches the name of the frame filter to operate on. +NAME matches the name of the frame filter to operate on. - PRIORITY is the an integer to assign the new priority to the frame - filter. - """ +PRIORITY is the an integer to assign the new priority to the frame +filter.""" def __init__(self): super(SetFrameFilterPriority, self).__init__("set frame-filter " \ @@ -361,16 +358,16 @@ class SetFrameFilterPriority(gdb.Command): class ShowFrameFilterPriority(gdb.Command): """GDB command to show the priority of the specified frame-filter. - Usage: show frame-filter priority DICTIONARY NAME +Usage: show frame-filter priority DICTIONARY NAME - DICTIONARY is the name of the frame filter dictionary on which to - operate. Named dictionaries are: "global" for the global frame - filter dictionary, "progspace" for the program space's framefilter - dictionary. If either of these two are not specified, the - dictionary name is assumed to be the name of the object-file name. +DICTIONARY is the name of the frame filter dictionary on which to +operate. Named dictionaries are: "global" for the global frame +filter dictionary, "progspace" for the program space's framefilter +dictionary. If either of these two are not specified, the +dictionary name is assumed to be the name of an "objfile" -- a +shared library or an executable. - NAME matches the name of the frame-filter to operate on. - """ +NAME matches the name of the frame-filter to operate on.""" def __init__(self): super(ShowFrameFilterPriority, self).__init__("show frame-filter " \ diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/pretty_printers.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/pretty_printers.py index a6ee9559a..c1bdf68fe 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/pretty_printers.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/pretty_printers.py @@ -1,5 +1,5 @@ # Pretty-printer commands. -# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Copyright (C) 2010-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -84,16 +84,15 @@ def printer_enabled_p(printer): class InfoPrettyPrinter(gdb.Command): """GDB command to list all registered pretty-printers. - Usage: info pretty-printer [object-regexp [name-regexp]] +Usage: info pretty-printer [OBJECT-REGEXP [NAME-REGEXP]] - OBJECT-REGEXP is a regular expression matching the objects to list. - Objects are "global", the program space's file, and the objfiles within - that program space. +OBJECT-REGEXP is a regular expression matching the objects to list. +Objects are "global", the program space's file, and the objfiles within +that program space. - NAME-REGEXP matches the name of the pretty-printer. - Individual printers in a collection are named as - printer-name;subprinter-name. - """ +NAME-REGEXP matches the name of the pretty-printer. +Individual printers in a collection are named as +printer-name;subprinter-name.""" def __init__ (self): super(InfoPrettyPrinter, self).__init__("info pretty-printer", @@ -159,7 +158,7 @@ class InfoPrettyPrinter(gdb.Command): cp.pretty_printers, "progspace", object_re, name_re, subname_re) for objfile in gdb.objfiles(): - self.invoke1(" objfile %s pretty-printers:" % objfile.filename, + self.invoke1("objfile %s pretty-printers:" % objfile.filename, objfile.pretty_printers, objfile.filename, object_re, name_re, subname_re) @@ -316,16 +315,15 @@ def do_enable_pretty_printer (arg, flag): class EnablePrettyPrinter (gdb.Command): """GDB command to enable the specified pretty-printer. - Usage: enable pretty-printer [object-regexp [name-regexp]] +Usage: enable pretty-printer [OBJECT-REGEXP [NAME-REGEXP]] - OBJECT-REGEXP is a regular expression matching the objects to examine. - Objects are "global", the program space's file, and the objfiles within - that program space. +OBJECT-REGEXP is a regular expression matching the objects to examine. +Objects are "global", the program space's file, and the objfiles within +that program space. - NAME-REGEXP matches the name of the pretty-printer. - Individual printers in a collection are named as - printer-name;subprinter-name. - """ +NAME-REGEXP matches the name of the pretty-printer. +Individual printers in a collection are named as +printer-name;subprinter-name.""" def __init__(self): super(EnablePrettyPrinter, self).__init__("enable pretty-printer", @@ -339,16 +337,15 @@ class EnablePrettyPrinter (gdb.Command): class DisablePrettyPrinter (gdb.Command): """GDB command to disable the specified pretty-printer. - Usage: disable pretty-printer [object-regexp [name-regexp]] +Usage: disable pretty-printer [OBJECT-REGEXP [NAME-REGEXP]] - OBJECT-REGEXP is a regular expression matching the objects to examine. - Objects are "global", the program space's file, and the objfiles within - that program space. +OBJECT-REGEXP is a regular expression matching the objects to examine. +Objects are "global", the program space's file, and the objfiles within +that program space. - NAME-REGEXP matches the name of the pretty-printer. - Individual printers in a collection are named as - printer-name;subprinter-name. - """ +NAME-REGEXP matches the name of the pretty-printer. +Individual printers in a collection are named as +printer-name;subprinter-name.""" def __init__(self): super(DisablePrettyPrinter, self).__init__("disable pretty-printer", diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/prompt.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/prompt.py index 1cae003bf..3d662a7d3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/prompt.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/prompt.py @@ -1,5 +1,5 @@ # Extended prompt. -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/type_printers.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/type_printers.py index 3baf19104..f835f03c0 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/type_printers.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/type_printers.py @@ -1,5 +1,5 @@ # Type printer commands. -# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Copyright (C) 2010-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -22,8 +22,7 @@ import gdb class InfoTypePrinter(gdb.Command): """GDB command to list all registered type-printers. - Usage: info type-printers - """ +Usage: info type-printers""" def __init__ (self): super(InfoTypePrinter, self).__init__("info type-printers", @@ -101,10 +100,9 @@ class _EnableOrDisableCommand(gdb.Command): class EnableTypePrinter(_EnableOrDisableCommand): """GDB command to enable the specified type printer. - Usage: enable type-printer NAME +Usage: enable type-printer NAME - NAME is the name of the type-printer. - """ +NAME is the name of the type-printer.""" def __init__(self): super(EnableTypePrinter, self).__init__(True, "enable type-printer") @@ -112,10 +110,9 @@ class EnableTypePrinter(_EnableOrDisableCommand): class DisableTypePrinter(_EnableOrDisableCommand): """GDB command to disable the specified type-printer. - Usage: disable type-printer NAME +Usage: disable type-printer NAME - NAME is the name of the type-printer. - """ +NAME is the name of the type-printer.""" def __init__(self): super(DisableTypePrinter, self).__init__(False, "disable type-printer") diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/unwinders.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/unwinders.py index f970e726e..028ad7dec 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/unwinders.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/unwinders.py @@ -1,5 +1,5 @@ # Unwinder commands. -# Copyright 2015-2018 Free Software Foundation, Inc. +# Copyright 2015-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -56,18 +56,17 @@ def parse_unwinder_command_args(arg): class InfoUnwinder(gdb.Command): """GDB command to list unwinders. - Usage: info unwinder [locus-regexp [name-regexp]] +Usage: info unwinder [LOCUS-REGEXP [NAME-REGEXP]] - LOCUS-REGEXP is a regular expression matching the location of the - unwinder. If it is omitted, all registered unwinders from all - loci are listed. A locus can be 'global', 'progspace' to list - the unwinders from the current progspace, or a regular expression - matching filenames of objfiles. +LOCUS-REGEXP is a regular expression matching the location of the +unwinder. If it is omitted, all registered unwinders from all +loci are listed. A locus can be 'global', 'progspace' to list +the unwinders from the current progspace, or a regular expression +matching filenames of objfiles. - NAME-REGEXP is a regular expression to filter unwinder names. If - this omitted for a specified locus, then all registered unwinders - in the locus are listed. - """ +NAME-REGEXP is a regular expression to filter unwinder names. If +this omitted for a specified locus, then all registered unwinders +in the locus are listed.""" def __init__(self): super(InfoUnwinder, self).__init__("info unwinder", @@ -145,17 +144,15 @@ def do_enable_unwinder(arg, flag): class EnableUnwinder(gdb.Command): """GDB command to enable unwinders. - Usage: enable unwinder [locus-regexp [name-regexp]] +Usage: enable unwinder [LOCUS-REGEXP [NAME-REGEXP]] - LOCUS-REGEXP is a regular expression specifying the unwinders to - enable. It can 'global', 'progspace', or the name of an objfile - within that progspace. +LOCUS-REGEXP is a regular expression specifying the unwinders to +enable. It can 'global', 'progspace', or the name of an objfile +within that progspace. - NAME_REGEXP is a regular expression to filter unwinder names. If - this omitted for a specified locus, then all registered unwinders - in the locus are affected. - - """ +NAME_REGEXP is a regular expression to filter unwinder names. If +this omitted for a specified locus, then all registered unwinders +in the locus are affected.""" def __init__(self): super(EnableUnwinder, self).__init__("enable unwinder", @@ -169,17 +166,15 @@ class EnableUnwinder(gdb.Command): class DisableUnwinder(gdb.Command): """GDB command to disable the specified unwinder. - Usage: disable unwinder [locus-regexp [name-regexp]] +Usage: disable unwinder [LOCUS-REGEXP [NAME-REGEXP]] - LOCUS-REGEXP is a regular expression specifying the unwinders to - disable. It can 'global', 'progspace', or the name of an objfile - within that progspace. +LOCUS-REGEXP is a regular expression specifying the unwinders to +disable. It can 'global', 'progspace', or the name of an objfile +within that progspace. - NAME_REGEXP is a regular expression to filter unwinder names. If - this omitted for a specified locus, then all registered unwinders - in the locus are affected. - - """ +NAME_REGEXP is a regular expression to filter unwinder names. If +this omitted for a specified locus, then all registered unwinders +in the locus are affected.""" def __init__(self): super(DisableUnwinder, self).__init__("disable unwinder", diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/xmethods.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/xmethods.py index 68315a7ef..ea02609d1 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/xmethods.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/command/xmethods.py @@ -1,5 +1,5 @@ # Xmethod commands. -# Copyright 2013-2018 Free Software Foundation, Inc. +# Copyright 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -177,21 +177,20 @@ def set_xm_status(arg, status): class InfoXMethod(gdb.Command): """GDB command to list registered xmethod matchers. - Usage: info xmethod [locus-regexp [name-regexp]] +Usage: info xmethod [LOCUS-REGEXP [NAME-REGEXP]] - LOCUS-REGEXP is a regular expression matching the location of the - xmethod matchers. If it is omitted, all registered xmethod matchers - from all loci are listed. A locus could be 'global', a regular expression - matching the current program space's filename, or a regular expression - matching filenames of objfiles. Locus could be 'progspace' to specify that - only xmethods from the current progspace should be listed. +LOCUS-REGEXP is a regular expression matching the location of the +xmethod matchers. If it is omitted, all registered xmethod matchers +from all loci are listed. A locus could be 'global', a regular expression +matching the current program space's filename, or a regular expression +matching filenames of objfiles. Locus could be 'progspace' to specify that +only xmethods from the current progspace should be listed. - NAME-REGEXP is a regular expression matching the names of xmethod - matchers. If this omitted for a specified locus, then all registered - xmethods in the locus are listed. To list only a certain xmethods - managed by a single matcher, the name regexp can be specified as - matcher-name-regexp;xmethod-name-regexp. - """ +NAME-REGEXP is a regular expression matching the names of xmethod +matchers. If this omitted for a specified locus, then all registered +xmethods in the locus are listed. To list only a certain xmethods +managed by a single matcher, the name regexp can be specified as +matcher-name-regexp;xmethod-name-regexp.""" def __init__(self): super(InfoXMethod, self).__init__("info xmethod", @@ -213,21 +212,20 @@ class InfoXMethod(gdb.Command): class EnableXMethod(gdb.Command): """GDB command to enable a specified (group of) xmethod(s). - Usage: enable xmethod [locus-regexp [name-regexp]] +Usage: enable xmethod [LOCUS-REGEXP [NAME-REGEXP]] - LOCUS-REGEXP is a regular expression matching the location of the - xmethod matchers. If it is omitted, all registered xmethods matchers - from all loci are enabled. A locus could be 'global', a regular expression - matching the current program space's filename, or a regular expression - matching filenames of objfiles. Locus could be 'progspace' to specify that - only xmethods from the current progspace should be enabled. +LOCUS-REGEXP is a regular expression matching the location of the +xmethod matchers. If it is omitted, all registered xmethods matchers +from all loci are enabled. A locus could be 'global', a regular expression +matching the current program space's filename, or a regular expression +matching filenames of objfiles. Locus could be 'progspace' to specify that +only xmethods from the current progspace should be enabled. - NAME-REGEXP is a regular expression matching the names of xmethods - within a given locus. If this omitted for a specified locus, then all - registered xmethod matchers in the locus are enabled. To enable only - a certain xmethods managed by a single matcher, the name regexp can be - specified as matcher-name-regexp;xmethod-name-regexp. - """ +NAME-REGEXP is a regular expression matching the names of xmethods +within a given locus. If this omitted for a specified locus, then all +registered xmethod matchers in the locus are enabled. To enable only +a certain xmethods managed by a single matcher, the name regexp can be +specified as matcher-name-regexp;xmethod-name-regexp.""" def __init__(self): super(EnableXMethod, self).__init__("enable xmethod", @@ -240,21 +238,20 @@ class EnableXMethod(gdb.Command): class DisableXMethod(gdb.Command): """GDB command to disable a specified (group of) xmethod(s). - Usage: disable xmethod [locus-regexp [name-regexp]] +Usage: disable xmethod [LOCUS-REGEXP [NAME-REGEXP]] - LOCUS-REGEXP is a regular expression matching the location of the - xmethod matchers. If it is omitted, all registered xmethod matchers - from all loci are disabled. A locus could be 'global', a regular - expression matching the current program space's filename, or a regular - expression filenames of objfiles. Locus could be 'progspace' to specify - that only xmethods from the current progspace should be disabled. +LOCUS-REGEXP is a regular expression matching the location of the +xmethod matchers. If it is omitted, all registered xmethod matchers +from all loci are disabled. A locus could be 'global', a regular +expression matching the current program space's filename, or a regular +expression filenames of objfiles. Locus could be 'progspace' to specify +that only xmethods from the current progspace should be disabled. - NAME-REGEXP is a regular expression matching the names of xmethods - within a given locus. If this omitted for a specified locus, then all - registered xmethod matchers in the locus are disabled. To disable - only a certain xmethods managed by a single matcher, the name regexp - can be specified as matcher-name-regexp;xmethod-name-regexp. - """ +NAME-REGEXP is a regular expression matching the names of xmethods +within a given locus. If this omitted for a specified locus, then all +registered xmethod matchers in the locus are disabled. To disable +only a certain xmethods managed by a single matcher, the name regexp +can be specified as matcher-name-regexp;xmethod-name-regexp.""" def __init__(self): super(DisableXMethod, self).__init__("disable xmethod", diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/frames.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/frames.py index b8de5a4c8..d8e4be8d3 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/frames.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/frames.py @@ -1,5 +1,5 @@ # Frame-filter commands. -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/__init__.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/__init__.py index c48127ac1..b133472df 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/__init__.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2012-2018 Free Software Foundation, Inc. +# Copyright (C) 2012-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/as_string.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/as_string.py index faa65e3a0..8936b5ed2 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/as_string.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/as_string.py @@ -1,4 +1,4 @@ -# Copyright (C) 2016-2018 Free Software Foundation, Inc. +# Copyright (C) 2016-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -19,16 +19,14 @@ import gdb class _AsString(gdb.Function): """Return the string representation of a value. -Usage: - $_as_string(value) +Usage: $_as_string (VALUE) Arguments: - value: A gdb.Value. + VALUE: any value Returns: - The string representation of the value. -""" + The string representation of the value.""" def __init__(self): super(_AsString, self).__init__("_as_string") diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/caller_is.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/caller_is.py index 49aa41c70..27f30dc3d 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/caller_is.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/caller_is.py @@ -1,5 +1,5 @@ # Caller-is functions. -# Copyright (C) 2008-2018 Free Software Foundation, Inc. +# Copyright (C) 2008-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -20,21 +20,19 @@ import re class CallerIs(gdb.Function): """Check the calling function's name. -Usage: - $_caller_is(name [, number_of_frames]) +Usage: $_caller_is (NAME [, NUMBER-OF-FRAMES]) Arguments: - name: The name of the function to search for. + NAME: The name of the function to search for. - number_of_frames: How many stack frames to traverse back from the currently + NUMBER-OF-FRAMES: How many stack frames to traverse back from the currently selected frame to compare with. If the value is greater than the depth of the stack from that point then the result is False. The default is 1. Returns: - True if the function's name at the specified frame is equal to name. -""" + True if the function's name at the specified frame is equal to NAME.""" def __init__(self): super(CallerIs, self).__init__("_caller_is") @@ -53,21 +51,19 @@ Returns: class CallerMatches(gdb.Function): """Compare the calling function's name with a regexp. -Usage: - $_caller_matches(regex [, number_of_frames]) +Usage: $_caller_matches (REGEX [, NUMBER-OF-FRAMES]) Arguments: - regex: The regular expression to compare the function's name with. + REGEX: The regular expression to compare the function's name with. - number_of_frames: How many stack frames to traverse back from the currently + NUMBER-OF-FRAMES: How many stack frames to traverse back from the currently selected frame to compare with. If the value is greater than the depth of the stack from that point then the result is False. The default is 1. Returns: - True if the function's name at the specified frame matches regex. -""" + True if the function's name at the specified frame matches REGEX.""" def __init__(self): super(CallerMatches, self).__init__("_caller_matches") @@ -86,21 +82,19 @@ Returns: class AnyCallerIs(gdb.Function): """Check all calling function's names. -Usage: - $_any_caller_is(name [, number_of_frames]) +Usage: $_any_caller_is (NAME [, NUMBER-OF-FRAMES]) Arguments: - name: The name of the function to search for. + NAME: The name of the function to search for. - number_of_frames: How many stack frames to traverse back from the currently + NUMBER-OF-FRAMES: How many stack frames to traverse back from the currently selected frame to compare with. If the value is greater than the depth of the stack from that point then the result is False. The default is 1. Returns: - True if any function's name is equal to name. -""" + True if any function's name is equal to NAME.""" def __init__(self): super(AnyCallerIs, self).__init__("_any_caller_is") @@ -121,21 +115,19 @@ Returns: class AnyCallerMatches(gdb.Function): """Compare all calling function's names with a regexp. -Usage: - $_any_caller_matches(regex [, number_of_frames]) +Usage: $_any_caller_matches (REGEX [, NUMBER-OF-FRAMES]) Arguments: - regex: The regular expression to compare the function's name with. + REGEX: The regular expression to compare the function's name with. - number_of_frames: How many stack frames to traverse back from the currently + NUMBER-OF-FRAMES: How many stack frames to traverse back from the currently selected frame to compare with. If the value is greater than the depth of the stack from that point then the result is False. The default is 1. Returns: - True if any function's name matches regex. -""" + True if any function's name matches REGEX.""" def __init__(self): super(AnyCallerMatches, self).__init__("_any_caller_matches") diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/strfns.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/strfns.py index 47620f389..d29ff61d6 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/strfns.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/function/strfns.py @@ -1,5 +1,5 @@ # Useful gdb string convenience functions. -# Copyright (C) 2012-2018 Free Software Foundation, Inc. +# Copyright (C) 2012-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -23,12 +23,10 @@ import re class _MemEq(gdb.Function): """$_memeq - compare bytes of memory -Usage: - $_memeq(a, b, len) +Usage: $_memeq (A, B, LEN) Returns: - True if len bytes at a and b compare equally. -""" + True if LEN bytes at A and B compare equally.""" def __init__(self): super(_MemEq, self).__init__("_memeq") @@ -48,12 +46,10 @@ Returns: class _StrLen(gdb.Function): """$_strlen - compute string length -Usage: - $_strlen(a) +Usage: $_strlen (A) Returns: - Length of string a, assumed to be a string in the current language. -""" + Length of string A, assumed to be a string in the current language.""" def __init__(self): super(_StrLen, self).__init__("_strlen") @@ -65,16 +61,14 @@ Returns: class _StrEq(gdb.Function): """$_streq - check string equality -Usage: - $_streq(a, b) +Usage: $_streq (A, B) Returns: - True if a and b are identical strings in the current language. + True if A and B are identical strings in the current language. Example (amd64-linux): catch syscall open - cond $bpnum $_streq((char*) $rdi, "foo") -""" + cond $bpnum $_streq((char*) $rdi, "foo")""" def __init__(self): super(_StrEq, self).__init__("_streq") @@ -85,13 +79,11 @@ Example (amd64-linux): class _RegEx(gdb.Function): """$_regex - check if a string matches a regular expression -Usage: - $_regex(string, regex) +Usage: $_regex (STRING, REGEX) Returns: - True if string str (in the current language) matches the - regular expression regex. -""" + True if string STRING (in the current language) matches the + regular expression REGEX.""" def __init__(self): super(_RegEx, self).__init__("_regex") diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/__init__.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/__init__.py index e54a4e780..25dae6849 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/__init__.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/__init__.py @@ -1,4 +1,4 @@ -# Copyright (C) 2014-2018 Free Software Foundation, Inc. +# Copyright (C) 2014-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/bound_registers.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/bound_registers.py index db192e477..f39d22004 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/bound_registers.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printer/bound_registers.py @@ -1,5 +1,5 @@ # Pretty-printers for bounds registers. -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printing.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printing.py index 36527b726..ded803398 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printing.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/printing.py @@ -1,5 +1,5 @@ # Pretty-printer utilities. -# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Copyright (C) 2010-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/prompt.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/prompt.py index bcc1596a2..4389b2253 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/prompt.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/prompt.py @@ -1,5 +1,5 @@ # Extended prompt utilities. -# Copyright (C) 2011-2018 Free Software Foundation, Inc. +# Copyright (C) 2011-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/types.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/types.py index 32b550d63..ce7f3b688 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/types.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/types.py @@ -1,5 +1,5 @@ # Type utilities. -# Copyright (C) 2010-2018 Free Software Foundation, Inc. +# Copyright (C) 2010-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/unwinder.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/unwinder.py index 19fca970d..577797941 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/unwinder.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/unwinder.py @@ -1,4 +1,4 @@ -# Copyright (C) 2015-2018 Free Software Foundation, Inc. +# Copyright (C) 2015-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/xmethod.py b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/xmethod.py index 5d23e7dbf..67bac9af4 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/xmethod.py +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/python/gdb/xmethod.py @@ -1,5 +1,5 @@ # Python side of the support for xmethods. -# Copyright (C) 2013-2018 Free Software Foundation, Inc. +# Copyright (C) 2013-2019 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/syscalls/aarch64-linux.xml b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/syscalls/aarch64-linux.xml index a099431f0..704af6fcf 100644 --- a/gcc-arm-none-eabi/arm-none-eabi/share/gdb/syscalls/aarch64-linux.xml +++ b/gcc-arm-none-eabi/arm-none-eabi/share/gdb/syscalls/aarch64-linux.xml @@ -1,6 +1,6 @@ - + + + + +Using as: C-SKY Options + + + + + + + + + + + + + + + + + + + + + +
+ +

9.9.1 Options

+ + + +
+
+ +
+
-march=archname
+

Assemble for architecture archname. The --help option +lists valid values for archname. +

+ +
+
-mcpu=cpuname
+

Assemble for architecture cpuname. The --help option +lists valid values for cpuname. +

+ + +
+
-EL
+
-mlittle-endian
+

Generate little-endian output. +

+ + +
+
-EB
+
-mbig-endian
+

Generate big-endian output. +

+ + +
+
-fpic
+
-pic
+

Generate position-independent code. +

+ + +
+
-mljump
+
-mno-ljump
+

Enable/disable transformation of the short branch instructions +jbf, jbt, and jbr to jmpi. +This option is for V2 processors only. +It is ignored on CK801 and CK802 targets, which do not support the jmpi +instruction, and is enabled by default for other processors. +

+ + +
+
-mbranch-stub
+
-mno-branch-stub
+

Pass through R_CKCORE_PCREL_IMM26BY2 relocations for bsr +instructions to the linker. +

+

This option is only available for bare-metal C-SKY V2 ELF targets, +where it is enabled by default. It cannot be used in code that will be +dynamically linked against shared libraries. +

+ + + + +
+
-force2bsr
+
-mforce2bsr
+
-no-force2bsr
+
-mno-force2bsr
+

Enable/disable transformation of jbsr instructions to bsr. +This option is always enabled (and -mno-force2bsr is ignored) +for CK801/CK802 targets. It is also always enabled when +-mbranch-stub is in effect. +

+ + + + +
+
-jsri2bsr
+
-mjsri2bsr
+
-no-jsri2bsr
+
-mno-jsri2bsr
+

Enable/disable transformation of jsri instructions to bsr. +This option is enabled by default. +

+ + +
+
-mnolrw
+
-mno-lrw
+

Enable/disable transformation of lrw instructions into a +movih/ori pair. +

+ + +
+
-melrw
+
-mno-elrw
+

Enable/disable extended lrw instructions. +This option is enabled by default for CK800-series processors. +

+ + + + +
+
-mlaf
+
-mliterals-after-func
+
-mno-laf
+
-mno-literals-after-func
+

Enable/disable placement of literal pools after each function. +

+ + + + +
+
-mlabr
+
-mliterals-after-br
+
-mno-labr
+
-mnoliterals-after-br
+

Enable/disable placement of literal pools after unconditional branches. +This option is enabled by default. +

+ + +
+
-mistack
+
-mno-istack
+

Enable/disable interrupt stack instructions. This option is enabled by +default on CK801, CK802, and CK802 processors. +

+
+
+ +

The following options explicitly enable certain optional instructions. +These features are also enabled implicitly by using -mcpu= to specify +a processor that supports it. +

+
+
+
+
-mhard-float
+

Enable hard float instructions. +

+ +
+
-mmp
+

Enable multiprocessor instructions. +

+ +
+
-mcp
+

Enable coprocessor instructions. +

+ +
+
-mcache
+

Enable cache prefetch instruction. +

+ +
+
-msecurity
+

Enable C-SKY security instructions. +

+ +
+
-mtrust
+

Enable C-SKY trust instructions. +

+ +
+
-mdsp
+

Enable DSP instructions. +

+ +
+
-medsp
+

Enable enhanced DSP instructions. +

+ +
+
-mvdsp
+

Enable vector DSP instructions. +

+
+
+ +
+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/C_002dSKY-Syntax.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/C_002dSKY-Syntax.html new file mode 100644 index 000000000..0bf5cecea --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/C_002dSKY-Syntax.html @@ -0,0 +1,81 @@ + + + + + +Using as: C-SKY Syntax + + + + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: C-SKY-Dependent   [Contents][Index]

+
+
+ +

9.9.2 Syntax

+ +

as implements the standard C-SKY assembler syntax +documented in the +C-SKY V2 CPU Applications Binary Interface Standards Manual. +

+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/C_002dSKY_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/C_002dSKY_002dDependent.html new file mode 100644 index 000000000..b62b736e5 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/C_002dSKY_002dDependent.html @@ -0,0 +1,84 @@ + + + + + +Using as: C-SKY-Dependent + + + + + + + + + + + + + + + + + + + + + +
+ +

9.9 C-SKY Dependent Features

+ + + + + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Characters.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Characters.html index 6f0bc3af8..83996eacb 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Characters.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Characters.html @@ -2,7 +2,7 @@ - - -Using as: Compare-and-branch-i960 - - - - - - - - - - - - - - - - - - - - -
-

-Previous: , Up: Opcodes for i960   [Contents][Index]

-
-
- -

9.17.4.2 Compare-and-Branch

- - - -

The 960 architectures provide combined Compare-and-Branch instructions -that permit you to store the branch target in the lower 13 bits of the -instruction word itself. However, if you specify a branch target far -enough away that its address won’t fit in 13 bits, the assembler can -either issue an error, or convert your Compare-and-Branch instruction -into separate instructions to do the compare and the branch. -

- - -

Whether as gives an error or expands the instruction depends -on two choices you can make: whether you use the ‘-no-relax’ option, -and whether you use a “Compare and Branch” instruction or a “Compare -and Jump” instruction. The “Jump” instructions are always -expanded if necessary; the “Branch” instructions are expanded when -necessary unless you specify -no-relax—in which case -as gives an error instead. -

-

These are the Compare-and-Branch instructions, their “Jump” variants, -and the instruction pairs they may expand into: -

- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Constants.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Constants.html index 3634744ec..b292e4c91 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Constants.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Constants.html @@ -2,7 +2,7 @@ + + +Using as: Dc + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Pseudo Ops   [Contents][Index]

+
+
+ +

7.13 .dc[size] expressions

+ + +

The .dc directive expects zero or more expressions separated by +commas. These expressions are evaluated and their values inserted into the +current section. The size of the emitted value depends upon the suffix to the +.dc directive: +

+
+
.a
+

Emits N-bit values, where N is the size of an address on the target system. +

+
.b
+

Emits 8-bit values. +

+
.d
+

Emits double precision floating-point values. +

+
.l
+

Emits 32-bit values. +

+
.s
+

Emits single precision floating-point values. +

+
.w
+

Emits 16-bit values. +Note - this is true even on targets where the .word directive would emit +32-bit values. +

+
.x
+

Emits long double precision floating-point values. +

+
+ +

If no suffix is used then ‘.w’ is assumed. +

+

The byte ordering is target dependent, as is the size and format of floating +point values. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dcb.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dcb.html new file mode 100644 index 000000000..746059e83 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dcb.html @@ -0,0 +1,107 @@ + + + + + +Using as: Dcb + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Pseudo Ops   [Contents][Index]

+
+
+ +

7.14 .dcb[size] number [,fill]

+ +

This directive emits number copies of fill, each of size +bytes. Both number and fill are absolute expressions. If the +comma and fill are omitted, fill is assumed to be zero. The +size suffix, if present, must be one of: +

+
+
.b
+

Emits single byte values. +

+
.d
+

Emits double-precision floating point values. +

+
.l
+

Emits 4-byte values. +

+
.s
+

Emits single-precision floating point values. +

+
.w
+

Emits 2-byte values. +

+
.x
+

Emits long double-precision floating point values. +

+
+ +

If the size suffix is omitted then ‘.w’ is assumed. +

+

The byte ordering is target dependent, as is the size and format of floating +point values. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Def.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Def.html index c2eea7f18..7b7417e2e 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Def.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Def.html @@ -2,7 +2,7 @@ - - -Using as: Directives-i860 - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: i860-Dependent   [Contents][Index]

-
-
- -

9.16.3 i860 Machine Directives

- - - - -
-
-
-
.dual
-

Enter dual instruction mode. While this directive is supported, the -preferred way to use dual instruction mode is to explicitly code -the dual bit with the d. prefix. -

-
- -
-
-
-
.enddual
-

Exit dual instruction mode. While this directive is supported, the -preferred way to use dual instruction mode is to explicitly code -the dual bit with the d. prefix. -

-
- -
-
-
-
.atmp
-

Change the temporary register used when expanding pseudo operations. The -default register is r31. -

-
- -

The .dual, .enddual, and .atmp directives are available only in the Intel syntax mode. -

-

Both syntaxes allow for the standard .align directive. However, -the Intel syntax additionally allows keywords for the alignment -parameter: ".align type", where ‘type’ is one of .short, .long, -.quad, .single, .double representing alignments of 2, 4, -16, 4, and 8, respectively. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Directives_002di960.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Directives_002di960.html deleted file mode 100644 index 9d4717283..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Directives_002di960.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - -Using as: Directives-i960 - - - - - - - - - - - - - - - - - - - - - -
- -

9.17.3 i960 Machine Directives

- - - - -
-
-
-
.bss symbol, length, align
-

Reserve length bytes in the bss section for a local symbol, -aligned to the power of two specified by align. length and -align must be positive absolute expressions. This directive -differs from ‘.lcomm’ only in that it permits you to specify -an alignment. See .lcomm. -

-
- -
-
-
-
.extended flonums
-

.extended expects zero or more flonums, separated by commas; for -each flonum, ‘.extended’ emits an IEEE extended-format (80-bit) -floating-point number. -

- -
-
.leafproc call-lab, bal-lab
-

You can use the ‘.leafproc’ directive in conjunction with the -optimized callj instruction to enable faster calls of leaf -procedures. If a procedure is known to call no other procedures, you -may define an entry point that skips procedure prolog code (and that does -not depend on system-supplied saved context), and declare it as the -bal-lab using ‘.leafproc’. If the procedure also has an -entry point that goes through the normal prolog, you can specify that -entry point as call-lab. -

-

A ‘.leafproc’ declaration is meant for use in conjunction with the -optimized call instruction ‘callj’; the directive records the data -needed later to choose between converting the ‘callj’ into a -bal or a call. -

-

call-lab is optional; if only one argument is present, or if the -two arguments are identical, the single argument is assumed to be the -bal entry point. -

- -
-
.sysproc name, index
-

The ‘.sysproc’ directive defines a name for a system procedure. -After you define it using ‘.sysproc’, you can use name to -refer to the system procedure identified by index when calling -procedures with the optimized call instruction ‘callj’. -

-

Both arguments are required; index must be between 0 and 31 -(inclusive). -

-
- -
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dot.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dot.html index 43d06b40d..ecfbb205f 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dot.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Dot.html @@ -2,7 +2,7 @@ + + +Using as: Ds + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Pseudo Ops   [Contents][Index]

+
+
+ +

7.15 .ds[size] number [,fill]

+ +

This directive emits number copies of fill, each of size +bytes. Both number and fill are absolute expressions. If the +comma and fill are omitted, fill is assumed to be zero. The +size suffix, if present, must be one of: +

+
+
.b
+

Emits single byte values. +

+
.d
+

Emits 8-byte values. +

+
.l
+

Emits 4-byte values. +

+
.p
+

Emits 12-byte values. +

+
.s
+

Emits 4-byte values. +

+
.w
+

Emits 2-byte values. +

+
.x
+

Emits 12-byte values. +

+
+ +

Note - unlike the .dcb directive the ‘.d’, ‘.s’ and ‘.x’ +suffixes do not indicate that floating-point values are to be inserted. +

+

If the size suffix is omitted then ‘.w’ is assumed. +

+

The byte ordering is target dependent. +

+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Directives.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Directives.html deleted file mode 100644 index 71a0dbb54..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Directives.html +++ /dev/null @@ -1,172 +0,0 @@ - - - - - -Using as: ESA/390 Directives - - - - - - - - - - - - - - - - - - - - - -
- -

9.14.5 ESA/390 Assembler Directives

- -

as for the ESA/390 supports all of the standard ELF/SVR4 -assembler directives that are documented in the main part of this -documentation. Several additional directives are supported in order -to implement the ESA/390 addressing model. The most important of these -are .using and .ltorg -

- -

These are the additional directives in as for the ESA/390: -

-
-
.dc
-

A small subset of the usual DC directive is supported. -

-
-
.drop regno
-

Stop using regno as the base register. The regno must -have been previously declared with a .using directive in the -same section as the current section. -

-
-
.ebcdic string
-

Emit the EBCDIC equivalent of the indicated string. The emitted string -will be null terminated. Note that the directives .string etc. emit -ascii strings by default. -

-
-
EQU
-

The standard HLASM-style EQU directive is not supported; however, the -standard as directive .equ can be used to the same effect. -

-
-
.ltorg
-

Dump the literal pool accumulated so far; begin a new literal pool. -The literal pool will be written in the current section; in order to -generate correct assembly, a .using must have been previously -specified in the same section. -

-
-
.using expr,regno
-

Use regno as the base register for all subsequent RX, RS, and SS form -instructions. The expr will be evaluated to obtain the base address; -usually, expr will merely be ‘*’. -

-

This assembler allows two .using directives to be simultaneously -outstanding, one in the .text section, and one in another section -(typically, the .data section). This feature allows -dynamically loaded objects to be implemented in a relatively -straightforward way. A .using directive must always be specified -in the .text section; this will specify the base register that -will be used for branches in the .text section. A second -.using may be specified in another section; this will specify -the base register that is used for non-label address literals. -When a second .using is specified, then the subsequent -.ltorg must be put in the same section; otherwise an error will -result. -

-

Thus, for example, the following code uses r3 to address branch -targets and r4 to address the literal pool, which has been written -to the .data section. The is, the constants =A(some_routine), -=H'42' and =E'3.1416' will all appear in the .data -section. -

-
-
.data
-	.using  LITPOOL,r4
-.text
-	BASR	r3,0
-	.using	*,r3
-        B       START
-	.long	LITPOOL
-START:
-	L	r4,4(,r3)
-	L	r15,=A(some_routine)
-	LTR	r15,r15
-	BNE	LABEL
-	AH	r0,=H'42'
-LABEL:
-	ME	r6,=E'3.1416'
-.data
-LITPOOL:
-	.ltorg
-
- - -

Note that this dual-.using directive semantics extends -and is not compatible with HLASM semantics. Note that this assembler -directive does not support the full range of HLASM semantics. -

-
-
- -
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Floating-Point.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Floating-Point.html deleted file mode 100644 index 46b5402af..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Floating-Point.html +++ /dev/null @@ -1,81 +0,0 @@ - - - - - -Using as: ESA/390 Floating Point - - - - - - - - - - - - - - - - - - - - - -
- -

9.14.4 Floating Point

- - -

The assembler generates only IEEE floating-point numbers. The older -floating point formats are not supported. -

- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Notes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Notes.html deleted file mode 100644 index 35d8effa9..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Notes.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Using as: ESA/390 Notes - - - - - - - - - - - - - - - - - - - - - -
- -

9.14.1 Notes

-

The ESA/390 as port is currently intended to be a back-end -for the GNU CC compiler. It is not HLASM compatible, although -it does support a subset of some of the HLASM directives. The only -supported binary file format is ELF; none of the usual MVS/VM/OE/USS -object file formats, such as ESD or XSD, are supported. -

-

When used with the GNU CC compiler, the ESA/390 as -will produce correct, fully relocated, functional binaries, and has been -used to compile and execute large projects. However, many aspects should -still be considered experimental; these include shared library support, -dynamically loadable objects, and any relocation other than the 31-bit -relocation. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Opcodes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Opcodes.html deleted file mode 100644 index f909e87a3..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Opcodes.html +++ /dev/null @@ -1,79 +0,0 @@ - - - - - -Using as: ESA/390 Opcodes - - - - - - - - - - - - - - - - - - - - - -
- -

9.14.6 Opcodes

-

For detailed information on the ESA/390 machine instruction set, see -ESA/390 Principles of Operation (IBM Publication Number DZ9AR004). -

- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Options.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Options.html deleted file mode 100644 index 1ace1ba08..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Options.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - -Using as: ESA/390 Options - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: ESA/390-Dependent   [Contents][Index]

-
-
- -

9.14.2 Options

-

as has no machine-dependent command-line options for the ESA/390. -

- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Syntax.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Syntax.html deleted file mode 100644 index 41712e4f0..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390-Syntax.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - - -Using as: ESA/390 Syntax - - - - - - - - - - - - - - - - - - - - - -
- -

9.14.3 Syntax

-

The opcode/operand syntax follows the ESA/390 Principles of Operation -manual; assembler directives and general syntax are loosely based on the -prevailing AT&T/SVR4/ELF/Solaris style notation. HLASM-style directives -are not supported for the most part, with the exception of those -described herein. -

-

A leading dot in front of directives is optional, and the case of -directives is ignored; thus for example, .using and USING have the same -effect. -

-

A colon may immediately follow a label definition. This is -simply for compatibility with how most assembly language programmers -write code. -

-

#’ is the line comment character. -

-

;’ can be used instead of a newline to separate statements. -

-

Since ‘$’ has no special meaning, you may use it in symbol names. -

-

Registers can be given the symbolic names r0..r15, fp0, fp2, fp4, fp6. -By using these symbolic names, as can detect simple -syntax errors. The name rarg or r.arg is a synonym for r11, rtca or r.tca -for r12, sp, r.sp, dsa r.dsa for r13, lr or r.lr for r14, rbase or r.base -for r3 and rpgt or r.pgt for r4. -

-

*’ is the current location counter. Unlike ‘.’ it is always -relative to the last USING directive. Note that this means that -expressions cannot use multiplication, as any occurrence of ‘*’ -will be interpreted as a location counter. -

-

All labels are relative to the last USING. Thus, branches to a label -always imply the use of base+displacement. -

-

Many of the usual forms of address constants / address literals -are supported. Thus, -

-
	.using	*,r3
-	L	r15,=A(some_routine)
-	LM	r6,r7,=V(some_longlong_extern)
-	A	r1,=F'12'
-	AH	r0,=H'42'
-	ME	r6,=E'3.1416'
-	MD	r6,=D'3.14159265358979'
-	O	r6,=XL4'cacad0d0'
-	.ltorg
-
-

should all behave as expected: that is, an entry in the literal -pool will be created (or reused if it already exists), and the -instruction operands will be the displacement into the literal pool -using the current base register (as last declared with the .using -directive). -

-
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390_002dDependent.html deleted file mode 100644 index 25336ad54..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/ESA_002f390_002dDependent.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -Using as: ESA/390-Dependent - - - - - - - - - - - - - - - - - - - - - -
- -

9.14 ESA/390 Dependent Features

- - - - - - - - - - - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Eject.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Eject.html index 01f1fea82..64a612895 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Eject.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Eject.html @@ -2,7 +2,7 @@ - - -Using as: Floating Point-i960 - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: i960-Dependent   [Contents][Index]

-
-
- -

9.17.2 Floating Point

- - - -

as generates IEEE floating-point numbers for the directives -‘.float’, ‘.double’, ‘.extended’, and ‘.single’. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Flonums.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Flonums.html index 33fe3316b..db1ed6c33 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Flonums.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Flonums.html @@ -2,7 +2,7 @@ + + +Using as: Nops + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: Pseudo Ops   [Contents][Index]

+
+
+ +

7.65 .nops size[, control]

+ + + +

This directive emits size bytes filled with no-op instructions. +size is absolute expression, which must be a positve value. +control controls how no-op instructions should be generated. If +the comma and control are omitted, control is assumed to be +zero. +

+

Note: For Intel 80386 and AMD x86-64 targets, control specifies +the size limit of a no-op instruction. The valid values of control +are between 0 and 4 in 16-bit mode, between 0 and 7 when tuning for +older processors in 32-bit mode, between 0 and 11 in 64-bit mode or when +tuning for newer processors in 32-bit mode. When 0 is used, the no-op +instruction size limit is set to the maximum supported size. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Notes_002di860.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Notes_002di860.html deleted file mode 100644 index feb09a472..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Notes_002di860.html +++ /dev/null @@ -1,89 +0,0 @@ - - - - - -Using as: Notes-i860 - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Up: i860-Dependent   [Contents][Index]

-
-
- -

9.16.1 i860 Notes

-

This is a fairly complete i860 assembler which is compatible with the -UNIX System V/860 Release 4 assembler. However, it does not currently -support SVR4 PIC (i.e., @GOT, @GOTOFF, @PLT). -

-

Like the SVR4/860 assembler, the output object format is ELF32. Currently, -this is the only supported object format. If there is sufficient interest, -other formats such as COFF may be implemented. -

-

Both the Intel and AT&T/SVR4 syntaxes are supported, with the latter -being the default. One difference is that AT&T syntax requires the ’%’ -prefix on register names while Intel syntax does not. Another difference -is in the specification of relocatable expressions. The Intel syntax -is ha%expression whereas the SVR4 syntax is [expression]@ha -(and similarly for the "l" and "h" selectors). -

- - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Numbers.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Numbers.html index 8a2af24b1..ed0d0748d 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Numbers.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Numbers.html @@ -2,7 +2,7 @@ - - -Using as: Opcodes for i860 - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: i860-Dependent   [Contents][Index]

-
-
- -

9.16.4 i860 Opcodes

- - - -

All of the Intel i860XR and i860XP machine instructions are supported. Please see -either i860 Microprocessor Programmer’s Reference Manual or i860 Microprocessor Architecture for more information. -

-

9.16.4.1 Other instruction support (pseudo-instructions)

-

For compatibility with some other i860 assemblers, a number of -pseudo-instructions are supported. While these are supported, they are -a very undesirable feature that should be avoided – in particular, when -they result in an expansion to multiple actual i860 instructions. Below -are the pseudo-instructions that result in expansions. -

    -
  • Load large immediate into general register: - -

    The pseudo-instruction mov imm,%rn (where the immediate does -not fit within a signed 16-bit field) will be expanded into: -

    -
    orh large_imm@h,%r0,%rn
    -or large_imm@l,%rn,%rn
    -
    -
  • Load/store with relocatable address expression: - -

    For example, the pseudo-instruction ld.b addr_exp(%rx),%rn -will be expanded into: -

    -
    orh addr_exp@ha,%rx,%r31
    -ld.l addr_exp@l(%r31),%rn
    -
    - -

    The analogous expansions apply to ld.x, st.x, fld.x, pfld.x, fst.x, and pst.x as well. -

  • Signed large immediate with add/subtract: - -

    If any of the arithmetic operations adds, addu, subs, subu are used -with an immediate larger than 16-bits (signed), then they will be expanded. -For instance, the pseudo-instruction adds large_imm,%rx,%rn expands to: -

    -
    orh large_imm@h,%r0,%r31
    -or large_imm@l,%r31,%r31
    -adds %r31,%rx,%rn
    -
    -
  • Unsigned large immediate with logical operations: - -

    Logical operations (or, andnot, or, xor) also result in expansions. -The pseudo-instruction or large_imm,%rx,%rn results in: -

    -
    orh large_imm@h,%rx,%r31
    -or large_imm@l,%r31,%rn
    -
    - -

    Similarly for the others, except for and which expands to: -

    -
    andnot (-1 - large_imm)@h,%rx,%r31
    -andnot (-1 - large_imm)@l,%r31,%rn
    -
    -
- -
-
-

-Next: , Previous: , Up: i860-Dependent   [Contents][Index]

-
- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Opcodes-for-i960.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Opcodes-for-i960.html deleted file mode 100644 index af10d9917..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Opcodes-for-i960.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -Using as: Opcodes for i960 - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: i960-Dependent   [Contents][Index]

-
-
- -

9.17.4 i960 Opcodes

- - - -

All Intel 960 machine instructions are supported; -see i960 Command-line Options for a discussion of -selecting the instruction subset for a particular 960 -architecture. -

-

Some opcodes are processed beyond simply emitting a single corresponding -instruction: ‘callj’, and Compare-and-Branch or Compare-and-Jump -instructions with target displacements larger than 13 bits. -

- - - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dChars.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dChars.html new file mode 100644 index 000000000..6e0e77fcf --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dChars.html @@ -0,0 +1,86 @@ + + + + + +Using as: OpenRISC-Chars + + + + + + + + + + + + + + + + + + + + + +
+ +

9.32.1.1 Special Characters

+ + + +

A ‘#’ character appearing anywhere on a line indicates the start +of a comment that extends to the end of that line. +

+ + + +

;’ can be used instead of a newline to separate statements. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dDependent.html new file mode 100644 index 000000000..168dd72cb --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dDependent.html @@ -0,0 +1,90 @@ + + + + + +Using as: OpenRISC-Dependent + + + + + + + + + + + + + + + + + + + + + +
+ +

9.32 OPENRISC Dependent Features

+ + + + + + + + + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dDirectives.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dDirectives.html new file mode 100644 index 000000000..161c32655 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dDirectives.html @@ -0,0 +1,112 @@ + + + + + +Using as: OpenRISC-Directives + + + + + + + + + + + + + + + + + + + + + +
+ +

9.32.3 OpenRISC Machine Directives

+ + + +

The OpenRISC version of as supports the following additional +machine directives: +

+
+
+
+
.align
+

This must be followed by the desired alignment in bytes. +

+ +
+
.word
+

On the OpenRISC, the .word directive produces a 32 bit value. +

+ +
+
.nodelay
+

On the OpenRISC, the .nodelay directive sets a flag in elf binaries +indicating that the binary is generated catering for no delay slots. +

+ +
+
.proc
+

This directive is ignored. Any text following it on the same +line is also ignored. +

+ +
+
.endproc
+

This directive is ignored. Any text following it on the same +line is also ignored. +

+
+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dFloat.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dFloat.html new file mode 100644 index 000000000..a8865bb28 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dFloat.html @@ -0,0 +1,80 @@ + + + + + +Using as: OpenRISC-Float + + + + + + + + + + + + + + + + + + + + + +
+ +

9.32.2 Floating Point

+ + + +

OpenRISC uses IEEE floating-point numbers. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dOpcodes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dOpcodes.html new file mode 100644 index 000000000..76ac410d1 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dOpcodes.html @@ -0,0 +1,85 @@ + + + + + +Using as: OpenRISC-Opcodes + + + + + + + + + + + + + + + + + + + + + +
+ +

9.32.4 Opcodes

+ + + + + +

For detailed information on the OpenRISC machine instruction set, see +http://www.openrisc.io/architecture/. +

+

as implements all the standard OpenRISC opcodes. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dRegs.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dRegs.html new file mode 100644 index 000000000..d81dc5d2f --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dRegs.html @@ -0,0 +1,102 @@ + + + + + +Using as: OpenRISC-Regs + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: OpenRISC-Syntax   [Contents][Index]

+
+
+ +

9.32.1.2 Register Names

+ + + +

The OpenRISC register file contains 32 general pupose registers. +

+
    +
  • The 32 general purpose registers are referred to as ‘rn’. + +
  • The stack pointer register ‘r1’ can be referenced using the alias +‘sp’. + +
  • The frame pointer register ‘r2’ can be referenced using the alias +‘fp’. + +
  • The link register ‘r9’ can be referenced using the alias ‘lr’. +
+ +

Floating point operations use the same general purpose registers. The +instructions lf.itof.s (single precision) and lf.itof.d (double +precision) can be used to convert integer values to floating point. +Likewise, instructions lf.ftoi.s (single precision) and +lf.ftoi.d (double precision) can be used to convert floating point to +integer. +

+

OpenRISC also contains privileged special purpose registers (SPRs). The +SPRs are accessed using the l.mfspr and l.mtspr instructions. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dRelocs.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dRelocs.html new file mode 100644 index 000000000..a7c541a16 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dRelocs.html @@ -0,0 +1,229 @@ + + + + + +Using as: OpenRISC-Relocs + + + + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: OpenRISC-Syntax   [Contents][Index]

+
+
+ +

9.32.1.3 Relocations

+ + + +

ELF relocations are available as defined in the OpenRISC architecture +specification. +

+

R_OR1K_HI_16_IN_INSN is obtained using ‘hi’ and +R_OR1K_LO_16_IN_INSN and R_OR1K_SLO16 are obtained using +‘lo’. For signed offsets R_OR1K_AHI16 is obtained from +‘ha’. For example: +

+
+
l.movhi r5, hi(symbol)
+l.ori   r5, r5, lo(symbol)
+
+l.movhi r5, ha(symbol)
+l.addi  r5, r5, lo(symbol)
+
+ +

These “high” mnemonics extract bits 31:16 of their operand, +and the “low” mnemonics extract bits 15:0 of their operand. +

+

The PC relative relocation R_OR1K_GOTPC_HI16 can be obtained by +enclosing an operand inside of ‘gotpchi’. Likewise, the +R_OR1K_GOTPC_LO16 relocation can be obtained using ‘gotpclo’. +These are mostly used when assembling PIC code. For example, the +standard PIC sequence on OpenRISC to get the base of the global offset +table, PC relative, into a register, can be performed as: +

+
+
l.jal   0x8
+ l.movhi r17, gotpchi(_GLOBAL_OFFSET_TABLE_-4)
+l.ori   r17, r17, gotpclo(_GLOBAL_OFFSET_TABLE_+0)
+l.add   r17, r17, r9
+
+ +

Several relocations exist to allow the link editor to perform GOT data +references. The R_OR1K_GOT16 relocation can obtained by enclosing an +operand inside of ‘got’. For example, assuming the GOT base is in +register r17. +

+
+
l.lwz   r19, got(a)(r17)
+l.lwz   r21, 0(r19)
+
+ +

Also, several relocations exist for local GOT references. The +R_OR1K_GOTOFF_AHI16 relocation can obtained by enclosing an operand +inside of ‘gotoffha’. Likewise, R_OR1K_GOTOFF_LO16 and +R_OR1K_GOTOFF_SLO16 can be obtained by enclosing an operand inside of +‘gotofflo’. For example, assuming the GOT base is in register +rl7: +

+
+
l.movhi r19, gotoffha(symbol)
+l.add   r19, r19, r17
+l.lwz   r19, gotofflo(symbol)(r19)
+
+ +

The above PC relative relocations use a l.jal (jump) instruction +and reading of the link register to load the PC. OpenRISC also supports +page offset PC relative locations without a jump instruction using the +l.adrp instruction. By default the l.adrp instruction will +create an R_OR1K_PCREL_PG21 relocation. +Likewise, BFD_RELOC_OR1K_LO13 and BFD_RELOC_OR1K_SLO13 can +be obtained by enclosing an operand inside of ‘po’. For example: +

+
+
l.adrp  r3, symbol
+l.ori   r4, r3, po(symbol)
+l.lbz   r5, po(symbol)(r3)
+l.sb    po(symbol)(r3), r6
+
+ +

Likewise the page offset relocations can be used with GOT references. The +relocation R_OR1K_GOT_PG21 can be obtained by enclosing an +l.adrp immediate operand inside of ‘got’. Likewise, +R_OR1K_GOT_LO13 can be obtained by enclosing an operand inside of +‘gotpo’. For example to load the value of a GOT symbol into register +‘r5’ we can do: +

+
+
l.adrp  r17, got(_GLOBAL_OFFSET_TABLE_)
+l.lwz   r5, gotpo(symbol)(r17)
+
+ +

There are many relocations that can be requested for access to +thread local storage variables. All of the OpenRISC TLS mnemonics +are supported: +

+
    +
  • R_OR1K_TLS_GD_HI16 is requested using ‘tlsgdhi’. +
  • R_OR1K_TLS_GD_LO16 is requested using ‘tlsgdlo’. +
  • R_OR1K_TLS_GD_PG21 is requested using ‘tldgd’. +
  • R_OR1K_TLS_GD_LO13 is requested using ‘tlsgdpo’. + +
  • R_OR1K_TLS_LDM_HI16 is requested using ‘tlsldmhi’. +
  • R_OR1K_TLS_LDM_LO16 is requested using ‘tlsldmlo’. +
  • R_OR1K_TLS_LDM_PG21 is requested using ‘tldldm’. +
  • R_OR1K_TLS_LDM_LO13 is requested using ‘tlsldmpo’. + +
  • R_OR1K_TLS_LDO_HI16 is requested using ‘dtpoffhi’. +
  • R_OR1K_TLS_LDO_LO16 is requested using ‘dtpofflo’. + +
  • R_OR1K_TLS_IE_HI16 is requested using ‘gottpoffhi’. +
  • R_OR1K_TLS_IE_AHI16 is requested using ‘gottpoffha’. +
  • R_OR1K_TLS_IE_LO16 is requested using ‘gottpofflo’. +
  • R_OR1K_TLS_IE_PG21 is requested using ‘gottp’. +
  • R_OR1K_TLS_IE_LO13 is requested using ‘gottppo’. + +
  • R_OR1K_TLS_LE_HI16 is requested using ‘tpoffhi’. +
  • R_OR1K_TLS_LE_AHI16 is requested using ‘tpoffha’. +
  • R_OR1K_TLS_LE_LO16 is requested using ‘tpofflo’. +
  • R_OR1K_TLS_LE_SLO16 also is requested using ‘tpofflo’ +depending on the instruction format. +
+ +

Here are some example TLS model sequences. +

+

First, General Dynamic: +

+
+
l.movhi r17, tlsgdhi(symbol)
+l.ori   r17, r17, tlsgdlo(symbol)
+l.add   r17, r17, r16
+l.or    r3, r17, r17
+l.jal   plt(__tls_get_addr)
+ l.nop
+
+ +

Initial Exec: +

+
+
l.movhi r17, gottpoffhi(symbol)
+l.add   r17, r17, r16
+l.lwz   r17, gottpofflo(symbol)(r17)
+l.add   r17, r17, r10
+l.lbs   r17, 0(r17)
+
+ +

And finally, Local Exec: +

+
+
l.movhi r17, tpoffha(symbol)
+l.add   r17, r17, r10
+l.addi  r17, r17, tpofflo(symbol)
+l.lbs   r17, 0(r17)
+
+ +
+
+

+Previous: , Up: OpenRISC-Syntax   [Contents][Index]

+
+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dSyntax.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dSyntax.html new file mode 100644 index 000000000..bff71bcc4 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/OpenRISC_002dSyntax.html @@ -0,0 +1,86 @@ + + + + + +Using as: OpenRISC-Syntax + + + + + + + + + + + + + + + + + + + + + +
+ +

9.32.1 OpenRISC Syntax

+

The assembler syntax follows the OpenRISC 1000 Architecture Manual. +

+ + + + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Operators.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Operators.html index 4a9bfbfe8..3933a7d43 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Operators.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Operators.html @@ -2,7 +2,7 @@ - - -Using as: Options-i860 - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: i860-Dependent   [Contents][Index]

-
-
- -

9.16.2 i860 Command-line Options

- -

9.16.2.1 SVR4 compatibility options

-
-
-V
-

Print assembler version. -

-
-Qy
-

Ignored. -

-
-Qn
-

Ignored. -

-
- -

9.16.2.2 Other options

-
-
-EL
-

Select little endian output (this is the default). -

-
-EB
-

Select big endian output. Note that the i860 always reads instructions -as little endian data, so this option only effects data and not -instructions. -

-
-mwarn-expand
-

Emit a warning message if any pseudo-instruction expansions occurred. -For example, a or instruction with an immediate larger than 16-bits -will be expanded into two instructions. This is a very undesirable feature to -rely on, so this flag can help detect any code where it happens. One -use of it, for instance, has been to find and eliminate any place -where gcc may emit these pseudo-instructions. -

-
-mxp
-

Enable support for the i860XP instructions and control registers. By default, -this option is disabled so that only the base instruction set (i.e., i860XR) -is supported. -

-
-mintel-syntax
-

The i860 assembler defaults to AT&T/SVR4 syntax. This option enables the -Intel syntax. -

-
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Options_002di960.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Options_002di960.html deleted file mode 100644 index 1dca43179..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Options_002di960.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - -Using as: Options-i960 - - - - - - - - - - - - - - - - - - - - - -
- - -

9.17.1 i960 Command-line Options

- - - -
-
- - - -
-
-ACA | -ACA_A | -ACB | -ACC | -AKA | -AKB | -AKC | -AMC
-

Select the 80960 architecture. Instructions or features not supported -by the selected architecture cause fatal errors. -

-

-ACA’ is equivalent to ‘-ACA_A’; ‘-AKC’ is equivalent to -‘-AMC’. Synonyms are provided for compatibility with other tools. -

-

If you do not specify any of these options, as generates code -for any instruction or feature that is supported by some version of the -960 (even if this means mixing architectures!). In principle, -as attempts to deduce the minimal sufficient processor type if -none is specified; depending on the object code format, the processor type may -be recorded in the object file. If it is critical that the as -output match a specific architecture, specify that architecture explicitly. -

- - - -
-
-b
-

Add code to collect information about conditional branches taken, for -later optimization using branch prediction bits. (The conditional branch -instructions have branch prediction bits in the CA, CB, and CC -architectures.) If BR represents a conditional branch instruction, -the following represents the code generated by the assembler when -‘-b’ is specified: -

-
-
        call    increment routine
-        .word   0       # pre-counter
-Label:  BR
-        call    increment routine
-        .word   0       # post-counter
-
- -

The counter following a branch records the number of times that branch -was not taken; the difference between the two counters is the -number of times the branch was taken. -

- - -

A table of every such Label is also generated, so that the -external postprocessor gbr960 (supplied by Intel) can locate all -the counters. This table is always labeled ‘__BRANCH_TABLE__’; -this is a local symbol to permit collecting statistics for many separate -object files. The table is word aligned, and begins with a two-word -header. The first word, initialized to 0, is used in maintaining linked -lists of branch tables. The second word is a count of the number of -entries in the table, which follow immediately: each is a word, pointing -to one of the labels illustrated above. -

- -

The first word of the header is used to locate multiple branch tables, -since each object file may contain one. Normally the links are -maintained with a call to an initialization routine, placed at the -beginning of each function in the file. The GNU C compiler -generates these calls automatically when you give it a ‘-b’ option. -For further details, see the documentation of ‘gbr960’. -

- -
-
-no-relax
-

Normally, Compare-and-Branch instructions with targets that require -displacements greater than 13 bits (or that have external targets) are -replaced with the corresponding compare (or ‘chkbit’) and branch -instructions. You can use the ‘-no-relax’ option to specify that -as should generate errors instead, if the target displacement -is larger than 13 bits. -

-

This option does not affect the Compare-and-Jump instructions; the code -emitted for them is always adjusted when necessary (depending on -displacement size), regardless of whether you use ‘-no-relax’. -

-
- -
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Org.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Org.html index 8d5628b89..c62f74782 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Org.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Org.html @@ -2,7 +2,7 @@ + + +Using as: RISC-V-ATTRIBUTE + + + + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: RISC-V-Dependent   [Contents][Index]

+
+
+ +

9.37.4 RISC-V Object Attribute

+ + +

RISC-V attributes have a string value if the tag number is odd and an integer +value if the tag number is even. +

+
+
Tag_RISCV_stack_align (4)
+

Tag_RISCV_strict_align records the N-byte stack alignment for this object. The +default value is 16 for RV32I or RV64I, and 4 for RV32E. +

+

The smallest value will be used if object files with different +Tag_RISCV_stack_align values are merged. +

+
+
Tag_RISCV_arch (5)
+

Tag_RISCV_arch contains a string for the target architecture taken from the +option -march. Different architectures will be integrated into a +superset when object files are merged. +

+

Note that the version information of the target architecture must be presented +explicitly in the attribute and abbreviations must be expanded. The version +information, if not given by -march, must be in accordance with the +default specified by the tool. For example, the architecture RV32I has +to be recorded in the attribute as RV32I2P0 in which 2P0 stands +for the default version of its base ISA. On the other hand, the architecture +RV32G has to be presented as RV32I2P0_M2P0_A2P0_F2P0_D2P0 in +which the abbreviation G is expanded to the IMAFD combination +with default versions of the standard extensions. +

+
+
Tag_RISCV_unaligned_access (6)
+

Tag_RISCV_unaligned_access is 0 for files that do not allow any unaligned +memory accesses, and 1 for files that do allow unaligned memory accesses. +

+
+
Tag_RISCV_priv_spec (8)
+
Tag_RISCV_priv_spec_minor (10)
+
Tag_RISCV_priv_spec_revision (12)
+

Tag_RISCV_priv_spec contains the major/minor/revision version information of +the privileged specification. It will report errors if object files of +different privileged specification versions are merged. +

+
+
+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dDependent.html index f1d67a25f..e0bc5d8c2 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dDependent.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dDependent.html @@ -2,7 +2,7 @@ + + +Using as: RISC-V-Formats + + + + + + + + + + + + + + + + + + + + + +
+ +

9.37.3 Instruction Formats

+ + + +

The RISC-V Instruction Set Manual Volume I: User-Level ISA lists 12 +instruction formats where some of the formats have multiple variants. +For the ‘.insn’ pseudo directive the assembler recognizes some +of the formats. +Typically, the most general variant of the instruction format is used +by the ‘.insn’ directive. +

+

The following table lists the abbreviations used in the table of +instruction formats: +

+
+ + + + + + + + + + + + + + + + + + + +
opcode
Unsigned immediate or opcode name for 7-bits opcode.
opcode2
Unsigned immediate or opcode name for 2-bits opcode.
func7
Unsigned immediate for 7-bits function code.
func6
Unsigned immediate for 6-bits function code.
func4
Unsigned immediate for 4-bits function code.
func3
Unsigned immediate for 3-bits function code.
func2
Unsigned immediate for 2-bits function code.
rd
Destination register number for operand x, can be GPR or FPR.
rd’
Destination register number for operand x,
+only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.
rs1
First source register number for operand x, can be GPR or FPR.
rs1’
First source register number for operand x,
+only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.
rs2
Second source register number for operand x, can be GPR or FPR.
rs2’
Second source register number for operand x,
+only accept s0-s1, a0-a5, fs0-fs1 and fa0-fa5.
simm12
Sign-extended 12-bit immediate for operand x.
simm20
Sign-extended 20-bit immediate for operand x.
simm6
Sign-extended 6-bit immediate for operand x.
uimm8
Unsigned 8-bit immediate for operand x.
symbol
Symbol or lable reference for operand x.
+
+ +

The following table lists all available opcode name: +

+
+
C0
+
C1
+
C2
+

Opcode space for compressed instructions. +

+
+
LOAD
+

Opcode space for load instructions. +

+
+
LOAD_FP
+

Opcode space for floating-point load instructions. +

+
+
STORE
+

Opcode space for store instructions. +

+
+
STORE_FP
+

Opcode space for floating-point store instructions. +

+
+
AUIPC
+

Opcode space for auipc instruction. +

+
+
LUI
+

Opcode space for lui instruction. +

+
+
BRANCH
+

Opcode space for branch instructions. +

+
+
JAL
+

Opcode space for jal instruction. +

+
+
JALR
+

Opcode space for jalr instruction. +

+
+
OP
+

Opcode space for ALU instructions. +

+
+
OP_32
+

Opcode space for 32-bits ALU instructions. +

+
+
OP_IMM
+

Opcode space for ALU with immediate instructions. +

+
+
OP_IMM_32
+

Opcode space for 32-bits ALU with immediate instructions. +

+
+
OP_FP
+

Opcode space for floating-point operation instructions. +

+
+
MADD
+

Opcode space for madd instruction. +

+
+
MSUB
+

Opcode space for msub instruction. +

+
+
NMADD
+

Opcode space for nmadd instruction. +

+
+
NMSUB
+

Opcode space for msub instruction. +

+
+
AMO
+

Opcode space for atomic memory operation instructions. +

+
+
MISC_IMM
+

Opcode space for misc instructions. +

+
+
SYSTEM
+

Opcode space for system instructions. +

+
+
CUSTOM_0
+
CUSTOM_1
+
CUSTOM_2
+
CUSTOM_3
+

Opcode space for customize instructions. +

+
+
+ +

An instruction is two or four bytes in length and must be aligned +on a 2 byte boundary. The first two bits of the instruction specify the +length of the instruction, 00, 01 and 10 indicates a two byte instruction, +11 indicates a four byte instruction. +

+

The following table lists the RISC-V instruction formats that are available +with the ‘.insn’ pseudo directive: +

+
+
R type: .insn r opcode, func3, func7, rd, rs1, rs2
+
+-------+-----+-----+-------+----+-------------+
+| func7 | rs2 | rs1 | func3 | rd |      opcode |
++-------+-----+-----+-------+----+-------------+
+31      25    20    15      12   7             0
+
+
+
R type with 4 register operands: .insn r opcode, func3, func2, rd, rs1, rs2, rs3
+
+-----+-------+-----+-----+-------+----+-------------+
+| rs3 | func2 | rs2 | rs1 | func3 | rd |      opcode |
++-----+-------+-----+-----+-------+----+-------------+
+31    27      25    20    15      12   7             0
+
+
+
I type: .insn i opcode, func3, rd, rs1, simm12
+
+-------------+-----+-------+----+-------------+
+|      simm12 | rs1 | func3 | rd |      opcode |
++-------------+-----+-------+----+-------------+
+31            20    15      12   7             0
+
+
+
S type: .insn s opcode, func3, rd, rs1, simm12
+
+--------------+-----+-----+-------+-------------+-------------+
+| simm12[11:5] | rs2 | rs1 | func3 | simm12[4:0] |      opcode |
++--------------+-----+-----+-------+-------------+-------------+
+31             25    20    15      12            7             0
+
+
+
SB type: .insn sb opcode, func3, rd, rs1, symbol
+
SB type: .insn sb opcode, func3, rd, simm12(rs1)
+
+--------------+-----+-----+-------+-------------+-------------+
+| simm21[11:5] | rs2 | rs1 | func3 | simm12[4:0] |      opcode |
++--------------+-----+-----+-------+-------------+-------------+
+31             25    20    15      12            7             0
+
+
+
U type: .insn u opcode, rd, simm20
+
+---------------------------+----+-------------+
+|                    simm20 | rd |      opcode |
++---------------------------+----+-------------+
+31                          12   7             0
+
+
+
UJ type: .insn uj opcode, rd, symbol
+
+------------+--------------+------------+---------------+----+-------------+
+| simm20[20] | simm20[10:1] | simm20[11] | simm20[19:12] | rd |      opcode |
++------------+--------------+------------+---------------+----+-------------+
+31           30             21           20              12   7             0
+
+
+
CR type: .insn cr opcode2, func4, rd, rs2
+
+---------+--------+-----+---------+
+|   func4 | rd/rs1 | rs2 | opcode2 |
++---------+--------+-----+---------+
+15        12       7     2        0
+
+
+
CI type: .insn ci opcode2, func3, rd, simm6
+
+---------+-----+--------+-----+---------+
+|   func3 | imm | rd/rs1 | imm | opcode2 |
++---------+-----+--------+-----+---------+
+15        13    12       7     2         0
+
+
+
CIW type: .insn ciw opcode2, func3, rd, uimm8
+
+---------+--------------+-----+---------+
+|   func3 |          imm | rd' | opcode2 |
++---------+--------------+-----+---------+
+15        13             7     2         0
+
+
+
CA type: .insn ca opcode2, func6, func2, rd, rs2
+
+---------+----------+-------+------+--------+
+|   func6 | rd'/rs1' | func2 | rs2' | opcode |
++---------+----------+-------+------+--------+
+15        10         7       5      2        0
+
+
+
CB type: .insn cb opcode2, func3, rs1, symbol
+
+---------+--------+------+--------+---------+
+|   func3 | offset | rs1' | offset | opcode2 |
++---------+--------+------+--------+---------+
+15        13       10     7        2         0
+
+
+
CJ type: .insn cj opcode2, symbol
+
+---------+--------------------+---------+
+|   func3 |        jump target | opcode2 |
++---------+--------------------+---------+
+15        13             7     2         0
+
+ +
+
+ +

For the complete list of all instruction format variants see +The RISC-V Instruction Set Manual Volume I: User-Level ISA. +

+
+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dOptions.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dOptions.html index 4b50cee34..9ad31087f 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dOptions.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/RISC_002dV_002dOptions.html @@ -2,7 +2,7 @@ + + +Using as: S12Z-Dependent + + + + + + + + + + + + + + + + + + + + + +
+ +

9.23 S12Z Dependent Features

+ +

The Freescale S12Z version of as has a few machine +dependent features. +

+ + + + + + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dDirectives.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dDirectives.html new file mode 100644 index 000000000..ecc4a04cc --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dDirectives.html @@ -0,0 +1,78 @@ + + + + + +Using as: S12Z-Directives + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: S12Z-Dependent   [Contents][Index]

+
+
+ +

9.23.3 Assembler Directives

+ + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dOpts.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dOpts.html new file mode 100644 index 000000000..71cad5741 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dOpts.html @@ -0,0 +1,79 @@ + + + + + +Using as: S12Z-Opts + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Up: S12Z-Dependent   [Contents][Index]

+
+
+ +

9.23.1 S12Z Options

+ + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dSyntax.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dSyntax.html new file mode 100644 index 000000000..69e43cc39 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dSyntax.html @@ -0,0 +1,260 @@ + + + + + +Using as: S12Z-Syntax + + + + + + + + + + + + + + + + + + + + +
+

+Next: , Previous: , Up: S12Z-Dependent   [Contents][Index]

+
+
+ +

9.23.2 Syntax

+ + + + +

In the S12Z syntax, the instruction name comes first and it may +be followed by one or by several operands. +In most cases the maximum number of operands is three. +Some instructions accept and (in certain situations require) a suffix +indicating the size of the operand. +The suffix is separated from the instruction name by a period (‘.’) +and may be one of ‘b’, ‘w’, ‘p’ or ‘l’ indicating +‘byte’ (a single byte), ‘word’ (2 bytes), ‘pointer’ (3 bytes) or ‘long’ (4 bytes) +respectively. +Operands are separated by a comma (‘,’). +A comma however does not act as a separator if it appears within parentheses +(‘()’) or within square brackets (‘[]’). +as will complain if too many, too few or inappropriate operands +are specified for a given instruction. +The MRI mode is not supported for this architecture. +Example: +

+
+
	bset.b  0xA98, #5
+	mov.b   #6, 0x2409
+	ld      d0, #4
+	mov.l   (d0, x), 0x2409
+	inc     d0
+	cmp     d0, #12
+	blt     *-4
+	lea     x, 0x2409
+	st      y,  (1, x)
+
+ + + +

The presence of a ‘;’ character anywhere +on a line indicates the start of a comment that extends to the end of +that line. +

+

A ‘*’ or a ‘#’ character at the start of a line also +introduces a line comment, but these characters do not work elsewhere +on the line. If the first character of the line is a ‘#’ then as +well as starting a comment, the line could also be logical line number +directive (see Comments) or a preprocessor control command +(see Preprocessing). +

+ + + +

The S12Z assembler does not currently support a line separator +character. +

+ + +

The following addressing modes are understood for the S12Z. +

+
Immediate
+

#number’ +

+
+
Immediate Bit Field
+

#width:offset’ +

+

Bit field instructions in the immediate mode require the width and offset to +be specified. +The width pararmeter specifies the number of bits in the field. +It should be a number in the range [1,32]. +Offset determines the position within the field where the operation +should start. +It should be a number in the range [0,31]. +

+
+
Relative
+

*symbol’, or ‘*[+-]digits’ +

+

Program counter relative addresses have a width of 15 bits. +Thus, they must be within the range [-32768, 32767]. +

+
+
Register
+

reg’ +

+

Some instructions accept a register as an operand. +In general, reg may be a data register (‘D0’, ‘D1’ … +‘D7’), the X register or the Y register. +

+

A few instructions accept as an argument the stack pointer +register (‘S’), and/or the program counter (‘P’). +

+

Some very special instructions accept arguments which refer to the +condition code register. For these arguments the syntax is +‘CCR’, ‘CCH’ or ‘CCL’ which refer to the complete condition code register, the condition code register high byte and the condition code register low byte respectively. +

+
+
Absolute Direct
+

symbol’, or ‘digits’ +

+
+
Absolute Indirect
+

[symbol’, or ‘digits]’ +

+ +
+
Constant Offset Indexed
+

(number,reg)’ +

+

Reg may be either ‘X’, ‘Y’, ‘S’ or +‘P’ or one of the data registers ‘D0’, ‘D1’ … +‘D7’. +If any of the registers ‘D2’ … ‘D5’ are specified, then the +register value is treated as a signed value. +Otherwise it is treated as unsigned. +Number may be any integer in the range [-8388608,8388607]. +

+
+
Offset Indexed Indirect
+

[number,reg]’ +

+

Reg may be either ‘X’, ‘Y’, ‘S’ or +‘P’. +Number may be any integer in the range [-8388608,8388607]. +

+
+
Auto Pre-Increment/Pre-Decrement/Post-Increment/Post-Decrement
+

-reg’, +‘+reg’, +‘reg-’ or +‘reg+’ +

+

This addressing mode is typically used to access a value at an address, +and simultaneously to increment/decrement the register pointing to that +address. +Thus reg may be any of the 24 bit registers ‘X’, ‘Y’, or +‘S’. +Pre-increment and post-decrement are not available for +register ‘S’ (only post-increment and pre-decrement are available). +

+
+
Register Offset Direct
+

(data-reg,reg)’ +

+

Reg can be either ‘X’, ‘Y’, or ‘S’. +Data-reg +must be one of the data registers ‘D0’, ‘D1’ … ‘D7’. +If any of the registers ‘D2’ … ‘D5’ are specified, then +the register value is treated as a signed value. +Otherwise it is treated as unsigned. +

+
+
Register Offset Indirect
+

[data-reg,reg]’ +

+

Reg can be either ‘X’ or ‘Y’. +Data-reg +must be one of the data registers ‘D0’, ‘D1’ … ‘D7’. +If any of the registers ‘D2’ … ‘D5’ are specified, then +the register value is treated as a signed value. +Otherwise it is treated as unsigned. +

+ +
+
+ +

For example: +

+
+
	trap    #197
+	bra     *+49
+	bra     .L0
+	jmp     0xFE0034
+	jmp     [0xFD0012]
+	inc.b   (4,x)
+	dec.w   [4,y]
+	clr.p   (-s)
+	neg.l   (d0, s)
+	com.b   [d1, x]
+	jsr     (45, d0)
+	psh     cch
+
+ +
+
+

+Next: , Previous: , Up: S12Z-Dependent   [Contents][Index]

+
+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dopcodes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dopcodes.html new file mode 100644 index 000000000..aaf14c6c8 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/S12Z_002dopcodes.html @@ -0,0 +1,81 @@ + + + + + +Using as: S12Z-opcodes + + + + + + + + + + + + + + + + + + + + +
+

+Previous: , Up: S12Z-Dependent   [Contents][Index]

+
+
+ +

9.23.4 Opcodes

+ + + + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SCORE_002dChars.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SCORE_002dChars.html index 464ed4d57..808c8e2b7 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SCORE_002dChars.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SCORE_002dChars.html @@ -2,7 +2,7 @@ - - -Using as: SH64 Directives - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: SH64-Dependent   [Contents][Index]

-
-
- -

9.43.3 SH64 Machine Directives

- -

In addition to the SH directives, the SH64 provides the following -directives: -

- - - -
-
.mode [shmedia|shcompact]
-
.isa [shmedia|shcompact]
-

Specify the ISA for the following instructions (the two directives are -equivalent). Note that programs such as objdump rely on symbolic -labels to determine when such mode switches occur (by checking the least -significant bit of the label’s address), so such mode/isa changes should -always be followed by a label (in practice, this is true anyway). Note -that you cannot use these directives if you didn’t specify an ISA on the -command line. -

-
-
.abi [32|64]
-

Specify the ABI for the following instructions. Note that you cannot use -this directive unless you specified an ABI on the command line, and the -ABIs specified must match. -

-
-
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Opcodes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Opcodes.html deleted file mode 100644 index 5f4445831..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Opcodes.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - -Using as: SH64 Opcodes - - - - - - - - - - - - - - - - - - - - -
-

-Previous: , Up: SH64-Dependent   [Contents][Index]

-
-
- -

9.43.4 Opcodes

- - - - - -

For detailed information on the SH64 machine instruction set, see -SuperH 64 bit RISC Series Architecture Manual (SuperH, Inc.). -

-

as implements all the standard SH64 opcodes. In -addition, the following pseudo-opcodes may be expanded into one or more -alternate opcodes: -

-
-
movi
-

If the value doesn’t fit into a standard movi opcode, -as will replace the movi with a sequence of -movi and shori opcodes. -

-
-
pt
-

This expands to a sequence of movi and shori opcode, -followed by a ptrel opcode, or to a pta or ptb -opcode, depending on the label referenced. -

-
-
- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Options.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Options.html deleted file mode 100644 index 3bc17fc8b..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Options.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - -Using as: SH64 Options - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Up: SH64-Dependent   [Contents][Index]

-
-
- -

9.43.1 Options

- - - -
-
- - -
-
-isa=sh4 | sh4a
-

Specify the sh4 or sh4a instruction set. -

-
-isa=dsp
-

Enable sh-dsp insns, and disable sh3e / sh4 insns. -

-
-isa=fp
-

Enable sh2e, sh3e, sh4, and sh4a insn sets. -

-
-isa=all
-

Enable sh1, sh2, sh2e, sh3, sh3e, sh4, sh4a, and sh-dsp insn sets. -

-
-isa=shmedia | -isa=shcompact
-

Specify the default instruction set. SHmedia specifies the -32-bit opcodes, and SHcompact specifies the 16-bit opcodes -compatible with previous SH families. The default depends on the ABI -selected; the default for the 64-bit ABI is SHmedia, and the default for -the 32-bit ABI is SHcompact. If neither the ABI nor the ISA is -specified, the default is 32-bit SHcompact. -

-

Note that the .mode pseudo-op is not permitted if the ISA is not -specified on the command line. -

- - -
-
-abi=32 | -abi=64
-

Specify the default ABI. If the ISA is specified and the ABI is not, -the default ABI depends on the ISA, with SHmedia defaulting to 64-bit -and SHcompact defaulting to 32-bit. -

-

Note that the .abi pseudo-op is not permitted if the ABI is not -specified on the command line. When the ABI is specified on the command -line, any .abi pseudo-ops in the source must match it. -

-
-
-shcompact-const-crange
-

Emit code-range descriptors for constants in SHcompact code sections. -

-
-
-no-mix
-

Disallow SHmedia code in the same section as constants and SHcompact -code. -

-
-
-no-expand
-

Do not expand MOVI, PT, PTA or PTB instructions. -

-
-
-expand-pt32
-

With -abi=64, expand PT, PTA and PTB instructions to 32 bits only. -

-
-
-h-tick-hex
-

Support H’00 style hex constants in addition to 0x00 style. -

-
-
- -
-
-

-Next: , Up: SH64-Dependent   [Contents][Index]

-
- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Syntax.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Syntax.html deleted file mode 100644 index 84c910745..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64-Syntax.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - -Using as: SH64 Syntax - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: SH64-Dependent   [Contents][Index]

-
-
- -

9.43.2 Syntax

- - - - - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dAddressing.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dAddressing.html deleted file mode 100644 index e2a871e55..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dAddressing.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - -Using as: SH64-Addressing - - - - - - - - - - - - - - - - - - - - -
-

-Previous: , Up: SH64 Syntax   [Contents][Index]

-
-
- -

9.43.2.3 Addressing Modes

- - - - -

SH64 operands consist of either a register or immediate value. The -immediate value can be a constant or label reference (or portion of a -label reference), as in this example: -

-
-
	movi	4,r2
-	pt	function, tr4
-	movi	(function >> 16) & 65535,r0
-	shori	function & 65535, r0
-	ld.l	r0,4,r0
-
- - -

Instruction label references can reference labels in either SHmedia or -SHcompact. To differentiate between the two, labels in SHmedia sections -will always have the least significant bit set (i.e. they will be odd), -which SHcompact labels will have the least significant bit reset -(i.e. they will be even). If you need to reference the actual address -of a label, you can use the datalabel modifier, as in this -example: -

-
-
	.long	function
-	.long	datalabel function
-
- -

In that example, the first longword may or may not have the least -significant bit set depending on whether the label is an SHmedia label -or an SHcompact label. The second longword will be the actual address -of the label, regardless of what type of label it is. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dChars.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dChars.html deleted file mode 100644 index 1291231e0..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dChars.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - -Using as: SH64-Chars - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Up: SH64 Syntax   [Contents][Index]

-
-
- -

9.43.2.1 Special Characters

- - - -

!’ is the line comment character. -

-

If a ‘#’ appears as the first character of a line then the whole -line is treated as a comment, but in this case the line could also be -a logical line number directive (see Comments) or a preprocessor -control command (see Preprocessing). -

- - - -

You can use ‘;’ instead of a newline to separate statements. -

- - -

Since ‘$’ has no special meaning, you may use it in symbol names. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dDependent.html deleted file mode 100644 index 636a40024..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dDependent.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - -Using as: SH64-Dependent - - - - - - - - - - - - - - - - - - - - - -
- -

9.43 SuperH SH64 Dependent Features

- - - - - - - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dRegs.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dRegs.html deleted file mode 100644 index a96f3a8be..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH64_002dRegs.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - - -Using as: SH64-Regs - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: SH64 Syntax   [Contents][Index]

-
-
- -

9.43.2.2 Register Names

- - - -

You can use the predefined symbols ‘r0’ through ‘r63’ to refer -to the SH64 general registers, ‘cr0’ through cr63 for -control registers, ‘tr0’ through ‘tr7’ for target address -registers, ‘fr0’ through ‘fr63’ for single-precision floating -point registers, ‘dr0’ through ‘dr62’ (even numbered registers -only) for double-precision floating point registers, ‘fv0’ through -‘fv60’ (multiples of four only) for single-precision floating point -vectors, ‘fp0’ through ‘fp62’ (even numbered registers only) -for single-precision floating point pairs, ‘mtrx0’ through -‘mtrx48’ (multiples of 16 only) for 4x4 matrices of -single-precision floating point registers, ‘pc’ for the program -counter, and ‘fpscr’ for the floating point status and control -register. -

-

You can also refer to the control registers by the mnemonics ‘sr’, -‘ssr’, ‘pssr’, ‘intevt’, ‘expevt’, ‘pexpevt’, -‘tra’, ‘spc’, ‘pspc’, ‘resvec’, ‘vbr’, -‘tea’, ‘dcr’, ‘kcr0’, ‘kcr1’, ‘ctc’, and -‘usr’. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH_002dAddressing.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH_002dAddressing.html index 3a9815d30..6acc9e676 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH_002dAddressing.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/SH_002dAddressing.html @@ -2,7 +2,7 @@ - - -Using as: Syntax of i860 - - - - - - - - - - - - - - - - - - - - -
-

-Previous: , Up: i860-Dependent   [Contents][Index]

-
-
- -

9.16.5 i860 Syntax

- - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax-of-i960.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax-of-i960.html deleted file mode 100644 index 673c3efd6..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax-of-i960.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - -Using as: Syntax of i960 - - - - - - - - - - - - - - - - - - - - -
-

-Previous: , Up: i960-Dependent   [Contents][Index]

-
-
- -

9.17.5 Syntax for the i960

- - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax.html index b80781cce..aef3adccc 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/Syntax.html @@ -2,7 +2,7 @@ - - -Using as: callj-i960 - - - - - - - - - - - - - - - - - - - - - -
- -

9.17.4.1 callj

- - - -

You can write callj to have the assembler or the linker determine -the most appropriate form of subroutine call: ‘call’, -‘bal’, or ‘calls’. If the assembly source contains -enough information—a ‘.leafproc’ or ‘.sysproc’ directive -defining the operand—then as translates the -callj; if not, it simply emits the callj, leaving it -for the linker to resolve. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/crisnous.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/crisnous.html index 75cd0212a..13c4b666f 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/crisnous.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/crisnous.html @@ -2,7 +2,7 @@ - - -Using as: i860-Chars - - - - - - - - - - - - - - - - - - - - -
-

-Up: Syntax of i860   [Contents][Index]

-
-
- -

9.16.5.1 Special Characters

- - - -

The presence of a ‘#’ appearing anywhere on a line indicates the -start of a comment that extends to the end of that line. -

-

If a ‘#’ appears as the first character of a line then the whole -line is treated as a comment, but in this case the line can also be a -logical line number directive (see Comments) or a preprocessor -control command (see Preprocessing). -

- - - -

The ‘;’ character can be used to separate statements on the same -line. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i860_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i860_002dDependent.html deleted file mode 100644 index 6e934fd6d..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i860_002dDependent.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Using as: i860-Dependent - - - - - - - - - - - - - - - - - - - - - -
- -

9.16 Intel i860 Dependent Features

- - - - - - - - - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i960_002dChars.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i960_002dChars.html deleted file mode 100644 index a08acb87b..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i960_002dChars.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - -Using as: i960-Chars - - - - - - - - - - - - - - - - - - - - -
-

-Up: Syntax of i960   [Contents][Index]

-
-
- -

9.17.5.1 Special Characters

- - - -

The presence of a ‘#’ on a line indicates the start of a comment -that extends to the end of the current line. -

-

If a ‘#’ appears as the first character of a line, the whole line -is treated as a comment, but in this case the line can also be a -logical line number directive (see Comments) or a -preprocessor control command (see Preprocessing). -

- - - -

The ‘;’ character can be used to separate statements on the same -line. -

- - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i960_002dDependent.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i960_002dDependent.html deleted file mode 100644 index 41e90f20f..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/i960_002dDependent.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - -Using as: i960-Dependent - - - - - - - - - - - - - - - - - - - - - -
- -

9.17 Intel 80960 Dependent Features

- - - - - - - - - - - - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/index.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/index.html index 6acf14237..36b13880b 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/index.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/as.html/index.html @@ -2,7 +2,7 @@ - - -GNU Binary Utilities: nlmconv - - - - - - - - - - - - - - - - - - - - -
-

-Next: , Previous: , Up: Top   [Contents][Index]

-
-
- -

11 nlmconv

- -

nlmconv converts a relocatable object file into a NetWare -Loadable Module. -

- -
-

Warning: nlmconv is not always built as part of the binary -utilities, since it is only useful for NLM targets. -

- - -
-
nlmconv [-I bfdname|--input-target=bfdname]
-        [-O bfdname|--output-target=bfdname]
-        [-T headerfile|--header-file=headerfile]
-        [-d|--debug] [-l linker|--linker=linker]
-        [-h|--help] [-V|--version]
-        infile outfile
-
- - -

nlmconv converts the relocatable ‘i386’ object file -infile into the NetWare Loadable Module outfile, optionally -reading headerfile for NLM header information. For instructions -on writing the NLM command file language used in header files, see the -‘linkers’ section, ‘NLMLINK’ in particular, of the NLM -Development and Tools Overview, which is part of the NLM Software -Developer’s Kit (“NLM SDK”), available from Novell, Inc. -nlmconv uses the GNU Binary File Descriptor library to read -infile; -see BFD in Using LD, for more information. -

-

nlmconv can perform a link step. In other words, you can list -more than one object file for input if you list them in the definitions -file (rather than simply specifying one input file on the command line). -In this case, nlmconv calls the linker for you. -

- - -
-
-I bfdname
-
--input-target=bfdname
-

Object format of the input file. nlmconv can usually determine -the format of a given file (so no default is necessary). -See Target Selection, for more information. -

-
-
-O bfdname
-
--output-target=bfdname
-

Object format of the output file. nlmconv infers the output -format based on the input format, e.g. for a ‘i386’ input file the -output format is ‘nlm32-i386’. -See Target Selection, for more information. -

-
-
-T headerfile
-
--header-file=headerfile
-

Reads headerfile for NLM header information. For instructions on -writing the NLM command file language used in header files, see see the -‘linkers’ section, of the NLM Development and Tools -Overview, which is part of the NLM Software Developer’s Kit, available -from Novell, Inc. -

-
-
-d
-
--debug
-

Displays (on standard error) the linker command line used by nlmconv. -

-
-
-l linker
-
--linker=linker
-

Use linker for any linking. linker can be an absolute or a -relative pathname. -

-
-
-h
-
--help
-

Prints a usage summary. -

-
-
-V
-
--version
-

Prints the version number for nlmconv. -

-
- - - -
-
-

-Next: , Previous: , Up: Top   [Contents][Index]

-
- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/binutils.html/nm.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/binutils.html/nm.html index a5222d066..534e43b73 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/binutils.html/nm.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/binutils.html/nm.html @@ -1,6 +1,6 @@ -. diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Line-Control.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Line-Control.html index ae4a2a4b1..5928c9ce9 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Line-Control.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Line-Control.html @@ -1,6 +1,6 @@ - function macro. +This macro may only appear in the definition of a variadic macro. If +the variable argument has any tokens, then a __VA_OPT__ +invocation expands to its argument; but if the variable argument does +not have any tokens, the __VA_OPT__ expands to nothing: +

+
+
#define eprintf(format, …) \
+  fprintf (stderr, format __VA_OPT__(,) __VA_ARGS__)
+
+ +

__VA_OPT__ is also available in GNU C and GNU C++. +

+

Historically, GNU CPP has also had another extension to handle the +trailing comma: the ‘##’ token paste operator has a special +meaning when placed between a comma and a variable argument. Despite +the introduction of __VA_OPT__, this extension remains +supported in GNU CPP, for backward compatibility. If you write

#define eprintf(format, …) fprintf (stderr, format, ##__VA_ARGS__)
@@ -179,6 +202,9 @@ of macro.  It may also be forbidden in open text; the standard is
 ambiguous.  We recommend you avoid using it except for its defined
 purpose.
 

+

Likewise, C++ forbids __VA_OPT__ anywhere outside the +replacement list of a variadic macro. +

Variadic macros became a standard part of the C language with C99. GNU CPP previously supported them with a named variable argument diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Wrapper-Headers.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Wrapper-Headers.html index e7a6ff4cf..ac01be441 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Wrapper-Headers.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/cpp/Wrapper-Headers.html @@ -1,6 +1,6 @@ - and arceb-linux-uclibc targets.

+
-G num
+
+

Put definitions of externally-visible data in a small data section if +that data is no bigger than num bytes. The default value of +num is 4 for any ARC configuration, or 8 when we have double +load/store operations. +

+
-mno-sdata

Do not generate sdata references. This is the default for tool chains @@ -673,7 +732,7 @@ offset range because they are conditionalized, you should consider using

-mexpand-adddi

Expand adddi3 and subdi3 at RTL generation time into -add.f, adc etc. +add.f, adc etc. This option is deprecated.

-mindexed-loads
@@ -682,7 +741,9 @@ offset range because they are conditionalized, you should consider using optimizers then assume that indexed stores exist, which is not the case.

- + +
-mlra
+

Enable Local Register Allocation. This is still experimental for ARC, so by default the compiler uses standard reload (i.e. -mno-lra). diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-SIMD-Built_002din-Functions.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-SIMD-Built_002din-Functions.html index d9c489b2b..adf14f40a 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-SIMD-Built_002din-Functions.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-SIMD-Built_002din-Functions.html @@ -1,6 +1,6 @@ - + + +Using the GNU Compiler Collection (GCC): ARC Type Attributes + + + + + + + + + + + + + + + + + + + + +

+
+ +

6.33.2 ARC Type Attributes

+ + +

Declaring objects with uncached allows you to exclude +data-cache participation in load and store operations on those objects +without involving the additional semantic implications of +volatile. The .di instruction suffix is used for all +loads and stores of data declared uncached. +

+ + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-Variable-Attributes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-Variable-Attributes.html new file mode 100644 index 000000000..2c05b5c8a --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARC-Variable-Attributes.html @@ -0,0 +1,94 @@ + + + + + +Using the GNU Compiler Collection (GCC): ARC Variable Attributes + + + + + + + + + + + + + + + + + + + + + +
+ +

6.32.2 ARC Variable Attributes

+ +
+
aux
+
+

The aux attribute is used to directly access the ARC’s +auxiliary register space from C. The auxilirary register number is +given via attribute argument. +

+
+
+ + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARM-ARMv8_002dM-Security-Extensions.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARM-ARMv8_002dM-Security-Extensions.html index 4d8712126..47b37ccf5 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARM-ARMv8_002dM-Security-Extensions.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/ARM-ARMv8_002dM-Security-Extensions.html @@ -1,6 +1,6 @@ -. +

+
-mint8

Assume int to be 8-bit integer. This affects the sizes of all types: a @@ -224,6 +240,13 @@ conform to the C standards, but it results in smaller code size.

+
-mmain-is-OS_task
+
+

Do not save registers in main. The effect is the same like +attaching attribute OS_task +to main. It is activated per default if optimization is on. +

+
-mn-flash=num

Assume that the flash memory has a size of @@ -259,6 +282,16 @@ section on EIND and linker stubs below. instructions XCH, LAC, LAS and LAT.

+
-mshort-calls
+
+ +

Assume that RJMP and RCALL can target the whole +program memory. +

+

This option is used internally for multilib selection. It is +not an optimization option, and you don’t need to set it by hand. +

+
-msp8

Treat the stack pointer register as an 8-bit register, @@ -509,10 +542,12 @@ Possible values are:

respectively and

-

100, 102, 104, +

100, +102, 103, 104, 105, 106, 107

-

for mcu=avrtiny, avrxmega2, avrxmega4, +

for mcu=avrtiny, +avrxmega2, avrxmega3, avrxmega4, avrxmega5, avrxmega6, avrxmega7, respectively. If mcu specifies a device, this built-in macro is set accordingly. For example, with -mmcu=atmega8 the macro is @@ -573,7 +608,7 @@ register-register moves.

__AVR_HAVE_JMP_CALL__

The device has the JMP and CALL instructions. -This is the case for devices with at least 16 KiB of program +This is the case for devices with more than 8 KiB of program memory.

@@ -640,6 +675,23 @@ to be subtracted from the RAM address in order to get the respective I/O address.

+
__AVR_SHORT_CALLS__
+

The -mshort-calls command line option is set. +

+
+
__AVR_PM_BASE_ADDRESS__=addr
+

Some devices support reading from flash memory by means of LD* +instructions. The flash memory is seen in the data address space +at an offset of __AVR_PM_BASE_ADDRESS__. If this macro +is not defined, this feature is not available. If defined, +the address space is linear and there is no need to put +.rodata into RAM. This is handled by the default linker +description file, and is currently available for +avrtiny and avrxmega3. Even more convenient, +there is no need to use address spaces like __flash or +features like attribute progmem and pgm_read_*. +

+
__WITH_AVRLIBC__

The compiler is configured to be used together with AVR-Libc. See the --with-avrlibc configure option. diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/AVR-Variable-Attributes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/AVR-Variable-Attributes.html index ed751b79d..044165d68 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/AVR-Variable-Attributes.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/AVR-Variable-Attributes.html @@ -1,6 +1,6 @@ -. This option +Programming Interface v2.0 https://www.openacc.org. This option implies -pthread, and thus is only supported on targets that have support for -pthread.

@@ -455,19 +483,6 @@ in C/C++ and !$omp in Fortran. Other OpenMP directives are ignored.

-
-fcilkplus
-
- -

Enable the usage of Cilk Plus language extension features for C/C++. -When the option -fcilkplus is specified, enable the usage of -the Cilk Plus Language extension features for C/C++. The present -implementation follows ABI version 1.2. This is an experimental -feature that is only partially complete, and whose interface may -change in future versions of GCC as the official specification -changes. Currently, all features but _Cilk_for have been -implemented. -

-
-fgnu-tm

When the option -fgnu-tm is specified, the compiler diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/C-Extensions.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/C-Extensions.html index 2a79a4977..12d2c1ebe 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/C-Extensions.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/C-Extensions.html @@ -1,6 +1,6 @@ - - - -Using the GNU Compiler Collection (GCC): Cilk Plus Builtins - - - - - - - - - - - - - - - - - - - - -

-
- -

6.58 Cilk Plus C/C++ Language Extension Built-in Functions

- -

GCC provides support for the following built-in reduction functions if Cilk Plus -is enabled. Cilk Plus can be enabled using the -fcilkplus flag. -

-
    -
  • __sec_implicit_index -
  • __sec_reduce -
  • __sec_reduce_add -
  • __sec_reduce_all_nonzero -
  • __sec_reduce_all_zero -
  • __sec_reduce_any_nonzero -
  • __sec_reduce_any_zero -
  • __sec_reduce_max -
  • __sec_reduce_min -
  • __sec_reduce_max_ind -
  • __sec_reduce_min_ind -
  • __sec_reduce_mul -
  • __sec_reduce_mutating -
- -

Further details and examples about these built-in functions are described -in the Cilk Plus language manual which can be found at -https://www.cilkplus.org. -

- - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Clobbers-and-Scratch-Registers.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Clobbers-and-Scratch-Registers.html new file mode 100644 index 000000000..020662343 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Clobbers-and-Scratch-Registers.html @@ -0,0 +1,69 @@ + + + + + + +Using the GNU Compiler Collection (GCC): Clobbers and Scratch Registers + + + + + + + + + + + + + + + +

The node you are looking for is at Clobbers and Scratch Registers.

+ diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Clobbers.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Clobbers.html deleted file mode 100644 index 5a2656620..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Clobbers.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - -Using the GNU Compiler Collection (GCC): Clobbers - - - - - - - - - - - - - - - -

The node you are looking for is at Clobbers.

- diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Code-Gen-Options.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Code-Gen-Options.html index abeadde64..29280c8bb 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Code-Gen-Options.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Code-Gen-Options.html @@ -1,6 +1,6 @@ -. diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Disappointments.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Disappointments.html index 0b6e58f75..227080780 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Disappointments.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Disappointments.html @@ -1,6 +1,6 @@ -. -

  • On the reduced Tiny devices like ATtiny40, no address spaces are supported. -Data can be put into and read from flash memory by means of -attribute progmem, see AVR Variable Attributes. +Just use vanilla C / C++ code without overhead as outlined above. +Attribute progmem is supported but works differently, +see AVR Variable Attributes.
  • diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Nested-Functions.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Nested-Functions.html index e7388e7d9..86b297195 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Nested-Functions.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/Nested-Functions.html @@ -1,6 +1,6 @@ - + + +Using the GNU Compiler Collection (GCC): PowerPC Atomic Memory Operation Functions + + + + + + + + + + + + + + + + + + + + + +
    + +

    6.59.24 PowerPC Atomic Memory Operation Functions

    +

    ISA 3.0 of the PowerPC added new atomic memory operation (amo) +instructions. GCC provides support for these instructions in 64-bit +environments. All of the functions are declared in the include file +amo.h. +

    +

    The functions supported are: +

    +
    +
    #include <amo.h>
    +
    +uint32_t amo_lwat_add (uint32_t *, uint32_t);
    +uint32_t amo_lwat_xor (uint32_t *, uint32_t);
    +uint32_t amo_lwat_ior (uint32_t *, uint32_t);
    +uint32_t amo_lwat_and (uint32_t *, uint32_t);
    +uint32_t amo_lwat_umax (uint32_t *, uint32_t);
    +uint32_t amo_lwat_umin (uint32_t *, uint32_t);
    +uint32_t amo_lwat_swap (uint32_t *, uint32_t);
    +
    +int32_t amo_lwat_sadd (int32_t *, int32_t);
    +int32_t amo_lwat_smax (int32_t *, int32_t);
    +int32_t amo_lwat_smin (int32_t *, int32_t);
    +int32_t amo_lwat_sswap (int32_t *, int32_t);
    +
    +uint64_t amo_ldat_add (uint64_t *, uint64_t);
    +uint64_t amo_ldat_xor (uint64_t *, uint64_t);
    +uint64_t amo_ldat_ior (uint64_t *, uint64_t);
    +uint64_t amo_ldat_and (uint64_t *, uint64_t);
    +uint64_t amo_ldat_umax (uint64_t *, uint64_t);
    +uint64_t amo_ldat_umin (uint64_t *, uint64_t);
    +uint64_t amo_ldat_swap (uint64_t *, uint64_t);
    +
    +int64_t amo_ldat_sadd (int64_t *, int64_t);
    +int64_t amo_ldat_smax (int64_t *, int64_t);
    +int64_t amo_ldat_smin (int64_t *, int64_t);
    +int64_t amo_ldat_sswap (int64_t *, int64_t);
    +
    +void amo_stwat_add (uint32_t *, uint32_t);
    +void amo_stwat_xor (uint32_t *, uint32_t);
    +void amo_stwat_ior (uint32_t *, uint32_t);
    +void amo_stwat_and (uint32_t *, uint32_t);
    +void amo_stwat_umax (uint32_t *, uint32_t);
    +void amo_stwat_umin (uint32_t *, uint32_t);
    +
    +void amo_stwat_sadd (int32_t *, int32_t);
    +void amo_stwat_smax (int32_t *, int32_t);
    +void amo_stwat_smin (int32_t *, int32_t);
    +
    +void amo_stdat_add (uint64_t *, uint64_t);
    +void amo_stdat_xor (uint64_t *, uint64_t);
    +void amo_stdat_ior (uint64_t *, uint64_t);
    +void amo_stdat_and (uint64_t *, uint64_t);
    +void amo_stdat_umax (uint64_t *, uint64_t);
    +void amo_stdat_umin (uint64_t *, uint64_t);
    +
    +void amo_stdat_sadd (int64_t *, int64_t);
    +void amo_stdat_smax (int64_t *, int64_t);
    +void amo_stdat_smin (int64_t *, int64_t);
    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Built_002din-Functions.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Built_002din-Functions.html index d8a5945de..7107e7384 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Built_002din-Functions.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Built_002din-Functions.html @@ -1,6 +1,6 @@ - + + +Using the GNU Compiler Collection (GCC): PowerPC SPE Options + + + + + + + + + + + + + + + + + + + + + +
    + +

    3.18.37 PowerPC SPE Options

    + + +

    These ‘-m’ options are defined for PowerPC SPE: +

    +
    -mmfcrf
    +
    -mno-mfcrf
    +
    -mpopcntb
    +
    -mno-popcntb
    +
    + + + +

    You use these options to specify which instructions are available on the +processor you are using. The default value of these options is +determined when configuring GCC. Specifying the +-mcpu=cpu_type overrides the specification of these +options. We recommend you use the -mcpu=cpu_type option +rather than the options listed above. +

    +

    The -mmfcrf option allows GCC to generate the move from +condition register field instruction implemented on the POWER4 +processor and other processors that support the PowerPC V2.01 +architecture. +The -mpopcntb option allows GCC to generate the popcount and +double-precision FP reciprocal estimate instruction implemented on the +POWER5 processor and other processors that support the PowerPC V2.02 +architecture. +

    +
    +
    -mcpu=cpu_type
    +
    +

    Set architecture type, register usage, and +instruction scheduling parameters for machine type cpu_type. +Supported values for cpu_type are ‘8540’, ‘8548’, +and ‘native’. +

    +

    -mcpu=powerpc specifies pure 32-bit PowerPC (either +endian), with an appropriate, generic processor model assumed for +scheduling purposes. +

    +

    Specifying ‘native’ as cpu type detects and selects the +architecture option that corresponds to the host processor of the +system performing the compilation. +-mcpu=native has no effect if GCC does not recognize the +processor. +

    +

    The other options specify a specific processor. Code generated under +those options runs best on that processor, and may not run at all on +others. +

    +

    The -mcpu options automatically enable or disable the +following options: +

    +
    +
    -mhard-float  -mmfcrf  -mmultiple 
    +-mpopcntb -mpopcntd 
    +-msingle-float -mdouble-float 
    +-mfloat128
    +
    + +

    The particular options set for any particular CPU varies between +compiler versions, depending on what setting seems to produce optimal +code for that CPU; it doesn’t necessarily reflect the actual hardware’s +capabilities. If you wish to set an individual option to a particular +value, you may specify it after the -mcpu option, like +-mcpu=8548. +

    +
    +
    -mtune=cpu_type
    +
    +

    Set the instruction scheduling parameters for machine type +cpu_type, but do not set the architecture type or register usage, +as -mcpu=cpu_type does. The same +values for cpu_type are used for -mtune as for +-mcpu. If both are specified, the code generated uses the +architecture and registers set by -mcpu, but the +scheduling parameters set by -mtune. +

    +
    +
    -msecure-plt
    +
    +

    Generate code that allows ld and ld.so +to build executables and shared +libraries with non-executable .plt and .got sections. +This is a PowerPC +32-bit SYSV ABI option. +

    +
    +
    -mbss-plt
    +
    +

    Generate code that uses a BSS .plt section that ld.so +fills in, and +requires .plt and .got +sections that are both writable and executable. +This is a PowerPC 32-bit SYSV ABI option. +

    +
    +
    -misel
    +
    -mno-isel
    +
    + +

    This switch enables or disables the generation of ISEL instructions. +

    +
    +
    -misel=yes/no
    +

    This switch has been deprecated. Use -misel and +-mno-isel instead. +

    +
    +
    -mspe
    +
    -mno-spe
    +
    + +

    This switch enables or disables the generation of SPE simd +instructions. +

    +
    +
    -mspe=yes/no
    +

    This option has been deprecated. Use -mspe and +-mno-spe instead. +

    +
    +
    -mfloat128
    +
    -mno-float128
    +
    + +

    Enable/disable the __float128 keyword for IEEE 128-bit floating point +and use either software emulation for IEEE 128-bit floating point or +hardware instructions. +

    +
    +
    -mfloat-gprs=yes/single/double/no
    +
    -mfloat-gprs
    +
    +

    This switch enables or disables the generation of floating-point +operations on the general-purpose registers for architectures that +support it. +

    +

    The argument ‘yes’ or ‘single’ enables the use of +single-precision floating-point operations. +

    +

    The argument ‘double’ enables the use of single and +double-precision floating-point operations. +

    +

    The argument ‘no’ disables floating-point operations on the +general-purpose registers. +

    +

    This option is currently only available on the MPC854x. +

    +
    +
    -mfull-toc
    +
    -mno-fp-in-toc
    +
    -mno-sum-in-toc
    +
    -mminimal-toc
    +
    + + + +

    Modify generation of the TOC (Table Of Contents), which is created for +every executable file. The -mfull-toc option is selected by +default. In that case, GCC allocates at least one TOC entry for +each unique non-automatic variable reference in your program. GCC +also places floating-point constants in the TOC. However, only +16,384 entries are available in the TOC. +

    +

    If you receive a linker error message that saying you have overflowed +the available TOC space, you can reduce the amount of TOC space used +with the -mno-fp-in-toc and -mno-sum-in-toc options. +-mno-fp-in-toc prevents GCC from putting floating-point +constants in the TOC and -mno-sum-in-toc forces GCC to +generate code to calculate the sum of an address and a constant at +run time instead of putting that sum into the TOC. You may specify one +or both of these options. Each causes GCC to produce very slightly +slower and larger code at the expense of conserving TOC space. +

    +

    If you still run out of space in the TOC even when you specify both of +these options, specify -mminimal-toc instead. This option causes +GCC to make only one TOC entry for every file. When you specify this +option, GCC produces code that is slower and larger but which +uses extremely little TOC space. You may wish to use this option +only on files that contain less frequently-executed code. +

    +
    +
    -maix32
    +
    +

    Disables the 64-bit ABI. GCC defaults to -maix32. +

    +
    +
    -mxl-compat
    +
    -mno-xl-compat
    +
    + +

    Produce code that conforms more closely to IBM XL compiler semantics +when using AIX-compatible ABI. Pass floating-point arguments to +prototyped functions beyond the register save area (RSA) on the stack +in addition to argument FPRs. Do not assume that most significant +double in 128-bit long double value is properly rounded when comparing +values and converting to double. Use XL symbol names for long double +support routines. +

    +

    The AIX calling convention was extended but not initially documented to +handle an obscure K&R C case of calling a function that takes the +address of its arguments with fewer arguments than declared. IBM XL +compilers access floating-point arguments that do not fit in the +RSA from the stack when a subroutine is compiled without +optimization. Because always storing floating-point arguments on the +stack is inefficient and rarely needed, this option is not enabled by +default and only is necessary when calling subroutines compiled by IBM +XL compilers without optimization. +

    +
    +
    -malign-natural
    +
    -malign-power
    +
    + +

    On AIX, 32-bit Darwin, and 64-bit PowerPC GNU/Linux, the option +-malign-natural overrides the ABI-defined alignment of larger +types, such as floating-point doubles, on their natural size-based boundary. +The option -malign-power instructs GCC to follow the ABI-specified +alignment rules. GCC defaults to the standard alignment defined in the ABI. +

    +

    On 64-bit Darwin, natural alignment is the default, and -malign-power +is not supported. +

    +
    +
    -msoft-float
    +
    -mhard-float
    +
    + +

    Generate code that does not use (uses) the floating-point register set. +Software floating-point emulation is provided if you use the +-msoft-float option, and pass the option to GCC when linking. +

    +
    +
    -msingle-float
    +
    -mdouble-float
    +
    + +

    Generate code for single- or double-precision floating-point operations. +-mdouble-float implies -msingle-float. +

    +
    +
    -mmultiple
    +
    -mno-multiple
    +
    + +

    Generate code that uses (does not use) the load multiple word +instructions and the store multiple word instructions. These +instructions are generated by default on POWER systems, and not +generated on PowerPC systems. Do not use -mmultiple on little-endian +PowerPC systems, since those instructions do not work when the +processor is in little-endian mode. The exceptions are PPC740 and +PPC750 which permit these instructions in little-endian mode. +

    +
    +
    -mupdate
    +
    -mno-update
    +
    + +

    Generate code that uses (does not use) the load or store instructions +that update the base register to the address of the calculated memory +location. These instructions are generated by default. If you use +-mno-update, there is a small window between the time that the +stack pointer is updated and the address of the previous frame is +stored, which means code that walks the stack frame across interrupts or +signals may get corrupted data. +

    +
    +
    -mavoid-indexed-addresses
    +
    -mno-avoid-indexed-addresses
    +
    + +

    Generate code that tries to avoid (not avoid) the use of indexed load +or store instructions. These instructions can incur a performance +penalty on Power6 processors in certain situations, such as when +stepping through large arrays that cross a 16M boundary. This option +is enabled by default when targeting Power6 and disabled otherwise. +

    +
    +
    -mfused-madd
    +
    -mno-fused-madd
    +
    + +

    Generate code that uses (does not use) the floating-point multiply and +accumulate instructions. These instructions are generated by default +if hardware floating point is used. The machine-dependent +-mfused-madd option is now mapped to the machine-independent +-ffp-contract=fast option, and -mno-fused-madd is +mapped to -ffp-contract=off. +

    +
    +
    -mno-strict-align
    +
    -mstrict-align
    +
    + +

    On System V.4 and embedded PowerPC systems do not (do) assume that +unaligned memory references are handled by the system. +

    +
    +
    -mrelocatable
    +
    -mno-relocatable
    +
    + +

    Generate code that allows (does not allow) a static executable to be +relocated to a different address at run time. A simple embedded +PowerPC system loader should relocate the entire contents of +.got2 and 4-byte locations listed in the .fixup section, +a table of 32-bit addresses generated by this option. For this to +work, all objects linked together must be compiled with +-mrelocatable or -mrelocatable-lib. +-mrelocatable code aligns the stack to an 8-byte boundary. +

    +
    +
    -mrelocatable-lib
    +
    -mno-relocatable-lib
    +
    + +

    Like -mrelocatable, -mrelocatable-lib generates a +.fixup section to allow static executables to be relocated at +run time, but -mrelocatable-lib does not use the smaller stack +alignment of -mrelocatable. Objects compiled with +-mrelocatable-lib may be linked with objects compiled with +any combination of the -mrelocatable options. +

    +
    +
    -mno-toc
    +
    -mtoc
    +
    + +

    On System V.4 and embedded PowerPC systems do not (do) assume that +register 2 contains a pointer to a global area pointing to the addresses +used in the program. +

    +
    +
    -mlittle
    +
    -mlittle-endian
    +
    + +

    On System V.4 and embedded PowerPC systems compile code for the +processor in little-endian mode. The -mlittle-endian option is +the same as -mlittle. +

    +
    +
    -mbig
    +
    -mbig-endian
    +
    + +

    On System V.4 and embedded PowerPC systems compile code for the +processor in big-endian mode. The -mbig-endian option is +the same as -mbig. +

    +
    +
    -mdynamic-no-pic
    +
    +

    On Darwin and Mac OS X systems, compile code so that it is not +relocatable, but that its external references are relocatable. The +resulting code is suitable for applications, but not shared +libraries. +

    +
    +
    -msingle-pic-base
    +
    +

    Treat the register used for PIC addressing as read-only, rather than +loading it in the prologue for each function. The runtime system is +responsible for initializing this register with an appropriate value +before execution begins. +

    +
    +
    -mprioritize-restricted-insns=priority
    +
    +

    This option controls the priority that is assigned to +dispatch-slot restricted instructions during the second scheduling +pass. The argument priority takes the value ‘0’, ‘1’, +or ‘2’ to assign no, highest, or second-highest (respectively) +priority to dispatch-slot restricted +instructions. +

    +
    +
    -msched-costly-dep=dependence_type
    +
    +

    This option controls which dependences are considered costly +by the target during instruction scheduling. The argument +dependence_type takes one of the following values: +

    +
    +
    no
    +

    No dependence is costly. +

    +
    +
    all
    +

    All dependences are costly. +

    +
    +
    true_store_to_load
    +

    A true dependence from store to load is costly. +

    +
    +
    store_to_load
    +

    Any dependence from store to load is costly. +

    +
    +
    number
    +

    Any dependence for which the latency is greater than or equal to +number is costly. +

    +
    + +
    +
    -minsert-sched-nops=scheme
    +
    +

    This option controls which NOP insertion scheme is used during +the second scheduling pass. The argument scheme takes one of the +following values: +

    +
    +
    no
    +

    Don’t insert NOPs. +

    +
    +
    pad
    +

    Pad with NOPs any dispatch group that has vacant issue slots, +according to the scheduler’s grouping. +

    +
    +
    regroup_exact
    +

    Insert NOPs to force costly dependent insns into +separate groups. Insert exactly as many NOPs as needed to force an insn +to a new group, according to the estimated processor grouping. +

    +
    +
    number
    +

    Insert NOPs to force costly dependent insns into +separate groups. Insert number NOPs to force an insn to a new group. +

    +
    + +
    +
    -mcall-sysv
    +
    +

    On System V.4 and embedded PowerPC systems compile code using calling +conventions that adhere to the March 1995 draft of the System V +Application Binary Interface, PowerPC processor supplement. This is the +default unless you configured GCC using ‘powerpc-*-eabiaix’. +

    +
    +
    -mcall-sysv-eabi
    +
    -mcall-eabi
    +
    + +

    Specify both -mcall-sysv and -meabi options. +

    +
    +
    -mcall-sysv-noeabi
    +
    +

    Specify both -mcall-sysv and -mno-eabi options. +

    +
    +
    -mcall-aixdesc
    +
    +

    On System V.4 and embedded PowerPC systems compile code for the AIX +operating system. +

    +
    +
    -mcall-linux
    +
    +

    On System V.4 and embedded PowerPC systems compile code for the +Linux-based GNU system. +

    +
    +
    -mcall-freebsd
    +
    +

    On System V.4 and embedded PowerPC systems compile code for the +FreeBSD operating system. +

    +
    +
    -mcall-netbsd
    +
    +

    On System V.4 and embedded PowerPC systems compile code for the +NetBSD operating system. +

    +
    +
    -mcall-openbsd
    +
    +

    On System V.4 and embedded PowerPC systems compile code for the +OpenBSD operating system. +

    +
    +
    -maix-struct-return
    +
    +

    Return all structures in memory (as specified by the AIX ABI). +

    +
    +
    -msvr4-struct-return
    +
    +

    Return structures smaller than 8 bytes in registers (as specified by the +SVR4 ABI). +

    +
    +
    -mabi=abi-type
    +
    +

    Extend the current ABI with a particular extension, or remove such extension. +Valid values are ‘altivec’, ‘no-altivec’, ‘spe’, +‘no-spe’, ‘ibmlongdouble’, ‘ieeelongdouble’, +‘elfv1’, ‘elfv2’. +

    +
    +
    -mabi=spe
    +
    +

    Extend the current ABI with SPE ABI extensions. This does not change +the default ABI, instead it adds the SPE ABI extensions to the current +ABI. +

    +
    +
    -mabi=no-spe
    +
    +

    Disable Book-E SPE ABI extensions for the current ABI. +

    +
    +
    -mabi=ibmlongdouble
    +
    +

    Change the current ABI to use IBM extended-precision long double. +This is not likely to work if your system defaults to using IEEE +extended-precision long double. If you change the long double type +from IEEE extended-precision, the compiler will issue a warning unless +you use the -Wno-psabi option. Requires -mlong-double-128 +to be enabled. +

    +
    +
    -mabi=ieeelongdouble
    +
    +

    Change the current ABI to use IEEE extended-precision long double. +This is not likely to work if your system defaults to using IBM +extended-precision long double. If you change the long double type +from IBM extended-precision, the compiler will issue a warning unless +you use the -Wno-psabi option. Requires -mlong-double-128 +to be enabled. +

    +
    +
    -mabi=elfv1
    +
    +

    Change the current ABI to use the ELFv1 ABI. +This is the default ABI for big-endian PowerPC 64-bit Linux. +Overriding the default ABI requires special system support and is +likely to fail in spectacular ways. +

    +
    +
    -mabi=elfv2
    +
    +

    Change the current ABI to use the ELFv2 ABI. +This is the default ABI for little-endian PowerPC 64-bit Linux. +Overriding the default ABI requires special system support and is +likely to fail in spectacular ways. +

    +
    +
    -mgnu-attribute
    +
    -mno-gnu-attribute
    +
    + +

    Emit .gnu_attribute assembly directives to set tag/value pairs in a +.gnu.attributes section that specify ABI variations in function +parameters or return values. +

    +
    +
    -mprototype
    +
    -mno-prototype
    +
    + +

    On System V.4 and embedded PowerPC systems assume that all calls to +variable argument functions are properly prototyped. Otherwise, the +compiler must insert an instruction before every non-prototyped call to +set or clear bit 6 of the condition code register (CR) to +indicate whether floating-point values are passed in the floating-point +registers in case the function takes variable arguments. With +-mprototype, only calls to prototyped variable argument functions +set or clear the bit. +

    +
    +
    -msim
    +
    +

    On embedded PowerPC systems, assume that the startup module is called +sim-crt0.o and that the standard C libraries are libsim.a and +libc.a. This is the default for ‘powerpc-*-eabisim’ +configurations. +

    +
    +
    -mmvme
    +
    +

    On embedded PowerPC systems, assume that the startup module is called +crt0.o and the standard C libraries are libmvme.a and +libc.a. +

    +
    +
    -mads
    +
    +

    On embedded PowerPC systems, assume that the startup module is called +crt0.o and the standard C libraries are libads.a and +libc.a. +

    +
    +
    -myellowknife
    +
    +

    On embedded PowerPC systems, assume that the startup module is called +crt0.o and the standard C libraries are libyk.a and +libc.a. +

    +
    +
    -mvxworks
    +
    +

    On System V.4 and embedded PowerPC systems, specify that you are +compiling for a VxWorks system. +

    +
    +
    -memb
    +
    +

    On embedded PowerPC systems, set the PPC_EMB bit in the ELF flags +header to indicate that ‘eabi’ extended relocations are used. +

    +
    +
    -meabi
    +
    -mno-eabi
    +
    + +

    On System V.4 and embedded PowerPC systems do (do not) adhere to the +Embedded Applications Binary Interface (EABI), which is a set of +modifications to the System V.4 specifications. Selecting -meabi +means that the stack is aligned to an 8-byte boundary, a function +__eabi is called from main to set up the EABI +environment, and the -msdata option can use both r2 and +r13 to point to two separate small data areas. Selecting +-mno-eabi means that the stack is aligned to a 16-byte boundary, +no EABI initialization function is called from main, and the +-msdata option only uses r13 to point to a single +small data area. The -meabi option is on by default if you +configured GCC using one of the ‘powerpc*-*-eabi*’ options. +

    +
    +
    -msdata=eabi
    +
    +

    On System V.4 and embedded PowerPC systems, put small initialized +const global and static data in the .sdata2 section, which +is pointed to by register r2. Put small initialized +non-const global and static data in the .sdata section, +which is pointed to by register r13. Put small uninitialized +global and static data in the .sbss section, which is adjacent to +the .sdata section. The -msdata=eabi option is +incompatible with the -mrelocatable option. The +-msdata=eabi option also sets the -memb option. +

    +
    +
    -msdata=sysv
    +
    +

    On System V.4 and embedded PowerPC systems, put small global and static +data in the .sdata section, which is pointed to by register +r13. Put small uninitialized global and static data in the +.sbss section, which is adjacent to the .sdata section. +The -msdata=sysv option is incompatible with the +-mrelocatable option. +

    +
    +
    -msdata=default
    +
    -msdata
    +
    + +

    On System V.4 and embedded PowerPC systems, if -meabi is used, +compile code the same as -msdata=eabi, otherwise compile code the +same as -msdata=sysv. +

    +
    +
    -msdata=data
    +
    +

    On System V.4 and embedded PowerPC systems, put small global +data in the .sdata section. Put small uninitialized global +data in the .sbss section. Do not use register r13 +to address small data however. This is the default behavior unless +other -msdata options are used. +

    +
    +
    -msdata=none
    +
    -mno-sdata
    +
    + +

    On embedded PowerPC systems, put all initialized global and static data +in the .data section, and all uninitialized data in the +.bss section. +

    +
    +
    -mblock-move-inline-limit=num
    +
    +

    Inline all block moves (such as calls to memcpy or structure +copies) less than or equal to num bytes. The minimum value for +num is 32 bytes on 32-bit targets and 64 bytes on 64-bit +targets. The default value is target-specific. +

    +
    +
    -G num
    +
    + + +

    On embedded PowerPC systems, put global and static items less than or +equal to num bytes into the small data or BSS sections instead of +the normal data or BSS section. By default, num is 8. The +-G num switch is also passed to the linker. +All modules should be compiled with the same -G num value. +

    +
    +
    -mregnames
    +
    -mno-regnames
    +
    + +

    On System V.4 and embedded PowerPC systems do (do not) emit register +names in the assembly language output using symbolic forms. +

    +
    +
    -mlongcall
    +
    -mno-longcall
    +
    + +

    By default assume that all calls are far away so that a longer and more +expensive calling sequence is required. This is required for calls +farther than 32 megabytes (33,554,432 bytes) from the current location. +A short call is generated if the compiler knows +the call cannot be that far away. This setting can be overridden by +the shortcall function attribute, or by #pragma +longcall(0). +

    +

    Some linkers are capable of detecting out-of-range calls and generating +glue code on the fly. On these systems, long calls are unnecessary and +generate slower code. As of this writing, the AIX linker can do this, +as can the GNU linker for PowerPC/64. It is planned to add this feature +to the GNU linker for 32-bit PowerPC systems as well. +

    +

    In the future, GCC may ignore all longcall specifications +when the linker is known to generate glue. +

    +
    +
    -mtls-markers
    +
    -mno-tls-markers
    +
    + +

    Mark (do not mark) calls to __tls_get_addr with a relocation +specifying the function argument. The relocation allows the linker to +reliably associate function call with argument setup instructions for +TLS optimization, which in turn allows GCC to better schedule the +sequence. +

    +
    +
    -mrecip
    +
    -mno-recip
    +
    +

    This option enables use of the reciprocal estimate and +reciprocal square root estimate instructions with additional +Newton-Raphson steps to increase precision instead of doing a divide or +square root and divide for floating-point arguments. You should use +the -ffast-math option when using -mrecip (or at +least -funsafe-math-optimizations, +-ffinite-math-only, -freciprocal-math and +-fno-trapping-math). Note that while the throughput of the +sequence is generally higher than the throughput of the non-reciprocal +instruction, the precision of the sequence can be decreased by up to 2 +ulp (i.e. the inverse of 1.0 equals 0.99999994) for reciprocal square +roots. +

    +
    +
    -mrecip=opt
    +
    +

    This option controls which reciprocal estimate instructions +may be used. opt is a comma-separated list of options, which may +be preceded by a ! to invert the option: +

    +
    +
    all
    +

    Enable all estimate instructions. +

    +
    +
    default
    +

    Enable the default instructions, equivalent to -mrecip. +

    +
    +
    none
    +

    Disable all estimate instructions, equivalent to -mno-recip. +

    +
    +
    div
    +

    Enable the reciprocal approximation instructions for both +single and double precision. +

    +
    +
    divf
    +

    Enable the single-precision reciprocal approximation instructions. +

    +
    +
    divd
    +

    Enable the double-precision reciprocal approximation instructions. +

    +
    +
    rsqrt
    +

    Enable the reciprocal square root approximation instructions for both +single and double precision. +

    +
    +
    rsqrtf
    +

    Enable the single-precision reciprocal square root approximation instructions. +

    +
    +
    rsqrtd
    +

    Enable the double-precision reciprocal square root approximation instructions. +

    +
    +
    + +

    So, for example, -mrecip=all,!rsqrtd enables +all of the reciprocal estimate instructions, except for the +FRSQRTE, XSRSQRTEDP, and XVRSQRTEDP instructions +which handle the double-precision reciprocal square root calculations. +

    +
    +
    -mrecip-precision
    +
    -mno-recip-precision
    +
    +

    Assume (do not assume) that the reciprocal estimate instructions +provide higher-precision estimates than is mandated by the PowerPC +ABI. Selecting -mcpu=power6, -mcpu=power7 or +-mcpu=power8 automatically selects -mrecip-precision. +The double-precision square root estimate instructions are not generated by +default on low-precision machines, since they do not provide an +estimate that converges after three steps. +

    +
    +
    -mpointers-to-nested-functions
    +
    -mno-pointers-to-nested-functions
    +
    +

    Generate (do not generate) code to load up the static chain register +(r11) when calling through a pointer on AIX and 64-bit Linux +systems where a function pointer points to a 3-word descriptor giving +the function address, TOC value to be loaded in register r2, and +static chain value to be loaded in register r11. The +-mpointers-to-nested-functions is on by default. You cannot +call through pointers to nested functions or pointers +to functions compiled in other languages that use the static chain if +you use -mno-pointers-to-nested-functions. +

    +
    +
    -msave-toc-indirect
    +
    -mno-save-toc-indirect
    +
    +

    Generate (do not generate) code to save the TOC value in the reserved +stack location in the function prologue if the function calls through +a pointer on AIX and 64-bit Linux systems. If the TOC value is not +saved in the prologue, it is saved just before the call through the +pointer. The -mno-save-toc-indirect option is the default. +

    +
    +
    -mcompat-align-parm
    +
    -mno-compat-align-parm
    +
    +

    Generate (do not generate) code to pass structure parameters with a +maximum alignment of 64 bits, for compatibility with older versions +of GCC. +

    +

    Older versions of GCC (prior to 4.9.0) incorrectly did not align a +structure parameter on a 128-bit boundary when that structure contained +a member requiring 128-bit alignment. This is corrected in more +recent versions of GCC. This option may be used to generate code +that is compatible with functions compiled with older versions of +GCC. +

    +

    The -mno-compat-align-parm option is the default. +

    +
    +
    -mstack-protector-guard=guard
    +
    -mstack-protector-guard-reg=reg
    +
    -mstack-protector-guard-offset=offset
    +
    -mstack-protector-guard-symbol=symbol
    +
    + + + +

    Generate stack protection code using canary at guard. Supported +locations are ‘global’ for global canary or ‘tls’ for per-thread +canary in the TLS block (the default with GNU libc version 2.4 or later). +

    +

    With the latter choice the options +-mstack-protector-guard-reg=reg and +-mstack-protector-guard-offset=offset furthermore specify +which register to use as base register for reading the canary, and from what +offset from that base register. The default for those is as specified in the +relevant ABI. -mstack-protector-guard-symbol=symbol overrides +the offset with a symbol reference to a canary in the TLS block. +

    +
    + + +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Type-Attributes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Type-Attributes.html index 275028d64..ae93f48e4 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Type-Attributes.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/PowerPC-Type-Attributes.html @@ -1,6 +1,6 @@ - + + +Using the GNU Compiler Collection (GCC): RISC-V Function Attributes + + + + + + + + + + + + + + + + + + + + + +
    + +

    6.31.24 RISC-V Function Attributes

    + +

    These function attributes are supported by the RISC-V back end: +

    +
    +
    naked
    +
    +

    This attribute allows the compiler to construct the +requisite function declaration, while allowing the body of the +function to be assembly code. The specified function will not have +prologue/epilogue sequences generated by the compiler. Only basic +asm statements can safely be included in naked functions +(see Basic Asm). While using extended asm or a mixture of +basic asm and C code may appear to work, they cannot be +depended upon to work reliably and are not supported. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/RISC_002dV-Options.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/RISC_002dV-Options.html index edb66b03d..383d6d701 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/RISC_002dV-Options.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/RISC_002dV-Options.html @@ -1,6 +1,6 @@ - + + +Using the GNU Compiler Collection (GCC): x86 control-flow protection intrinsics + + + + + + + + + + + + + + + + + + + + + +
    + +

    6.59.35 x86 Control-Flow Protection Intrinsics

    + +
    +
    CET Function: ret_type _get_ssp (void)
    +

    Get the current value of shadow stack pointer if shadow stack support +from Intel CET is enabled in the hardware or 0 otherwise. +The ret_type is unsigned long long for 64-bit targets +and unsigned int for 32-bit targets. +

    + +
    +
    CET Function: void _inc_ssp (unsigned int)
    +

    Increment the current shadow stack pointer by the size specified by the +function argument. The argument is masked to a byte value for security +reasons, so to increment by more than 255 bytes you must call the function +multiple times. +

    + +

    The shadow stack unwind code looks like: +

    +
    +
    #include <immintrin.h>
    +
    +/* Unwind the shadow stack for EH.  */
    +#define _Unwind_Frames_Extra(x)       \
    +  do                                  \
    +    {                                \
    +      _Unwind_Word ssp = _get_ssp (); \
    +      if (ssp != 0)                   \
    +        {                            \
    +          _Unwind_Word tmp = (x);     \
    +          while (tmp > 255)           \
    +            {                        \
    +              _inc_ssp (tmp);         \
    +              tmp -= 255;             \
    +            }                        \
    +          _inc_ssp (tmp);             \
    +        }                            \
    +    }                                \
    +    while (0)
    +
    + +

    This code runs unconditionally on all 64-bit processors. For 32-bit +processors the code runs on those that support multi-byte NOP instructions. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/x86-specific-memory-model-extensions-for-transactional-memory.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/x86-specific-memory-model-extensions-for-transactional-memory.html index 612ee94ba..c01df95df 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/x86-specific-memory-model-extensions-for-transactional-memory.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gcc/x86-specific-memory-model-extensions-for-transactional-memory.html @@ -1,6 +1,6 @@ - -
    +

    aarch64*-*-*

    Binutils pre 2.24 does not have support for selecting -mabi and does not support ILP32. If it is used to build GCC 4.9 or later, GCC will @@ -209,11 +206,10 @@ The workaround is disabled by default if neither of --enable-fix-cortex-a53-843419 or --disable-fix-cortex-a53-843419 is given at configure time.

    -
    +

    alpha*-*-*

    This section contains general configuration information for all -alpha-based platforms using ELF (in particular, ignore this section for -DEC OSF/1, Digital UNIX and Tru64 UNIX). In addition to reading this +Alpha-based platforms using ELF. In addition to reading this section, please read all other sections that match your target.

    We require binutils 2.11.2 or newer. @@ -221,34 +217,23 @@ Previous binutils releases had a number of problems with DWARF 2 debugging information, not the least of which is incorrect linking of shared libraries.

    -
    -

    alpha*-dec-osf5.1

    -

    Systems using processors that implement the DEC Alpha architecture and -are running the DEC/Compaq/HP Unix (DEC OSF/1, Digital UNIX, or Compaq/HP -Tru64 UNIX) operating system, for example the DEC Alpha AXP systems. -

    -

    Support for Tru64 UNIX V5.1 has been removed in GCC 4.8. As of GCC 4.6, -support for Tru64 UNIX V4.0 and V5.0 has been removed. As of GCC 3.2, -versions before alpha*-dec-osf4 are no longer supported. (These -are the versions which identify themselves as DEC OSF/1.) -

    -
    +

    amd64-*-solaris2.1[0-9]*

    This is a synonym for ‘x86_64-*-solaris2.1[0-9]*’.

    -
    +

    arc-*-elf32

    Use ‘configure --target=arc-elf32 --with-cpu=cpu --enable-languages="c,c++"’ to configure GCC, with cpu being one of ‘arc600’, ‘arc601’, or ‘arc700’.

    -
    +

    arc-linux-uclibc

    Use ‘configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages="c,c++"’ to configure GCC.

    -
    +

    arm-*-eabi

    ARM-family processors.

    @@ -336,12 +321,12 @@ any MSDOS compiler except itself. You need to get the complete compilation package DJGPP, which includes binaries as well as sources, and includes all the necessary compilation tools and libraries.

    -
    +

    epiphany-*-elf

    Adapteva Epiphany. This configuration is intended for embedded systems.

    -
    +

    *-*-freebsd*

    Support for FreeBSD 1 was discontinued in GCC 3.2. Support for FreeBSD 2 (and any mutant a.out variants of FreeBSD 3) was @@ -376,12 +361,12 @@ results. However, it is currently known that boehm-gc may not configure properly on FreeBSD prior to the FreeBSD 7.0 release with GNU binutils after 2.16.1.

    -
    +

    ft32-*-elf

    The FT32 processor. This configuration is intended for embedded systems.

    -
    +

    h8300-hms

    Renesas H8/300 series of processors.

    @@ -392,7 +377,7 @@ All code must be recompiled. The calling convention now passes the first three arguments in function calls in registers. Structures are no longer a multiple of 2 bytes.

    -
    +

    hppa*-hp-hpux*

    Support for HP-UX version 9 and older was discontinued in GCC 3.4.

    @@ -442,7 +427,7 @@ a list of the predefines used with each standard.

    More specific information to ‘hppa*-hp-hpux*’ targets follows.

    -
    +

    hppa*-hp-hpux10

    For hpux10.20, we highly recommend you pick up the latest sed patch PHCO_19798 from HP. @@ -452,7 +437,7 @@ used for one-only code and data. This resolves many of the previous problems in using C++ on this target. However, the ABI is not compatible with the one implemented under HP-UX 11 using secondary definitions.

    -
    +

    hppa*-hp-hpux11

    GCC 3.0 and up support HP-UX 11. GCC 2.95.x is not supported and cannot be used to compile GCC 3.0 and up. @@ -555,13 +540,13 @@ versioning with --disable-symvers when using GNU ld.

    POSIX threads are the default. The optional DCE thread library is not supported, so --enable-threads=dce does not work.

    -
    +

    *-*-linux-gnu

    Versions of libstdc++-v3 starting with 3.2.1 require bug fixes present in glibc 2.2.5 and later. More information is available in the libstdc++-v3 documentation.

    -
    +

    i?86-*-linux*

    As of GCC 3.3, binutils 2.13.1 or later is required for this platform. See bug 10877 for more information. @@ -570,7 +555,7 @@ See bug 10877 for more information. possible you have a hardware problem. Further information on this can be found on www.bitwizard.nl.

    -
    +

    i?86-*-solaris2.10

    Use this for Solaris 10 or later on x86 and x86-64 systems. Starting with GCC 4.7, there is also a 64-bit ‘amd64-*-solaris2.1[0-9]*’ or @@ -581,26 +566,24 @@ with GCC 4.7, there is also a 64-bit ‘amd64-*-solaris2.1[0-9]*/usr/sfw/bin/gas), and Solaris 11, from GNU binutils 2.19 or newer (also available as /usr/bin/gas and -/usr/gnu/bin/as), work fine. Please note that the current -version, from GNU binutils 2.26, only works on Solaris 12 when using the -Solaris linker. On Solaris 10 and 11, you either have to wait for GNU -binutils 2.26.1 or newer, or stay with GNU binutils 2.25.1. Recent -versions of the Solaris assembler in /usr/ccs/bin/as work almost -as well, though. +/usr/gnu/bin/as), work fine. The current version, from GNU +binutils 2.29, is known to work, but the version from GNU binutils 2.26 +must be avoided. Recent versions of the Solaris assembler in +/usr/ccs/bin/as work almost as well, though.

    For linking, the Solaris linker, is preferred. If you want to use the GNU linker instead, note that due to a packaging bug the version in Solaris 10, from GNU binutils 2.15 (in /usr/sfw/bin/gld), cannot be used, while the version in Solaris 11, from GNU binutils 2.19 or newer (also in /usr/gnu/bin/ld and /usr/bin/gld), works, as does the -latest version, from GNU binutils 2.26. +latest version, from GNU binutils 2.29.

    To use GNU as, configure with the options --with-gnu-as --with-as=/usr/sfw/bin/gas. It may be necessary to configure with --without-gnu-ld --with-ld=/usr/ccs/bin/ld to guarantee use of Sun ld.

    -
    +

    ia64-*-linux

    IA-64 processor (also known as IPF, or Itanium Processor Family) running GNU/Linux. @@ -618,7 +601,7 @@ GCC 3.1 or later is recommended for compiling linux, the kernel. As of version 3.1 GCC is believed to be fully ABI compliant, and hence no more major ABI changes are expected.

    -
    +

    ia64-*-hpux*

    Building GCC on this target requires the GNU Assembler. The bundled HP assembler will not work. To prevent GCC from using the wrong assembler, @@ -631,7 +614,7 @@ For gcc 3.4.3 and later, --enable-libunwind-exceptions is removed and the system libunwind library will always be used.


    - +

    *-ibm-aix*

    Support for AIX version 3 and older was discontinued in GCC 3.4. Support for AIX version 4.2 and older was discontinued in GCC 4.5. @@ -795,32 +778,32 @@ environment variable to ‘C’ or ‘En_USA default can be specified with the -mcpu=cpu_type switch and using the configure option --with-cpu-cpu_type.

    -
    +

    iq2000-*-elf

    Vitesse IQ2000 processors. These are used in embedded applications. There are no standard Unix configurations.

    -
    +

    lm32-*-elf

    Lattice Mico32 processor. This configuration is intended for embedded systems.

    -
    +

    lm32-*-uclinux

    Lattice Mico32 processor. This configuration is intended for embedded systems running uClinux.

    -
    +

    m32c-*-elf

    Renesas M32C processor. This configuration is intended for embedded systems.

    -
    +

    m32r-*-elf

    Renesas M32R processor. This configuration is intended for embedded systems.

    -
    +

    m68k-*-*

    By default, ‘m68k-*-elf*’, ‘m68k-*-rtems’, ‘m68k-*-uclinux’ and @@ -846,19 +829,19 @@ be a -mcpu argument or one of the following values:

    GCC requires at least binutils version 2.17 on these targets.

    -
    +

    m68k-*-uclinux

    GCC 4.3 changed the uClinux configuration so that it uses the ‘m68k-linux-gnu’ ABI rather than the ‘m68k-elf’ ABI. It also added improved support for C++ and flat shared libraries, both of which were ABI changes.

    -
    +

    microblaze-*-elf

    Xilinx MicroBlaze processor. This configuration is intended for embedded systems.

    -
    +

    mips-*-*

    If on a MIPS system you get an error message saying “does not have gp sections for all it’s [sic] sectons [sic]”, don’t worry about it. This @@ -898,34 +881,24 @@ the use of break, use the --with-divide=breaks configure option when configuring GCC. The default is to use traps on systems that support them.

    -
    -

    mips-sgi-irix5

    -

    Support for IRIX 5 has been removed in GCC 4.6. -

    -
    -

    mips-sgi-irix6

    -

    Support for IRIX 6.5 has been removed in GCC 4.8. Support for IRIX 6 -releases before 6.5 has been removed in GCC 4.6, as well as support for -the O32 ABI. -

    -
    +

    moxie-*-elf

    The moxie processor.

    -
    +

    msp430-*-elf

    TI MSP430 processor. This configuration is intended for embedded systems.

    -
    +

    nds32le-*-elf

    Andes NDS32 target in little endian mode.

    -
    +

    nds32be-*-elf

    Andes NDS32 target in big endian mode.

    -
    +

    nvptx-*-none

    Nvidia PTX target.

    @@ -934,23 +907,23 @@ This configuration is intended for embedded systems. Tell GCC where to find it: --with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin.

    -

    A nvptx port of newlib is available at -nvptx-newlib. -It can be automatically built together with GCC. For this, add a -symbolic link to nvptx-newlib’s newlib directory to the -directory containing the GCC sources. +

    You will need newlib 3.0 git revision +cd31fbb2aea25f94d7ecedc9db16dfc87ab0c316 or later. It can be +automatically built together with GCC. For this, add a symbolic link +to nvptx-newlib’s newlib directory to the directory containing +the GCC sources.

    Use the --disable-sjlj-exceptions and --enable-newlib-io-long-long options when configuring.

    -
    +

    powerpc-*-*

    You can specify a default version for the -mcpu=cpu_type switch by using the configure option --with-cpu-cpu_type.

    You will need GNU binutils 2.15 or newer.

    -
    +

    powerpc-*-darwin*

    PowerPC running Darwin (Mac OS X kernel).

    @@ -964,89 +937,89 @@ cctools-590.36 package referenced from http://gcc.gnu.org/ml/gcc/2006-03/msg00507.html will not work on systems older than 10.3.9 (aka darwin7.9.0).

    -
    +

    powerpc-*-elf

    PowerPC system in big endian mode, running System V.4.

    -
    +

    powerpc*-*-linux-gnu*

    PowerPC system in big endian mode running Linux.

    -
    +

    powerpc-*-netbsd*

    PowerPC system in big endian mode running NetBSD.

    -
    +

    powerpc-*-eabisim

    Embedded PowerPC system in big endian mode for use in running under the PSIM simulator.

    -
    +

    powerpc-*-eabi

    Embedded PowerPC system in big endian mode.

    -
    +

    powerpcle-*-elf

    PowerPC system in little endian mode, running System V.4.

    -
    +

    powerpcle-*-eabisim

    Embedded PowerPC system in little endian mode for use in running under the PSIM simulator.

    -
    +

    powerpcle-*-eabi

    Embedded PowerPC system in little endian mode.

    -
    +

    rl78-*-elf

    The Renesas RL78 processor. This configuration is intended for embedded systems.

    -
    +

    riscv32-*-elf

    The RISC-V RV32 instruction set. This configuration is intended for embedded systems. This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release.

    -
    +

    riscv32-*-linux

    The RISC-V RV32 instruction set running GNU/Linux. This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release.

    -
    +

    riscv64-*-elf

    The RISC-V RV64 instruction set. This configuration is intended for embedded systems. This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release.

    -
    +

    riscv64-*-linux

    The RISC-V RV64 instruction set running GNU/Linux. This (and all other RISC-V) targets are supported upstream as of the binutils 2.28 release.

    -
    +

    rx-*-elf

    The Renesas RX processor.

    -
    +

    s390-*-linux*

    S/390 system running GNU/Linux for S/390.

    -
    +

    s390x-*-linux*

    zSeries system (64-bit) running GNU/Linux for zSeries.

    -
    +

    s390x-ibm-tpf*

    zSeries system (64-bit) running TPF. This platform is supported as cross-compilation target only.

    -
    +

    *-*-solaris2*

    Support for Solaris 9 has been removed in GCC 5. Support for Solaris 8 has been removed in GCC 4.8. Support for Solaris 7 has been removed @@ -1104,16 +1077,15 @@ versions included in Solaris 10, from GNU binutils 2.15 (in /usr/sfw/bin/gas), and Solaris 11, from GNU binutils 2.19 or newer (also in /usr/bin/gas and /usr/gnu/bin/as), are known to work. -Current versions of GNU binutils (2.26) -are known to work as well, with the caveat mentioned in -i?86-*-solaris2.10 . Note that your mileage may vary +The current version, from GNU binutils 2.29, +is known to work as well. Note that your mileage may vary if you use a combination of the GNU tools and the Solaris tools: while the combination GNU as + Sun ld should reasonably work, the reverse combination Sun as + GNU ld may fail to build or cause memory corruption at runtime in some cases for C++ programs. GNU ld usually works as well, although the version included in Solaris 10 cannot be used due to several bugs. Again, the current -version (2.26) is known to work, but generally lacks platform specific +version (2.29) is known to work, but generally lacks platform specific features, so better stay with Solaris ld. To use the LTO linker plugin (-fuse-linker-plugin) with GNU ld, GNU binutils must be configured with --enable-largefile. @@ -1131,7 +1103,7 @@ program which is used only by the GCC testsuite driver. When the bug causes the expect program to miss anticipated output, extra testsuite failures appear.

    -
    +

    sparc*-*-*

    This section contains general configuration information for all SPARC-based platforms. In addition to reading this section, please @@ -1143,7 +1115,7 @@ versions of GCC on these platforms. We therefore recommend the use of the exact versions of these libraries listed as minimal versions in the prerequisites.

    -
    +

    sparc-sun-solaris2*

    When GCC is configured to use GNU binutils 2.14 or later, the binaries produced are smaller than the ones produced using Sun’s native tools; @@ -1168,7 +1140,7 @@ not that of GMP or MPFR or MPC). For example on a Solaris 9 system:

    % ./configure --build=sparc-sun-solaris2.9 --prefix=xxx
     
    -
    +

    sparc-sun-solaris2.10

    There is a bug in older versions of the Sun assembler which breaks thread-local storage (TLS). A typical error message is @@ -1180,10 +1152,10 @@ thread-local storage (TLS). A typical error message is

    This bug is fixed in Sun patch 118683-03 or later.

    -
    +

    sparc-*-linux*

    -
    +

    sparc64-*-solaris2*

    When configuring the GNU Multiple Precision Library (GMP), the MPFR library or the MPC library, the canonical target triplet must be specified @@ -1194,35 +1166,35 @@ on a Solaris 9 system:

    % ./configure --build=sparc64-sun-solaris2.9 --prefix=xxx
     
    -
    +

    sparcv9-*-solaris2*

    This is a synonym for ‘sparc64-*-solaris2*’.

    -
    +

    c6x-*-*

    The C6X family of processors. This port requires binutils-2.22 or newer.

    -
    +

    tilegx-*-linux*

    The TILE-Gx processor in little endian mode, running GNU/Linux. This port requires binutils-2.22 or newer.

    -
    +

    tilegxbe-*-linux*

    The TILE-Gx processor in big endian mode, running GNU/Linux. This port requires binutils-2.23 or newer.

    -
    +

    tilepro-*-linux*

    The TILEPro processor running GNU/Linux. This port requires binutils-2.22 or newer.

    -
    +

    visium-*-elf

    CDS VISIUMcore processor. This configuration is intended for embedded systems.

    -
    +

    *-*-vxworks*

    Support for VxWorks is in flux. At present GCC supports only the very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC. @@ -1255,14 +1227,14 @@ module, contrib/gthr_supp_vxw_5x.c. Follow the instructions in that file to add the module to your kernel build. (Future versions of VxWorks will incorporate this module.)

    -
    +

    x86_64-*-*, amd64-*-*

    GCC supports the x86-64 architecture implemented by the AMD64 processor (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD. On GNU/Linux the default is a bi-arch compiler which is able to generate both 64-bit x86-64 and 32-bit x86 code (via the -m32 switch).

    -
    +

    x86_64-*-solaris2.1[0-9]*

    GCC also supports the x86-64 architecture implemented by the AMD64 processor (‘amd64-*-*’ is an alias for ‘x86_64-*-*’) on @@ -1275,7 +1247,7 @@ this way, you have to provide all support libraries like libgmp as 64-bit code, configure with --target=x86_64-pc-solaris2.1x and ‘CC=gcc -m64’.

    -
    +

    xtensa*-*-elf

    This target is intended for embedded Xtensa systems using the ‘newlib’ C library. It uses ELF but does not support shared @@ -1290,7 +1262,7 @@ own Xtensa configuration with the Xtensa Processor Generator, the downloaded files include a customized copy of this header file, which you can use to replace the default header file.

    -
    +

    xtensa*-*-linux*

    This target is for Xtensa systems running GNU/Linux. It supports ELF shared objects and the GNU C library (glibc). It also generates @@ -1302,7 +1274,7 @@ respects, this target is the same as the


    Microsoft Windows

    - +

    Intel 16-bit versions

    The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not supported. @@ -1310,7 +1282,7 @@ supported.

    However, the 32-bit port has limited support for Microsoft Windows 3.11 in the Win32s environment, as a target only. See below.

    - +

    Intel 32-bit versions

    The 32-bit versions of Windows, including Windows 95, Windows NT, Windows XP, and Windows Vista, are supported by several different target @@ -1323,10 +1295,10 @@ Linux API emulation layer in the Win32 subsystem.

  • MinGW *-*-mingw32: MinGW is a native GCC port for the Win32 subsystem that provides a subset of POSIX.
  • MKS i386-pc-mks: NuTCracker from MKS. See -http://www.mkssoftware.com/ for more information. +https://www.mkssoftware.com for more information.
  • - +

    Intel 64-bit versions

    GCC contains support for x86-64 using the mingw-w64 runtime library, available from http://mingw-w64.org/doku.php. @@ -1353,7 +1325,7 @@ be inactive. See http://pw32.sourceforge

    UWIN support has been removed due to a lack of maintenance.

    -
    +

    *-*-cygwin

    Ports of GCC are included with the Cygwin environment. @@ -1367,7 +1339,7 @@ used with as up-to-date a version of binutils as possible; use either the latest official GNU binutils release in the Cygwin distribution, or version 2.20 or above if building your own.

    -
    +

    *-*-mingw32

    GCC will build with and support only MinGW runtime 3.12 and later. Earlier versions of headers are incompatible with the new default semantics diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccinstall/test.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccinstall/test.html index 201f9d532..74b8a8611 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccinstall/test.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccinstall/test.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Alignment of poly_ints + + + + + + + + + + + + + + + + + + + + +

    +
    + +

    10.5 Alignment of poly_ints

    + +

    poly_int provides various routines for aligning values and for querying +misalignments. In each case the alignment must be a power of 2. +

    +
    +
    can_align_p (value, align)
    +

    Return true if we can align value up or down to the nearest multiple +of align at compile time. The answer is the same for both directions. +

    +
    +
    can_align_down (value, align, &aligned)
    +

    Return true if can_align_p; if so, set aligned to the greatest +aligned value that is less than or equal to value. +

    +
    +
    can_align_up (value, align, &aligned)
    +

    Return true if can_align_p; if so, set aligned to the lowest +aligned value that is greater than or equal to value. +

    +
    +
    known_equal_after_align_down (a, b, align)
    +

    Return true if we can align a and b down to the nearest +align boundary at compile time and if the two results are equal. +

    +
    +
    known_equal_after_align_up (a, b, align)
    +

    Return true if we can align a and b up to the nearest +align boundary at compile time and if the two results are equal. +

    +
    +
    aligned_lower_bound (value, align)
    +

    Return a result that is no greater than value and that is aligned +to align. The result will the closest aligned value for some +indeterminate values but not necessarily for all. +

    +

    For example, suppose we are allocating an object of size bytes +in a downward-growing stack whose current limit is given by limit. +If the object requires align bytes of alignment, the new stack +limit is given by: +

    +
    +
    aligned_lower_bound (limit - size, align)
    +
    + +
    +
    aligned_upper_bound (value, align)
    +

    Likewise return a result that is no less than value and that is +aligned to align. This is the routine that would be used for +upward-growing stacks in the scenario just described. +

    +
    +
    known_misalignment (value, align, &misalign)
    +

    Return true if we can calculate the misalignment of value +with respect to align at compile time, storing the result in +misalign if so. +

    +
    +
    known_alignment (value)
    +

    Return the minimum alignment that value is known to have +(in other words, the largest alignment that can be guaranteed +whatever the values of the indeterminates turn out to be). +Return 0 if value is known to be 0. +

    +
    +
    force_align_down (value, align)
    +

    Assert that value can be aligned down to align at compile +time and return the result. When using this routine, please add a +comment explaining why the assertion is known to hold. +

    +
    +
    force_align_up (value, align)
    +

    Likewise, but aligning up. +

    +
    +
    force_align_down_and_div (value, align)
    +

    Divide the result of force_align_down by align. Again, +please add a comment explaining why the assertion in force_align_down +is known to hold. +

    +
    +
    force_align_up_and_div (value, align)
    +

    Likewise for force_align_up. +

    +
    +
    force_get_misalignment (value, align)
    +

    Assert that we can calculate the misalignment of value with +respect to align at compile time and return the misalignment. +When using this function, please add a comment explaining why +the assertion is known to hold. +

    +
    + +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/All-Debuggers.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/All-Debuggers.html index a86432ac0..1e25787f6 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/All-Debuggers.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/All-Debuggers.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Arithmetic on poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.4 Arithmetic on poly_ints

    + +

    Addition, subtraction, negation and bit inversion all work normally for +poly_ints. Multiplication by a constant multiplier and left +shifting by a constant shift amount also work normally. General +multiplication of two poly_ints is not supported and is not +useful in practice. +

    +

    Other operations are only conditionally supported: the operation +might succeed or might fail, depending on the inputs. +

    +

    This section describes both types of operation. +

    + + + + + + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Arithmetic.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Arithmetic.html index 2da221d1c..ca9b66669 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Arithmetic.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Arithmetic.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Checking for a poly_int marker value + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.5 Checking for a poly_int marker value

    + +

    It is sometimes useful to have a special “marker value” that is not +meant to be taken literally. For example, some code uses a size +of -1 to represent an unknown size, rather than having to carry around +a separate boolean to say whether the size is known. +

    +

    The best way of checking whether something is a marker value is +known_eq. Conversely the best way of checking whether something +is not a marker value is maybe_ne. +

    +

    Thus in the size example just mentioned, ‘known_eq (size, -1)’ would +check for an unknown size and ‘maybe_ne (size, -1)’ would check for a +known size. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Cilk-Plus-Transformation.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Cilk-Plus-Transformation.html deleted file mode 100644 index 823bb7e54..000000000 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Cilk-Plus-Transformation.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - -GNU Compiler Collection (GCC) Internals: Cilk Plus Transformation - - - - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Passes   [Contents][Index]

    -
    -
    - -

    9.2 Cilk Plus Transformation

    - - -

    If Cilk Plus generation (flag -fcilkplus) is enabled, all the Cilk -Plus code is transformed into equivalent C and C++ functions. Majority of this -transformation occurs toward the end of the parsing and right before the -gimplification pass. -

    -

    These are the major components to the Cilk Plus language extension: -

      -
    • Array Notations: -During parsing phase, all the array notation specific information is stored in -ARRAY_NOTATION_REF tree using the function -c_parser_array_notation. During the end of parsing, we check the entire -function to see if there are any array notation specific code (using the -function contains_array_notation_expr). If this function returns -true, then we expand them using either expand_array_notation_exprs or -build_array_notation_expr. For the cases where array notations are -inside conditions, they are transformed using the function -fix_conditional_array_notations. The C language-specific routines are -located in c/c-array-notation.c and the equivalent C++ routines are in -the file cp/cp-array-notation.c. Common routines such as functions to -initialize built-in functions are stored in array-notation-common.c. - -
    • Cilk keywords: -
        -
      • _Cilk_spawn: -The _Cilk_spawn keyword is parsed and the function it contains is marked -as a spawning function. The spawning function is called the spawner. At -the end of the parsing phase, appropriate built-in functions are -added to the spawner that are defined in the Cilk runtime. The appropriate -locations of these functions, and the internal structures are detailed in -cilk_init_builtins in the file cilk-common.c. The pointers to -Cilk functions and fields of internal structures are described -in cilk.h. The built-in functions are described in -cilk-builtins.def. - -

        During gimplification, a new "spawn-helper" function is created. -The spawned function is replaced with a spawn helper function in the spawner. -The spawned function-call is moved into the spawn helper. The main function -that does these transformations is gimplify_cilk_spawn in -c-family/cilk.c. In the spawn-helper, the gimplification function -gimplify_call_expr, inserts a function call __cilkrts_detach. -This function is expanded by builtin_expand_cilk_detach located in -c-family/cilk.c. -

        -
      • _Cilk_sync: -_Cilk_sync is parsed like a keyword. During gimplification, -the function gimplify_cilk_sync in c-family/cilk.c, will replace -this keyword with a set of functions that are stored in the Cilk runtime. -One of the internal functions inserted during gimplification, -__cilkrts_pop_frame must be expanded by the compiler and is -done by builtin_expand_cilk_pop_frame in cilk-common.c. - -
      -
    - -

    Documentation about Cilk Plus and language specification is provided under the -"Learn" section in https://www.cilkplus.org. It is worth mentioning -that the current implementation follows ABI 1.1. -

    -
    -
    -

    -Next: , Previous: , Up: Passes   [Contents][Index]

    -
    - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Class-Preferences.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Class-Preferences.html index fb9acefc6..483a8928b 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Class-Preferences.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Class-Preferences.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Comparing ordered poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.4 Comparing ordered poly_ints

    + +

    In cases where there is a definite link between two poly_ints, +such as the outer and inner sizes of subregs, we usually require the sizes +to be ordered by the known_le partial order. poly_int provides +the following utility functions for ordered values: +

    +
    +
    ordered_p (a, b)
    +

    Return true if a and b are ordered by the known_le +partial order. +

    +
    +
    ordered_min (a, b)
    +

    Assert that a and b are ordered by known_le and return the +minimum of the two. When using this function, please add a comment explaining +why the values are known to be ordered. +

    +
    +
    ordered_max (a, b)
    +

    Assert that a and b are ordered by known_le and return the +maximum of the two. When using this function, please add a comment explaining +why the values are known to be ordered. +

    +
    + +

    For example, if a subreg has an outer mode of size outer and an +inner mode of size inner: +

    +
      +
    • the subreg is complete if known_eq (inner, outer) + +
    • otherwise, the subreg is paradoxical if known_le (inner, outer) + +
    • otherwise, the subreg is partial if known_le (outer, inner) + +
    • otherwise, the subreg is ill-formed +
    + +

    Thus the subreg is only valid if +‘ordered_p (outer, inner)’ is true. If this condition +is already known to be true then: +

    +
      +
    • the subreg is complete if known_eq (inner, outer) + +
    • the subreg is paradoxical if maybe_lt (inner, outer) + +
    • the subreg is partial if maybe_lt (outer, inner) +
    + +

    with the three conditions being mutually exclusive. +

    +

    Code that checks whether a subreg is valid would therefore generally +check whether ordered_p holds (in addition to whatever other +checks are required for subreg validity). Code that is dealing +with existing subregs can assert that ordered_p holds +and use either of the classifications above. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparing-potentially_002dunordered-poly_005fints.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparing-potentially_002dunordered-poly_005fints.html new file mode 100644 index 000000000..c96494f14 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparing-potentially_002dunordered-poly_005fints.html @@ -0,0 +1,105 @@ + + + + + +GNU Compiler Collection (GCC) Internals: Comparing potentially-unordered poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.3 Comparing potentially-unordered poly_ints

    + +

    In cases where there is no definite link between two poly_ints, +we can usually make a conservatively-correct assumption. For example, +the conservative assumption for alias analysis is that two references +might alias. +

    +

    One way of checking whether [begin1, end1) might overlap +[begin2, end2) using the poly_int comparisons is: +

    +
    +
    maybe_gt (end1, begin2) && maybe_gt (end2, begin1)
    +
    + +

    and another (equivalent) way is: +

    +
    +
    !(known_le (end1, begin2) || known_le (end2, begin1))
    +
    + +

    However, in this particular example, it is better to use the range helper +functions instead. See Range checks on poly_ints. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparison-functions-for-poly_005fint.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparison-functions-for-poly_005fint.html new file mode 100644 index 000000000..104567f0f --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparison-functions-for-poly_005fint.html @@ -0,0 +1,132 @@ + + + + + +GNU Compiler Collection (GCC) Internals: Comparison functions for poly_int + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.1 Comparison functions for poly_int

    + +

    poly_int provides the following routines for checking whether +a particular condition “may be” (might be) true: +

    +
    +
    maybe_lt maybe_le maybe_eq maybe_ge maybe_gt
    +                  maybe_ne
    +
    + +

    The functions have their natural meaning: +

    +
    +
    maybe_lt(a, b)
    +

    Return true if a might be less than b. +

    +
    +
    maybe_le(a, b)
    +

    Return true if a might be less than or equal to b. +

    +
    +
    maybe_eq(a, b)
    +

    Return true if a might be equal to b. +

    +
    +
    maybe_ne(a, b)
    +

    Return true if a might not be equal to b. +

    +
    +
    maybe_ge(a, b)
    +

    Return true if a might be greater than or equal to b. +

    +
    +
    maybe_gt(a, b)
    +

    Return true if a might be greater than b. +

    +
    + +

    For readability, poly_int also provides “known” inverses of these +functions: +

    +
    +
    known_lt (a, b) == !maybe_ge (a, b)
    +known_le (a, b) == !maybe_gt (a, b)
    +known_eq (a, b) == !maybe_ne (a, b)
    +known_ge (a, b) == !maybe_lt (a, b)
    +known_gt (a, b) == !maybe_le (a, b)
    +known_ne (a, b) == !maybe_eq (a, b)
    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons-involving-poly_005fint.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons-involving-poly_005fint.html new file mode 100644 index 000000000..7b6bcc471 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons-involving-poly_005fint.html @@ -0,0 +1,128 @@ + + + + + +GNU Compiler Collection (GCC) Internals: Comparisons involving poly_int + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3 Comparisons involving poly_int

    + +

    In general we need to compare sizes and offsets in two situations: +those in which the values need to be ordered, and those in which +the values can be unordered. More loosely, the distinction is often +between values that have a definite link (usually because they refer to the +same underlying register or memory location) and values that have +no definite link. An example of the former is the relationship between +the inner and outer sizes of a subreg, where we must know at compile time +whether the subreg is paradoxical, partial, or complete. An example of +the latter is alias analysis: we might want to check whether two +arbitrary memory references overlap. +

    +

    Referring back to the examples in the previous section, it makes sense +to ask whether a memory reference of size ‘3 + 4x’ overlaps +one of size ‘1 + 5x’, but it does not make sense to have a +subreg in which the outer mode has ‘3 + 4x’ bytes and the +inner mode has ‘1 + 5x’ bytes (or vice versa). Such subregs +are always invalid and should trigger an internal compiler error +if formed. +

    +

    The underlying operators are the same in both cases, but the distinction +affects how they are used. +

    + + + + + + + + + + +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons.html index 61f963e27..4008ed2e9 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Comparisons.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Computing bounds on poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.6 Computing bounds on poly_ints

    + +

    poly_int also provides routines for calculating lower and upper bounds: +

    +
    +
    constant_lower_bound (a)
    +

    Assert that a is nonnegative and return the smallest value it can have. +

    +
    +
    lower_bound (a, b)
    +

    Return a value that is always less than or equal to both a and b. +It will be the greatest such value for some indeterminate values +but necessarily for all. +

    +
    +
    upper_bound (a, b)
    +

    Return a value that is always greater than or equal to both a and +b. It will be the least such value for some indeterminate values +but necessarily for all. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Concept-Index.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Concept-Index.html index 8e73157fb..f5a0c525f 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Concept-Index.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Concept-Index.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Consequences of using poly_int + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.2 Consequences of using poly_int

    + +

    The two main consequences of using polynomial sizes and offsets are that: +

    +
      +
    • there is no total ordering between the values at compile time, and + +
    • some operations might yield results that cannot be expressed as a +poly_int. +
    + +

    For example, if x is a runtime invariant, we cannot tell at +compile time whether: +

    +
    +
    3 + 4x <= 1 + 5x
    +
    + +

    since the condition is false when x <= 1 and true when x >= 2. +

    +

    Similarly, poly_int cannot represent the result of: +

    +
    +
    (3 + 4x) * (1 + 5x)
    +
    + +

    since it cannot (and in practice does not need to) store powers greater +than one. It also cannot represent the result of: +

    +
    +
    (3 + 4x) / (1 + 5x)
    +
    + +

    The following sections describe how we deal with these restrictions. +

    + +

    As described earlier, a poly_int<1, T> has no indeterminates +and so degenerates to a compile-time constant of type T. It would +be possible in that case to do all normal arithmetic on the T, +and to compare the T using the normal C++ operators. We deliberately +prevent target-independent code from doing this, since the compiler needs +to support other poly_int<n, T> as well, regardless of +the current target’s NUM_POLY_INT_COEFFS. +

    + +

    However, it would be very artificial to force target-specific code +to follow these restrictions if the target has no runtime indeterminates. +There is therefore an implicit conversion from poly_int<1, T> +to T when compiling target-specific translation units. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Constant-Attributes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Constant-Attributes.html index eadf6dfec..db854e939 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Constant-Attributes.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Constant-Attributes.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Converting poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.7 Converting poly_ints

    + +

    A poly_int<n, T> can be constructed from up to +n individual T coefficients, with the remaining coefficients +being implicitly zero. In particular, this means that every +poly_int<n, T> can be constructed from a single +scalar T, or something compatible with T. +

    +

    Also, a poly_int<n, T> can be constructed from +a poly_int<n, U> if T can be constructed +from U. +

    +

    The following functions provide other forms of conversion, +or test whether such a conversion would succeed. +

    +
    +
    value.is_constant ()
    +

    Return true if poly_int value is a compile-time constant. +

    +
    +
    value.is_constant (&c1)
    +

    Return true if poly_int value is a compile-time constant, +storing it in c1 if so. c1 must be able to hold all +constant values of value without loss of precision. +

    +
    +
    value.to_constant ()
    +

    Assert that value is a compile-time constant and return its value. +When using this function, please add a comment explaining why the +condition is known to hold (for example, because an earlier phase +of analysis rejected non-constants). +

    +
    +
    value.to_shwi (&p2)
    +

    Return true if ‘poly_int<N, T>value can be +represented without loss of precision as a +‘poly_int<N, HOST_WIDE_INT>’, storing it in that +form in p2 if so. +

    +
    +
    value.to_uhwi (&p2)
    +

    Return true if ‘poly_int<N, T>value can be +represented without loss of precision as a +‘poly_int<N, unsigned HOST_WIDE_INT>’, storing it in that +form in p2 if so. +

    +
    +
    value.force_shwi ()
    +

    Forcibly convert each coefficient of ‘poly_int<N, T>’ +value to HOST_WIDE_INT, truncating any that are out of range. +Return the result as a ‘poly_int<N, HOST_WIDE_INT>’. +

    +
    +
    value.force_uhwi ()
    +

    Forcibly convert each coefficient of ‘poly_int<N, T>’ +value to unsigned HOST_WIDE_INT, truncating any that are +out of range. Return the result as a +‘poly_int<N, unsigned HOST_WIDE_INT>’. +

    +
    +
    wi::shwi (value, precision)
    +

    Return a poly_int with the same value as value, but with +the coefficients converted from HOST_WIDE_INT to wide_int. +precision specifies the precision of the wide_int cofficients; +if this is wider than a HOST_WIDE_INT, the coefficients of +value will be sign-extended to fit. +

    +
    +
    wi::uhwi (value, precision)
    +

    Like wi::shwi, except that value has coefficients of +type unsigned HOST_WIDE_INT. If precision is wider than +a HOST_WIDE_INT, the coefficients of value will be +zero-extended to fit. +

    +
    +
    wi::sext (value, precision)
    +

    Return a poly_int of the same type as value, sign-extending +every coefficient from the low precision bits. This in effect +applies wi::sext to each coefficient individually. +

    +
    +
    wi::zext (value, precision)
    +

    Like wi::sext, but for zero extension. +

    +
    +
    poly_wide_int::from (value, precision, sign)
    +

    Convert value to a poly_wide_int in which each coefficient +has precision bits. Extend the coefficients according to +sign if the coefficients have fewer bits. +

    +
    +
    poly_offset_int::from (value, sign)
    +

    Convert value to a poly_offset_int, extending its coefficients +according to sign if they have fewer bits than offset_int. +

    +
    +
    poly_widest_int::from (value, sign)
    +

    Convert value to a poly_widest_int, extending its coefficients +according to sign if they have fewer bits than widest_int. +

    +
    + +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Copying.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Copying.html index bfe94d67e..d6d331d51 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Copying.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Copying.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: DWARF + + + + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Debugging Info   [Contents][Index]

    +
    +
    + +

    18.21.5 Macros for DWARF Output

    + +

    Here are macros for DWARF output. +

    +
    +
    Macro: DWARF2_DEBUGGING_INFO
    +

    Define this macro if GCC should produce dwarf version 2 format +debugging output in response to the -g option. +

    +
    +
    Target Hook: int TARGET_DWARF_CALLING_CONVENTION (const_tree function)
    +

    Define this to enable the dwarf attribute DW_AT_calling_convention to +be emitted for each function. Instead of an integer return the enum +value for the DW_CC_ tag. +

    + +

    To support optional call frame debugging information, you must also +define INCOMING_RETURN_ADDR_RTX and either set +RTX_FRAME_RELATED_P on the prologue insns if you use RTL for the +prologue, or call dwarf2out_def_cfa and dwarf2out_reg_save +as appropriate from TARGET_ASM_FUNCTION_PROLOGUE if you don’t. +

    + +
    +
    Macro: DWARF2_FRAME_INFO
    +

    Define this macro to a nonzero value if GCC should always output +Dwarf 2 frame information. If TARGET_EXCEPT_UNWIND_INFO +(see Exception Region Output) returns UI_DWARF2, and +exceptions are enabled, GCC will output this information not matter +how you define DWARF2_FRAME_INFO. +

    + +
    +
    Target Hook: enum unwind_info_type TARGET_DEBUG_UNWIND_INFO (void)
    +

    This hook defines the mechanism that will be used for describing frame +unwind information to the debugger. Normally the hook will return +UI_DWARF2 if DWARF 2 debug information is enabled, and +return UI_NONE otherwise. +

    +

    A target may return UI_DWARF2 even when DWARF 2 debug information +is disabled in order to always output DWARF 2 frame information. +

    +

    A target may return UI_TARGET if it has ABI specified unwind tables. +This will suppress generation of the normal debug frame unwind information. +

    + +
    +
    Macro: DWARF2_ASM_LINE_DEBUG_INFO
    +

    Define this macro to be a nonzero value if the assembler can generate Dwarf 2 +line debug info sections. This will result in much more compact line number +tables, and hence is desirable if it works. +

    + +
    +
    Macro: DWARF2_ASM_VIEW_DEBUG_INFO
    +

    Define this macro to be a nonzero value if the assembler supports view +assignment and verification in .loc. If it does not, but the +user enables location views, the compiler may have to fallback to +internal line number tables. +

    + +
    +
    Target Hook: int TARGET_RESET_LOCATION_VIEW (rtx_insn *)
    +

    This hook, if defined, enables -ginternal-reset-location-views, and +uses its result to override cases in which the estimated min insn +length might be nonzero even when a PC advance (i.e., a view reset) +cannot be taken for granted. +

    +

    If the hook is defined, it must return a positive value to indicate +the insn definitely advances the PC, and so the view number can be +safely assumed to be reset; a negative value to mean the insn +definitely does not advance the PC, and os the view number must not +be reset; or zero to decide based on the estimated insn length. +

    +

    If insn length is to be regarded as reliable, set the hook to +hook_int_rtx_insn_0. +

    + +
    +
    Target Hook: bool TARGET_WANT_DEBUG_PUB_SECTIONS
    +

    True if the .debug_pubtypes and .debug_pubnames sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them. +

    + +
    +
    Target Hook: bool TARGET_DELAY_SCHED2
    +

    True if sched2 is not to be run at its normal place. +This usually means it will be run as part of machine-specific reorg. +

    + +
    +
    Target Hook: bool TARGET_DELAY_VARTRACK
    +

    True if vartrack is not to be run at its normal place. +This usually means it will be run as part of machine-specific reorg. +

    + +
    +
    Target Hook: bool TARGET_NO_REGISTER_ALLOCATION
    +

    True if register allocation and the passes +following it should not be run. Usually true only for virtual assembler +targets. +

    + +
    +
    Macro: ASM_OUTPUT_DWARF_DELTA (stream, size, label1, label2)
    +

    A C statement to issue assembly directives that create a difference +lab1 minus lab2, using an integer of the given size. +

    + +
    +
    Macro: ASM_OUTPUT_DWARF_VMS_DELTA (stream, size, label1, label2)
    +

    A C statement to issue assembly directives that create a difference +between the two given labels in system defined units, e.g. instruction +slots on IA64 VMS, using an integer of the given size. +

    + +
    +
    Macro: ASM_OUTPUT_DWARF_OFFSET (stream, size, label, offset, section)
    +

    A C statement to issue assembly directives that create a +section-relative reference to the given label plus offset, using +an integer of the given size. The label is known to be defined in the +given section. +

    + +
    +
    Macro: ASM_OUTPUT_DWARF_PCREL (stream, size, label)
    +

    A C statement to issue assembly directives that create a self-relative +reference to the given label, using an integer of the given size. +

    + +
    +
    Macro: ASM_OUTPUT_DWARF_DATAREL (stream, size, label)
    +

    A C statement to issue assembly directives that create a reference to the +given label relative to the dbase, using an integer of the given size. +

    + +
    +
    Macro: ASM_OUTPUT_DWARF_TABLE_REF (label)
    +

    A C statement to issue assembly directives that create a reference to +the DWARF table identifier label from the current section. This +is used on some systems to avoid garbage collecting a DWARF table which +is referenced by a function. +

    + +
    +
    Target Hook: void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *file, int size, rtx x)
    +

    If defined, this target hook is a function which outputs a DTP-relative +reference to the given TLS symbol of the specified size. +

    + +
    +
    +

    +Next: , Previous: , Up: Debugging Info   [Contents][Index]

    +
    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Data-Output.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Data-Output.html index 1ca1c942f..ab2a3ab98 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Data-Output.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Data-Output.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Division of poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.4.3 Division of poly_ints

    + +

    Division of poly_ints is possible for certain inputs. The functions +for division return true if the operation is possible and in most cases +return the results by pointer. The routines are: +

    +
    +
    multiple_p (a, b)
    +
    multiple_p (a, b, &quotient)
    +

    Return true if a is an exact multiple of b, storing the result +in quotient if so. There are overloads for various combinations +of polynomial and constant a, b and quotient. +

    +
    +
    constant_multiple_p (a, b)
    +
    constant_multiple_p (a, b, &quotient)
    +

    Like multiple_p, but also test whether the multiple is a +compile-time constant. +

    +
    +
    can_div_trunc_p (a, b, &quotient)
    +
    can_div_trunc_p (a, b, &quotient, &remainder)
    +

    Return true if we can calculate ‘trunc (a / b)’ at compile +time, storing the result in quotient and remainder if so. +

    +
    +
    can_div_away_from_zero_p (a, b, &quotient)
    +

    Return true if we can calculate ‘a / b’ at compile time, +rounding away from zero. Store the result in quotient if so. +

    +

    Note that this is true if and only if can_div_trunc_p is true. +The only difference is in the rounding of the result. +

    +
    + +

    There is also an asserting form of division: +

    +
    +
    exact_div (a, b)
    +

    Assert that a is a multiple of b and return +‘a / b’. The result is a poly_int if a +is a poly_int. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Documentation.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Documentation.html index 1c67bd331..906e2ee39 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Documentation.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Documentation.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Guidelines for using poly_int + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.9 Guidelines for using poly_int

    + +

    One of the main design goals of poly_int was to make it easy +to write target-independent code that handles variable-sized registers +even when the current target has fixed-sized registers. There are two +aspects to this: +

    +
      +
    • The set of poly_int operations should be complete enough that +the question in most cases becomes “Can we do this operation on these +particular poly_int values? If not, bail out” rather than +“Are these poly_int values constant? If so, do the operation, +otherwise bail out”. + +
    • If target-independent code compiles and runs correctly on a target +with one value of NUM_POLY_INT_COEFFS, and if the code does not +use asserting functions like to_constant, it is reasonable to +assume that the code also works on targets with other values of +NUM_POLY_INT_COEFFS. There is no need to check this during +everyday development. +
    + +

    So the general principle is: if target-independent code is dealing +with a poly_int value, it is better to operate on it as a +poly_int if at all possible, choosing conservatively-correct +behavior if a particular operation fails. For example, the following +code handles an index pos into a sequence of vectors that each +have nunits elements: +

    +
    +
    /* Calculate which vector contains the result, and which lane of
    +   that vector we need.  */
    +if (!can_div_trunc_p (pos, nunits, &vec_entry, &vec_index))
    +  {
    +    if (dump_enabled_p ())
    +      dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
    +                       "Cannot determine which vector holds the"
    +                       " final result.\n");
    +    return false;
    +  }
    +
    + +

    However, there are some contexts in which operating on a +poly_int is not possible or does not make sense. One example +is when handling static initializers, since no current target supports +the concept of a variable-length static initializer. In these +situations, a reasonable fallback is: +

    +
    +
    if (poly_value.is_constant (&const_value))
    +  {
    +    …
    +    /* Operate on const_value.  */
    +    …
    +  }
    +else
    +  {
    +    …
    +    /* Conservatively correct fallback.  */
    +    …
    +  }
    +
    + +

    poly_int also provides some asserting functions like +to_constant. Please only use these functions if there is a +good theoretical reason to believe that the assertion cannot fire. +For example, if some work is divided into an analysis phase and an +implementation phase, the analysis phase might reject inputs that are +not is_constant, in which case the implementation phase can +reasonably use to_constant on the remaining inputs. The assertions +should not be used to discover whether a condition ever occurs “in the +field”; in other words, they should not be used to restrict code to +constants at first, with the intention of only implementing a +poly_int version if a user hits the assertion. +

    +

    If a particular asserting function like to_constant is needed +more than once for the same reason, it is probably worth adding a +helper function or macro for that situation, so that the justification +only needs to be given once. For example: +

    +
    +
    /* Return the size of an element in a vector of size SIZE, given that
    +   the vector has NELTS elements.  The return value is in the same units
    +   as SIZE (either bits or bytes).
    +
    +   to_constant () is safe in this situation because vector elements are
    +   always constant-sized scalars.  */
    +#define vector_element_size(SIZE, NELTS) \
    +  (exact_div (SIZE, NELTS).to_constant ())
    +
    + +

    Target-specific code in config/cpu only needs to handle +non-constant poly_ints if NUM_POLY_INT_COEFFS is greater +than one. For other targets, poly_int degenerates to a compile-time +constant and is often interchangable with a normal scalar integer. +There are two main exceptions: +

    +
      +
    • Sometimes an explicit cast to an integer type might be needed, such as to +resolve ambiguities in a ?: expression, or when passing values +through ... to things like print functions. + +
    • Target macros are included in target-independent code and so do not +have access to the implicit conversion to a scalar integer. +If this becomes a problem for a particular target macro, the +possible solutions, in order of preference, are: + +
        +
      • Convert the target macro to a target hook (for all targets). + +
      • Put the target’s implementation of the target macro in its +cpu.c file and call it from the target macro in the +cpu.h file. + +
      • Add to_constant () calls where necessary. The previous option +is preferable because it will help with any future conversion of the +macro to a hook. +
      +
    + + + +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Header-Dirs.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Header-Dirs.html index 4362276db..448ee3970 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Header-Dirs.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Header-Dirs.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Miscellaneous poly_int routines + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.8 Miscellaneous poly_int routines

    + +
    +
    print_dec (value, file, sign)
    +
    print_dec (value, file)
    +

    Print value to file as a decimal value, interpreting +the coefficients according to sign. The final argument is +optional if value has an inherent sign; for example, +poly_int64 values print as signed by default and +poly_uint64 values print as unsigned by default. +

    +

    This is a simply a poly_int version of a wide-int routine. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Miscellaneous-routines.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Miscellaneous-routines.html index c0298ca8d..e5bc3d720 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Miscellaneous-routines.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Miscellaneous-routines.html @@ -1,6 +1,6 @@ -. +clauses used by the OpenACC API https://www.openacc.org.

    OACC_CACHE
    diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/OpenMP.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/OpenMP.html index 455757d87..b15a305a5 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/OpenMP.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/OpenMP.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Other poly_int arithmetic + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.4.4 Other poly_int arithmetic

    + +

    There are tentative routines for other operations besides division: +

    +
    +
    can_ior_p (a, b, &result)
    +

    Return true if we can calculate ‘a | b’ at compile time, +storing the result in result if so. +

    +
    + +

    Also, ANDs with a value ‘(1 << y) - 1’ or its inverse can be +treated as alignment operations. See Alignment of poly_ints. +

    +

    In addition, the following miscellaneous routines are available: +

    +
    +
    coeff_gcd (a)
    +

    Return the greatest common divisor of all nonzero coefficients in +a, or zero if a is known to be zero. +

    +
    +
    common_multiple (a, b)
    +

    Return a value that is a multiple of both a and b, where +one value is a poly_int and the other is a scalar. The result +will be the least common multiple for some indeterminate values but +not necessarily for all. +

    +
    +
    force_common_multiple (a, b)
    +

    Return a value that is a multiple of both poly_int a and +poly_int b, asserting that such a value exists. The +result will be the least common multiple for some indeterminate values +but not necessarily for all. +

    +

    When using this routine, please add a comment explaining why the +assertion is known to hold. +

    +
    + +

    Please add any other operations that you find to be useful. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Output-Statement.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Output-Statement.html index 576405408..1142c01fb 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Output-Statement.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Output-Statement.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Overview of poly_int + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.1 Overview of poly_int

    + + +

    We define indeterminates x1, …, xn whose values are +only known at runtime and use polynomials of the form: +

    +
    +
    c0 + c1 * x1 + … + cn * xn
    +
    + +

    to represent a size or offset whose value might depend on some +of these indeterminates. The coefficients c0, …, cn +are always known at compile time, with the c0 term being the +“constant” part that does not depend on any runtime value. +

    +

    GCC uses the poly_int class to represent these coefficients. +The class has two template parameters: the first specifies the number of +coefficients (n + 1) and the second specifies the type of the +coefficients. For example, ‘poly_int<2, unsigned short>’ represents +a polynomial with two coefficients (and thus one indeterminate), with each +coefficient having type unsigned short. When n is 0, +the class degenerates to a single compile-time constant c0. +

    + + +

    The number of coefficients needed for compilation is a fixed +property of each target and is specified by the configuration macro +NUM_POLY_INT_COEFFS. The default value is 1, since most targets +do not have such runtime invariants. Targets that need a different +value should #define the macro in their cpu-modes.def +file. See Back End. +

    + +

    poly_int makes the simplifying requirement that each indeterminate +must be a nonnegative integer. An indeterminate value of 0 should usually +represent the minimum possible runtime value, with c0 specifying +the value in that case. +

    +

    For example, when targetting the Arm SVE ISA, the single indeterminate +represents the number of 128-bit blocks in a vector beyond the minimum +length of 128 bits. Thus the number of 64-bit doublewords in a vector +is 2 + 2 * x1. If an aggregate has a single SVE vector and 16 +additional bytes, its total size is 32 + 16 * x1 bytes. +

    +

    The header file poly-int-types.h provides typedefs for the +most common forms of poly_int, all having +NUM_POLY_INT_COEFFS coefficients: +

    + +
    +
    poly_uint16
    +

    a ‘poly_int’ with unsigned short coefficients. +

    +
    +
    poly_int64
    +

    a ‘poly_int’ with HOST_WIDE_INT coefficients. +

    +
    +
    poly_uint64
    +

    a ‘poly_int’ with unsigned HOST_WIDE_INT coefficients. +

    +
    +
    poly_offset_int
    +

    a ‘poly_int’ with offset_int coefficients. +

    +
    +
    poly_wide_int
    +

    a ‘poly_int’ with wide_int coefficients. +

    +
    +
    poly_widest_int
    +

    a ‘poly_int’ with widest_int coefficients. +

    +
    + +

    Since the main purpose of poly_int is to represent sizes and +offsets, the last two typedefs are only rarely used. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Overview.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Overview.html index 33bafdd49..7bf8d3980 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Overview.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Overview.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Properties of the poly_int comparisons + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.2 Properties of the poly_int comparisons

    + +

    All “maybe” relations except maybe_ne are transitive, so for example: +

    +
    +
    maybe_lt (a, b) && maybe_lt (b, c) implies maybe_lt (a, c)
    +
    + +

    for all a, b and c. maybe_lt, maybe_gt +and maybe_ne are irreflexive, so for example: +

    +
    +
    !maybe_lt (a, a)
    +
    + +

    is true for all a. maybe_le, maybe_eq and maybe_ge +are reflexive, so for example: +

    +
    +
    maybe_le (a, a)
    +
    + +

    is true for all a. maybe_eq and maybe_ne are symmetric, so: +

    +
    +
    maybe_eq (a, b) == maybe_eq (b, a)
    +maybe_ne (a, b) == maybe_ne (b, a)
    +
    + +

    for all a and b. In addition: +

    +
    +
    maybe_le (a, b) == maybe_lt (a, b) || maybe_eq (a, b)
    +maybe_ge (a, b) == maybe_gt (a, b) || maybe_eq (a, b)
    +maybe_lt (a, b) == maybe_gt (b, a)
    +maybe_le (a, b) == maybe_ge (b, a)
    +
    + +

    However: +

    +
    +
    maybe_le (a, b) && maybe_le (b, a) does not imply !maybe_ne (a, b) [== known_eq (a, b)]
    +maybe_ge (a, b) && maybe_ge (b, a) does not imply !maybe_ne (a, b) [== known_eq (a, b)]
    +
    + +

    One example is again ‘a == 3 + 4x’ +and ‘b == 1 + 5x’, where ‘maybe_le (a, b)’, +‘maybe_ge (a, b)’ and ‘maybe_ne (a, b)’ +all hold. maybe_le and maybe_ge are therefore not antisymetric +and do not form a partial order. +

    +

    From the above, it follows that: +

    +
      +
    • All “known” relations except known_ne are transitive. + +
    • known_lt, known_ne and known_gt are irreflexive. + +
    • known_le, known_eq and known_ge are reflexive. +
    + +

    Also: +

    +
    +
    known_lt (a, b) == known_gt (b, a)
    +known_le (a, b) == known_ge (b, a)
    +known_lt (a, b) implies !known_lt (b, a)  [asymmetry]
    +known_gt (a, b) implies !known_gt (b, a)
    +known_le (a, b) && known_le (b, a) == known_eq (a, b) [== !maybe_ne (a, b)]
    +known_ge (a, b) && known_ge (b, a) == known_eq (a, b) [== !maybe_ne (a, b)]
    +
    + +

    known_le and known_ge are therefore antisymmetric and are +partial orders. However: +

    +
    +
    known_le (a, b) does not imply known_lt (a, b) || known_eq (a, b)
    +known_ge (a, b) does not imply known_gt (a, b) || known_eq (a, b)
    +
    + +

    For example, ‘known_le (4, 4 + 4x)’ holds because the runtime +indeterminate x is a nonnegative integer, but neither +known_lt (4, 4 + 4x) nor known_eq (4, 4 + 4x) hold. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/RTL-Classes.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/RTL-Classes.html index fdd4ed978..89d05dbb8 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/RTL-Classes.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/RTL-Classes.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Range checks on poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.6 Range checks on poly_ints

    + +

    As well as the core comparisons +(see Comparison functions for poly_int), poly_int provides +utilities for various kinds of range check. In each case the range +is represented by a start position and a size rather than a start +position and an end position; this is because the former is used +much more often than the latter in GCC. Also, the sizes can be +-1 (or all ones for unsigned sizes) to indicate a range with a known +start position but an unknown size. All other sizes must be nonnegative. +A range of size 0 does not contain anything or overlap anything. +

    +
    +
    known_size_p (size)
    +

    Return true if size represents a known range size, false if it +is -1 or all ones (for signed and unsigned types respectively). +

    +
    +
    ranges_maybe_overlap_p (pos1, size1, pos2, size2)
    +

    Return true if the range described by pos1 and size1 might +overlap the range described by pos2 and size2 (in other words, +return true if we cannot prove that the ranges are disjoint). +

    +
    +
    ranges_known_overlap_p (pos1, size1, pos2, size2)
    +

    Return true if the range described by pos1 and size1 is known to +overlap the range described by pos2 and size2. +

    +
    +
    known_subrange_p (pos1, size1, pos2, size2)
    +

    Return true if the range described by pos1 and size1 is known to +be contained in the range described by pos2 and size2. +

    +
    +
    maybe_in_range_p (value, pos, size)
    +

    Return true if value might be in the range described by +pos and size (in other words, return true if we cannot +prove that value is outside that range). +

    +
    +
    known_in_range_p (value, pos, size)
    +

    Return true if value is known to be in the range described +by pos and size. +

    +
    +
    endpoint_representable_p (pos, size)
    +

    Return true if the range described by pos and size is +open-ended or if the endpoint (pos + size) is representable +in the same type as pos and size. The function returns false +if adding size to pos makes conceptual sense but could overflow. +

    +
    + +

    There is also a poly_int version of the IN_RANGE_P macro: +

    +
    +
    coeffs_in_range_p (x, lower, upper)
    +

    Return true if every coefficient of x is in the inclusive range +[lower, upper]. This function can be useful when testing +whether an operation would cause the values of coefficients to +overflow. +

    +

    Note that the function does not indicate whether x itself is in the +given range. x can be either a constant or a poly_int. +

    +
    + +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Reading-RTL.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Reading-RTL.html index f180d8ddf..cc9203d6e 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Reading-RTL.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Reading-RTL.html @@ -1,6 +1,6 @@ - - - -GNU Compiler Collection (GCC) Internals: SDB and DWARF - - - - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Debugging Info   [Contents][Index]

    -
    -
    - -

    17.21.5 Macros for SDB and DWARF Output

    - -

    Here are macros for SDB and DWARF output. -

    -
    -
    Macro: SDB_DEBUGGING_INFO
    -

    Define this macro to 1 if GCC should produce COFF-style debugging output -for SDB in response to the -g option. -

    - -
    -
    Macro: DWARF2_DEBUGGING_INFO
    -

    Define this macro if GCC should produce dwarf version 2 format -debugging output in response to the -g option. -

    -
    -
    Target Hook: int TARGET_DWARF_CALLING_CONVENTION (const_tree function)
    -

    Define this to enable the dwarf attribute DW_AT_calling_convention to -be emitted for each function. Instead of an integer return the enum -value for the DW_CC_ tag. -

    - -

    To support optional call frame debugging information, you must also -define INCOMING_RETURN_ADDR_RTX and either set -RTX_FRAME_RELATED_P on the prologue insns if you use RTL for the -prologue, or call dwarf2out_def_cfa and dwarf2out_reg_save -as appropriate from TARGET_ASM_FUNCTION_PROLOGUE if you don’t. -

    - -
    -
    Macro: DWARF2_FRAME_INFO
    -

    Define this macro to a nonzero value if GCC should always output -Dwarf 2 frame information. If TARGET_EXCEPT_UNWIND_INFO -(see Exception Region Output) returns UI_DWARF2, and -exceptions are enabled, GCC will output this information not matter -how you define DWARF2_FRAME_INFO. -

    - -
    -
    Target Hook: enum unwind_info_type TARGET_DEBUG_UNWIND_INFO (void)
    -

    This hook defines the mechanism that will be used for describing frame -unwind information to the debugger. Normally the hook will return -UI_DWARF2 if DWARF 2 debug information is enabled, and -return UI_NONE otherwise. -

    -

    A target may return UI_DWARF2 even when DWARF 2 debug information -is disabled in order to always output DWARF 2 frame information. -

    -

    A target may return UI_TARGET if it has ABI specified unwind tables. -This will suppress generation of the normal debug frame unwind information. -

    - -
    -
    Macro: DWARF2_ASM_LINE_DEBUG_INFO
    -

    Define this macro to be a nonzero value if the assembler can generate Dwarf 2 -line debug info sections. This will result in much more compact line number -tables, and hence is desirable if it works. -

    - -
    -
    Target Hook: bool TARGET_WANT_DEBUG_PUB_SECTIONS
    -

    True if the .debug_pubtypes and .debug_pubnames sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them. -

    - -
    -
    Target Hook: bool TARGET_DELAY_SCHED2
    -

    True if sched2 is not to be run at its normal place. -This usually means it will be run as part of machine-specific reorg. -

    - -
    -
    Target Hook: bool TARGET_DELAY_VARTRACK
    -

    True if vartrack is not to be run at its normal place. -This usually means it will be run as part of machine-specific reorg. -

    - -
    -
    Target Hook: bool TARGET_NO_REGISTER_ALLOCATION
    -

    True if register allocation and the passes -following it should not be run. Usually true only for virtual assembler -targets. -

    - -
    -
    Macro: ASM_OUTPUT_DWARF_DELTA (stream, size, label1, label2)
    -

    A C statement to issue assembly directives that create a difference -lab1 minus lab2, using an integer of the given size. -

    - -
    -
    Macro: ASM_OUTPUT_DWARF_VMS_DELTA (stream, size, label1, label2)
    -

    A C statement to issue assembly directives that create a difference -between the two given labels in system defined units, e.g. instruction -slots on IA64 VMS, using an integer of the given size. -

    - -
    -
    Macro: ASM_OUTPUT_DWARF_OFFSET (stream, size, label, offset, section)
    -

    A C statement to issue assembly directives that create a -section-relative reference to the given label plus offset, using -an integer of the given size. The label is known to be defined in the -given section. -

    - -
    -
    Macro: ASM_OUTPUT_DWARF_PCREL (stream, size, label)
    -

    A C statement to issue assembly directives that create a self-relative -reference to the given label, using an integer of the given size. -

    - -
    -
    Macro: ASM_OUTPUT_DWARF_DATAREL (stream, size, label)
    -

    A C statement to issue assembly directives that create a reference to the -given label relative to the dbase, using an integer of the given size. -

    - -
    -
    Macro: ASM_OUTPUT_DWARF_TABLE_REF (label)
    -

    A C statement to issue assembly directives that create a reference to -the DWARF table identifier label from the current section. This -is used on some systems to avoid garbage collecting a DWARF table which -is referenced by a function. -

    - -
    -
    Target Hook: void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *file, int size, rtx x)
    -

    If defined, this target hook is a function which outputs a DTP-relative -reference to the given TLS symbol of the specified size. -

    - -
    -
    Macro: PUT_SDB_
    -

    Define these macros to override the assembler syntax for the special -SDB assembler directives. See sdbout.c for a list of these -macros and their arguments. If the standard syntax is used, you need -not define them yourself. -

    - -
    -
    Macro: SDB_DELIM
    -

    Some assemblers do not support a semicolon as a delimiter, even between -SDB assembler directives. In that case, define this macro to be the -delimiter to use (usually ‘\n’). It is not necessary to define -a new set of PUT_SDB_op macros if this is the only change -required. -

    - -
    -
    Macro: SDB_ALLOW_UNKNOWN_REFERENCES
    -

    Define this macro to allow references to unknown structure, -union, or enumeration tags to be emitted. Standard COFF does not -allow handling of unknown references, MIPS ECOFF has support for -it. -

    - -
    -
    Macro: SDB_ALLOW_FORWARD_REFERENCES
    -

    Define this macro to allow references to structure, union, or -enumeration tags that have not yet been seen to be handled. Some -assemblers choke if forward tags are used, while some require it. -

    - -
    -
    Macro: SDB_OUTPUT_SOURCE_LINE (stream, line)
    -

    A C statement to output SDB debugging information before code for line -number line of the current source file to the stdio stream -stream. The default is to emit an .ln directive. -

    - -
    -
    -

    -Next: , Previous: , Up: Debugging Info   [Contents][Index]

    -
    - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/SSA-Operands.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/SSA-Operands.html index 75c885237..d84cab17d 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/SSA-Operands.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/SSA-Operands.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Sorting poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.3.7 Sorting poly_ints

    + +

    poly_int provides the following routine for sorting: +

    +
    +
    compare_sizes_for_sort (a, b)
    +

    Compare a and b in reverse lexicographical order (that is, +compare the highest-indexed coefficients first). This can be useful when +sorting data structures, since it has the effect of separating constant +and non-constant values. If all values are nonnegative, the constant +values come first. +

    +

    Note that the values do not necessarily end up in numerical order. +For example, ‘1 + 1x’ would come after ‘100’ in the sort order, +but may well be less than ‘100’ at run time. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Source-Tree.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Source-Tree.html index cca1ea72e..de08bcd3c 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Source-Tree.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/Source-Tree.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: Using poly_int with C++ arithmetic operators + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.4.1 Using poly_int with C++ arithmetic operators

    + +

    The following C++ expressions are supported, where p1 and p2 +are poly_ints and where c1 and c2 are scalars: +

    +
    +
    -p1
    +~p1
    +
    +p1 + p2
    +p1 + c2
    +c1 + p2
    +
    +p1 - p2
    +p1 - c2
    +c1 - p2
    +
    +c1 * p2
    +p1 * c2
    +
    +p1 << c2
    +
    +p1 += p2
    +p1 += c2
    +
    +p1 -= p2
    +p1 -= c2
    +
    +p1 *= c2
    +p1 <<= c2
    +
    + +

    These arithmetic operations handle integer ranks in a similar way +to C++. The main difference is that every coefficient narrower than +HOST_WIDE_INT promotes to HOST_WIDE_INT, whereas in +C++ everything narrower than int promotes to int. +For example: +

    +
    +
    poly_uint16     + int          -> poly_int64
    +unsigned int    + poly_uint16  -> poly_int64
    +poly_int64      + int          -> poly_int64
    +poly_int32      + poly_uint64  -> poly_uint64
    +uint64          + poly_int64   -> poly_uint64
    +poly_offset_int + int32        -> poly_offset_int
    +offset_int      + poly_uint16  -> poly_offset_int
    +
    + +

    In the first two examples, both coefficients are narrower than +HOST_WIDE_INT, so the result has coefficients of type +HOST_WIDE_INT. In the other examples, the coefficient +with the highest rank “wins”. +

    +

    If one of the operands is wide_int or poly_wide_int, +the rules are the same as for wide_int arithmetic. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/VMS-Debug.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/VMS-Debug.html index 7f191b731..7527d0dab 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/VMS-Debug.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/VMS-Debug.html @@ -1,6 +1,6 @@ - + + + +GNU Compiler Collection (GCC) Internals: arm_fp16fml_neon_ok + + + + + + + + + + + + + + + +

    The node you are looking for is at arm_fp16fml_neon_ok.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005ffp_005fok.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005ffp_005fok.html index 84bc50d4d..449dfb7bc 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005ffp_005fok.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005ffp_005fok.html @@ -1,6 +1,6 @@ - + + + +GNU Compiler Collection (GCC) Internals: arm_v8_2a_dotprod_neon_ok + + + + + + + + + + + + + + + +

    The node you are looking for is at arm_v8_2a_dotprod_neon_ok.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html index 4cf489032..11fd36a61 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/arm_005fv8_005f2a_005ffp16_005fneon_005fok.html @@ -1,6 +1,6 @@ - + + +GNU Compiler Collection (GCC) Internals: poly_int + + + + + + + + + + + + + + + + + + + + +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    +
    + +

    10 Sizes and offsets as runtime invariants

    + + + +

    GCC allows the size of a hardware register to be a runtime invariant +rather than a compile-time constant. This in turn means that various +sizes and offsets must also be runtime invariants rather than +compile-time constants, such as: +

    +
      +
    • the size of a general machine_mode (see Machine Modes); + +
    • the size of a spill slot; + +
    • the offset of something within a stack frame; + +
    • the number of elements in a vector; + +
    • the size and offset of a mem rtx (see Regs and Memory); and + +
    • the byte offset in a subreg rtx (see Regs and Memory). +
    + +

    The motivating example is the Arm SVE ISA, whose vector registers can be +any multiple of 128 bits between 128 and 2048 inclusive. The compiler +normally produces code that works for all SVE register sizes, with the +actual size only being known at runtime. +

    +

    GCC’s main representation of such runtime invariants is the +poly_int class. This chapter describes what poly_int +does, lists the available operations, and gives some general +usage guidelines. +

    + + + + + + + + + + + + +
    +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/profopt-Testing.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/profopt-Testing.html index c182610f1..0d54d5ff2 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/profopt-Testing.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/profopt-Testing.html @@ -1,6 +1,6 @@ - + + + +GNU Compiler Collection (GCC) Internals: stack_size_ao + + + + + + + + + + + + + + + +

    The node you are looking for is at stack_size_ao.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/stack_005fsize_005fet.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/stack_005fsize_005fet.html new file mode 100644 index 000000000..49b69387a --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/stack_005fsize_005fet.html @@ -0,0 +1,69 @@ + + + + + + +GNU Compiler Collection (GCC) Internals: stack_size_et + + + + + + + + + + + + + + + +

    The node you are looking for is at stack_size_et.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/wi-arithmetic-on-poly_005fints.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/wi-arithmetic-on-poly_005fints.html new file mode 100644 index 000000000..591295475 --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/wi-arithmetic-on-poly_005fints.html @@ -0,0 +1,111 @@ + + + + + +GNU Compiler Collection (GCC) Internals: wi arithmetic on poly_ints + + + + + + + + + + + + + + + + + + + + + +
    + +

    10.4.2 wi arithmetic on poly_ints

    + +

    As well as the C++ operators, poly_int supports the following +wi routines: +

    +
    +
    wi::neg (p1, &overflow)
    +
    +wi::add (p1, p2)
    +wi::add (p1, c2)
    +wi::add (c1, p1)
    +wi::add (p1, p2, sign, &overflow)
    +
    +wi::sub (p1, p2)
    +wi::sub (p1, c2)
    +wi::sub (c1, p1)
    +wi::sub (p1, p2, sign, &overflow)
    +
    +wi::mul (p1, c2)
    +wi::mul (c1, p1)
    +wi::mul (p1, c2, sign, &overflow)
    +
    +wi::lshift (p1, c2)
    +
    + +

    These routines just check whether overflow occurs on any individual +coefficient; it is not possible to know at compile time whether the +final runtime value would overflow. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/window_005fsave-instruction-pattern.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/window_005fsave-instruction-pattern.html index e0e731e61..84fd4c0ea 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/window_005fsave-instruction-pattern.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gccint/window_005fsave-instruction-pattern.html @@ -1,6 +1,6 @@ - - + + + + + + + +
    +

    +Next: , Previous: , Up: Ada   [Contents][Index]

    +
    +
    + +

    15.4.10.10 Ada Settings

    + + +
    +
    +
    +
    set varsize-limit size
    +

    Prevent GDB from attempting to evaluate objects whose size +is above the given limit (size) when those sizes are computed +from run-time quantities. This is typically the case when the object +has a variable size, such as an array whose bounds are not known at +compile time for example. Setting size to unlimited +removes the size limitation. By default, the limit is about 65KB. +

    +

    The purpose of having such a limit is to prevent GDB from +trying to grab enormous chunks of virtual memory when asked to evaluate +a quantity whose bounds have been corrupted or have not yet been fully +initialized. The limit applies to the results of some subexpressions +as well as to complete expressions. For example, an expression denoting +a simple integer component, such as x.y.z, may fail if the size of +x.y is variable and exceeds size. On the other hand, +GDB is sometimes clever; the expression A(i), where +A is an array variable with non-constant size, will generally +succeed regardless of the bounds on A, as long as the component +size is less than size. +

    + +
    +
    show varsize-limit
    +

    Show the limit on types whose size is determined by run-time quantities. +

    +
    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Ada-Tasks-and-Core-Files.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Ada-Tasks-and-Core-Files.html index ba8201f4d..1b0349982 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Ada-Tasks-and-Core-Files.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Ada-Tasks-and-Core-Files.html @@ -1,6 +1,6 @@ - - + + + + + + + +
    +

    +Next: , Previous: , Up: Stack   [Contents][Index]

    +
    +
    + +

    8.5 Applying a Command to Several Frames.

    + + +
    +
    frame apply [all | count | -count | level level…] [flag]… command
    +

    The frame apply command allows you to apply the named +command to one or more frames. +

    +
    +
    all
    +

    Specify all to apply command to all frames. +

    +
    +
    count
    +

    Use count to apply command to the innermost count +frames, where count is a positive number. +

    +
    +
    -count
    +

    Use -count to apply command to the outermost count +frames, where count is a positive number. +

    +
    +
    level
    +

    Use level to apply command to the set of frames identified +by the level list. level is a frame level or a range of frame +levels as level1-level2. The frame level is the number shown +in the first field of the ‘backtrace’ command output. +E.g., ‘2-4 6-8 3’ indicates to apply command for the frames +at levels 2, 3, 4, 6, 7, 8, and then again on frame at level 3. +

    +
    +
    + +
    +
    + +

    Note that the frames on which frame apply applies a command are +also influenced by the set backtrace settings such as set +backtrace past-main and set backtrace limit N. See +See Backtraces. +

    +

    The flag arguments control what output to produce and how to handle +errors raised when applying command to a frame. flag +must start with a - directly followed by one letter in +qcs. If several flags are provided, they must be given +individually, such as -c -q. +

    +

    By default, GDB displays some frame information before the +output produced by command, and an error raised during the +execution of a command will abort frame apply. The +following flags can be used to fine-tune this behavior: +

    +
    +
    -c
    +

    The flag -c, which stands for ‘continue’, causes any +errors in command to be displayed, and the execution of +frame apply then continues. +

    +
    -s
    +

    The flag -s, which stands for ‘silent’, causes any errors +or empty output produced by a command to be silently ignored. +That is, the execution continues, but the frame information and errors +are not printed. +

    +
    -q
    +

    The flag -q (‘quiet’) disables printing the frame +information. +

    +
    + +

    The following example shows how the flags -c and -s are +working when applying the command p j to all frames, where +variable j can only be successfully printed in the outermost +#1 main frame. +

    +
    +
    (gdb) frame apply all p j
    +#0  some_function (i=5) at fun.c:4
    +No symbol "j" in current context.
    +(gdb) frame apply all -c p j
    +#0  some_function (i=5) at fun.c:4
    +No symbol "j" in current context.
    +#1  0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11
    +$1 = 5
    +(gdb) frame apply all -s p j
    +#1  0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11
    +$2 = 5
    +(gdb)
    +
    + +

    By default, ‘frame apply’, prints the frame location +information before the command output: +

    +
    +
    (gdb) frame apply all p $sp
    +#0  some_function (i=5) at fun.c:4
    +$4 = (void *) 0xffffd1e0
    +#1  0x565555fb in main (argc=1, argv=0xffffd2c4) at fun.c:11
    +$5 = (void *) 0xffffd1f0
    +(gdb)
    +
    + +

    If flag -q is given, no frame information is printed: +

    +
    (gdb) frame apply all -q p $sp
    +$12 = (void *) 0xffffd1e0
    +$13 = (void *) 0xffffd1f0
    +(gdb)
    +
    + +
    +
    + + +
    +
    faas command
    +

    Shortcut for frame apply all -s command. +Applies command on all frames, ignoring errors and empty output. +

    +

    It can for example be used to print a local variable or a function +argument without knowing the frame where this variable or argument +is, using: +

    +
    (gdb) faas p some_local_var_i_do_not_remember_where_it_is
    +
    + +

    Note that the command tfaas command applies command +on all frames of all threads. See See Threads. +

    +
    + + +
    +
    +

    +Next: , Previous: , Up: Stack   [Contents][Index]

    +
    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Frame-Decorator-API.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Frame-Decorator-API.html index 5e55079c9..45751d63e 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Frame-Decorator-API.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Frame-Decorator-API.html @@ -1,6 +1,6 @@ - - + + + + + + + +
    +

    +Previous: , Up: Native   [Contents][Index]

    +
    +
    + +

    21.1.7 FreeBSD

    + + +

    When the ABI of a system call is changed in the FreeBSD kernel, this +is implemented by leaving a compatibility system call using the old +ABI at the existing number and allocating a new system call number for +the version using the new ABI. As a convenience, when a system call +is caught by name (see catch syscall), compatibility system calls +are also caught. +

    +

    For example, FreeBSD 12 introduced a new variant of the kevent +system call and catching the kevent system call by name catches +both variants: +

    +
    +
    (gdb) catch syscall kevent
    +Catchpoint 1 (syscalls 'freebsd11_kevent' [363] 'kevent' [560])
    +(gdb)
    +
    + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Functions-In-Python.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Functions-In-Python.html index 3e8d5c504..97abab003 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Functions-In-Python.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Functions-In-Python.html @@ -1,6 +1,6 @@ -:

    -
    +
    info inferiors

    Print a list of all inferiors currently being managed by GDB. +By default all inferiors are printed, but the argument id… +– a space separated list of inferior numbers – can be used to limit +the display to just the requested inferiors.

    GDB displays for each inferior (in this order):

    diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Init-File-in-the-Current-Directory-during-Startup.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Init-File-in-the-Current-Directory-during-Startup.html index 90c38bdbb..989ad3663 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Init-File-in-the-Current-Directory-during-Startup.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Init-File-in-the-Current-Directory-during-Startup.html @@ -1,6 +1,6 @@ - - + + + + + + + +
    +

    +Next: , Previous: , Up: Controlling GDB   [Contents][Index]

    +
    +
    + +

    22.5 Output Styling

    + + + + + +

    GDB can style its output on a capable terminal. This is +enabled by default on most systems, but disabled by default when in +batch mode (see Mode Options). Various style settings are available; +and styles can also be disabled entirely. +

    +
    +
    set style enabled ‘on|off
    +

    Enable or disable all styling. The default is host-dependent, with +most hosts defaulting to ‘on’. +

    +
    +
    show style enabled
    +

    Show the current state of styling. +

    +
    +
    set style sources ‘on|off
    +

    Enable or disable source code styling. This affects whether source +code, such as the output of the list command, is styled. Note +that source styling only works if styling in general is enabled, and +if GDB was linked with the GNU Source Highlight library. The +default is ‘on’. +

    +
    +
    show style sources
    +

    Show the current state of source code styling. +

    +
    + +

    Subcommands of set style control specific forms of styling. +These subcommands all follow the same pattern: each style-able object +can be styled with a foreground color, a background color, and an +intensity. +

    +

    For example, the style of file names can be controlled using the +set style filename group of commands: +

    +
    +
    set style filename background color
    +

    Set the background to color. Valid colors are ‘none’ +(meaning the terminal’s default color), ‘black’, ‘red’, +‘green’, ‘yellow’, ‘blue’, ‘magenta’, ‘cyan’, +and‘white’. +

    +
    +
    set style filename foreground color
    +

    Set the foreground to color. Valid colors are ‘none’ +(meaning the terminal’s default color), ‘black’, ‘red’, +‘green’, ‘yellow’, ‘blue’, ‘magenta’, ‘cyan’, +and‘white’. +

    +
    +
    set style filename intensity value
    +

    Set the intensity to value. Valid intensities are ‘normal’ +(the default), ‘bold’, and ‘dim’. +

    +
    + +

    The style-able objects are: +

    +
    filename
    +

    Control the styling of file names. By default, this style’s +foreground color is green. +

    +
    +
    function
    +

    Control the styling of function names. These are managed with the +set style function family of commands. By default, this +style’s foreground color is yellow. +

    +
    +
    variable
    +

    Control the styling of variable names. These are managed with the +set style variable family of commands. By default, this style’s +foreground color is cyan. +

    +
    +
    address
    +

    Control the styling of addresses. These are managed with the +set style address family of commands. By default, this style’s +foreground color is blue. +

    +
    + +
    +
    +

    +Next: , Previous: , Up: Controlling GDB   [Contents][Index]

    +
    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Output.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Output.html index 3320112b9..4be135363 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Output.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Output.html @@ -1,6 +1,6 @@ - - + + + + + + + +
    +

    +Next: , Previous: , Up: Native   [Contents][Index]

    +
    +
    + +

    21.1.2 Process Information

    + + + + +

    Some operating systems provide interfaces to fetch additional +information about running processes beyond memory and per-thread +register state. If GDB is configured for an operating system +with a supported interface, the command info proc is available +to report information about the process running your program, or about +any process running on your system. +

    +

    One supported interface is a facility called ‘/proc’ that can be +used to examine the image of a running process using file-system +subroutines. This facility is supported on GNU/Linux and Solaris +systems. +

    +

    On FreeBSD systems, system control nodes are used to query process +information. +

    +

    In addition, some systems may provide additional process information +in core files. Note that a core file may include a subset of the +information available from a live process. Process information is +currently avaiable from cores created on GNU/Linux and FreeBSD +systems. +

    +
    +
    + +
    +
    info proc
    +
    info proc process-id
    +

    Summarize available information about a process. If a +process ID is specified by process-id, display information about +that process; otherwise display information about the program being +debugged. The summary includes the debugged process ID, the command +line used to invoke it, its current working directory, and its +executable file’s absolute file name. +

    +

    On some systems, process-id can be of the form +‘[pid]/tid’ which specifies a certain thread ID +within a process. If the optional pid part is missing, it means +a thread from the process being debugged (the leading ‘/’ still +needs to be present, or else GDB will interpret the number as +a process ID rather than a thread ID). +

    +
    +
    info proc cmdline
    +
    +

    Show the original command line of the process. This command is +supported on GNU/Linux and FreeBSD. +

    +
    +
    info proc cwd
    +
    +

    Show the current working directory of the process. This command is +supported on GNU/Linux and FreeBSD. +

    +
    +
    info proc exe
    +
    +

    Show the name of executable of the process. This command is supported +on GNU/Linux and FreeBSD. +

    +
    +
    info proc files
    +
    +

    Show the file descriptors open by the process. For each open file +descriptor, GDB shows its number, type (file, directory, +character device, socket), file pointer offset, and the name of the +resource open on the descriptor. The resource name can be a file name +(for files, directories, and devices) or a protocol followed by socket +address (for network connections). This command is supported on +FreeBSD. +

    +

    This example shows the open file descriptors for a process using a +tty for standard input and output as well as two network sockets: +

    +
    +
    (gdb) info proc files 22136
    +process 22136
    +Open files:
    +
    +      FD   Type     Offset   Flags   Name
    +    text   file          - r-------- /usr/bin/ssh
    +    ctty    chr          - rw------- /dev/pts/20
    +     cwd    dir          - r-------- /usr/home/john
    +    root    dir          - r-------- /
    +       0    chr  0x32933a4 rw------- /dev/pts/20
    +       1    chr  0x32933a4 rw------- /dev/pts/20
    +       2    chr  0x32933a4 rw------- /dev/pts/20
    +       3 socket        0x0 rw----n-- tcp4 10.0.1.2:53014 -> 10.0.1.10:22
    +       4 socket        0x0 rw------- unix stream:/tmp/ssh-FIt89oAzOn5f/agent.2456
    +
    + +
    +
    info proc mappings
    +
    +

    Report the memory address space ranges accessible in a process. On +Solaris and FreeBSD systems, each memory range includes information on +whether the process has read, write, or execute access rights to each +range. On GNU/Linux and FreeBSD systems, each memory range +includes the object file which is mapped to that range. +

    +
    +
    info proc stat
    +
    info proc status
    +
    +

    Show additional process-related information, including the user ID and +group ID; virtual memory usage; the signals that are pending, blocked, +and ignored; its TTY; its consumption of system and user time; its +stack size; its ‘nice’ value; etc. These commands are supported +on GNU/Linux and FreeBSD. +

    +

    For GNU/Linux systems, see the ‘proc’ man page for more +information (type man 5 proc from your shell prompt). +

    +

    For FreeBSD systems, info proc stat is an alias for info +proc status. +

    +
    +
    info proc all
    +

    Show all the information about the process described under all of the +above info proc subcommands. +

    + +
    +
    set procfs-trace
    +
    + +

    This command enables and disables tracing of procfs API calls. +

    +
    +
    show procfs-trace
    +
    +

    Show the current state of procfs API call tracing. +

    +
    +
    set procfs-file file
    +
    +

    Tell GDB to write procfs API trace to the named +file. GDB appends the trace info to the previous +contents of the file. The default is to display the trace on the +standard output. +

    +
    +
    show procfs-file
    +
    +

    Show the file to which procfs API trace is written. +

    +
    +
    proc-trace-entry
    +
    proc-trace-exit
    +
    proc-untrace-entry
    +
    proc-untrace-exit
    +
    + + + +

    These commands enable and disable tracing of entries into and exits +from the syscall interface. +

    +
    +
    info pidlist
    +
    + +

    For QNX Neutrino only, this command displays the list of all the +processes and all the threads within each process. +

    +
    +
    info meminfo
    +
    + +

    For QNX Neutrino only, this command displays the list of all mapinfos. +

    +
    + +
    +
    +

    +Next: , Previous: , Up: Native   [Contents][Index]

    +
    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Process-Record-and-Replay.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Process-Record-and-Replay.html index 6c3764b65..d054bf882 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Process-Record-and-Replay.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Process-Record-and-Replay.html @@ -1,6 +1,6 @@ - + + +Debugging with GDB: RISC-V Features + + + + + + + + + + + + + + + + + + + + + +
    + +

    G.5.12 RISC-V Features

    + + +

    The ‘org.gnu.gdb.riscv.cpu’ feature is required for RISC-V +targets. It should contain the registers ‘x0’ through +‘x31’, and ‘pc’. Either the architectural names (‘x0’, +‘x1’, etc) can be used, or the ABI names (‘zero’, ‘ra’, +etc). +

    +

    The ‘org.gnu.gdb.riscv.fpu’ feature is optional. If present, it +should contain registers ‘f0’ through ‘f31’, ‘fflags’, +‘frm’, and ‘fcsr’. As with the cpu feature, either the +architectural register names, or the ABI names can be used. +

    +

    The ‘org.gnu.gdb.riscv.virtual’ feature is optional. If present, +it should contain registers that are not backed by real registers on +the target, but are instead virtual, where the register value is +derived from other target state. In many ways these are like +GDBs pseudo-registers, except implemented by the target. +Currently the only register expected in this set is the one byte +‘priv’ register that contains the target’s privilege level in the +least significant two bits. +

    +

    The ‘org.gnu.gdb.riscv.csr’ feature is optional. If present, it +should contain all of the target’s standard CSRs. Standard CSRs are +those defined in the RISC-V specification documents. There is some +overlap between this feature and the fpu feature; the ‘fflags’, +‘frm’, and ‘fcsr’ registers could be in either feature. The +expectation is that these registers will be in the fpu feature if the +target has floating point hardware, but can be moved into the csr +feature if the target has the floating point control registers, but no +other floating point hardware. +

    + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Range-Checking.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Range-Checking.html index 23c94d022..82ebb88a9 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Range-Checking.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/Range-Checking.html @@ -1,6 +1,6 @@ - - + + + + + + + +
    +

    +Previous: , Up: Architectures   [Contents][Index]

    +
    +
    + +

    21.4.10 S12Z

    + + +

    When GDB is debugging the S12Z architecture, +it provides the following special command: +

    +
    +
    maint info bdccsr
    +
    +

    This command displays the current value of the microprocessor’s +BDCCSR register. +

    +
    + + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/SPU.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/SPU.html index 4085c769c..483199c36 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/SPU.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/SPU.html @@ -1,6 +1,6 @@ - - - -Debugging with GDB: SVR4 Process Information - - - - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Native   [Contents][Index]

    -
    -
    - -

    21.1.2 SVR4 Process Information

    - - - - -

    Many versions of SVR4 and compatible systems provide a facility called -‘/proc’ that can be used to examine the image of a running -process using file-system subroutines. -

    -

    If GDB is configured for an operating system with this -facility, the command info proc is available to report -information about the process running your program, or about any -process running on your system. This includes, as of this writing, -GNU/Linux and Solaris, for example. -

    -

    This command may also work on core files that were created on a system -that has the ‘/proc’ facility. -

    -
    -
    - -
    -
    info proc
    -
    info proc process-id
    -

    Summarize available information about any running process. If a -process ID is specified by process-id, display information about -that process; otherwise display information about the program being -debugged. The summary includes the debugged process ID, the command -line used to invoke it, its current working directory, and its -executable file’s absolute file name. -

    -

    On some systems, process-id can be of the form -‘[pid]/tid’ which specifies a certain thread ID -within a process. If the optional pid part is missing, it means -a thread from the process being debugged (the leading ‘/’ still -needs to be present, or else GDB will interpret the number as -a process ID rather than a thread ID). -

    -
    -
    info proc cmdline
    -
    -

    Show the original command line of the process. This command is -specific to GNU/Linux. -

    -
    -
    info proc cwd
    -
    -

    Show the current working directory of the process. This command is -specific to GNU/Linux. -

    -
    -
    info proc exe
    -
    -

    Show the name of executable of the process. This command is specific -to GNU/Linux. -

    -
    -
    info proc mappings
    -
    -

    Report the memory address space ranges accessible in the program, with -information on whether the process has read, write, or execute access -rights to each range. On GNU/Linux systems, each memory range -includes the object file which is mapped to that range, instead of the -memory access rights to that range. -

    -
    -
    info proc stat
    -
    info proc status
    -
    -

    These subcommands are specific to GNU/Linux systems. They show -the process-related information, including the user ID and group ID; -how many threads are there in the process; its virtual memory usage; -the signals that are pending, blocked, and ignored; its TTY; its -consumption of system and user time; its stack size; its ‘nice’ -value; etc. For more information, see the ‘proc’ man page -(type man 5 proc from your shell prompt). -

    -
    -
    info proc all
    -

    Show all the information about the process described under all of the -above info proc subcommands. -

    - -
    -
    set procfs-trace
    -
    - -

    This command enables and disables tracing of procfs API calls. -

    -
    -
    show procfs-trace
    -
    -

    Show the current state of procfs API call tracing. -

    -
    -
    set procfs-file file
    -
    -

    Tell GDB to write procfs API trace to the named -file. GDB appends the trace info to the previous -contents of the file. The default is to display the trace on the -standard output. -

    -
    -
    show procfs-file
    -
    -

    Show the file to which procfs API trace is written. -

    -
    -
    proc-trace-entry
    -
    proc-trace-exit
    -
    proc-untrace-entry
    -
    proc-untrace-exit
    -
    - - - -

    These commands enable and disable tracing of entries into and exits -from the syscall interface. -

    -
    -
    info pidlist
    -
    - -

    For QNX Neutrino only, this command displays the list of all the -processes and all the threads within each process. -

    -
    -
    info meminfo
    -
    - -

    For QNX Neutrino only, this command displays the list of all mapinfos. -

    -
    - -
    -
    -

    -Next: , Previous: , Up: Native   [Contents][Index]

    -
    - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/S_002f390-and-System-z-Features.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/S_002f390-and-System-z-Features.html index 8e3c31cf0..d0f01ea02 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/S_002f390-and-System-z-Features.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/S_002f390-and-System-z-Features.html @@ -1,6 +1,6 @@ - - + + + + + + + + +

    The node you are looking for is at catch syscall.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/cd-command.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/cd-command.html index dfc9a8e02..10e279597 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/cd-command.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/cd-command.html @@ -1,6 +1,6 @@ - + + +Debugging with GDB: gdb-add-index man + + + + + + + + + + + + + + + + + + + + +
    +

    +Previous: , Up: Man Pages   [Contents][Index]

    +
    +
    +

    gdb-add-index man

    + +

    gdb-add-index

    + + + +

    gdb-add-index filename +

    +

    When GDB finds a symbol file, it scans the symbols in the +file in order to construct an internal symbol table. This lets most +GDB operations work quickly–at the cost of a delay early on. +For large programs, this delay can be quite lengthy, so GDB +provides a way to build an index, which speeds up startup. +

    +

    To determine whether a file contains such an index, use the command +readelf -S filename: the index is stored in a section named +.gdb_index. The index file can only be produced on systems +which use ELF binaries and DWARF debug information (i.e., sections +named .debug_*). +

    +

    gdb-add-index uses GDB and objdump found +in the PATH environment variable. If you want to use different +versions of these programs, you can specify them through the +GDB and OBJDUMP environment variables. +

    +

    See more in +Index Files. +

    + + + + + + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002dadd_002dindex.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002dadd_002dindex.html new file mode 100644 index 000000000..c4014fa1c --- /dev/null +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002dadd_002dindex.html @@ -0,0 +1,62 @@ + + + + + + +Debugging with GDB: gdb-add-index + + + + + + + + + + + + + + + +

    The node you are looking for is at gdb-add-index.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002eprinting.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002eprinting.html index 9d741d403..9096288eb 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002eprinting.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/gdb_002eprinting.html @@ -1,6 +1,6 @@ - - + + + + + + + + +

    The node you are looking for is at maint check libthread-db.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/maint-info-breakpoints.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/maint-info-breakpoints.html index a0258b192..6301804db 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/maint-info-breakpoints.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/maint-info-breakpoints.html @@ -1,6 +1,6 @@ - + + + +Debugging with GDB: set debug compile-cplus-types + + + + + + + + + + + + + + + +

    The node you are looking for is at set debug compile-cplus-types.

    + diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/set-debug-entry_002dvalues.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/set-debug-entry_002dvalues.html index 522dc971d..7c07c4c84 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/set-debug-entry_002dvalues.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/gdb/set-debug-entry_002dvalues.html @@ -1,6 +1,6 @@ - - + - - - - - - -
    -

    -Next: , Previous: , Up: Machine Dependent   [Contents][Index]

    -
    -
    - -

    4.2 ld and the Intel 960 Family

    - - - -

    You can use the ‘-Aarchitecture’ command line option to -specify one of the two-letter names identifying members of the 960 -family; the option specifies the desired output target, and warns of any -incompatible instructions in the input files. It also modifies the -linker’s search strategy for archive libraries, to support the use of -libraries specific to each particular architecture, by including in the -search loop names suffixed with the string identifying the architecture. -

    -

    For example, if your ld command line included ‘-ACA as -well as ‘-ltry, the linker would look (in its built-in search -paths, and in any paths you specify with ‘-L’) for a library with -the names -

    -
    -
    try
    -libtry.a
    -tryca
    -libtryca.a
    -
    - -

    The first two possibilities would be considered in any event; the last -two are due to the use of ‘-ACA. -

    -

    You can meaningfully use ‘-A’ more than once on a command line, since -the 960 architecture family allows combination of target architectures; each -use will add another pair of name variants to search for when ‘-l -specifies a library. -

    - - -

    ld supports the ‘--relax’ option for the i960 family. If -you specify ‘--relax’, ld finds all balx and -calx instructions whose targets are within 24 bits, and turns -them into 24-bit program-counter relative bal and cal -instructions, respectively. ld also turns cal -instructions into bal instructions when it determines that the -target subroutine is a leaf routine (that is, the target subroutine does -not itself call any subroutines). -

    - - - -
    -
    -

    -Next: , Previous: , Up: Machine Dependent   [Contents][Index]

    -
    - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/ld.html/index.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/ld.html/index.html index 15780f033..ce37e8757 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/ld.html/index.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/ld.html/index.html @@ -1,10 +1,10 @@ - -LIBM: matherr - - - - - - - - - - - - - - - - - - - - -
    -

    -Next: , Previous: , Up: Math   [Contents][Index]

    -
    -
    - -

    1.41 matherr—modifiable math error handler

    - -

    Synopsis -

    -
    #include <math.h>
    -int matherr(struct exception *e);
    -
    -
    -

    Description
    -matherr is called whenever a math library function generates an error. -You can replace matherr by your own subroutine to customize -error treatment. The customized matherr must return 0 if -it fails to resolve the error, and non-zero if the error is resolved. -

    -

    When matherr returns a nonzero value, no error message is printed -and the value of errno is not modified. You can accomplish either -or both of these things in your own matherr using the information -passed in the structure *e. -

    -

    This is the exception structure (defined in ‘math.h’): -

    -
    	struct exception {
    -	        int type;
    -	        char *name;
    -	        double arg1, arg2, retval;
    -		int err;
    -	};
    -
    - -

    The members of the exception structure have the following meanings: -

    -
    type
    -

    The type of mathematical error that occured; macros encoding error -types are also defined in ‘math.h’. -

    -
    -
    name
    -

    a pointer to a null-terminated string holding the -name of the math library function where the error occurred. -

    -
    -
    arg1, arg2
    -

    The arguments which caused the error. -

    -
    -
    retval
    -

    The error return value (what the calling function will return). -

    -
    -
    err
    -

    If set to be non-zero, this is the new value assigned to errno. -

    -
    - - -

    The error types defined in ‘math.h’ represent possible mathematical -errors as follows: -

    -
    -
    DOMAIN
    -

    An argument was not in the domain of the function; e.g. log(-1.0). -

    -
    -
    SING
    -

    The requested calculation would result in a singularity; e.g. pow(0.0,-2.0) -

    -
    -
    OVERFLOW
    -

    A calculation would produce a result too large to represent; e.g. -exp(1000.0). -

    -
    -
    UNDERFLOW
    -

    A calculation would produce a result too small to represent; e.g. -exp(-1000.0). -

    -
    -
    TLOSS
    -

    Total loss of precision. The result would have no significant digits; -e.g. sin(10e70). -

    -
    -
    PLOSS
    -

    Partial loss of precision. -

    -
    - - -
    -

    Returns
    -The library definition for matherr returns 0 in all cases. -

    -

    You can change the calling function’s result from a customized matherr -by modifying e->retval, which propagates backs to the caller. -

    -

    If matherr returns 0 (indicating that it was not able to resolve -the error) the caller sets errno to an appropriate value, and prints -an error message. -

    -
    -

    Portability
    -matherr is not ANSI C. -

    -
    -
    -
    -

    -Next: , Previous: , Up: Math   [Contents][Index]

    -
    - - - - - diff --git a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/libm/modf.html b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/libm/modf.html index b13ea877d..291e527c6 100644 --- a/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/libm/modf.html +++ b/gcc-arm-none-eabi/share/doc/gcc-arm-none-eabi/html/libm/modf.html @@ -15,7 +15,7 @@ - +